Griffindor01
Cadet 3rd Year
- Registriert
- Feb. 2021
- Beiträge
- 33
Hallo liebe Gemeinde,
Ich gehe zurzeit in die 11. Klasse eines Gymnasiums und lerne im fachrichtungsbezogenen Unterricht die Grundlagen von C#.
Ich komme nun bei einer Aufgabenstellung nicht weiter und würde mich sehr über eure Hilfe freuen.
Die eigentliche Frage fängt erst ab Aufgabe 4 an, das davor ist nur eine Erläuterung.
Kurze Vorabinfo:
Im Vorhinein haben wir zwei Klassen (Person und Adressen) erstellt.
In der Klasse Adresse ist eine Adresse in verschiedene Attribute (wie Hausnummer, Postleitzahl) etc gegliefert worden.
In der Klasse Person haben wir einen Vor-und Nachnamen, ein Geburtsdatum und ein Objekt der Klasse Adresse eingespeist.
Nun sollen wir mit Containern verschiedene Operationen an diesen Klassen vornehmen.
Aufgabe 1 war zum Beispiel:
1. Ergänzen Sie das Projekt zur Adressverwaltung um eine Liste personen.
Lösung:
List<Person> personen = new List<Person>();
2.
Erstellen Sie im Programm mindestens fünf Person-Objekte auf verschiedene Arten.
Nutzen Sie hierzu sowohl den Standardkonstruktur als auch den überladenen Konstruktor.
Nehmen Sie alle Person-Objekte in die Liste personen auf.
Lösung (exemplarisch für die 5 Personen):
Person Mustermann = new Person();
Person XY = new Person("Computerbase", "Forum", new DateTime(2002, 05, 09), new Adresse("Musterweg", "1", "74565", "Berlin"));
personen.Add(Mustermann);
personen.Add(XY);
3. Zeigen Sie die Daten aller Person-Objekte mit einer foreach-Schleife.
Lösung:
foreach (Person person in personen)
{
Console.WriteLine(
person.getVorname() + "\n" +
person.getNachname() + "\n" +
person.getGeburtstag().ToShortDateString() + "\n" +
person.getAdresse().getPlz() + "\n" +
person.getAdresse().getOrt();
Console.WriteLine("===============");
}
Soweit, sogut, nun ist Aufgabe 4.:
Bisher kann für ein Person-Objekt nur ein einziges Adresse-Objekt gespeichert werden.
Ändern Sie die Klasse Person so ab, dass mehrere Adressen für ein Person-Objekt gespeichert
werden können!
Entfernen Sie die setAdresse()-Methode und fügen Sie stattdessen die neue Methode
addNeueAdresse(_adr:Adresse):void hinzu.
Diese neue Methode bekommt ein Adresse-Objekt übergeben und fügt diese einer Liste
von Adresse-Objekten hinzu.
Ändern Sie die Methode getAdresse():Adresse so ab, dass die Liste mit den Adresse-
Objekten zurückgeliefert wird.
Bennen Sie die Methode entsprechend um; z.B. in getAdressliste().
und zu Aufgabe 5:
Fügen Sie in die foreach-Schleife aus Aufgabe 3 geschachtelt eine zweite foreach-
Schleife ein, die bei jedem Person-Objekt alle Adresse-Objekte ausgibt.
Hier komme ich nun nicht weiter, ich habe euch meine Versuche mal als Anhäng beigefügt.
Das mit der zweiten foreach-Schleife verwirrt mich, da weiß ich gar nicht, wie ich das umsetzen soll.
Habe jetzt mal probiert, die Liste an der Stelle 1 (sollte dann doch nach dem Index das 2. Element sein) auszugeben, aber sowohl wenn ich dort 0 als auch 1 eintrage, kommt eine Fehlermeldung, dass es diese Stelle nicht gäbe, obwohl doch nachweislich Elemente hinzugefügt wurden?!
Außerdem löst das das Problem ja auch nicht, weil automatisch alle Adressen ausgegeben werden sollen und nicht die Adresse(n) an einer bestimmten Stelle.
Ich hoffe sehr, jemand macht sich die Mühe und liest sich das ganze hier mal durch. Stehe echt auf dem Schlauch.
Ich bedanke mich im Voraus!
Ich gehe zurzeit in die 11. Klasse eines Gymnasiums und lerne im fachrichtungsbezogenen Unterricht die Grundlagen von C#.
Ich komme nun bei einer Aufgabenstellung nicht weiter und würde mich sehr über eure Hilfe freuen.
Die eigentliche Frage fängt erst ab Aufgabe 4 an, das davor ist nur eine Erläuterung.
Kurze Vorabinfo:
Im Vorhinein haben wir zwei Klassen (Person und Adressen) erstellt.
In der Klasse Adresse ist eine Adresse in verschiedene Attribute (wie Hausnummer, Postleitzahl) etc gegliefert worden.
In der Klasse Person haben wir einen Vor-und Nachnamen, ein Geburtsdatum und ein Objekt der Klasse Adresse eingespeist.
Nun sollen wir mit Containern verschiedene Operationen an diesen Klassen vornehmen.
Aufgabe 1 war zum Beispiel:
1. Ergänzen Sie das Projekt zur Adressverwaltung um eine Liste personen.
Lösung:
List<Person> personen = new List<Person>();
2.
Erstellen Sie im Programm mindestens fünf Person-Objekte auf verschiedene Arten.
Nutzen Sie hierzu sowohl den Standardkonstruktur als auch den überladenen Konstruktor.
Nehmen Sie alle Person-Objekte in die Liste personen auf.
Lösung (exemplarisch für die 5 Personen):
Person Mustermann = new Person();
Person XY = new Person("Computerbase", "Forum", new DateTime(2002, 05, 09), new Adresse("Musterweg", "1", "74565", "Berlin"));
personen.Add(Mustermann);
personen.Add(XY);
3. Zeigen Sie die Daten aller Person-Objekte mit einer foreach-Schleife.
Lösung:
foreach (Person person in personen)
{
Console.WriteLine(
person.getVorname() + "\n" +
person.getNachname() + "\n" +
person.getGeburtstag().ToShortDateString() + "\n" +
person.getAdresse().getPlz() + "\n" +
person.getAdresse().getOrt();
Console.WriteLine("===============");
}
Soweit, sogut, nun ist Aufgabe 4.:
Bisher kann für ein Person-Objekt nur ein einziges Adresse-Objekt gespeichert werden.
Ändern Sie die Klasse Person so ab, dass mehrere Adressen für ein Person-Objekt gespeichert
werden können!
Entfernen Sie die setAdresse()-Methode und fügen Sie stattdessen die neue Methode
addNeueAdresse(_adr:Adresse):void hinzu.
Diese neue Methode bekommt ein Adresse-Objekt übergeben und fügt diese einer Liste
von Adresse-Objekten hinzu.
Ändern Sie die Methode getAdresse():Adresse so ab, dass die Liste mit den Adresse-
Objekten zurückgeliefert wird.
Bennen Sie die Methode entsprechend um; z.B. in getAdressliste().
und zu Aufgabe 5:
Fügen Sie in die foreach-Schleife aus Aufgabe 3 geschachtelt eine zweite foreach-
Schleife ein, die bei jedem Person-Objekt alle Adresse-Objekte ausgibt.
Hier komme ich nun nicht weiter, ich habe euch meine Versuche mal als Anhäng beigefügt.
Das mit der zweiten foreach-Schleife verwirrt mich, da weiß ich gar nicht, wie ich das umsetzen soll.
Habe jetzt mal probiert, die Liste an der Stelle 1 (sollte dann doch nach dem Index das 2. Element sein) auszugeben, aber sowohl wenn ich dort 0 als auch 1 eintrage, kommt eine Fehlermeldung, dass es diese Stelle nicht gäbe, obwohl doch nachweislich Elemente hinzugefügt wurden?!
Außerdem löst das das Problem ja auch nicht, weil automatisch alle Adressen ausgegeben werden sollen und nicht die Adresse(n) an einer bestimmten Stelle.
Ich hoffe sehr, jemand macht sich die Mühe und liest sich das ganze hier mal durch. Stehe echt auf dem Schlauch.
Ich bedanke mich im Voraus!