Verständnissproblem Objekte/Klassen

sgu

Mitglied
Hallo,

habe ein Verständnissproblem bezüglich einer Aufgabe. In der Aufgabe geht es darum eine Kartei zu programmieren die aus den Klassen Geburtstagskartei, Geburtstag, Person und Date besteht. Dabei soll ein Objekt der Klasse Geburtstagskartei eine Reihe von Objekten der Klasse Geburtstag enthalten. Eine Objekt der Klasse Geburtstag besteht aus Objekten der Klasse Person und Date. Über die Klasse Geburtstagskartei soll man dann die Datensätze hinzufügen, ausgeben, suchen und löschen können (habe die ausführliche Beschreibung im Anhang hochgeladen).
Ich verstehe jetzt vom Prinzip her nicht wie man es bewerkstelligen soll, dass ein Objekt der Klasse Geburtstagskartei aus Objekten der Klasse Geburtstag und das wiederum aus Objekten der Klasse Person und Date besteht.
Wäre euch über einen kleinen Gedankenanstoß oder eine Quelle mit einem Beispielprogramm sehr dankbar um die Aufgabenstellung nachvollziehen zu können.
Vielen Dank schon mal im voraus !!!
 

Anhänge

  • aufgabe.jpg
    aufgabe.jpg
    125,2 KB · Aufrufe: 26

sgu

Mitglied
So habe ich mir das auch schon gedacht. Mittels vector wollte ich das realisieren.
Mein Problem ist aber, dass ich nicht weiß, wie ich die einzelnen Objekte miteinander verknüpfen muß, also das ein Objekt Geburtstagkartei aus Objekten Geburtstag und die wiederum aus Objekten Date und Person bestehen.

Sagen wir mal ich erstelle ein Objekt Person und ein Datum:

Java:
Person per1 = new Person("Max Mustermann", "Mustermannstr. 8 11111 Musterstadt");
GregorianCalendar cal1 = new GregorianCalendar();

Laut Aufgabe soll ein Objekt der Klasse Geburtstag aus Objekten der Klasse Date und Person bestehen.
Wie bekomme ich den Zusammenhang zwischen Objekt Geburtstag und Objekt Klasse und Date hergestellt, wenn ich ein Objekt Geburtstag erzeuge.
Java:
Geburtstag geb1 = new Geburtstag();

Mir ist da das Prinzip noch nicht klar. Hoffe ihr versteht jetzt mein Problem.
 

Timothy Truckle

Top Contributor
sgu;980603aus Objekten der Klasse Geburtstag und das wiederum aus Objekten der Klasse Person und Date besteht.[/QUOTE hat gesagt.:
Die Beschreibung "besteht aus" bedeutet, dass das Subjekt (hier die Klasse Geburtstag) die Objekte (hier Person und Date) enthält. Man muss also eine Ablage dafür schaffen. In Java sind das Referenzen vom jeweiligen Typ:
Java:
class Geburtstag {
  private final Person person;
  private final Date date;
Ich habe das Schlüsselwort
Code:
final
gewählt, weil ein Geburtstagsobjekt ungültig ist, wenn eins von beiden fehlt. Auf Grund diese Schlüsselwortes müssen die Referenzen aber im Konstruktor gefüllt werden.
Java:
new Geburtstag(new Person(),new Date());
Der Konstruktor und die Zuweisungen darin müssen aber noch programmiert werden. Irgendwas musst Du ja ach tun...
;o)

bye
TT
 

sgu

Mitglied
Ich jetzt mal die drei Klassen erstellt und die Objekte per Referenz übergeben. Die Klasse Date aus der Aufgabenstellung habe ich erst mal noch weg gelassen.

Java:
public class Person {
	private String name;
	private String adresse;
	
	public Person() {   }

	public Person(String name, String adresse) {
		this.name = name;
		this.adresse = adresse;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAdresse(String adresse) {
		this.adresse = adresse;
	}
	
	public String getName() {
		return name;
	}
	
	public String getAdresse() {
		return adresse;
	}
}


Java:
public class Geburtstag {
	private Person person;
	
	public Geburtstag(Person person) {
		this.person = person;
	}
	

}


Java:
public class Geburtstagskartei {
	private Geburtstag geburtstag;
	private Person person;
	
	
	public Geburtstagskartei() {   }
	
	public Geburtstagskartei(Person person, Geburtstag geburtstag) {
		this.person = person;
		this.geburtstag = geburtstag;
	}
	
	public void hinzufuegen() {
		
	}
	
	public void ausgabe() {
		
	}

	public static void main(String[] args) {
	
	}

}


Habe jetzt aber noch ein Verständnissproblem bezüglich der Objekterzeugung. Wenn ich jetzt in der Main-Methode ein Objekt der Klasse Geburtstagskartei erzeuge (es soll laut Aufgabenstellung ja nur ein Objekt der Klasse Geburtstagskartei erstellt werden, dass aus vielen Objekten der Klasse Geburtstag besteht) wie kann ich dann z.B. über die Methode geburtstagskartei.hinzufuegen() einen komplett neuen Datensatz mit einer Person (später auch noch mit einem Datum) erstellen. Mir ist noch nicht klar wo und wann ich ein Objekt der Klasse Person und Geburtstag erzeugen muss und wie das mit der Klasse Geburtstagskartei verknüpft werden muss, damit ich Zugriff aus dem Hauptprogramm auf die anderen Klassen habe.
 
S

SlaterB

Gast
wo und wann alles passiert ist dir überlassen, so wichtig ist das am Anfang nicht,
der einfachste Weg ist meist, dass in der main alles steht:
Java:
main {
   // erstelle Geburtstagskartei k
   // erstelle Person p
   // erstelle Geburstag g mit p
   // k.hinzufügen(g);


}
usw.

eher zu vermeiden ist, zuviele Variablen zu erzeugen, etwa danach p2, g2 für nächsten Geburstag usw.,
vielleicht Schleife möglich, anderseits auch nicht wenn man verschiedene Einzeldaten hat,

genauso kann aber auch die main an der Geburtstagsdatei eine Methode befuelleDichMitTestDaten() aufrufen
und da steht dann eben vergleichbares,

will man von der Konsole einlesen wird es komplizierter
usw. usf.
 

Timothy Truckle

Top Contributor
Java:
public class Person {
	private String name;
	private String adresse;
	
	public Person() {   }
Lass diese leeren Konstruktoren weg. Die führen dazu, dass Du ungültige Objekte erzeugen kannst und folglich später beim Zugriff auf die Objektvariablen immer prüfen musst, ob die
Code:
null
sind.

Und nein, in den Zeilen 2 und 3 vorläufige dummy-Strings zuzuweisen ist keine gute Lösung!
[JAVA=12] public void setName(String name) {
this.name = name;
}

public void setAdresse(String adresse) {
this.adresse = adresse;
}[/code]
Setter sollten nur dann erzeugt werden, wenn sie wirklich notwendig sind, d.h. dass es einen wirklich wirklich guten Grund geben muss, warum eine Objektvariable nachträglich von außen geändert werden muss. Getter sind nicht ganz so problematisch, sollten aber auch nicht "auf Vorrat" erzeugt werden.

bye
TT
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben