Einsteigerproblem: Klassenverständnis

Status
Nicht offen für weitere Antworten.
K

killed_bill

Gast
Hallo!

Ich möchte im Rahmen eines Java Anfängerkurses eine eigene Geschäftslogik anlegen.
Ich bin prozeduraler Programmierer und habe tierische Probleme, diese Klassen-/Objektlogik zu verstehen. Meine Bücher helfen mir dabei nicht weiter.

Beispiel:
Wenn ich eine Klasse Lagerplatz angelegt habe und für diese Klasse Objekte erzeugt habe (Lagerplatz1, 2, 3, ...).
Nun möchte ich prüfen, welcher der Lagerplätze (Objekte) noch frei ist. Angenommen dieses Objekt kann die Aussage (ob "noch frei" oder "belegt") per Methode zur Verfügung stellen - wie klapper ich aber die einzelnen Objekte ab?

-> Muß ich dafür eine eigene "Lagerplatzverwaltungsklasse" anlegen oder entspricht das nicht der Logik der objektorientierten Programmierung?

-> Wer prüft, ob der Lagerplatz noch frei ist - macht das ein Objekt der Klasse "Artikel", der für sich prüft, ob er irgendwo eingelagert werden kann?

Viele Grüße & dankeschön!
killed_bill
 
B

Beni

Gast
Muß ich dafür eine eigene "Lagerplatzverwaltungsklasse" anlegen oder entspricht das nicht der Logik der objektorientierten Programmierung?

Eine Lagerplatzverwaltungsklasse wäre wirklich eine Möglichkeit. Diese Klasse würde dann wie eine Liste (=Array mit dynamischer Länge) funktionieren, und könnte sonst noch ein paar Dinge (wie Lagerplätze suchen).
Der Vorteil ist ganz klar die einfache Nutzung dieser Klasse, einmal schreiben, und überall kannst du Lagerplätze finden.
Der Nachteil ist: du musst sie wenigstens einmal schreiben :wink:

Wer prüft, ob der Lagerplatz noch frei ist - macht das ein Objekt der Klasse "Artikel", der für sich prüft, ob er irgendwo eingelagert werden kann?
Das kommt ein bisschen draufan, wie dein Progi aussieht.
Ich würde das an die Lagerplatzverwaltung delegieren (Aber da sind sicher auch andere Varianten denkbar).
Code:
public class LagerplatzVerwaltung{
  private Vector platz = new Vector();

  public Lagerplatz searchFree(){
    for( int i = 0, n = platz.size(); i<n; i++ ){
      Lagerplatz p = (Lagerplatz)platz.get( i );
      if( p.isFree() )
        return p;
    }
    return null;
  }

  public void store( Artikel artikel ){
    Lagerplatz free = searchFree();
    if( free == null )
      throw new IllegalStateException( "Es hat keinen Platz mehr im Lager" );
    else
      free.setArtikel( arikel ); // Den Artikel einlagern
  }
}
}
 

killed_bill

Mitglied
Dankeschön!! Das ging ja fix!

Nochmal zum Verständnis: Die Lagerverwaltungsklasse wäre doch aber schon sowas wie eine interne Tabelle (ist also nicht so sauber objektorientiert, oder?). Gibt es auch einen rein ojektorientierten Lösungsansatz für dieses Problem?

Viele Grüße
killed_bill
 
B

Beni

Gast
Die Lagerverwaltungsklasse wäre doch aber schon sowas wie eine interne Tabelle
Ja

ist also nicht so sauber objektorientiert, oder?
Doch, eigentlich schon.

Du kommst auch in OOP nicht ohne Arrays (Tabellen), Schleifen und ähnlichem aus.

Der Unterschied zu prozeduralem Programmieren ist vorallem, dass Variablen und Methoden thematisch sortiert, und in einzelnen Klassen zusammengefasst werden.
Innerhalb einer Methode betreibt man aber wieder prozedurale Programmierung (nur dass der Syntax leicht anders ist, um die "thematische Sortierung" zu unterstützen).
 

killed_bill

Mitglied
Hallo nochmal!

Ich habe nun 2 Vektoren erzeugt :D

Nun habe ich eine weitere Frage:

Kann ich innerhalb einer Schleife über den Vektor eine Methode pro enthaltenem Objekte ausführen und die Rückgabewerte entgegennehmen?

Wenn ja - wie macht man sowas?


Bsp. Mein Lagerhaus hat einen
Code:
private Vector lagerplatzVector;
Nun möchte ich (innerhalb der Schleife - die ich innerhalb des Lagerhauses programmiert habe) pro Lagerplatz
erfahren, ob er noch freie Kapazität hat. Dazu würde ich gerne dessen Methode
Code:
public boolean addProdukt(Produkt imp_produkt)
aufrufen, der Methode die Produktnummer zur Verarbeitung mitgeben und belegt=true/false zurückbekommen


Viele Grüße & dankeschön
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben