# Control und Interface Klassen



## Felix1312 (7. Feb 2008)

Hallo,

ich habe vor kurzem ein UML im Internet gefunden (fragt mich nicht wo), bei dem ein UML-Klassendiagramm für ein Java-Webprojekt abgebildet war.

Dort waren jedoch keine Methoden eingezeichnet. Zu jeder Entität gab es zwei Interface-Klassen (EntitätsNameVerwaltung und EntitätsNameVerwaltungDAO) und zwei Control-Klassen (EntitätsNameVerwaltungImpl und EntitätsNameVerwaltungDAOImpl).

Jetzt bin ich nicht sooo der Java-/OOP-Experte, würde eine solche professionelle Struktur mit 3-Schichten-Architektur (die EntitätsNameVerwaltung und EntitätsNameVerwaltungImpl als Anwendungskern; die ENVDAO und ENVDAOImpl + die Entitäten, abstrakten Klassen,... als DB-Zugriffsschicht) verwenden, um meine PHP-Seite bzw. die Technik die dahinter steckt umzugestalten.

Kann mir vielleicht jemand sagen, welche Methoden genau in so einer Control bzw. Interface-Klasse stecken? Ich denke mal, in der ENV wäre dann etwas (für die Entität Mitglieder) wie neuesMitgliedErstellen(parameter), mitgliedLoeschen(...),.. allerdings nur die Methodenköpfe und nicht ausprogrammiert (ist ja ein Interface), in der ENVImpl dann das Interface implementiert, eben die o.g. Methoden ausprogrammiert und die Verwendung der ENVDAOImpl.

Die ENVDAO wäre eben dann wieder für den Zugriff auf die DB "zuständig", allerdings ohne ausprogrammierte Methodenrümpfe und die ENVDAOImpl hätte letztendlich die Methoden um eben Benutzer per Query aus der DB zu löschen?!?!

Ist das so richtig? Noch eine Frage: Warum verwende ich in den Fällen dann überhaupt Interfaces? Das ist ja lediglich die Vorschrift dann für eine Klasse, was da drin stehen soll (welche Methoden), also auch nicht für mehrere. Dachte, wenn ich 30 Klassen für verschiedene Produkte habe mache ich ein Interface um zu sagen, daß jedes Produkt eine Methode haben muß, um die MwSt. zu berechnen (doofes Beispiel, aber so dachte ich mir das eigentlich immer)?!?!

Danke und Grüße,

Felix


----------



## Tobias (7. Feb 2008)

Jo, und wenn du 3 verschiedene DAOs hast, die die Abbildung deiner "Mitglieder"-Entitäten auf eine relationale DB, das Dateisystem und einen Vogonen-Stream zum Planeten Xorg übernehmen, ist die Typsicherheit über das Interface doch auch eine tolle Sache, nicht wahr?

mpG
Tobias


----------



## Felix1312 (7. Feb 2008)

Aha. Sehr gute Antwort! Danke! Vielleicht kann jemand was konstruktives dazu äußern.


----------



## Tobias (7. Feb 2008)

Ich denke, dass das durchaus konstruktiv war. Dank eines Interfaces ist es mir egal, welche konkrete Implementierung (und damit welcher konkrete Datenspeicher) benutzt wird. Aber wenn du keine Hilfe haben willst - bitte.

mpG
Tobias


----------



## Felix1312 (8. Feb 2008)

Hallo Tobias,

hab mir deine Antwort nochmal durchgelesen. Beim ersten Mal kam es mir eher vor, als wolltest du dich über die Frage lächerlich machen. Hab es mir jetzt nochmal durchgelesen... Jetzt habe ich es auch kapiert - sorry! 

Könnte vielleicht nochmal jemand schreiben, welche Methoden genau in den genannten Klassen stehen (vielleicht an einem Beispiel - nur, was die Klassen bzw. Methoden dann machen)?

DAnke und Grüße,

Felix


----------



## maki (8. Feb 2008)

Woher sollen wir wissen welche Methoden in deinen Klassen stehen?


----------



## Tobias (8. Feb 2008)

Wenn ich dich richtig verstanden habe, möchtest du eine PHP-Seite mit DAOs ausstatten, richtig? Dann ist das hier guter Lesestoff für dich: http://www.phppatterns.com/docs/design/data_access_object_pattern_more_widgets?s=dao

Ansonsten schien mir deine Erklärung im ersten Post schon schlüssig. Lass dich von den Interfaces nicht verrückt machen, die sind in PHP eh nicht so wichtig wie in Java, wegen des Loose Typings. Mach einfach mal.

mpG
Tobias


----------



## Felix1312 (10. Feb 2008)

Die Frage war eher allgemein gehalten. Klar will ich nicht wissen, was exakt wo drin steht, nur, ob ich das richtig verstanden habe bzw. was im allgemeinen wo rein gehört (wenn ihr mir schreibt, in der Verwaltungsklasse gehören die ganzen Klassen rein die zum einen auf die Entity und auf die DAO-Klasse zugreifen, dann reicht mir das schon).

Danke für den Link! Werde ich mir auf jeden Fall mal durchlesen... Denke zwar, daß es bei dem Projekt von mir fast schon mit Kanonen auf Spatzen geschossen ist, aber wenn man die Techniken beherrscht bzw. weiß, wie man sowas professionell löst ist es mit Sicherheit kein Nachteil.

Vielen Dank nochmals und Grüße,

Dirk


----------

