Interfaces und ihre Daseinsberechtigung

Status
Nicht offen für weitere Antworten.
U

ulska

Gast
hi,

ich hab jetzt im Rahmen meines studiums auch die Bekanntschaft mit "interfaces" gemacht. wie sie benutze hab ich im groben verstanden. (funktionen halt definieren, in den klassen die implements <interface> benutze)

Aber wo liegt die Daseinsberechtigungen dieser interfaces, normalerweise sind ja die Methoden meiner Klasse die Schnittstellen nach außen, warum der zusätzliche weg über ein interface?.

auch hab ich gesehen, das ich das beispiel hatte, wo eine methode/funktion ein Interface als rückgabewert wert hatte. wie funktioniert das? ein interface ist doch nur eine leere hülle die aus methoden besteht.

kann mir da jemand was licht ins dunkle bringen?
 

Niki

Top Contributor
Ein Interface dient als Gerüst bzw. Vorgabe für den Programmierer. Damit kannst du festlegen, dass ein Objekt bestimmte Methoden implementiert haben muss. Das heißt, du kannst Methoden erstellen, die als Argument ein Objekt vom Typ eines Interfaces erwartet. Die Methode weiß lediglich dass dieses Objekt die Methode foo1 und foo2 implementiert hat. Wie sie implementiert sind, ist der Methode aber egal.
Das einfachste Beispiel sind dafür die Listener-Interfaces bei Buttons. Du fügst dem Button eine Implementierung des Interfaces ActionListener hinzu. Beim Klick auf den Button werden alle registrierten ActionListener durchgelaufen und von jedem die Methode actionPerformed ausgeführt. Was genau die einzelnen actionPerformed Methoden machen ist der aufrufenden Methode egal.
Mit Interfaces kannst du auch sauber zwischen Komponenten trennen. Die eine Komponenten braucht nur die Schnittstelle kennen, nicht jedoch die Implementierung.
 

ARadauer

Top Contributor
das beispiel hatte, wo eine methode/funktion ein Interface als rückgabewert wert hatte
nicht das interface als rückgabe, sondern eine klasse die das interface implementiert.

ich bin zb ein informierer, ich informiere klassen über änderungen an meinem zustand.... ich ruf dazu die methode public inform(String message), der anderen klassen auf, die können sich alle bei mir registrieren....
wie mach ich das jetzt, dass ich, den logger, die gui und vielleicht eine andere datenklasse informieren kann? ich muss nicht alle typen kennen, die müssen nur alle das selbe interface implementieren und ich hab einfach eine Liste mit zb Informable...

nur ein beispiel von vielen, die zeigen, das interfaces ein sehr wichtiges konzept sind...
 

Tobias

Top Contributor
Eine Unterklasse ist immer auch vom Typ ihrer Oberklasse - so wie eine Meise auch ein Vogel ist. Durch die Rückgabe eines Interfaces schaffe ich also die Möglichkeit hier eine beliebige Implementierung dieses Interfaces zurückzugeben.

mpG
Tobias
 
U

ulska

Gast
ARadauer hat gesagt.:
das beispiel hatte, wo eine methode/funktion ein Interface als rückgabewert wert hatte
nicht das interface als rückgabe, sondern eine klasse die das interface implementiert.

hm...also das was ich meine sieht so aus:
Code:
    public IAddress getAddress(String name) 
    {	
        return (Address)addresses.get(name);
    }

hab das objekt da gecastet zu einem objekt der klasse das dieses interface benutzt. das is das was du meintest? aber wieso gibt man als return-value hier ein Interface an, wenn man doch ein objekt angeben muss.

oder is damit gemeint, das rückgabe objekt muss irgendein objekt sein, dessen klasse das interface implementiert?


hab meine "übungsaufgaben" mittlerweile auch alle geschaft, da haben sich mir ein paar fragen ergeben bzgl. stil und methodik meinerseits (es funktioniert zwar alles, aber teilweise find ich das was ich gemacht hab um die Junit-tests zu bestehen idiotisch)

kurz worum es in der Aufgabe ging:

Man sollte ein kleines Adressbuch basteln, wobei ein eintrag aus 2 objekten(Object) besteht. ein objekt war der key, ein anderers die eigentliche werte. eine andere klasse hält dein ein array von diesen "eintrags" objekten
Code:
class Entry {
    private final Object key;
    private Object value;
........
}

es gibt auch eine Mehthode um nachzusehen ob ein bestimmter schlüssel bzw eintrag schon im array zu finden ist, hab ich so gelöst:
Code:
       /* der übergebende key darf prinzipell null sein, weswegen ich einmal prüfen muss ob ich den sonderfall eines null-keys hab oder ob ich einen key hab der ungleich null ist */
	public boolean containsKey(Object key) 
	{

		if (size > 0)
			for (int i=0; i < size ; i++)
			{
				if (data[i].getKey() == key) //null key ist gültiger wert, prüfen ob null
					return true;
				else if ((data[i].getKey()).equals(key)) //prüfen ob wert existiert
					return true;
			}
	
		return false;
	}

