OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern

3rdtimesacharm

Neues Mitglied
Guten Abend,

ich bin im ersten Semester Informatik und wir fangen gerade erst an mit OOP.

Als Beispiel soll eine Familie modelliert werden. Die wird über's Semester immer komplexer.

Im Moment haben wir eine Klasse Baby und eine Klasse Mutter.

Baby und Mutter bekommen beide eine Instanzvariable "name". Diese wird durch einen Übergabeparameter im Konstruktor der Klasse gesetzt. (Was bedeutet das genau?) Zusätzlich bekommt das Baby die Variable "hungrig". Das Baby ist standardmäßig hungrig.
Die Mutter kann das Baby füttern. Wenn das Baby gefüttert ist, ist es nicht mehr hungrig.
Die Mutter kann das Baby wecken und spricht dabei das Baby mit seinem Namen an.
Insgesamt hat die Mutter drei Babys und sie kann jedes Baby füttern und wecken.

Der obige Text dient der Vorarbeit zu dieser Aufgabe:
Erstellen Sie nun in einer main-Methode die Mutter "Mandy", indem Sie ein Objekt der Klasse "Mutter" erzeugen. Anschließen instanziieren Sie die Klasse "Baby" durch die drei Babys "Jason", "Jeremy" und "Jacqueline".

Außerdem hab ich noch die Hinweise, dass der Name der Babys über die getName()-Methode bereitgesetllt wird und ich die setHungrig()-Methode brauchen werde, damit die Mutter den Hungerzustand ändern kann.

Ich verstehe auch nicht den 2. Teil der Aufgabe. Was bedeutet "instanziieren" genau? Was muss ich hier machen? Ist es das, was ich getan habe?


Ich bin leicht überfordert mit dieser Aufgabe. 😟

Meine Überlegungen bisher:
[CODE lang="java" title="Klasse Baby"]public class Baby {
private String name;
private boolean hungrig = true;

public Baby(String name) {
this.name = name;
Baby jason = new Baby("Jason");
Baby jeremy = new Baby("Jeremy");
Baby jacqueline = new Baby("Jacqueline");
}

public void setHungrig(boolean hungrig) {
this.hungrig = false;
}

public String getName(String name) {
return name;
}
}[/CODE]

und:
[CODE lang="java" title="Klasse Mutter"]
public class Mutter {
private String name;

public Mutter(String name) {
this.name = name;
}

public void fuettern(){

}

public void weckeBaby() {

}

public static void main(String[] args) {
//ein Objekt der Klasse Mutter erzeugen, um die Mutter Mandy zu nennen:
Mutter name = new Mutter("Mandy");

System.out.println("Name der Mutter: " + name);
}

}[/CODE]

Wie ihr wahrscheinlich hier schon seht, druckt mir Sysout nicht das aus, was ich will. Denn ich hätte gern den Namen ausgedruckt, aber was mir angezeigt wird ist die Referenz, also packagename.Klassenname@vieleZahlen.

Ich habe das Gefühl, etwas grundsätzliches falsch verstanden zu haben. Support in der Vorlesung ist schwierig, wir haben reines Onlinesemester und in der Sprechstunde bin ich bisher noch nie dran gekommen, weil so viele vor mir schon im Sprachkanal waren.

Vielen Dank für eure Hilfe!
 
K

kneitzel

Gast
Also bezüglich der konkreten Frage: Wenn Du ein Objekt ausgibst, dann ist das per Default erst einmal der Klassenname@hashwert.

Wenn Du da eine andere Ausgabe haben möchtest, musst Du entweder die Methode toString überschreiben (Dann kann die Ausgabe so bleiben wie sie ist) oder Du musst bei der Ausgabe definieren, was Du wie ausgeben möchtest (Also z.B. bei dir dann name.name um die Instanzvariable name auszugeben.

Dann paar weitere Hinweise:

a) Variablen sinnvoll bezeichnen. In der Variable name speicherst Du ja nicht einen Namen sondern eine Mutter. Macht also wenig Sinn.

b) Der Konstruktor von Baby erzeugt nur das eigentliche Baby, das er erzeugen soll. Da irgendwelche weiteren Babies zu erzeugen macht logisch keinen Sinn. Und ist vom Ablauf her auch eine Endlosschleife. Du erzeugst ein Baby. Dann will er im Konstruktor das jason Baby erzeugen. Dazu wird ja wieder der Konstruktor aufgerufen und der erzeugt dann wieder ein jason Baby ... u.s.w.

