Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Hey please use Operator Overloading in these cpp files and vectors and print the vector.If possible( optional) try file handling where the price of products

Hey please use Operator Overloading in these cpp files and vectors and print the vector.If possible( optional) try file handling where the price of products would already be set there.

just add operator overloading and vector in those cpp files which are given below:

BasicDetails.h

#pragma once

#include

#include

#include

using namespace std;

class BasicDetails{

private:

int _serialNumber;

char _rowOfPlaceProduct;

int _ShelfOfProduct;

double _quantityOfProduct;

int _areaOfProductInTheStore;

protected:

int _typeOfProduct;

public:

BasicDetails();

void setSerialNumber();

int getSerialNumber()const { return this->_serialNumber; }

void setRowOfPlaceProduct();

char getRowOfPlaceProduct()const{ return this->_rowOfPlaceProduct; }

void setShelfOfProduct();

int getShelfOfProduct()const { return this->_ShelfOfProduct; }

void setQuantity();

double getQuantity() const{ return this->_quantityOfProduct; }

int getTypeOfProduct()const { return this->_typeOfProduct; }

void setTypeOfProduct();

void setAreaOfProductInTheStore();

int getAreaOfProductInTheStore() const { return this->_areaOfProductInTheStore; }

void changeQuantity();

//virtual methods

virtual double setPriceOfProduct(double num = 3.0) const; /

virtual void printProduct()const;

virtual ~BasicDetails();

};

BasicDetails.cpp

#include "BasicDetails.h"

BasicDetails::BasicDetails(){ //defualt c'tor set: serial,row,shelf,quantityand area

cout << "BasicDetails C'tor is work" << endl;

this->setSerialNumber();

this->setRowOfPlaceProduct();

this->setShelfOfProduct();

this->setQuantity();

this->setAreaOfProductInTheStore();

};

void BasicDetails::setRowOfPlaceProduct(){ //set row method

char row;

int flag = 0;

cout << "please select a row of the product from a to z (automatic a to A)" << endl;

do{

flag = 0;

cin >> row;

if (row >= 'a' && row <= 'z'){

row -= 32;

this->_rowOfPlaceProduct = row;

}

else if (row >= 'A' && row <= 'Z'){

this->_rowOfPlaceProduct = row;

}

else{

flag = 1;

cout << ("the row must be a letter from A to Z please select again") << endl;

}

} while (flag != 0);

}

void BasicDetails::setSerialNumber(){ //set serial number method

int flag = 0;

int serial;

cout << "Please select the serial number of the product" << endl;

do{

flag = 0;

cin >> serial;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the serial must be a positive number" << endl;

}

else if (serial <= 0){

flag = 1;

cout << "the serial must be a positive number" << endl;

}

else

this->_serialNumber = serial;

} while (flag != 0);

}

void BasicDetails::setShelfOfProduct(){ //set sheld method

int num;

int flag = 0;

cout << "please select the shelf of the product (1 to 5)"<

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the shel must be a integer number between 1 to 5 - please choose again" << endl;

}

else if (num < 1 || num > 5){

flag = 1;

cout << "the shel must be a integer number between 1 to 5 - please choose again" << endl;

}

else

this->_ShelfOfProduct = num;

} while (flag != 0);

}

void BasicDetails::printProduct()const{ //print (virtual method)

cout << this->getSerialNumber() << " " << this->getRowOfPlaceProduct() << " " << this->getShelfOfProduct() << "(" << this->getQuantity() << "," << this->getTypeOfProduct() << "," << this->getAreaOfProductInTheStore() << ") ";

}

void BasicDetails::setQuantity(){ //set quantity method

int flag = 0;

double num;

cout << "please select the Quantity of the product" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the quantity must be a positive number please select again" << endl;

}

else if (num <= NULL){

flag = 1;

cout << "the quantity must be a positive number please select again" << endl;

}

else

