Variablen, Typen und Methoden

Werbung
Universität Bayreuth
Lehrstuhl für Angewandte Informatik IV
Datenbanken und Informationssysteme
Prof. Dr.-Ing. Jablonski
Variablen, Typen und Methoden
Dipl. Inf. Manuel Götz
Lehrstuhl für Angewandte Informatik IV
Universität Bayreuth
Fakultät für Mathematik, Physik und Informatik
D-95440 Bayreuth
Lehrstuhl für Mathematik und ihre Didaktik – Didaktik der Informatik
Universität Bayreuth
Fakultät für Mathematik, Physik und Informatik
D-95440 Bayreuth
Zustand eines Objekts
 Der Zustand eines Objekts ergibt sich aus den Werten seiner Felder
▫ Ein Feld hat einen Namen und einen
Wert
▫ Beispiel Bankkonto:
 3 Felder mit den Namen "nummer",
"inhaber" und "kontostand"
 Erstellen von Feldern
▫ Felder werden in Klassen als Variablen
erstellt
▫ Eine Variable hat
 einen Typ
 einen Namen
 evtl. einen Initialwert
konto_1
nummer:
621 736 172
inhaber:
"Donald Duck"
kontoStand:
100 000 000
getKontoStand
einzahlen
betrag:
abheben
betrag:
public class Konto {
int nummer;
String inhaber;
überweisen
int kontostand = 0;
empfänger:
betrag:
}
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
2
Typen
 In Java werden 2 Arten von Typen unterschieden
▫ Primitiver Typ
▫ Objekttyp
 Primitive Typen
▫ Es gibt 8 primitive Typen in Java
▫ Für uns sind nur 2 wichtig:
 int
▫ Beliebige ganze Zahl*
▫ kein Text
▫ keine Dezimalzahl
 boolean
▫ Ein "Wahrheitswert"
▫ entweder "true" oder "false"
 Objekttypen
▫ Werden vom Programmierer implementiert
▫ Einige werden schon mitgeliefert
 Beispiel: String
▫ Beliebiger Text
*) genau genommen, eine Zahl zwischen -2147483648 und +2147483647 (entspricht: -231 bis 231 - 1)
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
3
Unterschiede zwischen den Typen
 Primitiver Typ
▫ Der Wert wird direkt in das Feld des Objekts geschrieben
▫ Daher können primitive Typen mit "==" verglichen werden
 Objekttyp
▫ Im Feld eines Objekttypen steht eine Referenz auf den Wert
▫ Initialisiert (Anfangswert) wird er mit dem ungültigen Wert "null"
▫ Objekttypen werden mit der "equals"-Methode verglichen
konto_1
621 736 172
nummer:
Primitiver Typ
public class Konto {
int nummer;
inhaber:
String inhaber;
int kontostand = 0;
100 000 000
kontoStand:
}
Hauptspeicher:
"irgendwas" "bla" "Helmut Kohl" "noch mehr bla"
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
4
Methoden
 Bisher hat unsere Klasse Konto nur
Variablen
▫ Damit hat sie einen Zustand, aber sie
kann noch nichts tun
 Um etwas zu tun, braucht eine Klasse
Methoden
 Die Klasse Konto hat 4 Methoden
konto_1
nummer:
621 736 172
inhaber:
"Donald Duck"
kontoStand:
100 000 000
getKontoStand
 wenn eine Methode "etwas tut",
dann führt sie einen Algorithmus
aus
einzahlen
betrag:
abheben
betrag:
public int getKontoStand()
public void einzahlen(int betrag)
überweisen
public void abheben(int betrag)
public void ueberweisen(Konto empfaenger, int betrag)
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
empfänger:
betrag:
5
Aufbau von Methoden - 1
 Methoden bestehen aus
▫ einer Signatur (das ist die "äußere Form") mit




Name
Typ des Rückgabewerts (Ergebnis, Resultat) und
Parametern (einer Liste mit den Typen und Namen der Eingabewerte) und
Scope (wo ist die Methode sichtbar?)
▫ einem Methodenkörper
 Enthält den Algorithmus
 Bestimmt also, was die Methode wirklich macht
Methode
Signatur
Name
Methodenkörper
Scope
Typ des Rückgabewerts
Algorithmus
Parameterliste
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
6
Aufbau von Methoden - 2

