Zum Hauptinhalt springen

Tag 11

MuKi​

public class Mutter
{
/**
* refKindist eine Referenzvariable vom Typ Kind.
* Sie muss auf etwas zeigen, hier eben auf null
*/
private Kind refKind = null;
// Eine normale Wertvariable
private int alterMutter = 18;
/**
* refKind wird auf das Kind gesetzt
* also auf das Kind, welches zur Mutter gehört!*/

public void setIhrKind(Kind refKind)
{
this.refKind = refKind;
}

public Kind getIhrKind()
{
return refKind;
/* Hinweis: Man erhält eine etwas komische Ausgabe,
* den von einer oberen Klasse abgeleiteten Hashwert.
* Wir sagen dem hier einfach anschaulich Adresse*/
}

public void setAlterMutter(int alterMutter)
{
this.alterMutter = alterMutter;
}
public int getAlterMutter()
{
return alterMutter;
}
}
public class Kind
{
/**
* DasKind hat noch keine Kenntnis von Mutter,
* zeigt auf null
*/
private Mutter refMutter = null;
// Normale Wertvariable
private int geburtsJahr= 0;
/**
* Es findet eine ParameterĂĽbergabe statt.
* Die Klasse Kind macht einen Verweis zur Mutter.
* Das Kind kennt nun seine Mutter.
*/
public void setSeineMutter(Mutter refMutter)
{
this.refMutter = refMutter;
}
public Mutter getSeineMutter()
{
return refMutter;
}
}
public class MainMuKi
{
public static void main(String[] args)
{
// Es werden konkrete Objekte (Instanzen) erzeugt
Mutter frauMu = new Mutter();
Kind claudia = new Kind();
// Setzen des Alters der Instanz frauMu
frauMu.setAlterMutter(28);
// frauMu bekommt Claudia zeigt auf Instanz Claudia
frauMu.setIhrKind(claudia);
// Kind Claudia zeigt auf frauMu, also das Kind von frauMu
claudia.setSeineMutter(frauMu);
System.out.println("frauMu mit Tochter Claudia");
System.out.println("Quasi Adresse des Kindes von frauMu: " + frauMu.getIhrKind());

System.out.println("Quasi Adresse der Mutter von Claudia: " + claudia.getSeineMutter());

System.out.println("Alter der Mutter von Claudia: " + frauMu.getAlterMutter());
}
}

Kontrollfragen und Aufträge​

Erstellen Sie eine eigene Zeichnung mit den Referenzen, ähnlich zur gezeigten Darstellung​


class Mutter {
}

class Kind {
}

Mutter <--> Kind

Experimentieren Sie: Neue Kinder, neue Mütter, neue Zuweisungen. Können Sie zwei Müttern ein Kind zuweisen?​

    Kind fritz = new Kind();
Kind anna = new Kind();
Mutter frauA = new Mutter();
Mutter frauB = new Mutter();
Mutter frauC = new Mutter();

frauA.setAlterMutter(31);
frauB.setAlterMutter(36);
frauC.setAlterMutter(29);

frauA.setIhrKind(fritz);
frauB.setIhrKind(fritz);
frauC.setIhrKind(anna);

fritz.setSeineMutter(frauA);
System.out.println("frauA mit Sohn Fritz");
System.out.println("Quasi Adresse des Kindes von frauA: " + frauA.getIhrKind());

System.out.println("Quasi Adresse der Mutter von Fritz: " + fritz.getSeineMutter());

System.out.println("Alter der Mutter von Fritz: " + frauA.getAlterMutter());

fritz.setSeineMutter(frauB);
System.out.println("frauB mit Sohn Fritz");
System.out.println("Quasi Adresse des Kindes von frauB: " + frauB.getIhrKind());

System.out.println("Quasi Adresse der Mutter von Fritz: " + fritz.getSeineMutter());

System.out.println("Alter der Mutter von Fritz: " + frauB.getAlterMutter());

anna.setSeineMutter(frauC);
System.out.println("frauC mit Tochter Anna");
System.out.println("Quasi Adresse des Kindes von frauC: " + frauC.getIhrKind());

System.out.println("Quasi Adresse der Mutter von Anna: " + anna.getSeineMutter());

System.out.println("Alter der Mutter von Anna: " + frauC.getAlterMutter());

Ja, man kann zwei MĂĽttern ein Kind zuweisen.

Was geschieht, wenn man zwei Müttern das gleiche Kind zuweist? Warum? Geht es?​

Man kann zwei MĂĽttern das gleiche Kind ohne Fehler zuweisen. Da zuerst die eine Mutter gesetzt wird und danach die zweite. Sobald die zweite gesetzt wurde vergisst das Kind seine erste Mutter.

Bücherei​

Von wem sollen die Methoden ausleihen() und zurueck() aufgerufen werden? Was macht Sinn?​

Am meisten Sinn macht es wenn die Methoden auf public sind. Damit kann von der App-Klasse zugegriffen werden.

Wie kontrollieren Sie, ob ein Buch bereits ausgeliehen ist?​

Indem man die Methode getStatus() aufruft.

Erstellen Sie ein Klassendiagramm für den Kunden​

class Kunde {
- name : String
+ buchLeihen(String buch) : void
+ buchZurueck(String buch) : void
+ ListeAusgeben() : void
+ getName() : String
+ setName(String name) : void
}