this->_quantityOfProduct = num;

} while (flag != 0);

}

void BasicDetails::changeQuantity(){ //option the change quantity method

double num;

int flag = 0;

cout << "please select the quantity the you want to change" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the quantity must be positive number" << endl;

}

else if (num <= NULL){

flag = 1;

cout << "the quantity must be positive number" << endl;

}

else

this->_quantityOfProduct = num;

} while (flag != 0);

}

void BasicDetails::setTypeOfProduct(){ //set typeOfProduct: Agricultural or milk or Package method

int num;

int flag = 0;

cout << "please select the type of the product 1)Agricultural Product 2)Milk Product 3)Package Product" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the type must be a positive integer number between 1-3 please select again" << endl;

}

else if (num == 1 || num == 2 || num == 3)

this->_typeOfProduct = num;

else{

flag = 1;

cout << "the type of the product must be 1 or 2 or 3 - please try again" << endl;

}

} while (flag != 0);

}

void BasicDetails::setAreaOfProductInTheStore(){ //set area method

int num;

int flag = 0;

cout << "please select the Area of the product in the store: 1)High 2)Middle 3)Hide ";

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

}

else if (num == 1 || num == 2 || num == 3)

this->_areaOfProductInTheStore = num;

else{

flag = 1;

cout << "the type of the product must be 1 or 2 or 3 - please select again" << endl;

}

} while (flag != 0);

}

double BasicDetails::setPriceOfProduct(double num) const{ //calculate price (virtual method)

double factor = num;

int flag = 0;

if (this->getAreaOfProductInTheStore() == 3){

return (this->getQuantity() * 3 * factor);

}

else if (this->getAreaOfProductInTheStore() == 2){

return (this->getQuantity()*factor*1.5);

}

else if (this->getAreaOfProductInTheStore() == 1)

return (this->getQuantity()*factor);

return (factor*this->getQuantity()); //defualt

}

BasicDetails::~BasicDetails(){ //D'ctor (virtual)

cout << "**the destractor of basic details is work**" << endl;

}

TheShop.h

#include

#pragma once

#include "Windows.h"

#include "Vegetable.h"

#include "Fruit.h"

#include "Cheese.h"

#include "Yogurt.h"

#include "Beverage.h"

#include "OtherMilkProduct.h"

#include "ProductPackage.h"

#include "BasicDetails.h"

using namespace std;

class TheShop{

private:

string _nameOfShop;

double _factorOfShop;

int _numOfProductsInTheShop;

BasicDetails** _arrOfProducts;

public:

TheShop()

void setNameOfShop();

string getNameOfShop()const { return this->_nameOfShop; }

double getFactorOfShop() const { return this->_factorOfShop; }

int getNumOfProductsInTheShop()const { return this->_numOfProductsInTheShop; }

void manu();

void printAllPrices() const;

void printDetailsOfShop() const;

void changeFactorOfShop();

void addProductToarr();

bool checkSerialNumber(int serial) const;

void calPriceOfAllProduct() const;

};

TheShop.cpp

#include "TheShop.h"

TheShop::TheShop(){ //C'tor set: default name and factor

this->_arrOfProducts = NULL;

this->_numOfProductsInTheShop = NULL;

this->_nameOfShop = "SuperShop";

this->_factorOfShop = 3;

}

void TheShop::calPriceOfAllProduct() const{ //calculat the price of all the products in the store method

double sum=0;

for (int i = 0; i getNumOfProductsInTheShop(); i++){

sum += _arrOfProducts[i]->setPriceOfProduct(this->getFactorOfShop());

}

cout << "************************" << endl;

if (sum < NULL){

cout << "Total Price : the factor of shop must be suitable for this product" << endl;

cout << "************************" << endl;

}

else{

cout << "Total Price : " << sum << endl;

cout << "************************" << endl;

}

}

void TheShop::printDetailsOfShop() const{ //print all the shop method

cout << "the Name Of the Shop is: " << this->getNameOfShop() << endl;

cout << "The numbers of the products in the shop is: " << this->getNumOfProductsInTheShop() << endl;

cout << "the factor of the shop is : " << this->getFactorOfShop() << endl;

cout << "the products that in store are:" << endl;

if (this->getNumOfProductsInTheShop() == NULL)

cout << "the shop is empty" << endl;

else{

for (int i = 0; i < this->getNumOfProductsInTheShop(); i++)

this->_arrOfProducts[i]->printProduct();

}

cout << " ";

}

void TheShop::changeFactorOfShop(){ //change the factor of the shop method

double factor;

int flag = 0;

cout << "please select the new factor of the shop" << endl;

do{

flag = 0;

cin >> factor;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the factor must be a positive number" << endl;

}

else if (factor <= NULL){

flag = 1;

cout << "the factor must be a positive number" << endl;

}

else

this->_factorOfShop = factor;

} while (flag != 0);

}

void TheShop::printAllPrices() const{ //print all the prices in the shop method

int flag = 0;

if (this->getNumOfProductsInTheShop() == NULL){

cout << "************************" << endl;

cout << "No products in the store" << endl;

cout << "************************" << endl;

}

else{

flag = 1;

cout << "************************" << endl;

for (int i = 0; i < this->getNumOfProductsInTheShop(); i++){

double num = this->_arrOfProducts[i]->setPriceOfProduct(this->getFactorOfShop());

if (num < NULL)

cout << "the price of product number " << i + 1 << " is: " << "the factor of shop must be suitable for this product " << endl;

else

cout << "the price of product number " << i + 1 << " is: " << this->_arrOfProducts[i]->setPriceOfProduct(this->getFactorOfShop()) << endl;

}

}

if (flag == 1)

cout << "************************" << endl;

}

void TheShop::addProductToarr(){ //add one product to the store

int flag = 0;

int choice;

BasicDetails** temp = new BasicDetails*[this->getNumOfProductsInTheShop() + 1];

for (int i = 0; i < this->getNumOfProductsInTheShop(); i++)

temp[i] = this->_arrOfProducts[i];

delete[] this->_arrOfProducts;

cout << "Product Type : " << endl;

cout << "0) Vegetable" << endl;

cout << "1) Fruit" << endl;

cout << "2) Cheese" << endl;

cout << "3) Yogurt" << endl;

cout << "4) Beverage" << endl;

cout << "5) Other Milk Product" << endl;

cout << "6) Product Package" << endl;

cout << "your choice :";

do{

flag = 0;

cin >> choice;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the num should be a integer positive number - please choose again" << endl;

}

else if (choice < 0 || choice > 6){

flag = 1;

cout << "the number should be between 1 to 6" << endl;

}

} while (flag != 0);

switch (choice)

{

case 0:

temp[this->getNumOfProductsInTheShop()] = new Vegetable;

break;

case 1:

temp[this->getNumOfProductsInTheShop()] = new Fruit;

break;

case 2:

temp[this->getNumOfProductsInTheShop()] = new Cheese;

break;

case 3:

temp[this->getNumOfProductsInTheShop()] = new Yogurt;

break;

case 4:

temp[this->getNumOfProductsInTheShop()] = new Beverage;

break;

case 5:

temp[this->getNumOfProductsInTheShop()] = new OtherMilkProduct;

break;

case 6:

temp[this->getNumOfProductsInTheShop()] = new ProductPackage;

break;

default:

cout << "Please try again" << endl;

return;

}

this->_numOfProductsInTheShop++;

this->_arrOfProducts = temp;

