Frage zu meiner Storage Klasse

OracleBoy

Mitglied
Hallo Leute,
findet ihr mein Storage sieht so in Ordnung aus, oder sollte ich etwas ändern?

Java:
public class Storage<T extends HighSpeedCars> {

    private List<T> storage = new ArrayList<>();

    public List<T> getStorage() {
        return this.storage;
    }

    public void add(T t) {
        this.storage.add(t);
    }

    public void remove(int index) {
        this.storage.remove(index);
    }

}
 

httpdigest

Top Contributor
Du könntest noch die Instanzvariable und die drei Methoden entfernen.
Ohne konkrete Anforderungen/Aufgabe/Ziel, kann dir niemand sagen, ob das so gut ist oder nicht.
Da also völlig unbekannt ist, welchen Zweck diese Klasse erfüllen soll, würde ich sagen, sie ist komplett überflüssig und kann gelöscht werden.
 

OracleBoy

Mitglied
bin absoluter Neuling.. ich werde meinen Lehrer morgen nochmal fragen.. habe jedenfalls denke eine bessere Lösung gefunden

Java:
public class Storage<T extends HighSpeedCars> {

    private List<T> carList;

    private Integer volume;

    public Storage(Integer size) {
        this.carList= new ArrayList<T>();
        this.volume= size;
    }

    public void addCar(T t, int number) {

        for (int i = 0; i < number; i++) {
            if (carList.size() < volume) {
                this.carList.add(t);
            } else {
                break;
            }
        }
    }

    public void sellCar(int index) {
        this.carList.remove(index);
    }

    public List<T> getCarList() {
        return carList;
    }
   
}
 

OracleBoy

Mitglied
Das ganze habe ich für diese Klasse erstellt.. denke so müsste es gehen

Java:
public class MainView extends HBox {

    private Storage<Opel> opelStore = new Storage<Opel>();
    private Storage<Mazda> mazdaStore = new Storage<Mazda>();
    private Storage<Dacia> daciaStore = new Storage<Dacia>();

    public MainView() {
        createView();
    }

    private void createView() {
        VBox vBoxLeft = new VBox();
        VBox vBoxRight = new VBox();
        TextField texfieldName = new TextField();
        texfieldName.setPromptText("Model");
        TextField texfieldBrand = new TextField();
        texfieldBrand.setPromptText("Autohersteller");
        TextField texfieldWeight = new TextField();
        texfieldWeight.setPromptText("Leergewicht");
        TextField texfieldSpecial = new TextField();
        ComboBox<String> comboBoxSelect = new ComboBox<>(FXCollections.observableArrayList("Opel", "Mazda", "Dacia"));
        ListView<String> listViewStorage = new ListView<>();
        Button buttonBuy = new Button("Kaufe ein");

        buttonBuy.setOnAction(EventHandler -> {
            switch (comboBoxSelect.getValue()) {
            case "Opel":
                Opel opel = new Opel(texfieldName.getText(), texfieldBrand.getText(),
                        Double.valueOf(texfieldWeight.getText()), texfieldSpecial.getText());
                this.opelStore.addToStorage(opel);
                listViewStorage.setItems(FXCollections.observableArrayList(this.opelStore.getStorageAsString()));
                break;
            case "Mazda":
                Mazda mazda = new Mazda(texfieldName.getText(), texfieldBrand.getText(),
                        Double.valueOf(texfieldWeight.getText()), Integer.valueOf(texfieldSpecial.getText()));
                this.mazdaStore.addToStorage(mazda);
                listViewStorage.setItems(FXCollections.observableArrayList(this.mazdaStore.getStorageAsString()));
                break;
            case "Dacia":
                Dacia dacia = new Dacia(texfieldName.getText(), texfieldBrand.getText(),
                        Double.valueOf(texfieldWeight.getText()), Integer.valueOf(texfieldSpecial.getText()));
                this.daciaStore.addToStorage(dacia);
                listViewStorage.setItems(FXCollections.observableArrayList(this.daciaStore.getStorageAsString()));
                break;
            }
        });

        Button buttonSell = new Button("Verkaufe jetzt");

        buttonSell.setOnAction(EventHandler -> {
            switch (comboBoxSelect.getValue()) {
            case "Opel":
                this.opelStore.removeItemFromStorage(listViewStorage.getSelectionModel().getSelectedIndex());
                listViewStorage.setItems(FXCollections.observableArrayList(this.opelStore.getStorageAsString()));
                break;
            case "Mazda":
                this.mazdaStore.removeItemFromStorage(listViewStorage.getSelectionModel().getSelectedIndex());
                listViewStorage.setItems(FXCollections.observableArrayList(this.mazdaStore.getStorageAsString()));
                break;
            case "Dacia":
                this.daciaStore.removeItemFromStorage(listViewStorage.getSelectionModel().getSelectedIndex());
                listViewStorage.setItems(FXCollections.observableArrayList(this.daciaStore.getStorageAsString()));
                break;
            }
        });

        comboBoxSelect.setOnAction(event -> {
            switch (comboBoxSelect.getValue()) {
            case "Opel":
                listViewStorage.setItems(FXCollections.observableArrayList(this.opelStore.getStorageAsString()));
                break;
            case "Mazda":
                listViewStorage.setItems(FXCollections.observableArrayList(this.mazdaStore.getStorageAsString()));
                break;
            case "Dacia":
                listViewStorage.setItems(FXCollections.observableArrayList(this.daciaStore.getStorageAsString()));
                break;
            }

        });

        vBoxLeft.getChildren().addAll(texfieldName, texfieldBrand, texfieldWeight, texfieldSpecial, buttonBuy);
        vBoxRight.getChildren().addAll(comboBoxSelect, listViewStorage, buttonSell);
        this.getChildren().addAll(vBoxLeft, vBoxRight);

    }

}
 
