1 Klassen anlegen und Objekte erzeugen

Werbung
Werkzeugkiste Java
1
1
Klassen anlegen und Objekte erzeugen
Klassengrundgerüst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Klassenkommentar
/* *
* Write a description of class Testklasse here .
*
* @author ( your name )
* @version ( a version number or a date )
*/
public class Testklasse
{
// instance variables - replace the example below with your own
private int x ;
Klassendefinition
/* *
* Constructor for objects of class Testklasse
*/
public Testklasse ()
{
// initialise instance variables
x = 0;
}
Deklaration der
Instanzvariablen
Konstruktor
/* *
* An example of a method - replace this comment with your own
*
* @param y
a sample parameter for a method
* @return
the sum of x and y
*/
public int sampleMethod ( int y )
{
// put your code here
return x + y ;
}
Methodenkommentar
Methodendefinition
}
Klassendeklaration
• einfach
public class NameDerKlasse
{
// Deklaration der Instanzvariablen
private Datentyp1 attribut1 ;
private Datentyp2 attribut2 ;
// Konstruktoren
// Methodendefinitionen
}
• als Unterklasse einer Oberklasse
public class NameDerKlasse extends Oberklasse
{
// Deklaration der zusaetzlichen Instanzvariablen
private Datentyp1 neuesAttribut1 ;
private Datentyp2 neuesAttribut2 ;
// Konstruktoren
// Methodendefinitionen
}
Werkzeugkiste Java
2
Konstruktor
• Eine Klasse kann auch mehrere Konstruktoren unterschiedlicher Signatur besitzen.
• einfach
public NameDerKlasse ()
{
// Initialisierung der Instanzvariablen
attribut1 = einStandardwert1 ;
attribut2 = einStandardwert2 ;
}
• mit Parameter
public NameDerKlasse ( Datentyp1 einStartwert1 , Datentyp2 einStartwert2 )
{
// Initialisierung der Instanzvariablen
// mit den angegebenen Startwerten
attribut1 = einStartwert1 ;
attribut2 = einStartwert2 ;
}
• bei einer Unterklasse einer Oberklasse
public NameDerKlasse ( Datentyp1 einStartwertVererbt , Datentyp2 einStartwertNeu )
{
// Konstruktoraufruf der Oberklasse
super ( einStartwertVererbt );
// Initialisierung der zusaetzlichen Instanzvariablen
neuesAttribut1 = einStartwertNeu ;
neuesAttribut2 = einStandardwert ;
}
Objekterzeugung
einObjekt = new NameDerKlasse ();
einObjekt = new NameDerKlasse ( einStartwert1 , einStartwert2 );
2
Accessoren – Zugriff auf Instanzvariablen
Get-Methode mit Rückgabeoperator return
public Datentyp gibAttribut1 ()
{
return attribut1 ;
}
Set-Methode mit Wertzuweisung =
public void setzeAttribut1 ( Datentyp einWert )
{
attribut1 = einWert ;
}
Werkzeugkiste Java
3
3
Methoden und Nachrichten
Methodengrundgerüst
• ohne Ergebnisrückgabe
public void methodenname ( Datentyp1 einWert1 , Datentyp2 einWert2 )
{
// Methodenkommentar
// Deklaration von Hilfsvariablen ohne Sichtbarkeit
Datentyp hilfsvariable ;
anweisungen ;
}
• mit Ergebnisrückgabe
public Ergebnistyp methodenname ( Datentyp1 einWert1 , Datentyp2 einWert2 )
{
// Methodenkommentar
// Deklaration von Hilfsvariablen ohne Sichtbarkeit
Datentyp hilfsvariable ;
anweisungen ;
// Ergebnisrueckgabe
return ergebnis ;
}
Nachrichten (Methodenaufrufe)
// ohne Parameter
einObjektname . tuEtwas ();
// mit Angabe von Parametern
einObjektname . tuEtwasMit ( einWert );
einObjektname . tuEtwasMit ( einWert , einWeitererWert );
4
Operatoren
Logik (Wahrheitswerte)
&& und
||
oder
!
nicht
Rechenoperationen
+ Addition
− Subtraktion
∗
Multiplikation
/
Division
% Divisionsrest (modulo)
5
Textoperationen
+ Konkatenierung (Aneinanderhängen)
Vergleiche (liefern true oder false)
== gleicher Wert
! = ungleicher Wert
< kleiner als
<= kleiner oder gleich
> größer als
>= größer oder gleich
Datentypen
int (ganze Zahl) 347
double (Gleitkommazahl) 3.14, 2.7e12
boolean (Wahrheitswert) true, false, !true, !false (logische Negation)
char (Schriftzeichen) ’M’, ’a’, ’ ’
String (Zeichenkette) "eine Zeichenkette"
Werkzeugkiste Java
4
Typumwandlung
in eine Zeichenkette: "" + einWert (Konkatenierung mit der leeren Zeichenkette)
in eine Gleitkommazahl: (double)einWert
Array (Feld)
DATENTYP ist z.B. int, String oder Name einer Klasse und legt fest, von welcher
Art die Einträge des Feldes sein dürfen.
// Deklaration
private DATENTYP [] einFeld ;
// Initialisierung eines Feldes mit 20 Eintraegen
einFeld = new DATENTYP [20];
einFeld . length // Laenge des Feldes
einFeld [ i ] // Eintrag an der Stelle i ( Index )
einFeld [0] // erster Eintrag
einFeld [ einFeld . length - 1] // letzter Eintrag
6
Einbinden externer Module
import-Anweisung gleich zu Beginn des gesamten Java-Quelltextes
import java . paket . Klasse ;
Listen ArrayList<DATENTYP>
DATENTYP ist z.B. int, String oder Name einer Klasse und legt fest, von welcher
Art die Elemente der Liste sein dürfen.
import java . util . ArrayList ;
// Deklaration
private ArrayList < DATENTYP > eineListe ;
// Initialisierung der Liste
eineListe = new ArrayList < DATENTYP >;
eineListe . size (); // Laenge der Liste
eineListe . add ( einElement );
eineListe . get ( einIndex ); // Element an der Stelle einIndex
eineListe . set ( einIndex , einNeuesElement ); // ersetze Element an einIndex
eineListe . indexOf ( einElement ); // Index des Elementes
7
Schlüsselwörter
this das aktuelle Objekt selbst
super verweist auf die Oberklasse
null nichts, leerer Wert
void Nichtstyp zur Kennzeichnung von Methoden ohne Rückgabewert
8
Sichtbarkeit von Attributen und Methoden
private nur für Objekte der Klasse selbst
protected nur für Objekte dieser Klasse und ihrer Unterklassen
public für Objekte aller Klassen
Werkzeugkiste Java
9
5
Kontrollstrukturen
Sequenz
einObjekt . tuEtwas ();
einObjekt . tuEtwasAnderes ();
Befehlsblock eine Folge von Nachrichten, eingeschlossen durch geschweifte Klammern
einseitige Verzweigung
if ( eineBedingung )
{ einObjekt tuEtwas (); };
Existenztest
if ( einObjekt != null ) { einAnderesObjekt . tuEtwas (); };
zweiseitige Verzweigung
if ( eineBedingung )
{ einObjekt . tuEtwas (); }
else
{ einAnderesObjekt . tuEtwas (); };
Mehrfachverzweigung
if ( eineBedingung )
{ einObjekt . tuEtwas (); }
else if ( eineWeitereBedingung )
{ einObjekt . tuEtwasAnderes (); }
else
{ einAnderesObjekt . tuEtwas (); };
Zählschleife
for ( Initialisierung , Abbruchbedingung , Schritt )
{ zu wiederholende Anweisungen ; };
// Schleifenvarable i mit Angabe des Datentyps initialisieren
for ( int i =0 , i <=15 , i = i +3)
{ einObjekt . tuEtwas ();
einObjekt . tuEtwasMit ( i );
};
Listendurchlauf
for ( Datentyp jedesElement : eineListe )
{ jedesElement . tuEtwas ();
einObjekt . tuEtwasMit ( jedesElement );
};
Bedingte Wiederholung
while ( eineBedingung )
{ einObjekt . aendere ( eineBedingung ); };
Werkzeugkiste Java
10
6
Threads und Verzögerungen
Threads eine Befehlsfolge im Hintergrund ausführen
für einen Einführungskurs zu kompliziert
Wartezeiten eine Befehlsfolge für ein paar Millisekunden unterbrechen
try {
Thread . sleep (5000); // 5000 Millisekunden
} catch ( InterruptedException ex ) {
ex . printStackTrace ();
}
11
Ein- und Ausgabe
Textausgabe
System . out . println ( " eine Zeichenkette in einer neuen Zeile " );
System . out . print ( " eine Zeichenkette in derselben Zeile " );
Texteingabe vgl. http://wiki.zum.de/Java/Texteingabe
// Zu Beginn des Programmes Bibliothek f r Ein / Ausgabestroeme einbinden
import java . io .*;
// ...
// Eingabestrom erzeugen
BufferedReader br = new BufferedReader ( new InputStreamReader ( System . in ));
// leere Zeichenkette fuer das Ergebnis der Eingabe erzeugen
String antwort = null ;
System . out . println ( " Gib eine Antwort ein : " );
// Einlesen mit Fehlerbehandlung
try
{
antwort = br . readLine (); // Einlesen in die Zeichenkette
}
catch ( IOException ausnahme )
{
ausnahme . printStackTrace ();
}
Schlager
Herunterladen