Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m320_2024:learningunits:lu08:zweiseitigebeziehung [2026/08/30 14:05] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m320_2024:learningunits:lu08:zweiseitigebeziehung [2026/08/30 14:12] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden 74.7.243.195 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU08b - Zweiseitige Beziehungen ====== | ||
| + | Bei einer zweiseitigen Beziehung kennt ein Objekt A ein anderes Objekt B und umgekehrt.\\ | ||
| + | |||
| + | ===== Beispiel: Lernende/r und Lehrperson ===== | ||
| + | ==== Klassendiagramm ==== | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | //Abb: Klassen in einer zweiseitigen Beziehung // | ||
| + | |||
| + | Es ist offensichtlich, | ||
| + | Wie im vorherigen Beispiel müssen daher auch hier die Objekte nicht zwingend eine Referenz zu einem anderen Objekt kennen, um existieren zu können. | ||
| + | Es macht Sinn, die Zuweisung dann zu machen, wenn sie benötigt wird. | ||
| + | |||
| + | Um sicherzugehen, | ||
| + | |||
| + | <WRAP center round tip 60%> | ||
| + | Hinweis: Programmtechnisch muss einfach sichergestellt werden, dass eine schon bestehende Beziehung nicht noch einmal zugewiesen wird. | ||
| + | </ | ||
| + | |||
| + | ==== Sequenzdiagramm ==== | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | //Abb: Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Methoden // | ||
| + | |||
| + | ==== Sourcecode ==== | ||
| + | ==== Lernende/r und Lehrperson ==== | ||
| + | |||
| + | |||
| + | <code python> | ||
| + | class Teacher: | ||
| + | | ||
| + | def __init__(self, | ||
| + | self._name | ||
| + | self._student = None | ||
| + | | ||
| + | @student.setter | ||
| + | def student(self, | ||
| + | self._student | ||
| + | student.teacher = self | ||
| + | |||
| + | class Student: | ||
| + | | ||
| + | def __init__(self, | ||
| + | self._name | ||
| + | self._teacher = None | ||
| + | | ||
| + | @teacher.setter | ||
| + | def teacher(self, | ||
| + | self._teacher = teacher | ||
| + | teacher.student = self | ||
| + | |||
| + | if __name__ == ' | ||
| + | mia = Teacher(' | ||
| + | cathy = Student(' | ||
| + | | ||
| + | #ENTWEDER | ||
| + | mia.student = cathy | ||
| + | #ODER | ||
| + | cathy.teacher = mia | ||
| + | |||
| + | </ | ||
| + | ===== Beispiel: Lernende/r und Schulklasse ===== | ||
| + | ==== Klassendiagramm ==== | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | //Abb: Klassen in einer zweiseitigen Beziehung// | ||
| + | |||
| + | Ein Student wird bei der Anmeldung einer Klasse zugewiesen. | ||
| + | Daher macht es Sinn, diese Referenz über den Konstruktor mitzuteilen. | ||
| + | Dabei muss die Klasse '' | ||
| + | |||
| + | ==== Sequenzdiagramm ==== | ||
| + | |||
| + | {{de: | ||
| + | |||
| + | //Abb: Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Konstruktor// | ||
| + | |||
| + | ==== Sourcecode ==== | ||
| + | |||
| + | <code python> | ||
| + | class SchoolClass: | ||
| + | |||
| + | def __init__(self, | ||
| + | self._designation = designation | ||
| + | self._student = None | ||
| + | | ||
| + | @student.setter | ||
| + | def student(self, | ||
| + | self._student = student | ||
| + | |||
| + | class Student: | ||
| + | | ||
| + | def __init__(self, | ||
| + | self._name = name | ||
| + | self._class = the_class | ||
| + | the_class.student = self | ||
| + | |||
| + | | ||
| + | if __name__ == ' | ||
| + | i1a = SchoolClass(' | ||
| + | cathy = Student(" | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | {{tag> | ||
| + | [[https:// | ||