Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m320_2024:learningunits:lu09:mehrfachbeziehung [2024/09/23 08:56] – msuter | modul:m320_2024:learningunits:lu09:mehrfachbeziehung [2024/09/23 09:11] (aktuell) – msuter | ||
|---|---|---|---|
| Zeile 10: | Zeile 10: | ||
| //Abb: 1:n Beziehung// | //Abb: 1:n Beziehung// | ||
| - | {{: | ||
| - | |||
| - | //Abb: n:n Beziehung// | ||
| === Kardinalität === | === Kardinalität === | ||
| Zeile 26: | Zeile 23: | ||
| Der Stern steht für **0 bis unendliche viele** Beziehungen. | Der Stern steht für **0 bis unendliche viele** Beziehungen. | ||
| In der UML ist es aber auch möglich, die Kardinalität ganz genau zu spezifizieren. | In der UML ist es aber auch möglich, die Kardinalität ganz genau zu spezifizieren. | ||
| - | So ist in der Abbildung | + | So ist in der Abbildung klar erkennbar, dass eine Schulklasse mindesten 15 aber maximal 24 Studenten haben kann. |
| ===== Umsetzung in Python ===== | ===== Umsetzung in Python ===== | ||
| Zeile 42: | Zeile 39: | ||
| def __init__(self, | def __init__(self, | ||
| | | ||
| - | | + | |
| | | ||
| def add_student(a_student): | def add_student(a_student): | ||
| Zeile 77: | Zeile 74: | ||
| <code python> | <code python> | ||
| - | def take_student(self, | + | def take_student(self, |
| if index is not None: # Index wurde angegeben | if index is not None: # Index wurde angegeben | ||
| if index < len(self._students): | if index < len(self._students): | ||
| Zeile 85: | Zeile 82: | ||
| else: # kein Index angegeben, wir suchen nach dem Namen | else: # kein Index angegeben, wir suchen nach dem Namen | ||
| for student in self._students: | for student in self._students: | ||
| - | if student.name == name: | + | if student.name == key: |
| return student | return student | ||
| return None | return None | ||
| Zeile 98: | Zeile 95: | ||
| <code python> | <code python> | ||
| - | def remove_student(self, | + | def remove_student(self, |
| if index is not None: # Index wurde angegeben | if index is not None: # Index wurde angegeben | ||
| if index < len(self._students): | if index < len(self._students): | ||
| Zeile 106: | Zeile 103: | ||
| else: # kein Index angegeben, wir suchen nach dem Namen | else: # kein Index angegeben, wir suchen nach dem Namen | ||
| for idx, student in enumerate(self._students): | for idx, student in enumerate(self._students): | ||
| - | if student.name == name: | + | if student.name == key: |
| self._students.remove(idx) | self._students.remove(idx) | ||
| </ | </ | ||
| + | <WRAP center round tip 60%> | ||
| + | Je nach Entwurf der Applikation können die **take**- und **remove**-Methoden auch nur einen der Parameter '' | ||
| + | </ | ||
| ---- | ---- | ||