Eine Methode mit Rückgabewert
▫
Die Methode getKontoStand() liefert den Inhalt des Feldes kontostand
Name der
Methode
Typ des
Ergebnisses
public int getKontoStand() {
Scope
return kontostand;
}
Liefere als Resultat

Inhalt des Feldes kontostand
Eine Methode mit Parameterliste
▫
▫
Die Methode abheben(int betrag) benötigt einen Input, nämlich den Betrag, der abgehoben
werden soll
betrag ist ein Wert vom Typ int
Diese Methode hat keinen Rückgabewert
Parameter vom Typ int mit Name "betrag"
public void abheben(int betrag) {
kontostand = kontostand - betrag;
}

Methodenkörper
Wichtig: Jeder Befehl in einem Methodenkörper endet mit einem Strichpunkt!!
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
7
Zuweisungen
 Zuweisungen funktionieren in Java immer "von rechts nach links"
▫ Rechts steht der neue Wert
▫ Links steht die Variable, der dieser Wert zugewiesen wird
▫ Dazwischen steht ein "="
public void einzahlen(int betrag) {
kontostand = kontostand + betrag;
}
Alter Wert plus eingezahlter Betrag
Dieser Variable wird der Wert
zugewiesen
 Wichtig
▫ Der Typ auf der linken und rechten Seite muss gleich sein
 D.h. einem int kann auch nur ein int zugewiesen werden
 Beispiel für Fehler:
int kontostand = 0;
public void neuerKontostand(String betrag) {
kontostand = betrag;
}
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
8
Get- und Set-Methoden
 Die Werte von Variablen sollten in Java nur über Methoden verändert
werden (guter Programmierstil)
 Get- und Set-Methoden
 Eine Get-Methode gibt den Wert einer Variablen zurück
▫ Beispiel: Get-Methode für kontoStand
int kontostand = 0;
public int getKontostand() {
return kontostand;
}
 Eine Set-Methode überschreibt einen Wert für eine Variable
▫ Beispiel: Set-Methode für Kontostand
int kontostand = 0;
public void setKontostand(int neuerKontostand) {
kontostand = neuerKontostand;
}
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
9
Aufruf von Methoden
 Methoden können in ihrem Methodenkörper die Methoden des eigene
oder anderer Objekte aufrufen
▫ Das sind die Nachrichten, die zwischen den Objekten hin und hergeschickt
werden
 Beispiel: Überweisen eines Betrags auf ein anderes Konto
▫ Dazu werden 2 Parameter benötigt
 Das Konto(-objekt), auf welches das Geld überwiesen werden soll
 Der Betrag, der auf dieses Konto überwiesen werden soll
 Ablauf: Abbuchen von meinem Konto, Einzahlen auf einem anderen Konto
Parameterliste
Referenz auf das Objekt,
in dem ich bin (oft
implizit)
public void ueberweisen(Konto empfaenger, int betrag) {
this.abheben(betrag);
empfaenger.einzahlen(betrag);
}
Konto-Objekt des
Empfängers
26.11.2007
Methode, die am KontoObjekt des Empfängers
aufgerufen wird
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
10
Die Klasse String
 Ein Objekttyp in Java
▫ Bereits in der JDK mitgeliefert und muss nicht mehr implementiert werden
 Ein String ist eine verkettete Folge von Zeichen
▫ Er wird vom Computer nicht weiter interpretiert
 Beispiel: "Hier kann etwas total sinnloses stehen."
▫ Er ist immer eingeschlossen in Literale ""
▫ Erzeugung von Strings
String neuerString = new String("Hallo, Welt");
//oder
String neuerString2 = "Hallo, Welt, schon wieder"; //  das ist ein Spezialfall zur Erstellung von Objekten
▫ Bearbeiten von Strings, z.B. Konkatenation
String verketteterString = neuerString + neuerString2;
 Ergebnis Beispiel: verketteter String enthält "Hallo, WeltHallo, Welt, schon wieder"
▫ Ausgabe
 Siehe nächste Folie
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
11
Die Klasse System
 Ein Objekttyp in Java
▫ Bereits in der JDK mitgeliefert und muss nicht mehr implementiert werden
 Enthält unter anderem die Methode println
