diff --git a/src/InputManager/InputManager.cpp b/src/InputManager/InputManager.cpp index 98cced5..d74626c 100644 --- a/src/InputManager/InputManager.cpp +++ b/src/InputManager/InputManager.cpp @@ -14,15 +14,16 @@ void InputManager::setSelectedOption(MenuOption option) { this->selectedOption = option; } -InputManager::MenuOption InputManager::askMenuOption(std::string question, std::vector answers) { +InputManager::MenuOption InputManager::askMenuOption(const std::string& question, const std::vector& answers) { this->displayDialog(question, answers); + int input; std::cin >> input; return input; } -void InputManager::displayDialog(std::string question, std::vector answers) { +void InputManager::displayDialog(const std::string& question, const std::vector& answers) { std::cout << question << std::endl; std::cout << "-------------------------------" << std::endl; int counter = 0; @@ -34,16 +35,11 @@ void InputManager::displayDialog(std::string question, std::vector } InputManager::WareAndAmount InputManager::displayAddWareDialog() { - std::string name; - bool hasCooling; - double width, height; - int amount; - - name = getInput("Enter Ware Name:"); - hasCooling = getNeedsCooling(); - width = getInput("Enter Ware width:"); - height = getInput("Enter Ware height:"); - amount = getInput("Enter Ware amount:"); + std::string name = getInput("Enter Ware Name:"); + bool hasCooling = getNeedsCooling(); + double width = getInput("Enter Ware width:"); + double height = getInput("Enter Ware height:"); + int amount = getInput("Enter Ware amount:"); InputManager::WareAndAmount wareAndAmount; wareAndAmount.ware = Ware(name, hasCooling, width, height); @@ -53,11 +49,8 @@ InputManager::WareAndAmount InputManager::displayAddWareDialog() { } InputManager::WareAndAmount InputManager::displayRemoveWareDialog() { - std::string name; - int amount; - - name = getInput("Enter Name of the Ware you want to remove:"); - amount = getInput("Enter amount you want to remove:"); + std::string name = getInput("Enter Name of the Ware you want to remove:"); + int amount = getInput("Enter amount you want to remove:"); InputManager::WareAndAmount wareAndAmount; @@ -100,7 +93,7 @@ void InputManager::displayMainMenu() { break; } case 3: { - std::vector waren = this->editor->getWarenStorage().getAllWaren(); + std::vector waren = this->editor->getWarenStorage()->getAllWaren(); displayWaren(waren); break; } @@ -108,13 +101,17 @@ void InputManager::displayMainMenu() { return; break; } + default: { + return; + break; + } } displayMainMenu(); } // if no more initialization needed --> refactor to setStorageEditor -void InputManager::displayWaren(const std::vector waren) { +void InputManager::displayWaren(const std::vector& waren) { std::cout << "Liste der sich im Lager befindlichen Waren:" << std::endl; std::vector sortedWarenList = sortAndGroupWaren(waren); @@ -222,7 +219,7 @@ std::vector InputManager::sortAndGroupWaren(const s bool InputManager::getNeedsCooling() { std::string input; - bool hasCooling; + bool hasCooling = false; std::cout << "Does Ware need Cooling? (y/n)" << std::endl; try { @@ -247,7 +244,7 @@ bool InputManager::getNeedsCooling() { //std::istream template -T InputManager::getInput(std::string message) const { +T InputManager::getInput(const std::string& message) const { std::cout << message << std::endl; T val; try { diff --git a/src/InputManager/InputManager.h b/src/InputManager/InputManager.h index 24ecc10..16657da 100644 --- a/src/InputManager/InputManager.h +++ b/src/InputManager/InputManager.h @@ -12,9 +12,9 @@ class InputManager { MenuOption selectedOption; - MenuOption askMenuOption(std::string question, std::vector answers); + MenuOption askMenuOption(const std::string& question, const std::vector& answers); - void displayDialog(std::string question, std::vector answers); + void displayDialog(const std::string& question, const std::vector& answers); struct WareAndAmount { Ware ware; @@ -27,7 +27,7 @@ class InputManager { void displayMainMenu(); - void displayWaren(const std::vector waren); + void displayWaren(const std::vector& waren); WareAndAmount displayAddWareDialog(); @@ -39,7 +39,7 @@ class InputManager { void setSelectedOption(MenuOption option); template - T getInput(std::string message) const; + T getInput(const std::string& message) const; bool getNeedsCooling(); diff --git a/src/StorageEditor/StorageEditor.cpp b/src/StorageEditor/StorageEditor.cpp index 9a8b1c1..b5bbcf4 100644 --- a/src/StorageEditor/StorageEditor.cpp +++ b/src/StorageEditor/StorageEditor.cpp @@ -2,7 +2,7 @@ StorageEditor::StorageEditor() { } -StorageEditor::StorageEditor(const WarenStorage storage) { +StorageEditor::StorageEditor(const std::shared_ptr storage) { this->storage = storage; } @@ -22,7 +22,7 @@ void StorageEditor::addWaren(const Ware ware, int amount) { } -void StorageEditor::removeWaren(std::string name, const int amount) { +void StorageEditor::removeWaren(const std::string& name, const int amount) { for(auto i = 0; i < amount; i++) { storage.removeWare(name); } diff --git a/src/StorageEditor/StorageEditor.h b/src/StorageEditor/StorageEditor.h index aef5ec7..f436945 100644 --- a/src/StorageEditor/StorageEditor.h +++ b/src/StorageEditor/StorageEditor.h @@ -1,18 +1,19 @@ #include "../pch.h" +#include #include "../WarenStorage/WarenStorage.h" class StorageEditor { private: - WarenStorage storage; + std::shared_ptr storage; public: StorageEditor(); - StorageEditor(WarenStorage storage); + StorageEditor(std::shared_ptr storage); - WarenStorage getWarenStorage() const; + std::shared_ptr getWarenStorage() const; void setWarenStorage(const WarenStorage storage); @@ -20,7 +21,7 @@ class StorageEditor { void addWaren(const Ware ware, int amount); - void removeWare(std::string name); + void removeWare(const std::string& name); - void removeWaren(std::string name, int amount); + void removeWaren(const std::string& name, int amount); }; diff --git a/src/WarenStorage/WarenStorage.cpp b/src/WarenStorage/WarenStorage.cpp index 8751eeb..8db333c 100644 --- a/src/WarenStorage/WarenStorage.cpp +++ b/src/WarenStorage/WarenStorage.cpp @@ -63,7 +63,7 @@ void WarenStorage::addWareAndGenerateId(Ware ware) { } } -void WarenStorage::removeWare(const std::string name) { +void WarenStorage::removeWare(const std::string& name) { std::vector allWaren = getAllWaren(); for(size_t i = 0; i < allWaren.size(); i++) { if(allWaren[i].getName() == name) { diff --git a/src/WarenStorage/WarenStorage.h b/src/WarenStorage/WarenStorage.h index 15d7463..f1f3ee5 100644 --- a/src/WarenStorage/WarenStorage.h +++ b/src/WarenStorage/WarenStorage.h @@ -39,9 +39,5 @@ class WarenStorage { void addWareAndGenerateId(Ware ware); - void removeWare(const std::string name); - - //const frage: - // - //wie kann ich die get...Waren() getter wieder als const definieren, ohne dass ich damit StorageEditor die möglichkeit nehme sie zu Editieren. + void removeWare(const std::string& name); }; diff --git a/src/main.cpp b/src/main.cpp index cfa2a65..db8b4d1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,7 +6,7 @@ int main () { std::cout << "Kaufland:" << std::endl; - StorageEditor editor; + std::shared_ptr editor; InputManager inputManager(editor); inputManager.displayMainMenu();