Interface aus anderem Package nutzen

Flügelnuss

Mitglied
Abend Leute,

Ich soll mit einem Kumpel für die Uni ein kleines Java-Projekt programmieren, als Einführung in Java. Es geht dabei um ein Artikel Verwaltungssystem mit ein paar Klassen(Artikel etc.), einem ArtikelDAO Interface und einer SerializedArtikelDAO Klasse welche ArtikelDAO implementiert. Letztere sollen die Objekte der Klassen in einer externen Datei speichern. Wir haben dafür eine Array Liste mit Typ Artikel in der Serialized DAO Klasse erstellt, welche nun in einer ArtikelManagement Klasse, die in einem anderem Package gespeichert ist, verwendet werden soll. Wir haben schon ein wenig herumprobiert aber nichts funktioniert, wäre toll wenn uns jemand einen Tipp geben könnte :)

Schonmal vielen Dank im Vorraus!
Cheers
Flügelnuss

Hier noch der Code:

ArtikelManagement
Java:
package at.ac.univie.swe2015.av.artikel;

import java.io.Serializable;

public class ArtikelManagement{
  
    private String artikelDAO;
  
    public ArtikelManagement(String artikelDAO){
        this.artikelDAO = artikelDAO;
    }
  
    public String getArtikelDAO() {
        return artikelDAO;
    }
    public void setArtikelDAO(String artikelDAO) {
        this.artikelDAO = artikelDAO;
    }
  
    public String getArtikelDaten(){
        for (int i = 0; i < artArrList. size(); i++) {
            System.out.println("Verlag: "artArrList.get(i).getVerlag());
            System.out.println("Titel: "artArrList.get(i).getTitel());
            System.out.println("Erscheinungsdatum: "artArrList.get(i).getErscheinungsdatum());
            System.out.println("Grundpreis: "artArrList.get(i).getVerlag());
            System.out.println("ID: "artArrList.get(i).getVerlag());
        }
    }
    public void addArtikel(Artikel a){
        speichereArtikel(a);
    }
    public void deleteArtikel(Artikel a){
        loescheArtikel(a);
    }
    public int getGesamtanzahlArtikel(){
        int i;
        for (i = 0; i < artArrList.size(); i++);
        return i;
    }
    public int getGesamtanzahlBuecher(){
        int count;
        for (int i = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof Buch){
                count++;
            }
        }
        return count;
    }
    public int getGesamtanzahlDVDs(){
        int count;
        for (int i = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof DVD){
                count++;
            }
        }
        return count;
    }
    public double getDurchschnittspreisArtikel(){
        int priceAdder = 0;
        int count = 0;;
        for (int i = 0; i < artArrList.size(); i++){
            priceAdder = priceAdder + artArrList.get(i).getPreis();
            count++;
        }
        return priceAdder/i;
    }
    public double getDurchschnittspreisBuecher(){
        int priceAdder = 0;
        int count = 0;
        for (int i; = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof Buch){
                priceAdder = priceAdder + artArrList.get(i).getPreis();
                count++;
            }
        }
        return priceAdder/count;
    }
    public double getDurchschnittspreisDVD(){
        int priceAdder = 0;
        int count = 0;
        for (int i; = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof DVD){
                priceAdder = priceAdder + artArrList.get(i).getPreis();
                count++;
            }
        }
        return priceAdder/count;
    }
    public double getDurchschnittsalterArtikel(){
        int ageAdder = 0;
        int count = 0;
        for (int i; = 0; i < artArrList.size(); i++){
            ageAdder = ageAdder + artArrList.get(i).getAlter();
        }
        return ageAdder/count;
    }
    public double getDurchschnittsalterBuecher(){
        int ageAdder = 0;
        int count = 0;
        for (int i; = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof Buch){
                ageAdder = ageAdder + artArrList.get(i).getAlter();
                count++;
            }
        }
        return ageAdder/count;
    }
    public double getDurchschnittsalterDVD(){
        int ageAdder = 0;
        int count = 0;
        for (int i; = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof DVD){
                ageAdder = ageAdder + artArrList.get(i).getAlter();
                count++;
            }
        }
        return ageAdder/count;
    }
    public Artikel getAeltersterArtikel(){
        Artikel save;
        for(int i = 0; i < artArrList.size(); i++){
            if(i < artArrList.get(i).getAlter){
                save = artArrList.get(i);
            }
        }
        return save;
    }
    public Buch getAelterstesBuch(){
        Buch save;
        for(int i = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof Buch){
                    if(i < artArrList.get(i).getAlter){
                        save = artArrList.get(i);
                    }
            }
        }
        return save;
    }
    public DVD getAeltersteDVD(){
        DVD save;
        for(int i = 0; i < artArrList.size(); i++){
            if(artArrList.get(i) instanceof DVD){
                    if(i < artArrList.get(i).getAlter){
                        save = artArrList.get(i);
                    }
            }
        }
        return save;
    }
}

