Java Array mit Attributen aus anderer Klasse füllen

Cptlava

Newbie
Registriert
Dez. 2015
Beiträge
2
Hallo ich hoffe meine Überschrift beschreibt mein Problem zutreffend.

Für unsere Programmierübung sollen wir eine neue Klasse Lager ergänzend zu einer bereits vorhandenen Klasse Artikel schreiben.
Was bei mir für Verwirrung sorgt ist, dass in der Klasse Lager Arrays deklariert werden sollen welche dann mit Attributen aus der Klasse Artikel gefüllt werden sollen. Ist das möglich wenn ja wie?

Code für die Klasse Lager
Code:
public class Lager
{
    int maximalGroesse,i = 0;
    final int MAXANZ = 10;
    int[][] iFeld ;
    String [] sFeld;
    
    Scanner input = new Scanner(System.in);
    
    /**
     * Konstruktor für ein Feld mit selbst definierter Groesse
     * @param max Ihre Eingabe für die vordefinierte Groesse
     */
    public Lager (int max){
        iFeld = new int[max][max];
        sFeld = new String[max];
    }
    
    /**
     * Kontruktor für ein Feld mit vordefinierter Groesse 10
     */
    public Lager () {
        iFeld = new int[MAXANZ][MAXANZ];
        sFeld = new String[MAXANZ];
    }  
  
    /**
     * Befüllen des Feldes
     */    
    public void anlegen (){
        
    } 
}

Code der Klasse Artikel
Code:
public class Artikel extends Lager
{
    /**
     * Attribut Zuweisungen
     */
   int artikelnr;
   String artikelbez;
   int artikelbestand;
   double preis;
   
   /**
    * Ein Standardkonstruktor macht keinen Sinn, da es keinen Grund gibt Speicherplatz für ein nicht definiertes Objekt zu verbrauchen!
    */
   
   /**
    * Konstruktor für alle 3 Attribute
    * Überprüfen ob Artikelnummer 4-stellig und positiv ist
    * Überprüfen ob der Bezeichner einen Namen hat
    * Überprüfen ob Bestand größer gleich 0 ist
    * Überprüfen ob Preis größer gleich 0 ist
    */
   public Artikel(int artikelnr, String artikelbez, int artikelbestand, double preis){       
       assert artikelnr >= 1000 && artikelnr < 10000 : "Artikelnummer muss 4-stellig und positiv sein!";
       this.artikelnr = artikelnr; 
     
       assert artikelbez != null && artikelbez.length() > 0 : "Artikelbezeichnung darf nicht leer sein!";    
       this.artikelbez = artikelbez;
     
       assert artikelbestand >= 0 : "Artikelbestand darf nicht negativ sein!";
       this.artikelbestand = artikelbestand;
       
       assert preis >= 0 : "Preis darf nicht negativ sein!";
       this.preis = preis;
   }
        
   /**
    * Zugang von neuer Ware, mit der Überprüfung ob die Eingabe größer als 0 ist
    */ 
   public void zugang (int anzahl){       
       assert anzahl > 0 : "Anzahl muss größer als 0 sein!";
       artikelbestand = artikelbestand + anzahl;   
   }
    
   /**
    * Abgang von neuer Ware, mit der Überprüfung ob die Eingabe größer als 0 ist.
    * Überprüfung ob der Bestand negativ wird.
    */ 
   public void abgang (int anzahl){
       assert anzahl > 0 : "Anzahl muss größer als 0 sein!";
       int artikelbestandTest = artikelbestand;
       artikelbestandTest = artikelbestand - anzahl;           
       
       if (artikelbestandTest < 0) {
           assert artikelbestandTest >= 0 : "Artikelbestand darf nicht negativ werden!";
       } else {
           artikelbestand = artikelbestandTest;
       }
   }

    /**
    * Set Methoden
    */ 
   public void setArtikelBez(String artikelbez) {
       assert artikelbestand >= 0 : "Artikelbestand darf nicht negativ sein!";
       this.artikelbez = artikelbez;
   }
   
    /**
     * Get Methoden
     */
    
   public int getArtikelNummer() {
       return artikelnr;
   }
    
    public String getArtikelBezeichner() {
       return artikelbez;
   } 
   
   public int getArtikelBestand() {
       return artikelbestand;
   }
   
      public double getPreis() {
       return preis;
   }
   
   /**
    * Ausgabe des Artikels.
    */
   
   public String toString() {
       return "Artikel: " + artikelnr + ",   Bezeichnung: " + artikelbez + ",   Bestand: " + artikelbestand;
   }
   
   public void ausgabe() {
       System.out.printf("Artikel: %d,   Bezeichnung: %s,   Bestand: %d %n",artikelnr, artikelbez, artikelbestand);
   }
}
 
Du erzeugst Arrays vom Typ Artikel[].

P.S.: Warum sollte ein Artikel von Lager erben? Ergibt für mich keinen Sinn.
 
Das mit dem erben war Unfug ist mir gerade auch aufgefallen:D

Das mit dem Artikel Array ergibt Sinn, stellt sich mir nur noch die Frage wie ich nun dieses mit den Attributen aus der Artikelklasse fülle
 
Also, der Artikel ist bestandteil vom Lager, ist doch logisch oder?

Das heißt dann doch dass du den Artikel im Lager einbinden solltest und über das Lager die Information des Artikels bekommst.
Daher würde ich dem Lager die getter und setter geben und den Artikel nur zum rumhantieren haben wollen.
Wobei wenn du es am besten in einer Datei hälst dann brauchst du keine Getter und Setter, dann kannst du einfach darauf zugreifen.

Also sowas dann
Code:
public class Lager
{

Artikel []artikel;  //die größe wird beim erstellen des Lagers festgesetzt.

public Lager(int size)
{
artikel = new Artikel[size];
}

//Nun noch getter und setter machen und das war es mit dem Lager
}

Nun den Artikel
Code:
public Class Artikel
{

String betitelung;
int nummer;
double preis;

public Artikel(String betitelung, int nummer, double preis)
{
this.betitelung = betitelung;
this.nummer = nummer;
this.preis = preis;
}

}
 
Zurück
Oben