Frage zur Objektorientierung mit Interfaces

DennisXX

Bekanntes Mitglied
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
 

Anhänge

  • uml_bsp_nr_2.gif
    uml_bsp_nr_2.gif
    7,4 KB · Aufrufe: 45
Zum Beispiel so

Java:
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..
 
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
 
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
 
Zuletzt bearbeitet von einem Moderator:
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
 
Ok vielen Dank slater für die Antwort !!



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

Greetz
Dennis

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.
 

Neue Themen


Zurück
Oben