ArtikelDAO
Java:
package at.ac.univie.swe2015.av.artikel.dao;
import java.util.*;

import at.ac.univie.swe2015.av.artikel.Artikel;

public interface ArtikelDAO {
    public List getArtikelList();
    public Artikel getArtikelById(int id);
    public void speichereArtikel(Artikel a);
    public void loescheArtikel(Artikel a);
}

SerializedArtikelDAO
Java:
package at.ac.univie.swe2015.av.artikel.dao;

import java.io.*;
import java.util.*;

import at.ac.univie.swe2015.av.artikel.Artikel;

public class SerializedArtikelDAO implements ArtikelDAO {

    private String dateiname;
    public List<Artikel> artArrList = new ArrayList<Artikel>();
  
    public SerializedArtikelDAO(String dateiname){
      
        this.dateiname = dateiname;
  
    }
  
  
  
    @Override
    public List getArtikelList() {
      
        ObjectInputStream in = null;
        try {
            in = new ObjectInputStream(new FileInputStream(dateiname));
            artArrList = (ArrayList<Artikel>) in.readObject();
        } catch (FileNotFoundException ex) {
            System.out.println("Speichersdatei (noch) nicht vorhanden!");
        } catch (Exception ex) {
            System.out.println(ex);
        } finally {
            try {
                if(in != null) in.close();
            } catch(IOException e) {}
        }
        return artArrList;
      
    }

    @Override
    public Artikel getArtikelById(int id) {
      
        ObjectInputStream in = null;
        try {
            in = new ObjectInputStream(new FileInputStream(dateiname));
            artArrList = (ArrayList<Artikel>) in.readObject();
            for (int i = 0; i < artArrList.size(); i++) {
                if(artArrList.get(i).getId()==id){
                    return artArrList.get(i);
                }
            }
        } catch (FileNotFoundException ex) {
            System.out.println("Speichersdatei (noch) nicht vorhanden!");
        } catch (Exception ex) {
            System.out.println(ex);
        } finally {
            try {
                if(in != null) in.close();
            } catch(IOException e) {}
        }
        return null;
      
    }

