Sari la conținut
Zece la Info
Probleme

Sistemul MagazinOnline (Produs + Cos + Client + Magazin)

Facultate 2000 ms 64 MB#oop#clasa#sistem#compunere

Scrieti PATRU clase care modeleaza un magazin online, cu compunere pe mai multe niveluri:

  1. Produs - nume (fara spatii), pret intregintreg, stoc intregintreg:
  • constructor(nume, pret, stoc); getNume(); getPret(); getStoc(); scadeStoc(int cant) - daca stoc>=cant, scade si returneaza adevarat, altfel returneaza fals
  1. Cos - un cos de cumparaturi, memoreaza intern perechi (idProdus, cantitate):
  • constructor fara parametri
  • adaugaLinie(idProdus, cantitate) - adauga o linie noua in cos
  • linii() - returneaza colectia interna de perechi (idProdus, cantitate) - folosita doar de Magazin, nu de programul de test direct
  • goleste() - elimina toate liniile
  1. Client - nume, si un Cos PROPRIU (compunere 1-la-1, nu colectie):
  • constructor(nume); getNume(); getCos() - returneaza obiectul Cos memorat intern
  1. Magazin - orchestreaza produsele si clientii; TOATE comenzile programului de test trec doar prin Magazin (nu direct prin Cos/Produs):
  • constructor fara parametri
  • adaugaProdus(nume, pret, stoc) - returneaza id-ul produsului
  • adaugaClient(nume) - returneaza id-ul clientului
  • adaugaInCos(idClient, idProdus, cantitate) - daca id-urile sunt valide SI stocul curent al produsului este >= cantitate, adauga linia in cosul clientului si returneaza adevarat (NU scade stocul acum - doar verifica ca ar fi posibil); altfel returneaza fals
  • totalCos(idClient) - returneaza suma (pret*cantitate) pentru toate liniile din cosul clientului
  • finalizeazaComanda(idClient) - RE-VERIFICA, la momentul finalizarii, ca fiecare produs din cos are inca stoc suficient (poate sa nu mai aiba, daca alt client a golit stocul intre timp); daca TOATE produsele au stoc suficient: scade efectiv stocul pentru fiecare, goleste cosul si returneaza adevarat; daca macar UN produs nu mai are stoc suficient: NU modifica nimic (nici stocurile, nici cosul) si returneaza fals
  • stocProdus(idProdus) - returneaza stocul curent al produsului
Date de intrare
Codul vostru este integrat intr-un program de test care citeste comenzi si apeleaza metodele voastre.
Date de iesire
Fiecare comanda produce o linie de output.
Restrictii
Cel mult 20 produse, 20 clienti, 20 linii per cos.

Exemple

Exemplul 1

Intrare

5
ADDPRODUS Laptop 1000 5
ADDCLIENT Popescu
ADDCOS 0 0 2
TOTALCOS 0
STOC 0

Iesire

0
0
1
2000
5

Vrei să rezolvi problema?

Creează-ți un cont gratuit ca să scrii cod în editor, să trimiți soluții la evaluator și să vezi indicațiile.