0% fanden dieses Dokument nützlich (0 Abstimmungen)
15 Ansichten

java12_Generische_Programmierung

Java programmer

Hochgeladen von

ashishbendale3
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
15 Ansichten

java12_Generische_Programmierung

Java programmer

Hochgeladen von

ashishbendale3
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
Sie sind auf Seite 1/ 34

Java - Generische Programmierung

Anja Aue | 05.04.17


Generische Programmierung
 Entwicklung von wiederverwendbaren Bibliotheken.
 Entwurf von allgemeinen Funktionen unabhängig vom
Datentyp.
 Schreiben von Algorithmen, die unabhängig von einer
bestimmten Datenstruktur sind.
 Nutzung in Sortieralgorithmen, Bäumen, Listen etc..

Java – Einführung in die Programmierung Seite 2


Klasse ohne generische Programmierung
public class clsPunkt {
private int x;
private int y;

public clsPunkt(){}
public clsPunkt(int xKoord, int yKoord){}

public String toString(){}


public void setPunkt(int xKoord, int yKoord){}
}

Java – Einführung in die Programmierung Seite 3


Nachteile
 Es können nur (Integer)-Koordinaten gespeichert werden.
 Für jede andere Datentyp-Kombination muss eine neue Klasse
erzeugt werden.

Java – Einführung in die Programmierung Seite 4


Generische Klassen
public class clsPunkt<T> {
private T x;
private T y;

public clsPunkt(){}
public clsPunkt(T xKoord, T yKoord){}

public String toString(){}


public void setPunkt(T xKoord, T yKoord){}
}

Java – Einführung in die Programmierung Seite 5


Kopf einer Klassen
public class clsPunkt<T> {

 Jede Klasse wird durch das Schlüsselwort class


gekennzeichnet.
 Jede Klasse hat einen eindeutigen Namen. In diesem Beispiel
wird die Klasse clsPunkt implementiert.
 Das Schlüsselwort vor dem Namen regelt den Zugriff auf die
Klasse von außen her.
 In eckigen Klammern wird eine Typ-Variable für die Klasse
definiert.

Java – Einführung in die Programmierung Seite 6


Klassenname
 Beginn mit einem Großbuchstaben. Zum Beispiel „Kreis“.
 Nutzung der Kamel-Notation. Zum Beispiel „GeometrieKreis“.
Jedes Wort beginnt mit einem Großbuchstaben.
 Der Name spiegelt die Bezeichnung eines Dinges in der realen
Welt wieder.
 Der Name ist innerhalb eines Paketes eindeutig.

Java – Einführung in die Programmierung Seite 7


Öffentliche Klassen
public class clsPunkt<T> {

 Das Schlüsselwort public kennzeichnet öffentliche Klassen.


 Die Klasse kann von jedem Paket genutzt werden.
 Die Klasse kann von allen anderen Klassen verwendet werden.

Java – Einführung in die Programmierung Seite 8


Typ-Variable
public class clsPunkt<T> {

 Die Angabe der Typ-Variablen erfolgt nur einmal im Kopf der


Klasse hinter dem Klassennamen.
 Die Typ-Variable wird in spitze Klammern gesetzt.

Java – Einführung in die Programmierung Seite 9


Formale Typ-Parameter
 Einzelne Großbuchstaben wie T.
 Häufig genutzte Parameter: Typ, Element, Key (Schlüssel) ,
Value (Wert).

Java – Einführung in die Programmierung Seite 10


Attribute in der generischen Klasse
private T x;
private T y;

 Attribute werden wie Variablen in einer Klasse deklariert.


 Instanzvariablen werden am Anfang einer Klasse im Rumpf
deklariert.

Java – Einführung in die Programmierung Seite 11


Deklaration von Variablen

T x ;

typ variablenname ;

 Der Variablenname ist frei wählbar.


 Die, im Klassenkopf angegebene Typ-Variable, primitive
Datentypen oder definierte Klassen werden als Datentyp
genutzt.
 Die Variablen können im Konstruktor initialisiert werden.
Variablen werden in Methoden verändert.

Java – Einführung in die Programmierung Seite 12


Standard-Konstruktor
public clsPunkt()
{
x = null;
y = null;
}

 Konstruktoren werden bei der Erzeugung einer Instanz


automatisiert aufgerufen.
 Konstruktoren und die Klasse haben den gleichen Namen.
 Jede Klasse hat einen geerbten oder definierten
parameterlosen Konstruktor.
 Attribute vom Datentyp der Typ-Variablen der Klasse werden
auf null gesetzt.

Java – Einführung in die Programmierung Seite 13


Weitere Konstruktoren
public clsPunkt(T xKoord, T yKoord)
{
this.x = xKoord;
this.y = yKoord;
}

