klassendefinition und objekte folie 1 uwe lämmel einführung in die programmierung...

30
Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenscha ften www.wi.hs-wismar.de/ ~laemmel [email protected]

Upload: hartwig-ankney

Post on 05-Apr-2015

108 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

[email protected]

Page 2: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 3: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 4: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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:

Page 5: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 6: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 7: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 8: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 8Uwe Lämmel

Daten-Übergabe mittels Parameter

TicketAutomat bus = new TicketAutomat(500);

Page 9: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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;

Page 10: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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 … }

Page 11: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 12: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 13: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 14: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 15: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 16: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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:

Page 17: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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!

Page 18: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 19: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 19Uwe Lämmel

Digitale Uhr: Klassen und Objektinteraktion

Eine Anzeige aus 4 Ziffern?

Zwei Anzeigen zu je 2 Ziffern?

Page 20: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 21: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 21Uwe Lämmel

Klasse Nummeranzeige

public class Nummernanzeige { private int limit; private int wert;

// Konstruktor und// Methoden fehlen hier.

} // Nummernanzeige

Page 22: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 22Uwe Lämmel

Klasse Uhrenanzeige

public class Uhrenanzeige { private Nummernanzeige stunden; private Nummernanzeige minuten;

// Konstruktor und// Methoden fehlen hier!

} // Uhrenanzeige

Page 23: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 23Uwe Lämmel

Objekt-Interaktion

Page 24: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 24Uwe Lämmel

Klassendiagramm

Page 25: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 26: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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:

Page 27: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 28: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 29: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

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

Page 30: Klassendefinition und Objekte Folie 1 Uwe Lämmel Einführung in die Programmierung Klassendefinition und Objekte Uwe Lämmel Fakultät für Wirtschaftswissenschaften

Klassendefinition und Objekte Folie 30Uwe Lämmel

Ende