Daher immer wirklich vor Augen führen, was das bedeutet: Wird immer, wenn Du ein baby erzeugst, drei weitere Babies erzeugt? Also jedes Baby kommt mit drei Babies (Jason, Jeremy und Jacqueline) zur Welt? Wohl kaum!
Wenn da etwas drin wäre wie: Bei der Erzeugung des Babies wird direkt mit erzeugt: Ein Herz, zwei Nieren, zwei Lungenflügel, ... Ja, das macht dann Sinn ...

Also versuch es Dir bildlich vorzustellen! So findest Du auch in der Regel sinnvolle Trennlinien zwischen Klassen und so ...
 

temi

Top Contributor
Was bedeutet "instanziieren" genau? Was muss ich hier machen? Ist es das, was ich getan habe?
Ja. Es bedeutet, wie du in deinem Kommentar geschrieben hast, dass du ein Objekt (oder Instanz) der Klasse erzeugst.
Java:
//ein Objekt der Klasse Mutter erzeugen
Mutter name = new Mutter("Mandy");
Der Konstruktorparameter ist ein String, der dem Namen der Mutter entspricht. Das String-Literal "Mandy" wird der Parametervariablen "name" zugewiesen und im Code des Konstruktors wird der Parameter "name" der Instanzvariablen "name" der Klasse Mutter zugewiesen. Das passt auch so.

Allerdings ist der Variablenname nicht ganz glücklich gewählt. Es handelt sich bei dem Objekt ja um eine "Mutter", insofern wäre folgendes sinnvoller:
Java:
Mutter mutter = new Mutter("Mandy");
Mutter mandy = new Mutter("Mandy");

Wenn du den Namen der Mutter ausgeben möchtest, dann musst du dazu den entsprechenden Getter verwenden (den es in dieser Klasse allerdings nicht gibt). Schau dir die Methode in "Baby" einmal an. Sie liefert als Rückgabetyp einen String und zwar den Namen, der in der Instanzvariablen der Klasse Baby gespeichert ist.
Java:
public static void main(String[] args) {
    // hier "Mutter" erzeugen
 
    //ein Objekt der Klasse Baby erzeugen
    Baby jason = new Baby("Jason");
      
    System.out.println("Name des Babys: " + jason.getName());
}

Ich würde dir außerdem noch empfehlen für die main()-Methode eine separate Klasse (z.B. "Main") zu nehmen, die dann die beiden anderen Klassen verwendet. So bleibt der Code der beiden anderen Klassen "sauber".
 
Zuletzt bearbeitet von einem Moderator:

White_Fox

Top Contributor
Ich verstehe auch nicht den 2. Teil der Aufgabe. Was bedeutet "instanziieren" genau? Was muss ich hier machen? Ist es das, was ich getan habe?
Eine Klasse ist ein Bauplan für ein Objekt. Mein Prof sagte damals immer: Sie haben einen Bauplan für einen Bagger. Mit einem Bauplan können sie nur schwer ein Loch buddeln. Mit dem Bauplan können Sie sich aber ein oder mehrere Bagger bauen und damit recht einfach beliebig viele Löcher buddeln.

Instanziieren ist genau dieser Vorgang: Aus dem Bauplan (der Klasse) ein Objekt bauen. Das Objekt ist dann eine Instanz der Klasse.
 

MoxxiManagarm

Top Contributor
Als Ergänzung zu den Vorgängerkommetaren.
Java:
public void setHungrig(boolean hungrig) {
        this.hungrig = false;
    }