 Konstruktoren können überladen werden. Sie werden mit Hilfe


der Argumentliste unterschieden.
 In diesem Beispiel werden Argumente übergeben, die als
Datentyp die Typ-Variable der Klasse nutzen.
 Der Parameter wird dem passenden Attribut mit Hilfe des
Gleichheitszeichen zugewiesen. Attribut und Argument sollten
vom gleichen Datentyp sein.

Java – Einführung in die Programmierung Seite 14


Erzeugung der Objekte
clsPunkt<Integer> punkt01 = new clsPunkt(1, 3);
clsPunkt<Double> punkt02 = new clsPunkt();

 Objekt-Variablen sind von einem bestimmten Typ „Klasse“.


 Objekt-Variablen können wie in diesem Beispiel gleichzeitig
deklariert und initialisiert werden.

Java – Einführung in die Programmierung Seite 15


Zuweisung an Attribute
public clsPunkt(T xKoord, T yKoord)
{
this.x = xKoord;
this.y = yKoord;
}

 Attribute werden mit Hilfe des Punktoperators einem Objekt


zugeordnet.
 Das Schlüsselwort this ist ein Platzhalter für das momentan
zu konstruierende Objekt. In Methoden beschreibt es die
Instanz, die die Methode aufgerufen hat.

Java – Einführung in die Programmierung Seite 16


Deklaration von Objekt-Variablen

clsPunkt < Integer > punkt01 ;

Template < Klasse > variablenname ;

 Statt eines Datentyps wird ein Klassenname als Typ


angegeben. Der Klassenname muss exakt wie im Kopf (public
class clsPunkt) der Klasse beschrieben, geschrieben
werden.
 Der Variablenname ist frei wählbar.
 Zwischen Datentyp und Klassenname werden die Argumente
für die Typ-Variable in spitzen Klammern angegeben. Primitive
Datentypen können nicht genutzt werden.

Java – Einführung in die Programmierung Seite 17


Initialisierung von Objekt-Variablen

punkt01 = new clsPunkt ( ) ;

variablenname = new Template ( ) ;

 Das Schlüsselwort new erzeugt mit Hilfe eines Konstruktors


eine Instanz von einer Klasse.
 Der Objekt-Variablen wird ein Verweis auf das neu erstellte
Objekt übergeben.
 In den runden Klammern wird entsprechend des gewählten
Konstruktors eine Argumentliste angegeben.

Java – Einführung in die Programmierung Seite 18


Methoden in der Klasse
public void setPunkt(T xKoord, T yKoord)
{
this.x = xKoord;
this.y = yKoord;
}

Java – Einführung in die Programmierung Seite 19


Aufbau von Methoden
public void setPunkt(T xKoord, T yKoord) Methodenkopf

{ Methodenrumpf
this.x = xKoord;
this.y = yKoord;
}

Java – Einführung in die Programmierung Seite 20


Methodenrumpf
 Beginn und Ende mit den geschweiften Klammern.
 Zusammenfassung von Anweisungen für eine bestimmte
Aktion.
 Die Aktion wird in dem Methodennamen beschrieben.

Java – Einführung in die Programmierung Seite 21


Methodenkopf

public void setPunkt ( )

zugriff datentyp methodenname ( )

 Jede Methode beginnt mit dem Zugriffsmodifikator. Methoden


sind häufig öffentlich (public).
 Dem Zugriffsmodifikator folgt der Datentyp der Methode.
 Dem Datentyp folgt der Methodenname. Der Methodenname ist
eindeutig in einer Klasse.
 Dem Methodennamen folgt in runden Klammern die
Parameterliste.

Java – Einführung in die Programmierung Seite 22


Parameterliste

void setPunkt ( T xKoord, T yKoord )

typ methodenname ( typ para01, typ para02 )

 Die Parameterliste beginnt und endet mit den runden


Klammern.
 Die Parameterliste folgt direkt dem Namen der Methoden.
 Die Parameterliste kann beliebig viele Parameter von
beliebigen Typ enthalten.

Java – Einführung in die Programmierung Seite 23


Parameter in der Parameterliste

void setPunkt ( T xKoord, T yKoord )

typ methodenname ( typ para01, typ para02 )

 Jeder Parameter ist von einem bestimmten Typ. Dies kann eine
Typ-Variable, die im Klassenkopf definiert ist, sein. Es können
primitive Datentypen oder eine definierte Klasse als Typ
genutzt werden.
 Die Parameter werden durch ein Komma getrennt.
 Parameter können nur in dem Methodenrumpf verwendet
werden, zu dem der Methodenkopf gehört.
 Parameter sind lokale Variablen einer Methode.

Java – Einführung in die Programmierung Seite 24


Rückgabewerte von Methoden
public void setPunkt(T xKoord, T yKoord){
this.x = xKoord;
this.y = yKoord;
}

public T getPunktY(){
return this.y;
}

public String toString(){


return this.x + ", " + this.y;
}

Java – Einführung in die Programmierung Seite 25


Erläuterung
 Eine Methode vom Datentyp void gibt kein Wert an den
Aufrufer zurück.
 Methoden können aber mit Hilfe des Schlüsselwortes return
einen Wert an den Aufrufer zurückgeben. Dieser Wert kann
vom Datentyp einer Typ-Variable, die im Klassenkopf definiert
ist, sein. Es können primitive Datentypen oder eine definierte
Klasse als Rückgabewert genutzt werden.

Java – Einführung in die Programmierung Seite 26


Konvertierung von Typ-Parametern
Integer zahl;
zahl = (Integer)this.wert;

 (Wrapper-Klasse)[Typ-Parameter].
 Typ-Parameter können in jedes Objekt von einem bestimmten
Typ implizit konvertiert werden.
 Eine Konvertierung in primitive Datentypen ist nicht möglich.

Java – Einführung in die Programmierung Seite 27


Konvertierung von Typ-Variablen
public Integer getPunktY()
{
return (Integer)this.y;
}

 Typ-Variablen können nicht in primitive Datentypen


umgewandelt werden.
 In diesem Beispiel wird die Instanzvariable y in den Datentyp
Integer konvertiert.
 Die Klasse, in die die Typ-Variable umgewandelt wird, wird in
runden Klammern vor dem umzuwandelnden Wert angegeben.

Java – Einführung in die Programmierung Seite 28


Aufruf von Methoden
String = punkt01.toString();
punkt02.setPunkt(2.4, 1.03);

 Objekt-Variable und Methode werden mit einem Punkt


verbunden.
 Die Objekt-Variable ist von dem Typ „Klasse / Template“, in
dem die Methode definiert ist.
 In den runden Klammern wird der Methode eine Argumentliste
übergeben.
 Die Methode kann einen Wert zurückgeben, muss aber nicht.
Der Rückgabewert kann in einer Variablen gespeichert werden.

Java – Einführung in die Programmierung Seite 29


Typ-Variablen als Rückgabewerte
if (punkt01.getPunktX() instanceof Integer){
Integer x = punkt01.getPunktX();
System.out.println("X-Koordinate: " + x);
}

 Mit Hilfe des Schlüsselwortes instanceof wird überprüft, ob


der Rückgabewert von der Klasse ist. Die Bedingung liefert
einen boolschen Wert zurück.
 In diesem Beispiel wird überprüft, ob der Rückgabewert von der
Wrapper-Klasse Integer ist. Falls die Bedingung True liefert,
wird der Wert in einer Integer-Variablen gespeichert.

Java – Einführung in die Programmierung Seite 30


Nutzung von x Typ-Variablen
public class clsDictonary<K, V> {
private K schluessel;
private V wert;

public clsDictonary(){}
public clsDictonary(K key, V value){}

public String toString() {}


public K getSchluessel() {}
public V getWert() {}
public void setElement(K key, V value){}
}

Java – Einführung in die Programmierung Seite 31


Kopf einer Klassen
public class clsDictonary<K, V> {

 In eckigen Klammern werden x Typ-Variablen angegeben.


 Die Typ-Variablen werden durch ein Komma getrennt.
 Die Typ-Variablen stehen jeweils für einen bestimmten
Datentyp.

Java – Einführung in die Programmierung Seite 32


Deklaration der Objekt-Variablen
clsDictonary<String, Integer> schmelzpunkt
clsDictonary<Integer, Integer> siedepunkt

 Der Name der Objekt-Variablen ist frei wählbar. In diesem


Beispiel werden die Variablen schmelzpunkt und siedepunkt
erzeugt.
 Die Objekt-Variablen sind von einem bestimmten Datentyp. In
diesem Beispiel nutzen die Variablen die Klasse
clsDictonary.
 Zwischen den Datentyp und dem Variablenname werden die
genutzten Datentypen in spitzen Klammern angegeben.

Java – Einführung in die Programmierung Seite 33


Zuordnung
clsDictonary<String, Integer> schmelzpunkt

public class clsDictonary<K, V> {

 In Abhängigkeit der Position werden die Datentypen den Typ-


Variablen zugeordnet.

Java – Einführung in die Programmierung Seite 34

Das könnte Ihnen auch gefallen