# Frage zur Objektorientierung mit Interfaces



## DennisXX (19. Jul 2011)

Hi Folks !

Ich habe mal eine Frage. Gehen wir davon aus, dass ich eine Klasse habe und das diese Klasse einerseits eine Schnittstelle anbieten muss und andererseits eine andere Schnittstelle benötigt wird.

Wie genau kann ich so etwas ausprogrammieren, also in konkreten Java Code umsetzen? Ich kann mir dafür nur schwer ein konkretes Codebeispiel vorstellen. Ich kenne diese Art Softwareentwurf bisher nur in Form der UML (also das eine Komponente mittels der Lollipop-Notation eine Schnittstelle konkret anbietet und diese Komponente auch eine Schnittstelle benötigt).

Kann vielleicht jemand ein konkretes Codebeispiel posten? Die beiden in Frage kommenden UML Diagramme habe ich im Anhang zur Verfügung gestellt.

Wie genau gestaltet sich der Programmcode, wenn eine Schnittstelle z.B. von einer Komponente angeboten wird und von einer anderen Komponente gebraucht wird?

Worauf ich hinaus möchte ist, dass ich wissen möchte, wie solche Klassen oder Komponenten bzw. deren Konstruktoren aussehen können, wenn sie zwingend für ihre Ausführung bzw. Instanziierung ein bestimmtes Interface benötigen. Eben  genau so, wie es in dem UML Diagrammen mit einer offenen "Kralle" dargestellt ist.

Greetz
Dennis


----------



## ARadauer (19. Jul 2011)

Zum Beispiel so


```
public class HotelRes implements IHotelRes {	
	private final IBilling billing;
	
	public HotelRes(IBilling billing){
		this.billing = billing;
	}
	
	...
}
```
HotelRes implementiert das Interface IHotelRes.. bietet es also an. Braucht aber selber etwas um zu fakturieren. IBilling Dieser abhängiger Service muss in diesem Fall über den Konstruktor übergeben werden..


----------



## DennisXX (20. Jul 2011)

Hi Folks !

Danke schön für das Codebeispiel. In dem Konstruktor wird dann einfach nur ein Objekt übergeben, welches das Interface IBilling implementiert, richtig?

Wie genau würde denn der Code aussehen, wenn ich keine Klasse HotelRes hätte, sondern stattdessen einen Komponente, die evtl. aus mehreren Klassen besteht?

Danke schön für die Hilfe und Antwort !

Greetz
Dennis


----------



## DennisXX (21. Jul 2011)

Hi Folks again !

Kann mir wirklich niemand bei meiner letzten Frage helfen bzw. antworten?

Greetz 
Dennis


----------



## SlaterB (21. Jul 2011)

das ausgehende Interface einer 'Komponente' ist die abstrakte Zusammenfassung aller öffentlichen Interface dieser Klassen, oder evtl. nur einer Klasse (IHolidayRes),
all die Klassen in der 'Komponente' benötigten andere Klassen wie bei HolidayReservationSession mindesens 3 eingemalt (der weitere Anhang vielleicht auch,
wann das wo konkret stattfindet ist nicht gesagt, verschiedene Klassen können verschiedene Interface brauchen, manche keine, manche mehrere,
im Konstruktor 0-x Parameter, vielleicht aber auch nur Parameter für einzelne Methoden

HolidayReservationSession braucht sicher kein einzelnes IBilling-Objekt, kein einzelnes 'Interface-Ding', mit dem dauerhaft gearbeitet wird,
aber wenn ein Vorgang durchlaufen wird, dann ist da auch ein bestimmtes IBilling-Objekt beteiligt,
alles ganz normale Dinge die in jedem Programm auf natürliche Weise ablaufen, auch bevor so eine Spielerei wie UML erfunden wurde


----------



## DennisXX (21. Jul 2011)

Ok vielen Dank slater für die Antwort !!



> auch bevor so eine Spielerei wie UML erfunden wurde



Lese ich hier heraus, dass Du kein Freund der UML bist?

Greetz
Dennis


----------



## SlaterB (21. Jul 2011)

kann man so lesen, ja 
mir sind alle Extras wie Annotations, Debugger, Design-Pattern, UML, Frameworks usw. grundsätzlich egal,
aber wenn man dann anfängt, normale Java-Grundlagen durcheinanderzudrehen/ zu vergessen/ (auf ungünstige Weise) zu hinterfragen/ neu in Form pressen zu wollen usw. dann stören sie mehr als dass sie helfen


----------



## RySa (21. Jul 2011)

DennisXX hat gesagt.:


> Ok vielen Dank slater für die Antwort !!
> 
> 
> 
> ...



Ich würde eher sagen, dass keiner der außerhalb der Schule/des Studiums programmiert (Arbeit oder Hobby) nicht einmal daran denken würde sich mit so etwas wie UML zu beschäftigen. Ich glaube da kannst du jeden hier auf diesem Forum fragen und er wird das gleiche sagen. So etwas kann man sich höchstens automatisch generieren lassen, wenn das Programm fertig ist (z.B für die Doku, um die Struktur zu beschreiben) aber sonst ist es nur Schwachsinn.


----------



## L-ectron-X (21. Jul 2011)

Zum Thema Interfaces findest du in den FAQs einen Beitrag, der dir das näher bringen kann.


----------



## maki (21. Jul 2011)

Interessanter Artikel zum Thema UML: UmlAsNotes | Javalobby

Persönliche nutze ich UML am liebsten mit Bleistift und Papier.


----------