Das ist kein echter setter, du verwendest den Parameter nicht, sondern setzt hungrig einfach immer auf false.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
Farbenfroh Erste GUI Versuche Java Basics - Anfänger-Themen 1
O Erste Versuche eine Art "EventHandler" zu bauen.. Java Basics - Anfänger-Themen 8
MarvinsDepression Datentypen Generics: Erste Berührungen Java Basics - Anfänger-Themen 6
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
J Objekt erste freie Stelle zuweisen Java Basics - Anfänger-Themen 3
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
Textsurfer Erste Schritte Ist es der erste Schleifendurchlauf? Java Basics - Anfänger-Themen 4
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
C Erste Ziffer einer Zahl Java Basics - Anfänger-Themen 46
V Klassen Bestimmen Sie die erste und letzte Position an der ein 'c' steht? Java Basics - Anfänger-Themen 3
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
Tarrew Generics: Erste gemeinse Oberklasse als Rückgabewert Java Basics - Anfänger-Themen 1
N InsertionSort sortiert erste Zahl im Array nicht mit? Java Basics - Anfänger-Themen 6
I String abschneiden erste und letzte Zeichen Java Basics - Anfänger-Themen 3
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
S Erste App Java Basics - Anfänger-Themen 2
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
R Java als erste Programmiersprache 5 Auflage Java Basics - Anfänger-Themen 0
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
E nur der erste (mehrerer Strings) wird ausgegeben Java Basics - Anfänger-Themen 15
C Meine erste Funktion Java Basics - Anfänger-Themen 12
O erste Loggingversuche Java Basics - Anfänger-Themen 12
A Meine erste Bibliothek erstellen Java Basics - Anfänger-Themen 24
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
P HILFE !!! erste aufgabe beim programmieren Java Basics - Anfänger-Themen 13
T Erste Programm Java Basics - Anfänger-Themen 9
T Das erste Programm starten Java Basics - Anfänger-Themen 27
L Erste Klasse Java Basics - Anfänger-Themen 12
P Textdatei auf erste Zeichenkette Prüfen... Java Basics - Anfänger-Themen 10
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
U Erste Ziffer abspalten Java Basics - Anfänger-Themen 3
J Erste und letzte Zeile in txt Java Basics - Anfänger-Themen 3
J Erste OO-Aufgabe-Probleme mit Aufgabenstellung Java Basics - Anfänger-Themen 32
J Erste Gehvesuche Java Basics - Anfänger-Themen 3
C Erste GUI - Wie auswerten? Java Basics - Anfänger-Themen 3
B Das erste Programm . Java Basics - Anfänger-Themen 4
R Meine erste Klasse: Punkt Java Basics - Anfänger-Themen 3
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
G erste Schritte in Fenster und Grafik-Programmierung Java Basics - Anfänger-Themen 2
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
Q An erste Stelle in eine Queue eintragen Java Basics - Anfänger-Themen 4
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
J Neuling und erste Fragen Java Basics - Anfänger-Themen 8
R Erste Schritte,erste Class,Korrekturlesen und Verbesserungen Java Basics - Anfänger-Themen 3
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
D String, erste zeichen löschen Java Basics - Anfänger-Themen 6
J Threads: warten bis erste aktion ausgeführt wurde Java Basics - Anfänger-Themen 6
V Erste Ziffer aus einer dreistelligen "Zahl" heraus Java Basics - Anfänger-Themen 5
G Meine erste IF Abfrage Java Basics - Anfänger-Themen 11
A erste Schritte auf dem Weg eine XML-Datei zu parsen Java Basics - Anfänger-Themen 2
D Erste und letzte 3 Buchst. eines Str. in jeweils ein Array Java Basics - Anfänger-Themen 13
F Erste Schritte in Java - Wo finde ich Antworten? Referenzbib Java Basics - Anfänger-Themen 3
H Nur die erste Zeile einer Datei auslesen Java Basics - Anfänger-Themen 3
E Erste Schritte - warum läuft nur das eine? Java Basics - Anfänger-Themen 2
R Nur erste Zeile wird ausgelesen Java Basics - Anfänger-Themen 4
K Wortanzahl in erste Zeile schreiben Java Basics - Anfänger-Themen 6
W warum öffnet der nur die erste datei???? Java Basics - Anfänger-Themen 5
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
M meine ersten versuche Java Basics - Anfänger-Themen 8
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
jamboy7 Java-API kennenlernen, verstehen und nutzen lernen Java Basics - Anfänger-Themen 4
B Methodendeklaration verstehen Java Basics - Anfänger-Themen 2
J Methode verstehen Java Basics - Anfänger-Themen 3
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
B Webhooks verstehen - Beispiel? Java Basics - Anfänger-Themen 25
H Variable.methode aufstellen, verstehen Java Basics - Anfänger-Themen 2
B Interpreter-Fehler Code verstehen und Compilerfehler Java Basics - Anfänger-Themen 2
O Programm verstehen :D Java Basics - Anfänger-Themen 4
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
B Rekursion verstehen Java Basics - Anfänger-Themen 4
D Erste Schritte Code verstehen - HashSet Java Basics - Anfänger-Themen 8
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion verstehen Java Basics - Anfänger-Themen 2
L Quicksort verstehen Java Basics - Anfänger-Themen 3
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
S Programmcode verstehen Java Basics - Anfänger-Themen 4
M Lambda - Ausdrücke verstehen Java Basics - Anfänger-Themen 2
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
TomatenBrot447 Abhängigkeitsgraph verstehen? Java Basics - Anfänger-Themen 14
O Java und JSF besser verstehen Java Basics - Anfänger-Themen 1
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
L Polymorphie Polymorphie verstehen? Java Basics - Anfänger-Themen 2
U Code anderer Programmierern verstehen Java Basics - Anfänger-Themen 2
G Quellcode verstehen Java Basics - Anfänger-Themen 9
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben