Creating a Public Item & Cart Class

  • Context: MHB 
  • Thread starter Thread starter needOfHelpCMath
  • Start date Start date
  • Tags Tags
    Cart Class
Click For Summary
SUMMARY

The discussion focuses on creating a public "Item" and "Cart" class in C++. The "Item" class includes members for item name, price, and quantity, along with corresponding getter and setter functions. The "Cart" class manages a vector of items, providing functionalities to insert items, delete items, calculate average price, and compute total cart value. Key improvements suggested include declaring constructors for each class, avoiding unnecessary return statements in void functions, and passing parameters by constant reference to enhance performance.

PREREQUISITES
  • Understanding of C++ class structure and member functions
  • Familiarity with C++ vectors for dynamic array management
  • Knowledge of C++ function overloading and const correctness
  • Basic principles of object-oriented programming
NEXT STEPS
  • Implement constructors for the "Item" and "Cart" classes to initialize objects properly
  • Refactor the "insertToCart" function to improve item quantity updates
  • Learn about C++ exception handling to manage errors in item deletion
  • Explore C++ standard library algorithms for more efficient item management
USEFUL FOR

C++ developers, software engineers, and students learning object-oriented programming who are interested in implementing and optimizing class structures for item and cart management.

needOfHelpCMath
Messages
70
Reaction score
0
Make everything in public to save time or have public and private data members and functions:

1) Create a "Item" class with the following members and functions:
HTML:
 Item_name
   Item_price
   item_qty
   get/set functions

2) Create a "Cart" class with the following members and functions:

vector to hold items
HTML:
insertToCart // also should update item prices by qty amount when inserting
deleteItem //  searches for items and deletes it
averagePrice //  adds all items prices and computes the average price
cartTotal //  adds all items prices and returns total
printtCart

3) show how to create two items and insert it to the cart.

OUTPUT example:
HTML:
Items: Pens
Prices: $3  // pens price $1.50
Qty: 2
etc...
This is my code and so far I am not sure if I am on the right track. May anyone help guide me please. I have also decided to just input all the functions into public to save time.

HTML:
#include<iostream>
#include<string>
#include<vector>

class Item{
	
	public:
		
		string item_name;
		int item_price;
		int item_qty; 
		
		void setNamePriceQty(string a, int b , int c)
		void Print();
		int getPrice();
		int getQty();
		
	void Item::setNamePriceQty(string a, int b, int c) {
		item_name = a;
		item_price = b;
		item_qty =  c;
		
		return;
	}
	
	
	void Item::Print() {
		
		count << item_name;
		count << item_price << item_qty;
		
		return;
	}
};
	class Cart {
		public:
			
		vector<int>list;
		
		int total();
		
		void deleteItem (string a); // also should update item prices by qty amount when inserting
		void insertToCart(item b); // seaches for items and deletes  it
		void averagePrice; // adds all item prices and computers average price
		void printCart(); 
		void cartTotal; // adds all items prices and returns total
		
		
		void Cart::insertToCart(item b) {
		
			for (int i = 0; i <= list.size(); ++i) {
				if (list.at(i).item_name == b.item_name) {
					items.at(i).item_qty += b.itme_qty;
					items.at(i).item_price += b.item_price
					return(); }
					
					items.push_back(b)
					
					return; }
				}
				
		void Cart::deleteItem(string a) {
			for (int i = 0; i < list_size();++i) {
				if (list.at(i).item_name == b.item) {
					temp = list.at(i);
					list.at(i) =  list.at(list.size()-1);
					list.at(list.size() = temp;
					list.pop_back();
				}
			}
				}
			};
	
	
		
		

int main () {
	
	
	return 0;
}
 
Technology news on Phys.org
You know you can test your own code right? One of the great things about it. A few notes:

1. You haven't declared constructors for each class. How will you create objects? What will their initial values be?
2. There's no need to have a return statement in a void function unless you're exiting from a loop perhaps. When you `insertToCart`, the item list will be updated within the class.
3. It's a good habit to pass constant references to variables when possible. e.g.

C++:
    // a,b,c are not modified by the function so they're constants.
    // Passing by reference avoids copying objects around the place.
    void Item::setNamePriceQty(const string& a, const int& b, const int& c) {
        item_name = a;
        item_price = b;
        item_qty =  c;
    }
 

Similar threads

Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 1 ·
Replies
1
Views
824
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 19 ·
Replies
19
Views
1K
  • · Replies 36 ·
2
Replies
36
Views
6K
  • · Replies 35 ·
2
Replies
35
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
5
Views
2K
  • · Replies 4 ·
Replies
4
Views
1K