Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

//DEBUG10-2 //This program demonstrates inheritance //A SaleItem class is derive

ID: 3780165 • Letter: #

Question

//DEBUG10-2
//This program demonstrates inheritance
//A SaleItem class is derived from an Item class
#include<iostream>
#include<string>
using namespace std;
class Item
{
   protected::
      int idNum,
      int quantity,
   public:
       void setData(int, int);
       void showItem();
};
void Item::setData(int id, int amt)
{
     idNum == id;
     quantity == amt;
}
void Item::showItem()
{
   cout << "#" << idNum << "    Quantity " << quantity << endl;
}
class SaleItem : public Item
{
private:
     double itemPrice;
public:
     void setData(int, int, double);
     void showSaleItem();
};
void SaleItem::settData(int id, int amt, double price)
{
   Item.setdata(id,amt);
   itemPrice = price;
}
void SaleItem::showSaleItem()
{
   cout << "SaleItem ID #" << idNum;
   cout << " Price $" << itemPrice << endl;
   showItem();
}
int main()
{
   Item thing;
   thing.setData(870, 100);
   cout << endl << "Item..." << endl;
   thing.showItem();
   SaleItem saleThing;
   saleThing.setData(888, 200, 3.88);
   cout << endl << endl << "SaleItem..." < endl;
   saleThing.showSaleItem();
   return 0;
}

Explanation / Answer

There is a danger when:
1. the method is overridden
2. the method calls other methods that are overridden

#include<iostream>
#include<string>
using namespace std;
class Item
{
protected:
   int idNum;
   int quantity;
public:
   void setData(int, int);
   void showItem();

};
void Item::setData(int id, int amt)
{
   idNum = id;
   quantity = amt;
}
void Item::showItem()
{
   cout << "Id " << idNum << " Quantity " << quantity << endl;
}
class SaleItem : public Item
{
private:
   double itemPrice;
   int idNum;
   int quantity;
public:
   virtual void setData(int, int, double);
   void showSaleItem();
};
void SaleItem::setData(int id, int amt, double price)
{
   /*int id,amt;*/
   //Item.setdata(id,amt);
   itemPrice = price;
   idNum = id;
   quantity = amt;
}
void SaleItem::showSaleItem()
{
   cout << "SaleItem ID #" << idNum;
   cout << " Price $" << itemPrice << endl;
   /*showItem();*/
   cout << "Id " << idNum << " Quantity " << quantity << endl;
}
int main()
{
   Item thing;
   thing.setData(870, 100);
   cout << endl << "Item..." << endl;
   thing.showItem();
   SaleItem saleThing;
   saleThing.setData(888, 200, 3.88);
   cout << " SaleItem..." << endl;
   saleThing.showSaleItem();
   return 0;
}