bevor ich einen neuen eintrag wegschreibe, prüfe ich erst ob es das objekt mit dem angegebenen schlüssel schon gibt um ggf. den alten eintrag zu überschreiben.
Code:
	public Object put(Object key, Object value) 
	{
		/* Vorhandenen Eintrag mit neuem Wert überschreiben */
		if (containsKey(key))
			for (int i=0; i < size; i++)
				if (data[i].getKey() == key)
				{
					Object old=null;
					old = data[i].getValue();
					data[i].setValue(value);
					return old;
				}
				else if (data[i].getKey().equals(key))
				{			
					Object old=null;
					old	 = data[i].getValue();
					data[i].setValue(value);
					return old;
				}
		
		/* Groesse des Arrays prüfen und ggf. vergroessern(verdoppeln) */
		if (size + 1 == data.length)
		{
			/* Aktuellen Inhalt des Arrays in temporären Zwischenspeicher umkopieren */
			Entry old_data[] = new Entry[size];
			for (int i =0; i < size; i++)
				old_data[i] = data[i];
			
			/* Array in der doppelten, der bisherigen Größe erzeugen */
			data = new Entry[size*2];
			
			/* Inhalt des Arrays aus temp. Objekt wiederherstellen */
			for (int i=0; i < size; i++)
				data[i] = old_data[i];
			
		}
		
		/* Neuen Eintrag erstellen */
		data[size] = new Entry(key, value);
		size++;
		return null;
	}

so, nun zu meiner stil-frage.

ich finds idiotisch containsKey aufzurufen, wo dann das ganze array durchlaufen wird um zu prüfen ob es schon einen eintrag gibt, wenn ich das 3 zeilen weiter unten ohnehin machen würde(anders komme ich ja nicht an die position des objektes im array). deswegen dir frage, kann man es besser machen?

auch andere hinweise nehm ich gerne an :)

danke im voraus für hilfe und fürs zeitnehmen diesen roman zu lesen ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Wozu dient Interfaces? Java Basics - Anfänger-Themen 6
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I XML und Interfaces aus anderen Projekten Java Basics - Anfänger-Themen 3
8u3631984 Record - Interfaces Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
B JaxB und Interfaces? Java Basics - Anfänger-Themen 2
M Funktionale Interfaces Java Basics - Anfänger-Themen 3
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Zweck von Interfaces immer noch nicht klar Java Basics - Anfänger-Themen 3
M Klasse erbt von Interfaces Java Basics - Anfänger-Themen 6
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Interface Warum Interfaces? Java Basics - Anfänger-Themen 5
R interfaces Java Basics - Anfänger-Themen 1
B Interfaces Java Basics - Anfänger-Themen 6
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
J Interfaces? Java Basics - Anfänger-Themen 32
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
S Erste Schritte Innere Klassen und Interfaces Java Basics - Anfänger-Themen 2
J Wofür dienen Interfaces ? Java Basics - Anfänger-Themen 1
Hijo2006 Frage zu Interfaces Java Basics - Anfänger-Themen 21
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
J Interfaces Java Basics - Anfänger-Themen 15
D Frage bzgl. Interfaces Java Basics - Anfänger-Themen 10
D Interface Verständnisprobleme von Interfaces Java Basics - Anfänger-Themen 5
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
S Rollen verändern, Interfaces austauschen wie? Java Basics - Anfänger-Themen 10
K Interfaces/Klassen etc. Java Basics - Anfänger-Themen 6
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java Interfaces für andere Programmiersprachen zur Verfuegung stellen? Java Basics - Anfänger-Themen 2
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
F Best Practice UML/Planung eines Projektes (Klassen, Interfaces, ...) Java Basics - Anfänger-Themen 0
V Vererbung Vererbung, Interfaces und OOP... Java Basics - Anfänger-Themen 10
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
A Interface Poymorphismus bei Interfaces Java Basics - Anfänger-Themen 2
Pentalon Eclipse JUNO keine Vorschläge von Methoden bzw. Interfaces der eigenen Klassen Java Basics - Anfänger-Themen 5
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
H Erste Schritte 2 User Interfaces für eine Anwendung Java Basics - Anfänger-Themen 7
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
M Interface @Inject mit Interfaces? Java Basics - Anfänger-Themen 2
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
S Interface mehrere Interfaces Java Basics - Anfänger-Themen 2
M Vererbung Problem bei Interfaces Java Basics - Anfänger-Themen 8
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
F Interfaces Java Basics - Anfänger-Themen 4
M Frage zu Interfaces Java Basics - Anfänger-Themen 3
N Generics und Interfaces Java Basics - Anfänger-Themen 5
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
N OOP Vererbung von Interfaces Java Basics - Anfänger-Themen 12
S Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 2
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
P Frage zu Interfaces Bsp. Java Basics - Anfänger-Themen 9
A Deklarationen in abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 11
R Adapterklassen vs Interfaces Java Basics - Anfänger-Themen 6
P Interfaces -> eins oder mehrere für eine Anwendung? Java Basics - Anfänger-Themen 9
2 Interfaces, Polymorphie und Methoden. Java Basics - Anfänger-Themen 14
A Obstlager Interfaces Java Basics - Anfänger-Themen 7
K Theor. Frage zu Interfaces Java Basics - Anfänger-Themen 30
T Frage zu Interfaces und Abstrakten Klassen Java Basics - Anfänger-Themen 4
J Interfaces Java Basics - Anfänger-Themen 14
L Interfaces Java Basics - Anfänger-Themen 5
J spiel "Gefangenendilemma" Probleme mit Interfaces Java Basics - Anfänger-Themen 8
H Interfaces in java? Java Basics - Anfänger-Themen 2
A OOP Interfaces mit gleichem Methoden Java Basics - Anfänger-Themen 15
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
D Interfaces / Schnittstellen Java Basics - Anfänger-Themen 8
I Probleme mit Interfaces Java Basics - Anfänger-Themen 4
K Interfaces "Schreibaufwand" Java Basics - Anfänger-Themen 53
I Interfaces Java Basics - Anfänger-Themen 34
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
A Programmieren gegen Interfaces Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
7 Interfaces - Aufbau Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben