Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m320_2024:learningunits:lu08:zweiseitigebeziehung [2024/09/10 15:11] – angelegt msutermodul: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.3Lernende/r und Lehrperson//\\+{{:modul:m320_2024:learningunits:lu08:klasseteacher.png?600|}}
  
-{{modul:m320:learningunits:lu04:theorie:lu03-abb3.10_beziehung-3.png?600}} +//Abb: Klassen in einer zweiseitigen Beziehung //
- +
-//Abb 5.5:// Klassen in einer zweiseitigen Beziehung \\+
  
 Es ist offensichtlich, dass eine Lehrperson nicht zu jedem Student und umgekehrt nicht jeder Student zu einer Lehrperson eine Beziehung pflegen muss. Es ist offensichtlich, dass eine Lehrperson nicht zu jedem Student und umgekehrt nicht jeder Student zu einer Lehrperson eine Beziehung pflegen muss.
-Wie in Beispiel 5.1 müssen daher auch hier die Objekte nicht zwingend eine Referenz zu einem anderen Objekt kennen, um existieren zu können. +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. Es macht Sinn, die Zuweisung dann zu machen, wenn sie benötigt wird.
  
-Um sicherzugehen, dass immer eine zweiseitige Beziehung besteht, wird in der jeweiligen set-Methode gleich auch die "Rückbeziehung" gesetzt.+Um sicherzugehen, dass immer eine zweiseitige Beziehung besteht, wird in der jeweiligen <<setter>>-Methode gleich auch die "Rückbeziehung" gesetzt.
  
-//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. 
 +</WRAP>
  
-{{modul:m320:learningunits:lu04:theorie:lu03-abb3.11_sequenz-3.png?350}}+==== Sequenzdiagramm ====
  
-//Abb 5.6:// Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Methoden \\+{{:modul:m320_2024:learningunits:lu08:sequenzteacher.png?400|}}
  
-----+//Abb: Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Methoden //
  
-//Beispiel 5.4: Lernende/r und Schulklasse//\\  {{modul:m320:learningunits:lu04:theorie:lu03-abb3.12_beziehung-4.png?600}}\\  //Abb 5.7:// Klassen in einer zweiseitigen Beziehung\\  \\  Ein Student wird bei der Anmeldung einer Klasse zugewiesen. Daher macht es Sinn, diese Referenz über den Konstruktor mitzuteilen. Auch hier ist wichtig, dass die Klasse ''SchoolClass'' zeitlich vorher erstellt wird, damit die Referenz verfügbar ist.\\  {{modul:m320:learningunits:lu04:theorie:lu03-abb3.13_sequenz-4.png?350}}\\  //Abb 5.8:// Sequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Konstruktor\\+==== 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**<tab140>**Java** 
 <code python> <code python>
