# Frage zu meiner Storage Klasse



## OracleBoy (9. Jan 2020)

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


```
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 (9. Jan 2020)

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 (9. Jan 2020)

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


```
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 (10. Jan 2020)

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


```
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);

    }

}
```


----------



## kneitzel (10. Jan 2020)

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 (10. Jan 2020)

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;

            }

        });

    }
}


----------

