modul:archiv:m320:learningunits:lu06:loesungen:lu07-aufgabe_4

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
modul:archiv:m320:learningunits:lu06:loesungen:lu07-aufgabe_4 [2026/08/30 14:06] – ↷ Seite von modul:m320:learningunits:lu06:loesungen:lu07-aufgabe_4 nach modul:archiv:m320:learningunits:lu06:loesungen:lu07-aufgabe_4 verschoben msutermodul:archiv:m320:learningunits:lu06:loesungen:lu07-aufgabe_4 [2026/08/30 14:10] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden 74.7.243.195
Zeile 4: Zeile 4:
  
 ===Teilaufgabe 6=== ===Teilaufgabe 6===
-{{:modul:m320:learningunits:lu06:loesungen:lu06-loesung4_-_erweitern-1.png?800|}}\\+{{modul:archiv:m320:learningunits:lu06:loesungen:lu06-loesung4_-_erweitern-1.png?800|}}\\
   * Methoden die eine Klasse <color #ed1c24>erweitern</color> (zusätzliche Funktionalität) sind <color #ed1c24>rot</color> markiert.   * Methoden die eine Klasse <color #ed1c24>erweitern</color> (zusätzliche Funktionalität) sind <color #ed1c24>rot</color> markiert.
   * Methoden die <color #c8bfe7>überschrieben</color> werden, sind <color #c8bfe7>violett</color> markiert. Beim überschreiben bleibt der Name der Methode in allen abgeleiteten Klassen gleich.   * Methoden die <color #c8bfe7>überschrieben</color> werden, sind <color #c8bfe7>violett</color> markiert. Beim überschreiben bleibt der Name der Methode in allen abgeleiteten Klassen gleich.
  
 ===Teilaufgabe 7=== ===Teilaufgabe 7===
-{{:modul:m320:learningunits:lu06:loesungen:lu06-loesung4_-_erweitern-2.png?800|}}\\+{{modul:archiv:m320:learningunits:lu06:loesungen:lu06-loesung4_-_erweitern-2.png?800|}}\\
 Die Klasse ''Employee'' wird aufgeteilt. In der Klasse ''ExternalEmployee'' sind alle Attribute und Methoden zu finden, die bezüglich Datenzugriff unkritisch sind, hier z.B. ''get_phone()''. Alle kritschen Attribute und Methoden werden in der Klasse ''Employee'' belassen, die nun aber von ''ExternalEmployee'' erbt. Die Klasse ''Customer'' sieht in dieser Konstellation nur ein Objekt der Klasse ''ExternalEmployee'' und hat somit keinen Zugriff auf die Methoden der Klasse ''Employee''. Dadurch kann rein über die Struktur der Software der Zugriff verhindert werden.\\ Die Klasse ''Employee'' wird aufgeteilt. In der Klasse ''ExternalEmployee'' sind alle Attribute und Methoden zu finden, die bezüglich Datenzugriff unkritisch sind, hier z.B. ''get_phone()''. Alle kritschen Attribute und Methoden werden in der Klasse ''Employee'' belassen, die nun aber von ''ExternalEmployee'' erbt. Die Klasse ''Customer'' sieht in dieser Konstellation nur ein Objekt der Klasse ''ExternalEmployee'' und hat somit keinen Zugriff auf die Methoden der Klasse ''Employee''. Dadurch kann rein über die Struktur der Software der Zugriff verhindert werden.\\
 Ein ''Employee''-Objekt muss aber immer alle Daten umfassen! Es macht daher keinen Sinn, Objekte der Klasse ''ExternalEmployee'' zu instanziieren. Das wird verhindert, in dem diese Klasse als **abstrakte** Klasse deklariert wird; im UML-Diagramm am Keyword ''{abstract}'' zu erkennen.\\ Ein ''Employee''-Objekt muss aber immer alle Daten umfassen! Es macht daher keinen Sinn, Objekte der Klasse ''ExternalEmployee'' zu instanziieren. Das wird verhindert, in dem diese Klasse als **abstrakte** Klasse deklariert wird; im UML-Diagramm am Keyword ''{abstract}'' zu erkennen.\\
  • modul/archiv/m320/learningunits/lu06/loesungen/lu07-aufgabe_4.txt
  • Zuletzt geändert: 2026/08/30 14:10
  • von 74.7.243.195