24. Einschränkung des Typparameters Inhaltsverzeichnis 26. Auswertung

25. Universelle Warteschlange

Mit den technologieunabhängigen Implementierungen der Schnittstellen ExtQ, PersQ und ManQ ermöglicht Scala’s Trait-Konzept Queue-Klassen nach Bedarf zusammenzustellen. Eine Universelle Warteschlange kann alles:

/** Universal Queues (Extended, Persistent and Manipulable) - UnivQ.scala */

class UnivArrayQ[E](size: Int) extends ArrayQ[E](size)

   with ItArrayQ[E] with ExtItQ[E] with PersItQ[E] with ManItQ[E]

class UnivListQ[E] extends ItListQ[E]

   with ExtItQ[E] with PersItQ[E] with ManItQ[E]

Hier ist Mehrfachbeerbung inhärent: Dieselbe Aufgabe ist in Java ohne die Veränderung der abstrakten Klassen nicht lösbar. Mit Einfachbeerbung müssten ExtItQ, PersItQ und ManItQ einander erweitern, damit UnivArrayQ (und UnivListQ) nur eine abstrakte Oberklasse (die unterste von den drei) hat; ItArrayQ (bzw. ItListQ) kann ausgeprägt werden:

 

Abbildung 44: Ersetzen der Mehrfachbeerbung

In diesem Klassendiagramm haben wir die Schnittstellen (Traits ohne implementierte Methoden) und die Erweiterung von Schnittstellen rot, die (vollständige) Implementierung einer Schnittstelle grün gezeichnet; schwarze Pfeile stellen Beerbung dar. Abstrakte Klassen (Traits mit implementierten Methoden) sind (wie üblich) kursiv.

UnivListQ kann genauso dargestellt werden, indem auf der linken Seite ListQ und ItListQ eingesetzt werden.

24. Einschränkung des Typparameters Inhaltsverzeichnis 26. Auswertung

Version: 5. Dezember 2010

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