Java Basis-Sprachelemente: Unterschied zwischen den Versionen
Zeile 265: | Zeile 265: | ||
Beispiel: die folgende Methode überprüft, welche von zwei Zahlen die größere ist. | Beispiel: die folgende Methode überprüft, welche von zwei Zahlen die größere ist. | ||
Es passiert folgendes: Wenn (if) a größer als b ist, dann wird <code>ergebnis</ | Es passiert folgendes: Wenn (<code>if</code>) <code>a</code> größer als <code>b</code> ist, dann wird <code>ergebnis</code> auf <code>a</code> gesetzt, sonst (<code>else</code>) auf <code>b</code>. | ||
<code> | <code> | ||
public int | public int bestimmeDieGroessere(int a, int b) | ||
{ | { | ||
int ergebnis; | int ergebnis; |
Version vom 6. Dezember 2013, 21:02 Uhr
Allgemeines
Hier werden die grundlegenden Sprachelemente von Java im Detail erklärt.
Wer wissen möchte, wie eine ganze Klasse aussieht:
Anforderungen Zentralabitur
Das Zentralabitur fordert die Kenntnis von bestimmten Basis-Sprachelementen, die hier aufgeführt sind.
Im folgenden werden diese und weitere Basis-Sprachelemente erläutert.
Stand: 2012 (im April 2013 noch aktuell)
- Klassendefinitionen
- Beziehungen zwischen Klassen
- gerichtetete Assoziation
- Vererbung
- Attribute und Methoden (mit Parametern und Rückgabewerten)
- Wertzuweisungen
- Verzweigungen (if, switch)
- Schleifen (while, for, do-while)
Klasse, Objekt, Klassendefinition
Auf dieser Seite werden Klassen, Objekte etc. Schritt für Schritt erklärt.
Den erläuterten kompletten Quellcode einer Java-Klasse findet man hier: Klasse in Java
- Von einer Klasse können viele Objekte erzeugt werden.
- Beispiel: Es gibt eine Klasse
Crab
, von der man viele einzelne Objekte erzeugen kann. - Java: Definiton einer Klasse:
public class Crab
{
// Attribute
// Konstruktor
// Methoden
}
Attribute
- Attribute beschreiben, welche Eigenschaften bzw. Teil-Objekte die Objekte einer Klasse haben.
- Jedes Attribut kann für jedes einzelne Objekt einer Klasseeinen anderen Wert, den Attribut-Wert haben.
- Beispiel: Die eine Krabbe hat die Geschwindigkeit 5, die andere Krabbe hat die Geschwindigkeit 10.
- Attribute haben einen Attribut-Typ. Für Geschwindigkeiten ist beispielsweise ein Zahltyp sinnvoll, etwa
int
für ganze Zahlen. Für Namen eignet sichString
. - Java:
- Attribute werden direkt nach der Klassen-Deklaration notiert.
- Attribute sind in der Regel
private
, d.h. sie können nicht ohne Weiteres von Außen verändert werden.
Beispiel 1:
Objekte der Klasse Crab
können unterschiedliche Geschwindigkeiten haben.
Dafür gibt es das Attribut geschwindigkeit
public class Crab
{
// Attribute
private int geschwindigkeit;
// Konstruktor
// Methoden
}
Beispiel 2:
Objekte der Klasse Baum
bestehen aus einen Quadrat (für den Stamm) und einem Kreis (für die Krone).
public class Baum
{
// Attribute
private Quadrat stamm;
private Kreis krone;
// Konstruktor
// Methoden
}
Konstruktor
Aufruf des Konstruktors:
- Um ein neues Objekt einer Klasse zu erzeugen, ruft man den Konstruktor der Klasse auf, z.B.:
- Java:
Crab neueKrabbe = new Crab();
Deklaration des Konstruktors:
- In der Deklaration des Konstruktors wird festgelegt, was passiert, wenn ein Objekt der Klasse erzeugt wird.
- Der Konstruktor heißt genauso wie die Klasse.
- Der Konstruktor hat keinen Rückgabetyp, also auch kein
void
.
Beispiel:
public class Crab
{
// Attribute
private int geschwindigkeit;
// Konstruktor
public Crab()
{
turn(50);
}
// Methoden
}
Dadurch wird jede Krabbe bei der Erzeugung um 50 Grad gedreht.
Konstruktor mit Parameter
Man kann im Konstruktor einen Parameter übergeben, z.B. um direkt bei der Erzeugung die Eigenschaft eines Objektes festzulegen.
Beispiel:
public class Crab
{
// Attribute
private int geschwindigkeit;
// Konstruktor
public Crab(int pGeschwindigkeit)
{
geschwindigkeit = pGeschwindigkeit;
}
// Methoden
}
Dadurch muss man bei der Erzeugung der Krabbe die Geschwindigkeit festlegen.
Aufgerufen wird dieser Konstruktor dann z.B. so:
Crab neueKrabbe = new Crab(3);
Damit hat neueKrabbe
die Geschwindigkeit 3.
Methoden
In Methoden wird festgelegt, was man mit einem Objekt der Klasse machen kann.
Beispiel:
Für ein Objekt der Klasse Krabbe soll die Geschwindigkeit festgelegt werden können. Außerdem soll man die Geschwindigkeit auslesen können.
public class Crab
{
// Attribute
private int geschwindigkeit;
// Konstruktor
public Crab()
{
turn(50);
}
// Methoden
public void setzeGeschwindigkeit(int neueGeschwindigkeit)
{
geschwindigkeit = neueGeschwindigkeit;
}
public int gibGeschwindigkeit()
{
return geschwindigkeit;
}
}
Methodendeklaration
//TODO
Methodenaufruf
//TODO
Bedeutung des Punktes
//TODO
Parameter
- Manche Methoden brauchen eine zusätzliche Information, um richtig arbeiten zu können.
- Das ist hier der Fall bei der Methode
setzeGeschwindigkeit
: Damit sie sinnvoll arbeiten kann, muss man angeben können, wie groß die Geschwindigkeit sein soll. - Dafür haben Methoden Parameter, in diesem Fall
neueGeschwindigkeit
. - Bei Parametern muss immer der Typ festgelegt werden; man spricht von Parameter-Typ.
- Der Parameter-Typ von
neueGeschwindigkeit
istint
, also eine ganze Zahl.
- Der Parameter-Typ von
- Wenn eine Methode mit Parameter aufgerufen wird, dann muss man den Parameter übergeben.
Crab neueKrabbe = new Crab();
// jetzt kommt der Methodenaufruf mit Parameterübergabe!
neueKrabbe.setzeGeschwindigkeit(10);
- Bei Methoden ohne Parameter steht nach dem Methoden-Namen nur
()
. Das ist wichtig, um sie von Attribute zu unterscheiden!
sondierende Methode / verändernde Methode
- sondierende Methode: Dieser Methodentyp gibt eine Information über das Objekt zurück.
- Beispiel:
public int gibGeschwindigkeit()
- Beispiel:
- verändernde Methode: Dieser Methodentyp verändert das Objekt.
- Beispiel:
public void setzeGeschwindigkeit(int pGeschwindigkeit)
- Beispiel:
Rückgabetyp einer Methode
Für eine Methode wird immer der Rückgabetyp festgelegt.
void
: Wenn die Methode nichts zurückgibt (bei einer verändernden Methode).- Beispiel:
public void setzeGeschwindigkeit(int neueGeschwindigkeit)
- Beispiel:
int
: Wenn die Methode eine ganze Zahl (int
) zurückgibt.- Beispiel:
public int gibGeschwindigkeit()
- Beispiel:
- Statt
int
kann auch jeder andere Typ oder auch eine Klasse (z.B.Crab
) der Rückgabe-Typ einer Methode sein.- Beispiel:
public Crab gibKopie()
: Diese Methode würde eine Kopie der Krabbe (also ein Objekt der KlasseCrab
) zurückgeben.
- Beispiel:
lokale Variablen
- Lokale Variablen sind nur in dem Block gültig, in dem sie deklariert wurden.
- Lokale Variablen kann man (im Gegensatz zu Attributen) nicht in der ganzen Klasse benutzen.
- Man benutzt lokale Variablen, um Informationen zu speichern, die man nur kurzfristig braucht.
Beispiel:
public class Crab
{
...
public void act()
{
CrabWorld cw = (CrabWorld)getWorld();
Lobster lo = cw.getLobster();
int xLobster = lo.getX();
int yLobster = lo.getY();
...
// jetzt kann man xLobster und yLobster verwenden!
// z.B. um die Krabbe in Richtung (xLobster, yLobster) zu steuern.
}
}
cw, lo, xLobster, yLobster
sind lokale Variablen.
Wertzuweisungen
- Attributen und lokalen Variablen können Werte zugewiesen werden.
- Beispiel 1:
geschwindigkeit = 10;
- Damit wird dem Attribut
geschwindigkeit
der Wert 10 zugewiesen.
- Beispiel 2:
geschwindigkeit = neueGeschwindigkeit;
- Damit wird dem Attribut
geschwindigkeit
der WertneueGeschwindigkeit
zugewiesen.
- Beispiel 3:
geschwindigkeit = geschwindigkeit + 1;
- Damit wird dem Attribut
geschwindigkeit
der Wertgeschwindigkeit+1
zugewiesen, - d.h. die Geschwindigkeit wird um 1 erhöht!
- Allgemein:
- links vom Gleichzeichen steht das Attribut (bzw. die lokale Variable), der ein neuer Wert zugewiesen wird.
- rechts vom Gleichzeichen steht der neue Wert.
Verzweigungen (if, switch)
if - else
Beispiel: die folgende Methode überprüft, welche von zwei Zahlen die größere ist.
Es passiert folgendes: Wenn (if
) a
größer als b
ist, dann wird ergebnis
auf a
gesetzt, sonst (else
) auf b
.
public int bestimmeDieGroessere(int a, int b)
{
int ergebnis;
if(a > b)
{
ergebnis = a;
}
else{
ergebnis = b;
}
return ergebnis;
}
VORSICHT:
Gleichheit überprüft man mit doppeltem Gleichzeichen:
// Wenn x gleich drei ist, ...
if(x == 3)
{
...
}
switch
//TODO
Schleifen (while, for, do-while)
TODO
Beziehungen zwischen Klassen
TODO
gerichtetete Assoziation
TODO
Vererbung
TODO