Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m320_2024:learningunits:lu08:zweiseitigebeziehung [2024/09/10 15:11] – angelegt msuter | modul:m320_2024:learningunits:lu08:zweiseitigebeziehung [2024/09/18 13:43] (aktuell) – [Sourcecode] msuter | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| Bei einer zweiseitigen Beziehung kennt ein Objekt A ein anderes Objekt B und umgekehrt.\\ | Bei einer zweiseitigen Beziehung kennt ein Objekt A ein anderes Objekt B und umgekehrt.\\ | ||
| - | ---- | + | ===== Beispiel: Lernende/r und Lehrperson ===== |
| + | ==== Klassendiagramm ==== | ||
| - | //Beispiel 5.3: Lernende/r und Lehrperson// | + | {{:modul: |
| - | {{modul: | + | //Abb: Klassen in einer zweiseitigen Beziehung |
| - | + | ||
| - | //Abb 5.5:// Klassen in einer zweiseitigen Beziehung | + | |
| Es ist offensichtlich, | Es ist offensichtlich, | ||
| - | Wie in Beispiel | + | Wie im vorherigen |
| Es macht Sinn, die Zuweisung dann zu machen, wenn sie benötigt wird. | Es macht Sinn, die Zuweisung dann zu machen, wenn sie benötigt wird. | ||
| - | Um sicherzugehen, | + | Um sicherzugehen, |
| - | //Hinweis:// Programmtechnisch muss einfach sichergestellt werden, dass eine schon bestehende Beziehung nicht noch einmal zugewiesen wird. | + | <WRAP center round tip 60%> |
| + | Hinweis: Programmtechnisch muss einfach sichergestellt werden, dass eine schon bestehende Beziehung nicht noch einmal zugewiesen wird. | ||
| + | </ | ||
| - | {{modul: | + | ==== Sequenzdiagramm ==== |
| - | //Abb 5.6:// Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Methoden \\ | + | {{:modul: |
| - | ---- | + | //Abb: Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Methoden // |
| - | //Beispiel 5.4: Lernende/r und Schulklasse// | + | ==== Sourcecode ==== |
| + | ==== Lernende/r und Lehrperson ==== | ||
| - | === Code-Beispiele === | ||
| - | Zu den oben erwähnten 4 Fällen finden Sie hier den passenden Code in Python und Java. | ||
| - | |||
| - | === Fall 1: === | ||
| - | |||
| - | Geldbeutel und Besitzer\\ | ||
| - | **Python**< | ||
| <code python> | <code python> | ||
| - | class Person: | + | class Teacher: |
| - | private Wallet wallet = null; | + | |
| - | | + | def __init__(self, |
| - | + | self._name | |
| - | def __init__(self, | + | self._student |
| - | self._name | + | |
| - | self._wallet | + | @student.setter |
| - | + | def student(self, | |
| - | | + | self._student |
| - | def name(self): | + | student.teacher |
| - | return self._name | + | |
| - | } | + | |
| - | @property | + | |
| - | def wallet(self): | + | |
| - | return self._wallet | + | |
| - | } | + | |
| - | @wallet.setter | + | |
| - | def wallet(self, | + | |
| - | self._wallet | + | |
| - | } | + | |
| - | | + | |
| - | + | ||
| - | class Wallet: | + | |
| - | | + | class Student: |
| - | | + | |
| - | + | | |
| - | def deposit_money(self, | + | |
| - | | + | |
| + | |||
| + | @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 | ||
| - | def withdraw_money(self, | ||
| - | pass } | ||
| - | } | ||
| - | |||
| - | | ||
| - | if __name__ == ' | ||
| - | person = Person(' | ||
| - | wallet = Wallet() | ||
| - | person.wallet = wallet | ||
| - | } | ||
| - | } | ||
| </ | </ | ||
| - | === Fall 2: === | + | ===== Beispiel: Lernende/r und Schulklasse ===== |
| + | ==== Klassendiagramm ==== | ||
| - | Stromschalter und Wippe | + | {{: |
| - | <code python> | + | //Abb: Klassen in einer zweiseitigen Beziehung// |
| - | class PowerSwitch: | + | |
| - | private String type; | + | |
| - | private Seesaw seesaw; | + | |
| - | def __init__(self, | + | Ein Student wird bei der Anmeldung einer Klasse zugewiesen. |
| - | self._type = type | + | Daher macht es Sinn, diese Referenz über den Konstruktor mitzuteilen. |
| - | self._seesaw = seesaw | + | Dabei muss die Klasse '' |
| - | } | + | |
| - | @property | + | |
| - | def type(self): | + | |
| - | return self._type | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | class Seesaw: | + | |
| - | | + | |
| - | def __init__(self): | + | |
| - | self._position = False /* Default-Konstruktor | + | |
| - | def press(self): | + | ==== Sequenzdiagramm ==== |
| - | pass } | + | |
| - | def resolve(self): | + | {{: |
| - | pass } | + | |
| - | def is_pressed(self): | + | //Abb: Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Konstruktor// |
| - | return self._position | + | |
| - | } | + | |
| - | } | + | |
| - | public class App{ | + | ==== Sourcecode |
| - | if __name__ | + | |
| - | seesaw | + | |
| - | switch | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | === Fall 3: === | + | |
| - | + | ||
| - | Lernende/r und Lehrperson | + | |
| <code python> | <code python> | ||
| - | class Teacher: | + | class SchoolClass: |
| - | private String name; | + | |
| - | private Student ref2student; | + | def __init__(self, |
| - | + | self._designation = designation | |
| - | def __init__(self, | + | self._student |
| - | self._name | + | |
| - | self._ref2student = None } | + | |
| - | + | ||
| - | @student.setter | + | |
| - | def student(self, | + | |
| - | | + | |
| - | student.teacher = self student.setTeacher(this); | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | class Student: | + | |
| - | private Strig name; | + | |
| - | private Teacher ref2teacher; | + | |
| - | + | ||
| - | def __init__(self, | + | |
| - | self._name | + | |
| - | self._ref2teacher = None } | + | |
| - | + | ||
| - | @teacher.setter | + | |
| - | def teacher(self, | + | |
| - | self._ref2teacher = teacher | + | |
| - | teacher.student = self teacher.setStudent(this); | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | public class App{ | + | |
| - | if __name__ == ' | + | |
| - | mia = Teacher(' | + | |
| - | cathy = Student(' | + | |
| - | mia.student = cathy | + | |
| - | #ODER // ODER | + | |
| - | cathy.teacher = mia | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | === Fall 4: === | + | |
| - | + | ||
| - | Lernende/r und Schulklasse | + | |
| - | + | ||
| - | <code python> | + | |
| - | class SchoolClass: | + | |
| - | private String designation; | + | |
| - | private Stduent ref2student; | + | |
| - | | + | |
| - | def __init__(self, | + | |
| - | self._designation = designation | + | |
| - | self._ref2student | + | |
| | | ||
| @student.setter | @student.setter | ||
| - | def student(self, | + | def student(self, |
| - | self._ref2student | + | self._student |
| - | } | + | |
| - | } | + | class Student: |
| - | + | ||
| - | class Student: | + | |
| - | private String name; | + | |
| - | private SchoolClass ref2class; | + | |
| | | ||
| - | def __init__(self, | + | def __init__(self, |
| - | self._name = name this.name = name; | + | self._name = name |
| - | self._ref2class | + | self._class |
| - | the_class.student = self | + | the_class.student = self |
| - | } | + | |
| - | } | + | |
| - | public class App{ | + | |
| - | if __name__ == ' | + | if __name__ == ' |
| - | i1a = SchoolClass(' | + | i1a = SchoolClass(' |
| - | cathy = Student(" | + | cathy = Student(" |
| - | } | + | |
| - | } | + | |
| </ | </ | ||