Klassen Denkfehler im Klassen "dynamisch" instanzieren?

Threepwoot

Mitglied
Schönen Tag zusammen,

ich zähl seit ein paar Tagen auch zu denen die sich Java als Erstsprache ausgesucht haben.

Nun stoß ich auf ein Problem, bei dem ich nicht weiss ob es mein Kopf ist der zu umständlich denkt oder noch nicht das Wissen hat, oder Java generell mit dem, was ich vorhabe nicht umgehen kann.

Ich hab in einem Lager-Tool drei Klassen. Die Main, Lager und Artikel.
Ich würde gerne dem Benutzer die Möglichkeit geben der Lagerinstanz einen Namen zu geben, also die Objektvariable nicht fest vorzugeben wie zb.

Lager neuesLager = new Lager(); sondern Lager benutzerEingabe = new Lager();

Kann Java das, wenn ja wie komme ich zu diesem Schritt hin , was ich mir ggf vorher anschauen sollte.

Grüße
 
Also Namen von Variablen kannst du nicht dynamsich zur Laufzeit festlegen. Was du machen könntest ist die Namen in einer Map zu speichern und so die Nutzereingabe auf die Variable zu mappen.
Java:
Map<String, Lager> map = new HashMap<>();
Scanner scanner = new Scanner(System.in);
...
while(...) {
    String input = scanner.nextLine();
    map.put(input, new Lager());
}

Lager lager = map.get("someUserInput...");
Wenn du erst seit ein paar Tagen Java machst würde ich aber erstmal die Finger davon lassen. Fang mit einfachen Arrays an und mach die Verknüpfung über die Array Indizes zB.
 
Ganz einfach:

Java:
public class Lager{
    String name;
  
    public Lager(String name){
        this.name = name;
    }
}

Edit:
Ach so, die Variablennamen im Code willst du ändern...

Nun, der JVM ist die Benamsung deiner Variablen völlig egal. Die Namen gibt es nur, weil du mit Namen besser umgehen kannst als wenn in deinem Code lauter Sachen wie 0xFE42EF stehen würden.

Von daher: das würde dein Problem garantiert nicht lösen. Wie sieht dein Problem denn genau aus?
 
Das mit den Hashmaps sieht gut aus, da geb ich mich mal dran sobald ich Arrays verstanden habe und die richtig zu nutzen weiss 🙂

Ich hatte eigentlich nur im Kopf langfristig für verschiedene Produkte das passende Lager zu erstellen. z.B. das Brote nur im Lager "Backwaren" lagern und nicht im Lager "Fleischwaren".. daher soll der Benutzer sein Lager benennen können um dann fortzufahren mit backwaren.getBestand(); oder fleischwaren.lagereArtikel();

daher wollte ich vorher abklären ob Java damit klar kommt wenn ich die Objektvariable dynamisch generieren lasse und sie nicht schon "hart" vorgebe.
 
Also wie die Variablen heißen ist absolut egal. Wenn Du Lager für irgendwas hast oder diese benannt sind, dann sind das Attribute vom Lager.

Also etwas übertragen auf die reale Welt: Es ist toll, dass Du Lager für diverse Dinge erstellen willst. Aber dann solltest Du an das Lager dran schreiben, was da rein soll. Also an das Lager selbst ein Schild "Backwaren"

Welche Farbe der Zettel hat, auf dem die Adresse mit dem Lager steht, ist doch scheiß egal. (So in der Art ist das mit den Variablen. Das Lager selbst weiß nicht, ob und wo welche Variablen mit welchen Namen existieren. Ebenso wäre es auch in der Realität. Ist ja toll, dass Du gerne die Adresse mit den Backwaren auf einem gelben Zettel haben willst, aber generell kann es zig andere Zettel in allen mögliche Farben geben mit der Adresse und wenn jemand die Adresse braucht, dann spielt es keine Rolle, welche Farbe der Zettel hat. (Sprich: Ich gebe Dir de Adresse per Telefon durch. Ob und wie Du die Adresse aufschreibst / merkst: Das spielt keine Rolle!)

Klar, der Vergleich hinkt etwas, aber das sollte für das Verständnis erst einmal keine Rolle spielen.

Du musst sauber trennen zwischen Daten und Algorithmen. Wenn Du für Lagerhäuser bestimmte Inhalte vorgeben willst, dann musst Du Dir dafür Datenstrukturen überlegen.
Also was musst Du über ein Lagerhaus wissen, damit Du es sinnvoll nutzen kannst?
 

Neue Themen


Zurück
Oben