▫ Diese Methode gibt Werte (z.B. den Inhalt eines Strings oder den Wert eines
int) auf der Kommandozeile aus
▫ Verwendung
public class Konto {
…
public void kontostandAusgeben() {
System.out.println("Der Kontostand von " + inhaber + " ist " + kontostand);
}
 Vorsicht
▫ Bei anderen Typen als String und den Primitiven Typen gibt die Methode die
ObjektID aus  für den Benutzer komplett wertlos
 Beispiel
Konto meinKonto = new Konto();
System.out.println(meinKonto);
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
12
Instanziierung von Objekten
 Erstellen eines Objekts aus einer Klasse
 Objekte können in Methoden erstellt werden
 Dafür gibt es das Schlüsselwort "new"
▫ Benötigte Angaben:
 Klasse, aus der ein Objekt erstellt werden soll
 Name das Objekts, das erstellt wird (das ist dann auch die Referenz)
 Konstruktor (im Augenblick ist das nur der Klassenname mit () dahinter)
▫ Beispiel: Erstellen eines Konto-Objekts
public static void main(String args[]) {
Klasse
Konto a = new Konto();
}
Name
Konstruktor
 Wichtig:
▫ Erst nach der Instanziierung können Methoden aufgerufen werden!!!
 Vorher gibt es keine Objekte, an denen das geschehen könnte
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
13
JAR-Files
 Ein Java-Programm wird im Allgemeinen als JAR-File weitergegeben
▫ Ein JAR-File ist ausführbar z.B. durch einen Doppelklick (falls eine mainMethode vorhanden ist)
 Da Java portabel ist, funktioniert das Programm auf jedem Computer, auf dem eine
JRE (Java Runtime Environment) installiert ist
 JREs sind heutzutage auf den meisten verkauften Rechnern vorinstalliert
 Sonst für die gängigen Betriebssysteme frei im Internet verfügbar unter
https://sdlc3b.sun.com/ECom/EComActionServlet;jsessionid=6D29688818F9934AE
5DAEC7B4845F448
▫ Im Prinzip sind in einem JAR-File die kompilierten (übersetzten) Klassen eines
Programms enthalten und als zip gepackt
▫ Man kann wahlweise auch den Quellcode hinzufügen
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
14
Export eines JAR-Files in Eclipse - 1
 Auswahl von File >> Export
 Markieren von "JAR file"
 "Next"-Button drücken
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
15
Export eines JAR-Files in Eclipse - 2
 Auswahl des Projekts, das
exportiert werden soll
 Auswahl, was exportiert
werden soll
▫ Kompilierte Klassen
▫ Quellcode
 Auswahl des Zielverzeichnis
und Name des JARs
 "Finish"-Button drücken
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
16
Aufgabe - 1
 Implementieren Sie eine Klasse Konto mit folgenden Eigenschaften:
▫ Attribute:
 nummer
 kontoStand
▫ Am Anfang 0, d.h. "int kontoStand = 0;"
 inhaber
▫ Methoden mit folgenden Funktionen:
 Get- und Set-Methoden für die Variablen nummer und inhaber
 public void getKontoStand()
▫ Gibt den Kontostand zurück
 public void einzahlen(int betrag)
▫ Ein Kunde soll damit Geld auf sein Bankkonto einzahlen
 public void abheben(int betrag)
▫ Ein Kunde hebt Geld von seinem Konto ab
 public void ueberweisen(Konto k, int betrag)
▫ Ein Kunde überweist den Geldbetrag betrag von seinem Konto auf das Konto k
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
17
Aufgabe - 2
 Implementieren Sie eine Klasse Test mit einer main-Methode, die
folgendes Programm ausführt:
▫
▫
▫
▫
▫
▫
▫
In dieser soll ein Konto a und ein Konto b instanziiert werden
Konto a soll "Albert" als Inhaber und die Kontonummer 1 haben
Konto b soll "Berta" als Inhaber und die Kontonummer 2 haben
Albert zahlt 100 Euro ein
Berta zahlt 200 Euro ein
Albert hebt 50 Euro ab
Berta überweist 50 Euro auf das Konto von Albert
▫ Lassen Sie sich nach Einzahlungen, Auszahlungen und Überweisungen die
Kontostände beider Konten ausgeben
 Lassen Sie ihre main-Methode laufen und testen Sie somit ihr Programm
 Exportieren Sie das Konto-Projekt aus Eclipse in ein JAR
26.11.2007
© 2007 · Lehrstuhl für Angewandte Informatik IV · Didaktik der Informatik
18
Herunterladen