-class Person                                                                 public class Person{ +class Teacher                       
-                                                                                 private Wallet wallet = null; +                                                                                 
-                                                                                 private String name;                             +    def __init__(self, name):          
-                                                                                  +        self._name    = name      
-    def __init__(self, name):                                                    public Person(name){ +        self._student = None    
-        self._name   = name                                                        this.name = name; +     
-        self._wallet = None # die Referenz wird erst später zugewiesen           } +    @student.setter     
-          +    def student(self, student):           
-    @property                                                                     +        self._student   student                 
-    def name(self):                                                              public String getName(){ +        student.teacher self        
-        return self._name                                                           return name; +
-                                                                                 } +
-    @property             +
-    def wallet(self):                                                            public Walle getWallet(){  +
-        return self._wallet                                                        return wallet; +
-                                                                                 } +
-    @wallet.setter     +
-    def wallet(self, wallet):                                                    public void setWallet(Wallet wallet){ +
-        self._wallet wallet                                                      this.wallet wallet; +
-                                                                                 } +
-                                                                                 +
-                                +
-class Wallet:                                                                  public class Wallet{+
  
-    def __init__(self):                                                          public Wallet(){ +class Student:            
-        pass                                                                     } +         
-                                               +    def __init__(self, name):                       
-    def deposit_money(self, amount):                                             public depositMoney(float amount){ +        self._name    = name       
-        pass                                                                     }+        self._teacher = None                    
 +         
 +    @teacher.setter 
 +    def teacher(self, teacher):                      
 +        self._teacher = teacher           
 +        teacher.student = self           
 +                                                                                        
 +if __name__ == '__main__':      
 +    mia   = Teacher('Mia')  
 +    cathy = Student('Cathy'
 +     
 +    #ENTWEDER 
 +    mia.student = cathy    
 +    #ODER                                        
 +    cathy.teacher = mia            
  
-    def withdraw_money(self, amount):                                            public withdrawMoney(float amount){ 
-        pass                                                                     } 
-                                                                               } 
- 
-                                                                               public class App{ 
-if __name__ == '__main__':                                                       public static void main(String[] args){  
-    person = Person('Max'                                                        Person person = new Person("Max"); 
-    wallet = Wallet()                                                              Wallet wallet = new Wallet(); 
-    person.wallet = wallet                                                         person.setWallet(wallet); 
-                                                                                 } 
-                                                                               } 
 </code> </code>
-=== Fall 2: ===+===== BeispielLernende/r und Schulklasse ===== 
 +==== Klassendiagramm ====
  
-Stromschalter und Wippe+{{:modul:m320_2024:learningunits:lu08:klasseschool.png?600|}}
  
-<code python> +//AbbKlassen in einer zweiseitigen Beziehung//
-class PowerSwitch                                                           public class PowerSwitch{ +
-                                                                                private String type; +
-                                                                                private Seesaw seesaw;+
  
-    def __init__(self, type, seesaw):                                           public PowerSwitch(String type, Seesaw seesaw){ +Ein Student wird bei der Anmeldung einer Klasse zugewiesen.  
-        self._type   = type                                                       this.type   = type; +Daher macht es Sinn, diese Referenz über den Konstruktor mitzuteilen.  
-        self._seesaw = seesaw                                                     this.seesaw = seesaw; +Dabei muss die Klasse ''SchoolClass'' zeitlich vorher erstellt werden, damit die Referenz verfügbar ist.
-                                                                                } +
-    @property     +
-    def type(self):                                                             public String getType(){ +
-        return self._type                                                         return type; +
-                                                                                } +
-                                                                              } +
-                                                                                         +
-class Seesaw:                                                                 public class Seesaw{ +
-                                                                                 private boolean position = fasle; +
-    def __init__(self): +
-        self._position = False                                                   /* Default-Konstruktor muss bei Java nicht angeschrieben werden */+
  
-    def press(self):                                                             public void press(){ +==== Sequenzdiagramm ====
-        pass                                                                     }+
  
-    def resolve(self):                                                           public void resolve(){ +{{:modul:m320_2024:learningunits:lu08:sequenzschool.png?400|}}
-        pass                                                                     }+
  
-    def is_pressed(self)                                                       public boolean isPressed(){ +//AbbSequenz-Diagramm der Zuweisung einer zweiseitigen Beziehung über Konstruktor//
-        return self._position                                                      return position; +
-                                                                                 } +
-                                                                              }+
  
-                                                                              public class App{ +==== Sourcecode ====
-if __name__ == '__main__':                                                      public static void main(String args[]){ +
-    seesaw Seesaw()                                                             Seesaw seesaw      new Seesaw(); +
-    switch PowerSwitch('single', seesaw)                                        PowerSwitch switch new PowerSwicth("single", seesaw); +
-                                                                                } +
-                                                                              } +
-</code> +
- +
-=== Fall 3: === +
- +
-Lernende/r und Lehrperson+
  
 <code python> <code python>
-class Teacher:                                                                public class Teacher{ +class SchoolClass:                                                
-                                                                                private String name; +                                                                                                                                
-                                                                                private Student ref2student; +    def __init__(self, designation):                                           
-                                                                                 +        self._designation = designation                                     
-    def __init__(self, name):                                                   public Teacher(String name){ +        self._student = None                             
-        self._name        = name                                                  this.name = name; +
-        self._ref2student = None                                                } +
-     +
-    @student.setter     +
-    def student(self, student):                                               public void setStudent(Student student){ +
-        self._ref2student = student                                               ref2student = student; +
-        student.teacher = self                                                    student.setTeacher(this); +
-                                                                                } +
-                                                                              } +
-   +
-class Student:                                                                public class Student{ +
-                                                                                private Strig name; +
-                                                                                private Teacher ref2teacher; +
-         +
-    def __init__(self, name):                                                 public Student(String name){ +
-        self._name        = name                                                  this.name = name; +
-        self._ref2teacher = None                                                } +
-         +
-    @teacher.setter +
-    def teacher(self, teacher):                                               public void setTeacher(Teacher teacher){ +
-        self._ref2teacher = teacher                                               ref2teacher = teacher; +
-        teacher.student = self                                                    teacher.setStudent(this); +
-                                                                                } +
-                                                                              } +
-                                                                                        +
-                                                                              public class App{   +
-if __name__ == '__main__':                                                      public static void main(String [] args){ +
-    mia   = Teacher('Mia'                                                       Teacher mia   = new Teacher("Mia"); +
-    cathy = Student('Cathy'                                                     Student cathy = new Student("Cathy");  +
-    mia.student = cathy                                                           mia.setStudent(cathy); +
-    #ODER                                                                         // ODER +
-    cathy.teacher = mia                                                           cathy.setTeacher(mia); +
-                                                                                } +
-                                                                              } +
-</code> +
- +
-=== Fall 4: === +
- +
-Lernende/r und Schulklasse +
- +
-<code python> +
-class SchoolClass:                                                            public class SchoolClass{ +
-                                                                                private String designation; +
-                                                                                private Stduent ref2student; +
-                                                                                           +
-    def __init__(self, designation):                                            public SchoolClass(String desigantion){ +
-        self._designation = designation                                           this.designation = designation; +
-        self._ref2student = None                                                }+
      
     @student.setter     @student.setter
-    def student(self, student):                                                 public setStudent(Student student){ +    def student(self, student):                                      
-        self._ref2student = student                                               ref2student = student; +        self._student = student                            
-                                                                                } +                    
-                                                                              } +class Student:                                                                
- +
-class Student:                                                                public class Student{ +
-                                                                                private String name; +
-                                                                                private SchoolClass ref2class;+
                                                                                                                                                                                      
-    def __init__(self, name, the_class):                                        public Student(String name, SchoolClass theClass){ +    def __init__(self, name, the_class):                                        
-        self._name = name                                                         this.name = name; +        self._name = name                                                          
-        self._ref2class = the_class                                               ref2class = theClass; +        self._class = the_class                                                
-        the_class.student = self                                                  theClass.setStudent(this); +        the_class.student = self                                                                                          
-                                                                                } +
-                                                                              }+
                                                                                                                                                                                    
-                                                                              public class App{ +                                                                       
-if __name__ == '__main__':                                                      public static void main(String[] args){ +if __name__ == '__main__':                                                  
-    i1a   = SchoolClass('I1a'                                                   SchoolClass i1a = new SchoolClass("I1a"); +    i1a   = SchoolClass('I1a'                                                 
-    cathy = Student("Cathy", i1a)                                                 Student cathy   = new Student("Cathy", i1a); +    cathy = Student("Cathy", i1a)                                          
-                                                                                } +                                                                            
-                                                                              }+                                                                             
 </code> </code>
  
  • modul/m320_2024/learningunits/lu08/zweiseitigebeziehung.1725973883.txt.gz
  • Zuletzt geändert: 2024/09/10 15:11
  • von msuter