20. Funktionale Abstraktion Inhaltsverzeichnis 22. Mehrfachbeerbung

21. Klassendiagramme

Bei dieser Komplexität der Programmierung verlieren Objektdiagramme langsam an Bedeutung: UML-Klassendiagramme geben eine klarere Sicht auf die Zusammenhänge. Dies zeigt auch die Stärke von Java und noch mehr von Scala: Der Compiler sichert den korrekten Zusammenspiel der Objekte durch Typprüfung.

Abbildung 42: Erweitertes Klassendiagramm

 

In diesem Klassendiagramm haben wir auf die Darstellung der ListQ-Implementierungen der um der Übersichtlichkeit willen verzichtet – sie können genau auf den Platz der ArrayQ-Implementierungen eingesetzt werden.

Das Ziel hierbei ist, ExtQ (mit den Queue-Methoden sowie mit equals und copy) zu implementieren. ExtArrayQ (und ExtListQ) erfüllen diesen Zweck – allerdings, mit unabhängig voneinander programmierten ähnlichen Durchläufen. ExtItArrayQ (und ExtItListQ) erreichen das Ziel mit funktionaler Abstraktion: Zuerst werden die ExtQ-Methoden equals und copy mit Hilfe von Iteratoren in ExtItQ implementierungsunabhängig programmiert, und dann werden die implementierungsabhängige Iteratoren aus ItArrayQ (bzw. ItListQ) dazugemischt.

Genau dasselbe gilt auch für die persistenten Typen (PersQ, usw.): sie können genau auf den Platz der Ext-Typen (ExtQ, usw.) eingesetzt werden.

20. Funktionale Abstraktion Inhaltsverzeichnis 22. Mehrfachbeerbung

Inhaltsverzeichnis

Version: 5. Dezember 2010

© Prof. Solymosi, 2010, Beuth-Hochschule für Technik Berlin