Interface und Abstrakte Klassen

Marcel0019

Mitglied
Hallo zusammen,

ich brauche mal Hilfe, weil ich hier total auf dem Schlauch stehe :(
Es geht um folgende Problemstellung (siehe UML Diagramm)

attachment.php


Hierbei sollen 2 packages erstellt werden, wobei jeweils Interfaces und im package entry eine Abstrakte Klasse enthalten sein soll. OK das bekomme ich soweit alles hin... auch der import der Packages untereinander scheint zu funktionieren.

Ich habe mir überlegt jetzt Objekte für die Klasse ArrayPhoneBook zu instanziieren. Diese kennt aber die Klassen PersonEntry und CompanyEntry nicht oder? Außerdem implementiert sie Methoden wie addEntry oder removeEntry. Daher erscheint es mir unlogisch dort ein Objekt von zu instanziieren.
Sinn würde aus meiner Sicht nur das Erstellen von Objekten für CompanyEntry und PersonEntry machen.
Das ist zumindest das, was ich bisher gelernt habe...mithilfe von Getter und Setter Methoden.

Kann mir daher bitte jemand bei der Herangehensweise bei dieser Aufgabe behilflich sein?

Vielen Dank schonmal,
Marcel
 

Anhänge

  • UML.JPG
    UML.JPG
    68,9 KB · Aufrufe: 161
G

Gast2

Gast
Ein Testprogramm dafür könnte bspw. so aussehen:

Java:
PhoneBook pb = new ArrayPhoneBook();

IEntry entry1 = new PersonEntry(...);
IEntry entry2 = new CompanyEntry(...);

pb.addEntry(entry1);
pb.addEntry(entry2);

pb.show();

Ich verstehe deine Frage zum Instanziieren nicht ganz. Dein PhoneBook erstellt selbst keine Instanzen.
 

Marcel0019

Mitglied
Ein Testprogramm dafür könnte bspw. so aussehen:

Java:
PhoneBook pb = new ArrayPhoneBook();

IEntry entry1 = new PersonEntry(...);
IEntry entry2 = new CompanyEntry(...);

pb.addEntry(entry1);
pb.addEntry(entry2);

pb.show();

Ich verstehe deine Frage zum Instanziieren nicht ganz. Dein PhoneBook erstellt selbst keine Instanzen.

Vielen lieben Dank für die schnelle Antwort.
Dass das Phonebook selbst keine Instanzen erstellt war auch meine Vermutung, ich war nur verwirrt, weil ich es bisher nur in der einfachen Variante kannte. D.h. eine Klasse mit Getter und Setter und eine Testklasse dazu. Von daher wirkt das Ganze hier sehr komplex für mich.

Aber danke schonmal für die Starthilfe... so langsam beginnt das Ganze Sinn zu machen, wenn ich mir dein Beispiel anschaue.

Eine Frage aber hätte ich noch. In welches Package packe ich diese Testklasse? Wahrscheinlich in das Package phonebook oder?
 

Marcel0019

Mitglied
Eine Frage zum erstellen und löschen der Objekte der ArrayList.

Ich lege folgendes Objekt an

Java:
IEntry eintrag = new PersonEntry();
eintrag.setName(ReadInput("Name: "));
eintrag.setPhoneNumber(ReadInput("Nummer: "));
...
pb.anlegen(eintrag);

und übergebe es an die ArrayPhoneBook Klasse ums in die ArrayList zu speichern
Java:
@Override
public void anlegen(IEntry entry) {
	ArrayPhoneBook.pb.add(entry);		
}

wenn ich dieses Objekt nun anhand eines eingegebenen Namens suchen und löschen will, macht es ja keinen Sinn dafür ein neues Objekt zu erstellen, einen Namen zu setzen und das dann mit einem bestehenden Objekt zu vergleichen.

Daher bin ich mir unklar darüber, wie genau ich diese Funktion rufe

Java:
@Override
public void loeschen(IEntry pb) {
	// TODO Auto-generated method stub
}

Kann mir da bitte jemand helfen?
 
G

Gast2

Gast
Du hast in deiner Testklasse doch ne Instanz von dem Eintrag den du entfernen willst:
Java:
IEntry eintrag = new PersonEntry();
eintrag.setName(ReadInput("Name: "));
eintrag.setPhoneNumber(ReadInput("Nummer: "));
...
pb.anlegen(eintrag);
...
pb.loeschen(eintrag);
 

HimBromBeere

Top Contributor
Du läufst einfach solange durch dein Adressbuch durch, bis du den Namen gefunden hast? Alternativ tut´s auch ´ne HashMap mit dem Namen als Schlüssel, wenn das die Aufgabenstellung zulässt...
 
Zuletzt bearbeitet:

Marcel0019

Mitglied
Du hast in deiner Testklasse doch ne Instanz von dem Eintrag den du entfernen willst:
Java:
IEntry eintrag = new PersonEntry();
eintrag.setName(ReadInput("Name: "));
eintrag.setPhoneNumber(ReadInput("Nummer: "));
...
pb.anlegen(eintrag);
...
pb.loeschen(eintrag);

Ja es ist EINE Instanz richtig. Aber ich erstelle ja mehrere in dieser Testklasse:

Java:
boolean run = true;
while (run) {
//generieren des Auswahlmenues
...
System.out.println("2 - Neuen Eintrag anlegen");
...		
String auswahl = ReadInput("***Bitte geben Sie eine Wahl ein (1-9): ");
int sel = Integer.valueOf(auswahl).intValue();
	switch (sel) {
...
        	case 2 : {
        		IEntry eintrag = new PersonEntry();
	        		eintrag.setName(ReadInput("Name: "));
...
       		        pb.anlegen(eintrag);
		        break;  
			}

Muss ich dann in der Testklasse erst anhand einer Eingabe (z.B. des Namens) das richtige Objekt suchen ums dann zu löschen?
 

Marcel0019

Mitglied
Leider bekomme ich das Auslesen der Objekte nicht hin :(
Ich habe vor alle erstellten Objekte in eine Datei zu speichern mittels Serializable.

Ich habe jetzt nochmal das Kapitel Klassen und Objekte gelesen aber steige noch immer nicht dahinter :(

Ich versuche es mal der Reihe nach:

Ich lege eine neue Variable vom Typ IEntry an und packe dort das Objekt PersonEntry hinein und fülle es mit Werten usw.

Java:
IEntry eintrag = new PersonEntry();

Dann erstelle ich eine variable pb vom Typ ArrayPhoneBook
Hier füge ich dann die erstellen eintrag - Objekte hinzu.

Java:
private static ArrayPhoneBook pb = new ArrayPhoneBook();
...
pb.anlegen(eintrag);

In der Klasse ArrayPhoneBook wird ebenfalls eine Variable pb vom Typ ArrayList erstellt, welche die übergebenen Objekte der ArrayList hinzufügt.

Java:
private static ArrayList<IEntry> pb = new ArrayList<IEntry>();
....
per

public void anlegen(IEntry entry) {
		pb.add(entry);		
	}

Soweit komme ich mit, denke ich. War hoffentlich bis hierhin richtig erklärt.
Nun jedoch meine Verständnisfragen:

Worüber iteriere ich nun, um meine erstellten Objekte auszulesen um diese dann abuspeichern?
Über die ArrayList<IEntry> ? Und wenn ja, wie genau funktioniert dies aus der Klasse ArrayPhoneBookTest?

Ich habe das hier versucht aber das wird nix.

Java:
for (IEntry eintraege : ArrayList<IEntry>) {
	                	
	                }

Diese Aufgabe raubt mir noch meine letzte Nerven :(
 
N

nillehammer

Gast
Java:
for (IEntry eintraege : ArrayList<IEntry>) {
                        
                    }
Fast richtig, Du musst natürlich über eine List iterieren, die es schon gibt. Bei Dir wäre das pb aus ArrayPhoneBook.

Ach und nochwas, wenn alle Deine Klassen Serializable implementieren und selbst nur Serializable Felder enthalten (alles, was primitiv ist, ist Serializable, ArrayList ist auch Serializable), dann kannst Du direkt einen ObjectOutputStream benutzen und in ein File umleiten. Dann brauchst Du garnichts selbst auszulesen. Obwohl Dein Ansatz zum Serialisiern der Liste sehr lobenswert ist, weil wenn Du mal mit den Interfaces (hier List) arbeitest, Du das dann machen müsstest.
 
Zuletzt bearbeitet von einem Moderator:

Marcel0019

Mitglied
Java:
for (IEntry eintraege : ArrayList<IEntry>) {
                        
                    }
Fast richtig, Du musst natürlich über eine List iterieren, die es schon gibt. Bei Dir wäre das pb aus ArrayPhoneBook.

Ach und nochwas, wenn alle Deine Klassen Serializable implementieren und selbst nur Serializable Felder enthalten (alles, was primitiv ist, ist Serializable, ArrayList ist auch Serializable), dann kannst Du direkt einen ObjectOutputStream benutzen und in ein File umleiten. Dann brauchst Du garnichts selbst auszulesen. Obwohl Dein Ansatz zum Serialisiern der Liste sehr lobenswert ist, weil wenn Du mal mit den Interfaces (hier List) arbeitest, Du das dann machen müsstest.

Ich hab das jetzt so implementiert mittels Serializable.

Speichern
Java:
	@Override
	public void speichern() {		
		try{
			FileOutputStream fos = new FileOutputStream("E:\\test");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			oos.writeObject(pb);
			oos.flush();
			fos.close();
			}
			catch(Exception e){
				System.out.println("PhoneBook konnte nicht gesichert werden: " + e.toString());
			}	
	}

Laden
Java:
	@Override
	public void laden() {
		try{
			FileInputStream fis = new FileInputStream("E:\\test");
			ObjectInputStream ois = new ObjectInputStream(fis);
	
			pb = (ArrayList<IEntry>) ois.readObject();
			fis.close();
		}
		catch(Exception e){
			System.out.println("PhoneBook konnte nicht geladen werden: " + e.toString());
		}
	}

nur leider ist meine ArrayList leer nach dem Laden :( Mach ich was falsch?
 
N

nillehammer

Gast
Die Idee war eigentlich, dass Du Dein komplettes ArrayPhoneBook speicherst und nicht nur Teile daraus.

Aber der von Dir gezeigte Code hätte eigentlich auch funktionieren müssen, vorausgesetzt pb war nicht schon beim Speichern leer. Wie sieht denn die Datei "E:\\test" aus, wenn Du sie mit einem Texteditor öffnest? Ist zwar ein bischen kryptisch, aber man kann schon einigermaßen erkennen, was da drinnen ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Unterscheid Abstrakte Klassen/Interface Klassen? Java Basics - Anfänger-Themen 7
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
B Abstrakte Methode vs. Interface Java Basics - Anfänger-Themen 2
propra Interface - abstrakte Klasse Java Basics - Anfänger-Themen 18
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
K Abstrakte Klasse vs. Interface Java Basics - Anfänger-Themen 21
G Interface oder Abstrakte Klasse? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
Acha Unterschied Interface - abstrakte Klasse Java Basics - Anfänger-Themen 4
B OOP: abstrakte klasse implementiert interface Java Basics - Anfänger-Themen 3
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben