Skip to content
Snippets Groups Projects
Commit 55ad66f8 authored by Kai Renz's avatar Kai Renz
Browse files

Feature: Solution

One possible solution to the
refactoring challenge.
Renamed and removed variables.
Extracted functions.
Try to have one purpose for each function.
parent 2f01f791
Branches solution
No related tags found
No related merge requests found
cmake_minimum_required(VERSION 3.16)
project(OOAD_Refactoring_Demo)
project(02-ifm1-refactoring)
set(CMAKE_CXX_STANDARD 14)
add_executable(OOAD_Refactoring_Demo main.cpp)
add_executable(02-ifm1-refactoring main.cpp)
......@@ -7,29 +7,56 @@ using namespace std;
#include "DummyCode.cpp"
/* End of code to be ignored */
void pruefeRezepte(VorhandeneZutaten VZ){
int i, j, k;
bool da;
for (i=0; i<getAnzahlRezepte(); i++){
Rezept* r = getRezept(i);
cout << i << ". " << r->getRezeptName() << ": ";
da=true;
for (j = 0; j < r->getAnzahlRezeptZutaten(); j++) {
string z = r->getZutat(j);
bool OK= false;
for (k=0; k<VZ.getAnzahlZutaten();k++){
if (z==VZ.getVorhandeneZutat(k)){
OK= true;
break;
}
}
if (OK== false) {
da = false;
break;
}
bool istZutatVorhanden(VorhandeneZutaten &vorhandeneZutaten, const string &zutat);
bool sindAlleZutatenVorhanden(VorhandeneZutaten &vorhandeneZutaten, Rezept *rezept);
void ausgabeRezept(int rezeptNummer, std::string name);
void ausgabeResultat(std::string result);
void pruefeRezept(VorhandeneZutaten &vorhandeneZutaten, int i);
// This is the original function that has been refactored:
void pruefeRezepte(VorhandeneZutaten vorhandeneZutaten){
for (int i=0; i<getAnzahlRezepte(); i++){
pruefeRezept(vorhandeneZutaten, i);
}
}
void pruefeRezept(VorhandeneZutaten &vorhandeneZutaten, int i) {
Rezept* rezept = getRezept(i);
ausgabeRezept(i,rezept->getRezeptName());
if (sindAlleZutatenVorhanden(vorhandeneZutaten, rezept)) {
ausgabeResultat(" mischbar!");
}
else {
ausgabeResultat(" nicht mischbar!");
}
}
void ausgabeRezept(int rezeptNummer, std::string name) {
cout << rezeptNummer << ". " << name << ": ";
}
void ausgabeResultat(std::string result) {
cout << result << endl;
}
bool sindAlleZutatenVorhanden(VorhandeneZutaten &vorhandeneZutaten, Rezept *rezept) {
for (int j = 0; j < rezept->getAnzahlRezeptZutaten(); j++) {
string zutat = rezept->getZutat(j);
if (!istZutatVorhanden(vorhandeneZutaten, zutat)) {
return false;
}
}
return true;
}
bool istZutatVorhanden(VorhandeneZutaten &vorhandeneZutaten, const string &zutat) {
for (int k=0; k < vorhandeneZutaten.getAnzahlZutaten(); k++){
if (zutat == vorhandeneZutaten.getVorhandeneZutat(k)){
return true;
}
if (da == true) {
cout << " mischbar\n"; }
else { cout << " nicht mischbar!\n"; }
}
}
\ No newline at end of file
return false;
}
......@@ -5,5 +5,8 @@
int main() {
std::cout << "This is the Refactoring Demo!" << std::endl;
VorhandeneZutaten vorhandeneZutaten;
pruefeRezepte(vorhandeneZutaten);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment