klassendefinition und objekte folie 1 uwe lämmel einführung in die programmierung...
TRANSCRIPT
Klassendefinition und Objekte Folie 1Uwe Lämmel
Einführung in die ProgrammierungKlassendefinition und Objekte
Uwe Lämmel
Fakultät für Wirtschaftswissenschaften
www.wi.hs-wismar.de/~laemmel
Klassendefinition und Objekte Folie 2Uwe Lämmel
Inhalt
Klasse– Bauplan: Zweck, Aufbau, Entwurf– ausführbare Klasse– Bibliotheksklasse
Methoden– Konstruktor– Zugriff– Ausgabe– Verarbeitung
Parameter
Erzeugung und Nutzung von Objekten
Klassendefinition und Objekte Folie 3Uwe Lämmel
Klasse
repräsentiert alle Objekte eines Typs (Bauart), z.B.: "Student ", "Ticketautomat "
beschreibt Objekte mittels:– Daten = Merkmale
(Attribute, Instanz-Variablen)– Aktionen = Methoden
Klassendefinition und Objekte Folie 4Uwe Lämmel
Ticket-Automat: Nutzersicht /externe Sicht
Ein naiver Ticket-Automat:– liefert Tickets zum festen Preis
Fragen:– Wie wird dieser Festpreis festgelegt?– Wie wird "Geld eingeworfen"?– Wie verwaltet der Automat das Geld?
Beispiel:
Klassendefinition und Objekte Folie 5Uwe Lämmel
Ticket-Automat: interne Sicht
Klasse muss Objekte so beschreiben, dass gewünschtes Verhalten erreicht wird
Merkmale? Methoden?
preisbisherGezahltgesamtsumme
anzVerkaufterTickets
KonstruktorgetPreis
getBisherGezahltgeldEinwerfenticketDrucken
Klassendefinition und Objekte Folie 6Uwe Lämmel
Merkmal (Datenfeld, Instanz-Variable)
Instanz-Variablen speichern Merkmale
BlueJ: "inspect" zeigt die Merkmale eines Objekts
Werte der Instanz-Variablen = Zustand eines Objekts
public class TicketAutomat{ private int preis; private int bisherGezahlt; private int gesamtsumme; //hier: Konstruktoren und Methoden} //TicketAutomat
private int preis;
Sichtbarkeit Typ Name der Variable
Klassendefinition und Objekte Folie 7Uwe Lämmel
Konstruktoren
… erzeugen ein Objekt … haben denselben Namen wie die Klasse … legen Anfangswerte für Merkmale fest:
häufig: Anfangswert als Parameter "von außen"
public TicketAutomat (int ticketPreis) {preis = ticketPreis;bisherGezahlt = 0;gesamtsumme = 0;anzTickets = 0;
} // TicketAutomat
Klassendefinition und Objekte Folie 8Uwe Lämmel
Daten-Übergabe mittels Parameter
TicketAutomat bus = new TicketAutomat(500);
Klassendefinition und Objekte Folie 9Uwe Lämmel
Zuweisung (Assignment)
Werte in Variablen speichern:preis = ticketPreis;bisherGezahlt = 0;
Variable speichert NUR EINEN Wert; vorheriger Wert verloren
variable = expression;
Klassendefinition und Objekte Folie 10Uwe Lämmel
Methoden
legen das Verhalten von Objekten fest
unterscheiden:– Konstruktor-Methoden – Zugriffsmethoden (lesend, schreibend)– Verarbeitungsmethoden– Ausgabe-Methoden
einheitlicher Aufbau:
– Kopf (Signatur)public int getPreis()
– Körper{ … Anweisungen … }
Klassendefinition und Objekte Folie 11Uwe Lämmel
Zugriffsmethode, lesend
Information über das Objekt besitzt Ergebnis-Typ und return-Anweisung return-Anweisung bestimmt Ergebnis
public int getPreis(){ return preis;} //getPreis
Ergebnis-Typ
Methodenname
Anfang und Ende des Methoden-Körpers (block)
return-Anweisung bestimmt Ergebnis
Sichtbarkeit
Kommentar zur schließenden Klammer
Parameterliste
Klassendefinition und Objekte Folie 12Uwe Lämmel
Zugriffsmethode, schreibend Verändert die Merkmale eines Objekts besitzt (meist) Parameter kein Ergebnis-Typ (void) enthält Zuweisungen an Instanz-Variable
public void setPreis(int neu){ preis = neu;} //setPreis
(kein) Ergebnis-Typ Methodenname
Anfang und Ende des Methoden-Körpers (block)
Zuweisung
Sichtbarkeit
Kommentar zur schließenden Klammer
Parameterliste
Klassendefinition und Objekte Folie 13Uwe Lämmel
Ausgabemethode
KEINE Verarbeitung nur Ausgabe der Objekt-Werte in gewünschter Form 2 Möglichkeiten:
– direkte Ausgabe : Ergebnistyp void, Ausgabe: System.out.println(…);
– toString-Methode: Ergebnistyp String und return-Anweisung
public void ausgabe() { System.out.println("Preis=" + preis + " Geldsumme= "+gesamtsumme);} //ausgabe
public String toString() { return "Preis=" + preis + " Geldsumme= "+gesamtsumme;} //toString
Klassendefinition und Objekte Folie 14Uwe Lämmel
Klasse = Bauplanclass Klasse {
// Merkmale = Instanz-Variablen (private)private int number;
// Konstruktor(en) mit/ohne Parameterpublic Klasse( ) { /* Initialisierungen */ }
// Zugriffsmethoden: getX/setXpublic int getNumber() { return number;}public void setNumber(int n) { number=n; }
// Arbeitsmethodenpublic boolean istTeiler(int a) { … }
// Ausgabepublic void ausgabe() { System.out.println("Nummer= "+number); }
}//Klasse
–Merkmale
– Konstruktoren
–Methoden
Klassendefinition und Objekte Folie 15Uwe Lämmel
Klasse TicketAutomat
Beispiel in BlueJ entwickeln. Klasse testen:
– TicketAutomat-Objekt erzeugen– Methoden an das Objekt senden– mittels "inspect" Zustand des Objekts einsehen– Schreiben einer ausführbaren Klasse
Klassendefinition und Objekte Folie 16Uwe Lämmel
Ausführbare Klasse
class Klasse {
// main-Methode:public static void main(String[ ] args) {
// VerarbeitungTicketAutomat bus = new TicketAutomat(500);bus.geldEinwerfen(200);bus.ticketDrucken();bus.ausgabe();System.out.println(bus);
}//main
}//Klasse
enthält main Methode: public static void main(String[ ] args) { … }
kann als Programm ausgeführt werden:
Klassendefinition und Objekte Folie 17Uwe Lämmel
Aufgabe
Machen Sie sich mit dem Projekt "Naiver-Ticket-Automat" vertraut.
Verbessern Sie den Ticket-Automaten:– Es wird ein Ticket nur gedruckt, falls genügend
(ev. auch mehr) Geld eingeworfen wurde.– Eine Methode gibt das Wechselgeld heraus.– Es werden nur sinnvolle Geldbeträge in der
Methode "geldEinwerfen" akzeptiert.
selbst erarbeiten!
Klassendefinition und Objekte Folie 18Uwe Lämmel
Zusammenfassung
Klassen bilden reale/virtuelle Welt ab Klassen beschreiben Objekte Klasse: Merkmale, Konstruktoren,
Methoden Merkmale = Instanzen-Variablen
– Menge der Werte = Zustand des Objekts Konstruktor: erzeugt Objekt Zugriffsmethoden: lesend, schreiben Methoden können …
– Zustand des Objekts ändern– Parameter besitzen– ein Ergebnis liefern
Zuweisung Wert an Variable: Speicher
Klassendefinition und Objekte Folie 19Uwe Lämmel
Digitale Uhr: Klassen und Objektinteraktion
Eine Anzeige aus 4 Ziffern?
Zwei Anzeigen zu je 2 Ziffern?
Klassendefinition und Objekte Folie 20Uwe Lämmel
Abstraktion und Modularisierung
Abstraktion– Details ignorieren– Konzentration auf Wesentliches
Modularisierung– Teilen der Aufgabe in kleinere Teile– getrennte Lösung der Teilprobleme– Interaktion der Teillösungen
Klassendefinition und Objekte Folie 21Uwe Lämmel
Klasse Nummeranzeige
public class Nummernanzeige { private int limit; private int wert;
// Konstruktor und// Methoden fehlen hier.
} // Nummernanzeige
Klassendefinition und Objekte Folie 22Uwe Lämmel
Klasse Uhrenanzeige
public class Uhrenanzeige { private Nummernanzeige stunden; private Nummernanzeige minuten;
// Konstruktor und// Methoden fehlen hier!
} // Uhrenanzeige
Klassendefinition und Objekte Folie 23Uwe Lämmel
Objekt-Interaktion
Klassendefinition und Objekte Folie 24Uwe Lämmel
Klassendiagramm
Klassendefinition und Objekte Folie 25Uwe Lämmel
Klasse Uhrenanzeige
public class Uhrenanzeige { private Nummernanzeige stunden; private Nummernanzeige minuten; private String zeitanzeige; // techn. Gründe
public Uhrenanzeige (){ stunden = new Nummernanzeige(24); minuten = new Nummernanzeige(60);
anzeigeAktualisieren(); } // Uhrenanzeige
// hier folgen weitere Methoden!} // Uhrenanzeige
Merkmale
Konstruktor
Klassendefinition und Objekte Folie 26Uwe Lämmel
Methoden der Klasse Uhrenanzeige
public String gibUhrzeit(){ return zeitanzeige; }
public void setzeUhrzeit(int stunde, int minute){stunden.setzeWert(stunde);minuten.setzeWert(minute);anzeigeAktualisieren();
} //setzeUhrzeit
private void anzeigeAktualisieren(){zeitanzeige = stunden.gibAnzeigewert() + ":"
+ minuten.gibAnzeigewert();} //anzeigeAktualisieren
setzWert(int wert) und gibAnzeigewert()in Klasse Nummernanzeige definieren!
Methoden-Aufruf:
Klassendefinition und Objekte Folie 27Uwe Lämmel
Methoden der Klasse Uhrenanzeige
/*** - Operation einmal pro Minute aufrufen * - sorgt dafür, dass diese Uhrenanzeige um eine Minute* weiter gestellt wird.*/public void taktsignalGeben( ) {
minuten.erhoehen( ); if (minuten.gibWert( ) == 0) { // Limit wurde erreicht!
stunden.erhoehen( );} //ifanzeigeAktualisieren();
} //taktsignalGeben
Klassendefinition und Objekte Folie 28Uwe Lämmel
Methoden der Klasse Nummernanzeige
public Nummernanzeige(int anzeigeLimit) {limit = anzeigeLimit;wert = 0;
} //Konstruktor// Zugriffsmethoden: public int gibWert() { return wert; }public String gibAnzeigewert() {
if(wert<10) { return "0" + wert;}else { return "" + wert; }
} //gibAnzeigewertpublic void setzeWert(int ersatzwert) {
if((ersatzwert >= 0) && (ersatzwert < limit)) {wert = ersatzwert;
} //if} //setzeWert
Klassendefinition und Objekte Folie 29Uwe Lämmel
Zusammenfassung Klassen bilden reale/virtuelle Welt ab Klassen beschreiben Objekte Klasse: Merkmale, Konstruktoren,
Methoden Merkmale = Instanzen-Variablen
– Menge der Werte = Zustand des Objekts Konstruktor: erzeugt Objekt Zugriffsmethoden: lesend, schreiben Methoden können …
– Zustand des Objekts ändern– Parameter besitzen– ein Ergebnis liefern
Objekte können andere Objekte benutzen Klassen fördern Modularisierung Modularisierung fördert Wiederverwendung
Klassendefinition und Objekte Folie 30Uwe Lämmel
Ende