K

kneitzel

Gast
Also wenn Du eine Klasse hast, die es nutzen soll, dann kannst Du es doch einmal damit laufen lassen Oder zumindest prüfen, ob es kompiliert..

Schau doch einfach mal in dem gegebenen Code nach, was für Funktionen gefordert sind. Und das baust Du dann. (Daran, dass ich das explizit erwähne, kannst Du erkennen, dass Du da aus der Luft heraus irgendwas gebaut hast, aber das hat mit den Anforderungen NICHTS zu tun!)
 

OracleBoy

Mitglied
public class MainView extends BorderPane {

Storage<> Storage = new Storage<>();
Storage<> Storage = new Storage<>();
Storage<> nameStorage = new Storage<>();
Storage<> nameStorage = new Storage<>();

public MainView() {
this.createView();
}

private void createView() {

VBox vBoxTop = new VBox();

HBox hBoxTop = new HBox();

TextField attribut = new TextField();
TextField categorie = new TextField();
TextField art = new TextField();

Button addButton = new Button("Hinzufügen");

hBoxTop.getChildren().addAll(attribut, categorie, art, addButton);

ComboBox<String> comboBox = new ComboBox<>(
FXCollections.observableArrayList("Human", "Dolphin", "Shark", "Perch"));

vBoxTop.getChildren().addAll(hBoxTop, comboBox);

this.setTop(vBoxTop);

HBox hBoxBotton = new HBox();

ListView list = new ListView();

Button removeButton = new Button("Löschen");

hBoxBotton.getChildren().addAll(list, removeButton);

this.setCenter(hBoxBotton);

// Add to List
addButton.setOnAction(e -> {

switch (comboBox.getValue()) {

case "name":
Human human = new Human(attribut.getText(), Integer.parseInt(categorie.getText()),
Integer.parseInt(art.getText()));
this.humanStorage.add(human);
list.setItems(FXCollections.observableArrayList(this.humanStorage.getStorage()));
break;
case "name":
Dolphin dolphin = new Dolphin(attribut.getText(), Integer.parseInt(categorie.getText()),
Integer.parseInt(art.getText()));
this.dolphinStorage.add(dolphin);
list.setItems(FXCollections.observableArrayList(this.dolphinStorage.getStorage()));
break;
case "name":
Shark shark = new Shark(attribut.getText(), Integer.parseInt(categorie.getText()),
Integer.parseInt(art.getText()));
this.sharkStorage.add(shark);
list.setItems(FXCollections.observableArrayList(this.sharkStorage.getStorage()));
break;
case "name":
break;

default:
break;

}

});

}
}
 

Neue Themen


Oben