Skip to content

Latest commit

 

History

History

week5

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Упражнение №5 - Приятелски класове и функции. STL.

friend, friend class, std::string, std::vector<T>

Задача 1

Предефинирайте операторите << и >> за std::ostream и std::istream респективно, така че да работят и за класа String, който написахме предния път и така че да имитират дефиницията на std::string.

Задача 2 (позволено е използването на STL)

Напишете клас WebStore, който да моделира склад на онлайн магазин. Класът управялва и пази информация за колекцията от продукти, както и за оборота.

За продуктите използвайте клас Product (ако не сте го написали, напишете си го, за да си упражните голямата четворка, иначе за тази задача може да ползвате и моите файлове: .hpp и .cpp. Също така пък ако искате можете и да го пренапишете чрез std::string вместо char*. В този случай ще пишете ли голяма 4-ка?).

За да бъде използван от сайта на уеб магазинът, класът WebStore трябва да има следните публични методи:

  • bool addProduct(const Product&): добавя продукта към инвентара само ако вече не съществува друг такъв със същото име. Връща дали е бил добавен продукта.
  • bool removeProduct(const std::string& name): премахва продуктът, който има име name, ако съществува. Връща дали е бил премахнат даден продукт.
  • double getPriceOf(const std::string& name) const: връща цената на продукта с име name. 0, ако няма такъв.
  • unsigned int getAmount(const std::string& name) const: връща наличността на продукта с име name. 0, ако няма такъв.
  • bool addOneOf(const std::string& name): увеличава наличността на продукт с име name с единица, ако съществува такъв. Връща дали е добавило наличност (т.е. дали такъв продукт съществува).
  • bool sellOneOf(const std::string& name): понижава наличността продукт с име name с единица и добавя неговата цена към оборота на магазина, но само ако продуктът е наличен (т.е. amount > 0) и съществува в инвентара. Връща дали успешно е бил продаден продукт.
  • double getProfit() const: връща натрупания оборот на магазина.