Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m320_2024:learningunits:lu08:einseitigebeziehung [2024/09/12 11:07] msutermodul:m320_2024:learningunits:lu08:einseitigebeziehung [2024/09/18 13:12] (aktuell) msuter
Zeile 5: Zeile 5:
   * zweiseitige Beziehungen   * zweiseitige Beziehungen
  
-=== Einseitige Beziehung ===+Bei einer einseitigen Beziehung kennt ein Objekt "A" ein anderes Objekt "B" aber nicht umgekehrt.\\
  
-Bei einer einseitigen Beziehung kennt ein Objekt A ein anderes Objekt B aber nicht umgekehrt.\\+===== Beispiel: Geldbeutel und Besitzer ===== 
 +==== Klassendiagramm ====
  
-----+{{:modul:m320_2024:learningunits:lu08:klassewallet.png?600|}}
  
-//Beispiel 5.1: Geldbeutel und Besitzer//\\ +//Abb: Klassen in einer einseitigen Beziehung//
- +
-{{:modul:m320_2024:learningunits:lu08:klassewallet.png?400|}} +
- +
-//Abb 5.1:// Klassen in einer einseitigen Beziehung\\+
  
 Eine Person kann auch keinen Geldbeutel besitzen.  Eine Person kann auch keinen Geldbeutel besitzen. 
 Daher wird hier die Referenz über eine Methode gesetzt.  Daher wird hier die Referenz über eine Methode gesetzt. 
 So sind die Erzeugung des Personen-Objekts und die Zuweisung der Referenz zeitlich unabhängig. So sind die Erzeugung des Personen-Objekts und die Zuweisung der Referenz zeitlich unabhängig.
 +
 +==== Sequenzdiagramm ====
  
 Dies zeigt das zugehörige Sequenz-Diagramm eindeutig auf. Dies zeigt das zugehörige Sequenz-Diagramm eindeutig auf.
  
-{{:modul:m320_2024:learningunits:lu08:sequenzwallet.png?400|}}+{{:modul:m320_2024:learningunits:lu08:sequenzwallet.png?600|}}
  
-//Abb 5.2:// Sequenz-Diagramm der Zuweisung einer einseitigen Beziehung über eine Methode+//Abb: Sequenz-Diagramm der Zuweisung einer einseitigen Beziehung über eine Methode //
  
-----+==== Sourcecode ==== 
 +<code python> 
 +class Person:                                                 
 +                                                                                  
 +    def __init__(self, name):      
 +        self._name   = name      
 +        self._wallet = None # die Referenz wird erst später zugewiesen  
 +          
 +    @property                                                                     
 +    def name(self):                                                              
 +        return self._name                   
  
-//Beispiel 5.2Stromschalter und Wippe// \\+    @property             
 +    def wallet(self):           
 +        return self._wallet                                   
 +                                   
 +    @wallet.setter     
 +    def wallet(self, wallet):                                       
 +        self._wallet = wallet                    
 +                                
 +class Wallet                    
  
-{{:modul:m320_2024:learningunits:lu08:klassepower.png?400|}}+    def __init__(self)       
 +        pass   
 +                                               
 +    def deposit_money(self, amount)    
 +        pass                         
  
-//Abb 5.3:// Klassen in einer einseitigen Beziehung\\+    def withdraw_money(self, amount):      
 +        pass    
 + 
 +if __name__ == '__main__':    
 +    person = Person('Max'  
 +    wallet = Wallet()   
 +    person.wallet = wallet  
 + 
 +</code> 
 + 
 +===== BeispielStromschalter und Wippe (Aktuator) ===== 
 +==== Klassendiagramm ==== 
 + 
 +{{:modul:m320_2024:learningunits:lu08:klassepower.png?600|}} 
 + 
 +//Abb: Klassen in einer einseitigen Beziehung//
  
 Ein Stromschalter braucht immer eine Wippe, sonst kann er ja nicht benutzt werden.  Ein Stromschalter braucht immer eine Wippe, sonst kann er ja nicht benutzt werden. 
Zeile 40: Zeile 76:
 In diesem Fall ist es zwingend, dass die Wippe zeitlich zuerst erzeugt wird, so dass ihre Referenz verfügbar ist. In diesem Fall ist es zwingend, dass die Wippe zeitlich zuerst erzeugt wird, so dass ihre Referenz verfügbar ist.
  
-{{:modul:m320_2024:learningunits:lu08:sequenzpower.png?400|}}+==== Sequenzdiagramm ==== 
 + 
 +{{:modul:m320_2024:learningunits:lu08:sequenzpower.png?600|}} 
 + 
 +//Abb: Sequenz-Diagramm der Zuweisung einer einseitigen Beziehung über den Konstruktor// 
 + 
 +==== Sourcecode ==== 
 + 
 +<code python> 
 +class PowerSwitch:     
 + 
 +    def __init__(self, type, actuator):   
 +        self._type   = type      
 +        self._actuator = actuator 
 + 
 +    @property     
 +    def type(self): 
 +        return self._type   
 +          
 +class Actuator:    
 +               
 +    def __init__(self): 
 +        self._position = False 
 + 
 +    def press(self):  
 +        pass   
 + 
 +    def release(self):   
 +        pass  
 + 
 +    def is_pressed(self):  
 +        return self._position   
  
-//Abb 5.4:// Sequenz-Diagramm der Zuweisung einer einseitigen Beziehung über den Konstruktor+if __name__ == '__main__'  
 +    actuator = Actuator()          
 +    switch = PowerSwitch('single', actuator)
  
 +</code>
 ---- ----
 {{tag>M320-LU08}} {{tag>M320-LU08}}
 [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] René Probst, bearbeitet durch Marcel Suter [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] René Probst, bearbeitet durch Marcel Suter
  
  • modul/m320_2024/learningunits/lu08/einseitigebeziehung.1726132037.txt.gz
  • Zuletzt geändert: 2024/09/12 11:07
  • von msuter