if (this->checkSerialNumber(this->_arrOfProducts[this->getNumOfProductsInTheShop() - 1]->getSerialNumber())){

cout << "*********************************" << endl;

cout << "This product is already exist! - the product has been deleted by system" << endl;

cout << "*********************************" << endl;

_arrOfProducts[this->getNumOfProductsInTheShop() - 1]->~BasicDetails();

delete[] _arrOfProducts[this->getNumOfProductsInTheShop() - 1];

this->_numOfProductsInTheShop--;

}

}

bool TheShop::checkSerialNumber(int serial) const{ //check serial number method

for (int i = 0; i < this->getNumOfProductsInTheShop() - 1; i++)

if (this->_arrOfProducts[i]->getSerialNumber() == serial)

return true;

return false;

}

void TheShop::setNameOfShop(){ //set name of shop method

string name;

cout << "please select the new name of the shop" << endl;

cin.ignore();

getline(cin, name);

this->_nameOfShop = name;

}

void TheShop::manu(){ //the manu of the program

int flag = 0;

int choice;

while (1)

{

cout << "..::::::::MENU::::::::.." << endl;

cout << "Welcome To " << this->getNameOfShop() << " SupeMarket" << endl;

cout << "1) change the name of the store" << endl;

cout << "2) Add a new Product" << endl;

cout << "3) Calc total prices" << endl;

cout << "4) change factor of shop" << endl;

cout << "5) Print all prices" << endl;

cout << "6) Print all store" << endl;

cout << "7) EXIT" << endl;

cout << "Your choice : ";

do{

flag = 0;

cin >> choice;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the num should be a integer positive number - please choose again" << endl;

}

else if (choice < 0 || choice > 7){

flag = 1;

cout << "the number should be between 1 to 6" << endl;

}

} while (flag != 0);

switch (choice)

{

case 1:

this->setNameOfShop();

break;

case 2:

this->addProductToarr();

break;

case 3:

this->calPriceOfAllProduct();

break;

case 4:

this->changeFactorOfShop();

break;

case 5:

this->printAllPrices();

break;

case 6:

this->printDetailsOfShop();

break;

case 7:

cout << "BYE BYE" << endl;

return;

default:

cout << "Please try again" << endl;

break;

}

}

}

//TheShop::~TheShop(){ //D'ctor

// if (this->_arrOfProducts != NULL){

// for (int i = 0; i < this->getNumOfProductsInTheShop(); i++){

// delete[] this->_arrOfProducts[i];

// }

// delete this->_arrOfProducts;

// }

//}

AgriculturalProduct.h

#pragma once

#include "BasicDetails.h"

class AgriculturalProduct : public BasicDetails{ //AgriculturalProduct "Haklai" class include: Name,Num of Seasons and name of suppliers (defualt type = 1)

private:

string _nameOfAgriculturalProduct;

int _numOfYearSeasons;

int _numOfSuppliers;

protected:

int _typeOfAgriculturalProduct; //two types : Fruit and Vegtable

public:

AgriculturalProduct(); //defualt C'tor

void setTypeOfAgriculturalProduct(int num); //set and get methods

int getTypeOfAgriculturalProduct() const { return this->_typeOfAgriculturalProduct; }

void setNameOfAgriculturalProduct();

string getNameOfAgriculturalProduct() const { return this->_nameOfAgriculturalProduct; }

void setNumOfSuppliers();

int getNumOfSuppliers() const { return this->_numOfSuppliers; }

virtual double setPriceOfProduct(double num = 3.0) const; //default is 3 (price depends on a factor default factor is 3)

void setNumOfYearSeasons();

int getNumOfYearSeasons() const {return this->_numOfYearSeasons; }

virtual void printProduct()const; // virutal print method

virtual ~AgriculturalProduct(); //virtual D'ctor

};

AgriculturalProduct.cpp

#include "AgriculturalProduct.h"

AgriculturalProduct::AgriculturalProduct(){ //defualt C'tor Set type,name,numOfYearSeasons and numOfSuppliers

cout << "AgriculturalProduct c'tor is work" << endl;

this->_typeOfProduct = 1;

this->setNameOfAgriculturalProduct();

this->setNumOfYearSeasons();

this->setNumOfSuppliers();

}

void AgriculturalProduct::setNameOfAgriculturalProduct(){ //set name method

string name;

cout << "please select the name of the product" << endl;

cin >> name;

this->_nameOfAgriculturalProduct = name;

}

void AgriculturalProduct::setNumOfYearSeasons(){ //set num of year seasons

int num;

int flag = 0;

cout << "please select the number of seasons of the product" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "please select a integer number between 1-4" << endl;

}

else if (num < 1 || num > 4){

flag = 1;

cout << "please select a integer number between 1-4" << endl;

}

else

this->_numOfYearSeasons = num;

} while (flag != 0);

}

void AgriculturalProduct::setNumOfSuppliers(){ //set num of suppliers

int num;

int flag = 0;

cout << "please select the num of suppliers" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the number of suppliers must be a positive integer number - please choose again" << endl;

}

else if (num <= NULL){

flag = 1;

cout << "the number of suppliers must be a positive integer number - please choose again" << endl;

}

else

this->_numOfSuppliers = num;

} while (flag != 0);

}

double AgriculturalProduct::setPriceOfProduct(double num) const{ //calculate the price of the product

return (BasicDetails::setPriceOfProduct(num) * 3 * (5 - this->getNumOfYearSeasons()) + (5 * this->getNumOfSuppliers()) + this->getTypeOfProduct());

}

void AgriculturalProduct::printProduct()const{

BasicDetails::printProduct();

cout << this->getNameOfAgriculturalProduct() << "(" << this->getTypeOfAgriculturalProduct() << "," << this->getNumOfYearSeasons() << "," << this->getNumOfSuppliers() << ")" << endl;

}

AgriculturalProduct::~AgriculturalProduct(){ //virtual c'tor

cout << "**the destractor of AgriculturalProduct is work**" << endl;

}

ProductPackage.h

#pragma once

#include "BasicDetails.h"

class ProductPackage : public BasicDetails{ //productPackege Class include: everything that in BasicDetails class, numOfProducts,Names,numofcolors (defualt type = 3)

private:

int _numOfProducts;

string * _namesOfProducts;

double _numOfColors;

public:

ProductPackage(); //defualt C'tor

//get and set methods

void setNumOfProducts();

double getNumOfProducts()const { return this->_numOfProducts; }

void setNamesOfProducts();

void printNamesOfProducts() const;

void setNumOfColors();

double getNumOfColors() const { return this->_numOfColors; }

//virtual methods

virtual double setPriceOfProduct(double num = 3.0) const; //calculate price with a defualt factor (can be changed by user)

virtual void printProduct()const; //print

virtual ~ProductPackage(); //virtual D'ctor

};

ProductPackage.cpp

#pragma once

#include "BasicDetails.h"

class ProductPackage : public BasicDetails{ //productPackege Class include: everything that in BasicDetails class, numOfProducts,Names,numofcolors (defualt type = 3)

private:

int _numOfProducts;

string * _namesOfProducts;

double _numOfColors;

public:

ProductPackage(); //defualt C'tor

//get and set methods

void setNumOfProducts();

double getNumOfProducts()const { return this->_numOfProducts; }

void setNamesOfProducts();

void printNamesOfProducts() const;

void setNumOfColors();

double getNumOfColors() const { return this->_numOfColors; }

//virtual methods

virtual double setPriceOfProduct(double num = 3.0) const; //calculate price with a defualt factor (can be changed by user)

virtual void printProduct()const; //print

virtual ~ProductPackage(); //virtual D'ctor

};

MilkProduct.h

#pragma once

#include "BasicDetails.h"