    @Override
    public void speichereArtikel(Artikel a) {
      
        OutputStream os = null;

        try {
            os = new FileOutputStream(dateiname);
            ObjectOutputStream oos = new ObjectOutputStream(os);
            artArrList.add(a);
            oos.writeObject(artArrList);
        } catch (IOException e) {
            System.err.println(e);
        } finally {
            try {
                os.close();
                System.out.println(artArrList + " wurde erfolgreich als Name der Person festgelegt!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
    }

    @Override
    public void loescheArtikel(Artikel a) {
      
        OutputStream os = null;

        try {
            os = new FileOutputStream(dateiname);
            ObjectOutputStream oos = new ObjectOutputStream(os);
            artArrList.remove(a);
            oos.writeObject(artArrList);
        } catch (IOException e) {
            System.err.println(e);
        } finally {
            try {
                os.close();
                System.out.println(artArrList + " wurde erfolgreich als Name der Person festgelegt!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
    }

}

Artikel Klasse
Java:
package at.ac.univie.swe2015.av.artikel;
import java.util.*;

public abstract class Artikel {
    private String verlag;
    private String titel;
    private Calendar erscheinungsdatum;
    private double grundpreis;
    private static int id;
  
    public String getVerlag() {
        return verlag;
    }
    public void setVerlag(String verlag) {
        this.verlag = verlag;
    }
    public String getTitel() {
        return titel;
    }
    public void setTitel(String titel) {
        this.titel = titel;
    }
    public Calendar getErscheinungsdatum() {
        return erscheinungsdatum;
    }
    public void setErscheinungsdatum(Calendar erscheinungsdatum) {
        Date now = new Date();
        Calendar heute = Calendar.getInstance();
        heute.setTime(now);
      
        if(erscheinungsdatum.before(heute)){
            this.erscheinungsdatum = erscheinungsdatum;
        }
        else{
            throw new IllegalArgumentException("Das Erscheinungsdatum darf nicht in der Zukunft liegen!");
        }
        this.erscheinungsdatum = erscheinungsdatum;
    }
    public double getGrundpreis() {
        return grundpreis;
    }
    public void setGrundpreis(double grundpreis) {
        if(grundpreis>0){
            this.grundpreis = grundpreis;
        }
        else{
            throw new IllegalArgumentException("Grundpreis darf nicht kleiner 0 sein");
        }
    }
    public static int getId() {
        return id;
    }
    public static void setId(int id) {
        Artikel.id = id;
    }
    public int getAlter(){
        Date now = new Date();
        Calendar heute = Calendar.getInstance();
        heute.setTime(now);
        return heute.get(Calendar.YEAR) - this.erscheinungsdatum.get(Calendar.YEAR);
    }
    public abstract double getRabatt();
    public double getPreis(){
        return this.grundpreis*getRabatt();
    }
    /** Konstruktor */
    public Artikel(String verlag, String titel, Calendar erscheinungsdatum, double grundpreis, int id){
        this.setVerlag(verlag);
        this.setTitel(titel);
        this.setErscheinungsdatum(erscheinungsdatum);
        this.setGrundpreis(grundpreis);
        this.setId(id);
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Tobse

Top Contributor
Wir haben schon ein wenig herumprobiert aber nichts funktioniert
Was habt ihr Probiert? Und was waren die Fehlermeldungen? Ich habe keine Glaskugel, sorry leute.

Generell funktioniert das:

Java:
// package1/Intf.java
package package1;

interface Intf {
    public void doSth();
}
Java:
// package2/Klasse.java
package package2;

class Klasse implements package1.Intf { }

bzw.
Java:
// package2/Klasse.java
package package2;

import package1.Intf;

class Klasse implements Intf {}
 

Flügelnuss

Mitglied
@Tobse Ich glaube du hast das falsch verstanden, das Interface ist im gleichen Package wie die SerializedDAO Klasse, die Management Klasse ist ein einem anderem.

Wir habens schon mit importen probiert, wir haben alle Dateien testmäßig im gleichen Package gespeichert, haben versucht eine Methode der SerializedDAO Klasse zu verwenden um die den Array als return wert zu bekommen. Fehlermeldung lautet: artArrList cannot be resolved.

Danke für die Hilfe!
 

Tobse

Top Contributor
Ihr verwendet eine Variable artArrList in der Klasse ArtikelManagement; dort ist sie aber nirgends definiert => Fehler.
 

Flügelnuss

Mitglied
Ja das ist unser Problem, wir wissen nicht wie wir die Variable definieren und dabei auf artArrList aus SerializedArtikelDAO verweisen können :/
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ja das ist unser Problem, wir wissen nicht wie wir die Variable definieren und dabei auf artArrList aus SerializedArtikelDAO verweisen können :/

Da kann man nichts spezielles definieren
Hier muss man natürlich mit gettern/settern arbeiten (bzw. Konstruktor Injection)

Sprich dein ArtikelManagement ruft vom DAO eine Methode "getList()" auf. Das DAO gibt hier dann natürlich die richtige Liste zurück
 

Saheeda

Top Contributor
Euer Problem hat nix mit Packages o.ä. zu tun, sondern dass ihr offenbar noch nicht ganz sicher wisst, was der Unterschied zwischen Klassen und Objekte ist.

1. Warum ist artikelDao in ArtikelManagement vom Typ String?
2. Um in ArtikelManagement auf die artArrList vom Dao zuzugreifen, reicht this.artikelDao.getArtikelList().
3. Bei Getter-Settern erwartet man eigentlich leichtgewichtige Methoden: Werte werden gesetzt oder zurückgegeben. Eine Datenbankabfrage ist aber eher "schwergewichtig". IMHO ganz schlechter Stil. Ich würde die Methode eher "read" o.ä. nennen.

[klugscheißmodus]
@VirtualIndex
Das sind dann aber keine Variablen, sondern Konstanten.
SCNR.
[/klugscheißmodus]
 

JT31

Neues Mitglied
Hallo!
Ich bin zwar kein Student, lerne aber auch Java und wäre interessiert an der endgültigen Lösung! Hab mir das angeschaut, aber ich komme nicht drauf..
 

Tobse

Top Contributor
Es gibt keine Lösung für die Fragestellung des TE, weil Java so nicht funktioniert.

Die Quintessenz: Instanzvariablen können nur in einer Klasse deklariert werden, nicht in einem Interface.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
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
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
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 Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
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
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
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
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse 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
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
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8
D Interface namen bekommen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben