|
|
Kommunikation zwischen Objekten
Beziehungen zwischen Objekten Aggregation („enthält“-Beziehung, „ist Teil von“) Weitere Beziehungen z.B. benutzt, bucht, überweist Beziehungen zwischen Objekten nennt man Assoziationen
Beispiel: Schule
Assoziationen Arten: Ein Objekt nutzt Daten (Attributwerte) eines anderen Objekts Ein Objekt ruft Methoden eines anderen Objektes auf
Objekt: lehrer1 name: „Müller“ fach: „Mathematik“ …. Objekt: lehrer2 name: „Schmidt“ fach: „Sport“ … Methode: gruessenLehrer(lehrer2) „Guten Morgen Kollege Schmidt Eingabeparameter: Objekt vom Typ LEHRER Ausgabe verwendet Attributwert des Objekts Klasse: LEHRER Klasse: LEHRER
Objekt: lehrer1 name: „Müller“ fach: „Mathematik“ …. Objekt: klasse1 bezeichnung: „4a“ Anzahl_schueler: 29 Methode: gruessenKlasse(klasse1) „Guten Morgen Klasse 4a!“ Eingabeparameter: Objekt vom Typ KLASSE Ausgabe verwendet Attributwert des Objekts Klasse: KLASSE Klasse: LEHRER
Verwendung von Attributen Attribute sind normalerweise „privat“ Zugriff kann nur von Objekten der eigenen Klasse stattfinden Objekte fremder Klassen benötigen spezielle Lese- bzw. Schreibmethoden
Get-Methoden Erlauben Zugriff auf Attributwerte Bsp: Ausgabe der Klassenbezeichnung public String getBezeichnung() { return bezeichnung; } Zugriff auf die Methode ist öffentlich, d.h. auch von Objekten anderer Klassen ausführbar Attributwert wird von Methode innerhalb der Klasse ausgelesen und nach außen kommuniziert
Set-Methoen Attributwerte können von Objekten anderer Klassen nicht verändert werden Set-Methoden können die Veränderungen zulassen Bsp: Veränderung der Klassenbezeichnung public void setBezeichnung (String neueBezeichnung) { bezeichnung = neueBezeichnung; } Klar definierte Zugriffe von außen
Referenzierung Objekt, das Methoden oder Attribute eines zweiten Objekt nutzt, muss dieses kennen
Richtung der Assoziation Wer nutzt wen? Unidirektional Referenz nur in eine Richtung Objekt 1 kennt Objekt 2, aber nicht umgekehrt Bidirektional Referenz in beide Richtungen Die Objekte kennen sich gegenseitig
Multiplizität Wie viele Objekte der einen Klasse sind durch Assoziation jedem Objekt der anderen Klasse zugeordnet?
1:1 Beziehung < leitet 1 1 LEHRER KLASSE EIN Lehrer leitet EINE Klasse EINE Klasse wird von EINEM Lehrer geleitet 1:1 Assoziation
1:n Beziehung SCHUELER KLASSE < besteht_aus n 1 gehoert_zu Eine Klasse besteht aus MEHREREN Schülern Ein Schüler gehört zu EINER Klasse 1:n Assoziation
Klassendiagramm In einer Schule gibt es Lehrer, Klassen und Schüler. Jeder Lehrer hat einen Namen, Vornamen und Geschlecht. Jede Klasse hat eine Bezeichnung und wird von einem Klassleiter geleitet Jeder Schüler hat Name, Vorname, Geschlecht und eine Klasse, in die er geht. Eine Klasse wird von einem Lehrer geleitet. Jede Klasse besteht aus mehreren Schülern. Gib ein Klassendiagramm für die gegebene Situation an!
Lösung: Klassendiagramm
Programmierung Schreibe nach dem vorgegebenen Schema die Klassen mit ihren Attributen und gib auch geeignete Konstruktoren an! Lege einen Lehrer lehrer1 an. Lege eine Klasse klasse1 an, die von lehrer1 geleitet wird. Lege drei Schüler schueler1, schueler2 und schueler3 an, die in die Klasse klasse1 gehen. Inspiziere die Objekte und ihre Referenzen.
Lehrer public class Lehrer { // Attribute private String name; private String vorname; private char geschlecht; //'m' für männlich, 'w' für weiblich /** * Konstruktor für Objekte der Klasse Lehrer */ public Lehrer(String name_neu, String vorname_neu,char geschlecht_neu ) { name = name_neu; vorname = vorname_neu; geschlecht = geschlecht_neu; } }
Schueler public class Schueler { // Attribute private String name; private String vorname; private char geschlecht; private Klasse klasse; //stellt die Assoziation zu einem Objekt der Klasse Klasse her /** * Konstruktor fuer Objekte der Klasse Schueler */ public Schueler(String name_neu, String vorname_neu, char geschlecht_neu, Klasse k) { name = name_neu; vorname = vorname_neu; geschlecht = geschlecht_neu; klasse = k; } }
Klasse public class Klasse { // Attribute private String bezeichnung; private Lehrer leitung; //stellt die Beziehung zu einem Objekt der Klasse Lehrer her /** * Konstruktor für Objekte der Klasse Klasse */ public Klasse(String bez, Lehrer l) { bezeichnung = bez; leitung = l; }
| URL: |
No comments posted yet
Comments