class MilkProduct : public BasicDetails{ //milkProduct Class include: name,numofColors,NumOfFat (defualt type = 2)

private:

string _nameOfMilkProduct;

double _numOfColorsInOneMilkProduct;

double _numOfFat;

protected:

int _typeOfMilkProduct;

public:

MilkProduct(); //defualt C'tor

int getTypeOfMilkProduct()const { return this->_typeOfMilkProduct; } //set and get methods

void setNameOfMilkProduct();

string getNameOfMilkProduct()const { return this->_nameOfMilkProduct; }

void setNumOfColorsInOneMilkProduct();

double getNumOfColorsInOneMilkProduct() const { return this->_numOfColorsInOneMilkProduct; }

void setNumOfFat();

double getNumOfFat() const { return this->_numOfFat; }

//virtual methods

virtual void printProduct()const; //print

virtual double setPriceOfProduct(double num = 3.0) const; //calculate price with a defualt factor (can be changed by user)

virtual ~MilkProduct(); //virtual D'ctor

};

MilkProduct.cpp

#include "MilkProduct.h"

MilkProduct::MilkProduct(){ //C'tor set: type,name,color and numOfFat

cout << "MILK PRODUCT CONSTRACOT IS ON" << endl;

this->_typeOfProduct = 3;

this->setNameOfMilkProduct();

this->setNumOfColorsInOneMilkProduct();

this->setNumOfFat();

}

void MilkProduct::setNameOfMilkProduct(){ //set name method

string name;

cout << "please select the name of the milk product" << endl;

cin >> name;

this->_nameOfMilkProduct = name;

}

void MilkProduct::setNumOfColorsInOneMilkProduct(){ //set num method

int num;

int flag = 0;

cout << "please select the number of color in the milk product" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the color in the product should be a integer positive number - please choose again" << endl;

}

else if (num < NULL){

flag = 1;

cout << "the color in the product should be a integer positive number - please choose again" << endl;

}

else

this->_numOfColorsInOneMilkProduct = num;

} while (flag != 0);

}

void MilkProduct::setNumOfFat(){ //set num of fat method

double num;

int flag = 0;

cout << "please select the number of fat" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the num of fat shuold be a positive number - please choose again" << endl;

}

else if (num < NULL){

flag = 1;

cout << "the num of fat shuold be a positive number - please choose again" << endl;

}

else

this->_numOfFat = num;

} while (flag != 0);

}

double MilkProduct::setPriceOfProduct(double num) const{ //calculate price (virtual method)

return (((BasicDetails::setPriceOfProduct(num) + this->getNumOfColorsInOneMilkProduct()) - this->getNumOfFat()) * this->getTypeOfProduct());

}

void MilkProduct::printProduct()const{ //print (virtual method)

BasicDetails::printProduct();

cout << this->getNameOfMilkProduct() << " (" << this->getTypeOfMilkProduct() << "," << this->getNumOfColorsInOneMilkProduct() << "," << this->getNumOfFat() << ") ";

}

MilkProduct::~MilkProduct(){ //D'ctor (virtual)

cout << "**the destractor of milk product is work**" << endl;

}

Bevarage.h

#pragma once

#include "MilkProduct.h"

class Beverage : public MilkProduct //Beverage "Mashke" class include: Everything that in MilkProduct class

{

public:

Beverage(); //defualt C'tor

//virtual methods

virtual double setPriceOfProduct(double num = 3.0) const { return (MilkProduct::setPriceOfProduct()); } //calculate price with a defualt factor (can be changed by user) depends on MilkProduct price

virtual void printProduct() const { MilkProduct::printProduct(); cout << endl; } //virtual print method

virtual ~Beverage(); //virtual D'ctor

};

Bevarage.cpp

#include "Beverage.h"

Beverage::Beverage(){ //C'tor - set only the type

this->_typeOfMilkProduct = 1;

}

Beverage::~Beverage()

{

}

Cheese.h

#pragma once

#include "MilkProduct.h"

