[UML] Collections



Hallo Leute,

ich arbeite sehr gern mit Java-Collections,
nicht nur ArrayList (es gibt Entwickler,
die kennen nur diese Collection).

Meist nutze ich die Collections in
erweiterter Weise wie Bags, MultiMaps,
bidirektionale Maps.

Ich wundere mich nun, dass es in der UML
scheinbar keine so richtige Notation für
solche Strukturen gibt.

In gewisser Weise ähnelt eine MultiMap
einer Aggregation, es gibt Eltern-Objekte
(Key) und Kind-Objekte (Value-Map).

Vielleicht hat das seinen Grund darin,
dass es in der Entity-Relationship-Modellierung
der Datenbanken keine Modellierung der
Indexe (schlagt mich jetzt bitte nicht wegen dem
korrekten Plural) gibt, diese sind ein Performance-Hint.
Das Modell käme eigentlich auch mit einem
Full-Table-Scan klar.

So ähnlich ist es evtl. auch mit Sets und Maps in
Klassendiagrammen, nur Performance-Hints ?

Was meint Ihr ?

Anderes Thema:
Wenn man eine Map in eine bidirektionale Map
umwandelt, benötigt man eine MultiMap, der gleiche
Value könnte ja von mehreren Keys in der
ursprünglichen Map referenziert worden sein.

Genauso könnte man sich eine
birdirektionale MaultiMap vorstellen, die
ursprüngliche nicht bidirektionale Map
war schon eine MultiMap, eine
BidiMultiMap.

Diese entspricht irgendwo einer
Intersection-Tabelle in der ER-Modellierung
(Datenbank).

Naheliegenderweise müsste man ein ER-Diagramm
in eine Klassen-Diagramm und andersherum
konvertieren können ?

Kennt Ihr so etwas ?

Nun ja, es gibt Besonderheiten. Auf der Datenbank
sind die Verbindungen in natürlicher Weise
bidirektional und alle Instanzen einer Klasse
sind über die Tabelle natürlich zusammengefasst.

So etwas wäre evtl. auch mal eine Idee für die
OOP

Class.getAllInstances();

Class.getAllInstancesWhere( <Closure> );

Optional mit oder ohne alle abgeleiteten Instanzen,
da wird es schon wieder etwas schwierig.


3. Thema
Zur Zeit arbeite ich an einem Migrations-Projekt

Etwas ähnlich zu der Sache, die Wolfgang Rostek
hier letztens ansprach:

http://groups.google.de/group/de.comp.lang.java/browse_thread/thread/7ac3b02e1eb1d9c4/225d0a649f152e4c?hl=de&lnk=raot#225d0a649f152e4c

Es sind Daten von einem externen System zu importieren.
Schnittstelle war die Datenbank (JDBC), wenn man da
überhaupt von Schnittstelle sprechen kann
(beim Lesen ist es ok, aber beim Schreiben gibt es
keine fachliche Validierung durch die Fremd-Applikation).

Ausgehend von einem Wurzel-Objekt habe ich die
Daten gelesen und in Value-Objekts verpackt,
die ich dann in die Zielstrukturen übertragen habe.

Dabei waren die externe Seite und die interne
Seite streng getrennt.

Verbindungen habe ich über maps hergestellt,
zum Beispiel

ExternKundeToInternKundeMap.

Diese habe ich mir zum Absichern der Typprüfung
generiert, hier läuft nach Java 1.4 (keine Generics).

Weil ich darauf stehe, sind die Value-Objekts
immutable, wo möglich.

Nun kam ich in Kritik, weil es terminlichen Verzug
und Fehler aufgrund mir nicht bekannter Fachlichkeiten
gab.

Deshalb hat ein Kollege des Kunden angefangen in
meinem Code herumzuwirtschaften, wobei er mir
meine Stil als ungünstig vorhielt.

Zum Beispiel hat er in einem Extern-VO eine
Referenz auf ein Intern-Objekt untergebracht.
Ok, mit get und set, hat er scheinbar mal so
gehört.

Die Extern-VO ist nun nicht mehr von den
Intern-Objekten getrennt und immutable ist sie
auch nicht mehr.

Ich hätte eine Map genommen.

Nun ja, es hat geklappt und ging schnell,
der schnelle Hack ist hier ein Teil der
Firmenkultur. (Die Kollegen debuggen halt gern).

Diese Vorgehensweise wird sogar im Gegensatz zu
meiner Map von der UML gedeckt.

Sehr unbefriedigend.

Was meint Ihr ?

Schönen Sonntag noch.
--
Heiner Kücker
www.heinerkuecker.de
www.control-and-command.de


.



Relevant Pages

  • Re: Unified Ada library
    ... >> It sounds like you need a multimap, with an element that's a pointer to ... The way to do that is to let the element type be a pointer: ... If the key isn't already in the map, then we allocate a new data element ... find the correct insertion position. ...
    (comp.lang.ada)
  • Re: Zoomify Map
    ... >jiggery pokery with Photoshop I've made a huge photo-map of Newcastle ... >to the Metro map. ... Multimap by tomorrow morning. ... For photographs of the Newcastle Upon Tyne area go to: ...
    (uk.local.geordie)
  • Re: map/multimap/wildcards
    ... character string lookup in sorted order. ... This seems to cry out for a multimap, ... multimap won't help you there: the only difference between a map and a ...
    (microsoft.public.vc.stl)
  • Re: Streetmap.co.uk - slightly OT
    ... Mike Cawood, HND BIT wrote in ... >>> The URL of a map on www.streetmap.co.uk is quite often used on this ... > I find the with Multimap, they keep changing my log in password so I ...
    (uk.railway)