class Cheese :public MilkProduct { //cheese Class "Gvina" include: Everything that in MilkProduct class,num of extra cheese

private:

int _numOfExtraCheese;

public:

Cheese(); //defualt C'tor

void setNumOfExtraCheese(); //set and get methods

int getNumOfExtraCheese()const { return this->_numOfExtraCheese; }

//virtual mehods

virtual void printProduct()const; //print

virtual double setPriceOfProduct(double num = 3.0) const; //calculate price with a defualt factor (can be changed by user)

virtual ~Cheese(); //virtual D'ctor

};

Cheese.cpp

#include "Cheese.h"

Cheese::Cheese(){ //

this->_typeOfMilkProduct = 3;

this->setNumOfExtraCheese();

}

void Cheese::setNumOfExtraCheese(){ //set numOfExtraCheese method

int num;

int flag = 0;

cout << "please select number of extra" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the num of extra cheese should be a integer positive number - please choose again" << endl;

}

else if (num < NULL)

{

flag = 1;

cout << "the num of extra cheese should be a integer positive number - please choose again" << endl;

}

else

this->_numOfExtraCheese = num;

} while (flag != 0);

}

double Cheese::setPriceOfProduct(double num) const{ //calculate price (virtual method)

return (MilkProduct::setPriceOfProduct(num) + this->getNumOfExtraCheese());

}

void Cheese::printProduct()const{ //print (virtual method)

MilkProduct::printProduct();

cout << "(" << this->getNumOfExtraCheese() << ")" << endl;

}

Cheese::~Cheese(){ // D'ctor (virtual)

cout << "**the destractor of cheese is work**" << endl;

}

Fruit.h

#pragma once

#include "AgriculturalProduct.h"

class Fruit: public AgriculturalProduct{ //fruit class include: everything that in agriculturalProduct class, amount of sugar

private:

double _amountOfSugar;

public:

Fruit(); //defualt C'tor

void setAmountOfSugar(); //get and set methods

double getAmountOfSugar()const { return this->_amountOfSugar; }

//virtual methods

virtual void printProduct()const; //print

virtual double setPriceOfProduct(double num = 3.0) const; //calculate price with a defualt factor (can be changed by user)

virtual ~Fruit(); //virtual D'ctor

};

Fruit.cpp

#include "Fruit.h"

Fruit::Fruit(){ //

cout << "the c'tor of fruit is on" << endl;

this->_typeOfAgriculturalProduct = 2;

this->setAmountOfSugar();

}

void Fruit::setAmountOfSugar(){ //set amount of sugar method

double num;

int flag = 0;

cout << "please select the amount of suger in the fruit - (per 100 gram)" << endl;

do{

flag = 0;

cin >> num;

if (cin.fail()){

flag = 1;

cin.clear();

cin.ignore();

cout << "the num must be a positive number (not include NULL)" << endl;

}

else if (num < NULL){

flag = 1;

cout << "the num must be a positive number (not include NULL)" << endl;

}

else{

double amount = (num / 100);

this->_amountOfSugar = amount;

}

} while (flag != 0);

}

double Fruit::setPriceOfProduct(double num) const{ //calculate price (virtual method)

return (AgriculturalProduct::setPriceOfProduct(num) + (this->getAmountOfSugar() / 2));

}

void Fruit::printProduct()const{ //print (virtual method)

BasicDetails::printProduct();

cout << this->getNameOfAgriculturalProduct() << "(" << this->getTypeOfAgriculturalProduct() << "," << this->getNumOfYearSeasons() << "," << this->getNumOfSuppliers() << ")" << "(" << this->getAmountOfSugar() << ")" << endl;

}

Fruit::~Fruit(){ //C'tor (virtual)

cout << "**the destractor of fruit is work**" << endl;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Modern Dental Assisting

Authors: Doni Bird, Debbie Robinson

13th Edition

978-0323624855, 0323624855

Students also viewed these Programming questions

Question

basic needs of the

Answered: 1 week ago