Sunteți pe pagina 1din 3

Academia Microsoft

1
itacad.ro

Practice

Despre acest exercițiu


Este compus dintr-o serie de task-uri, organizate în două secțiuni:
1. Definirea claselor și tipurilor necesare
2. Folosirea acestor clase pentru crearea unei aplicații ce respectă cerințele din acest document.
Rezolvarea cerințelor se poate face în orice ordine. Includeți comentarii în codul Dvs. pentru a marca taskul
rezolvat de o anumită porțiune de cod.

Descrierea aplicației
Se dorește scrierea unei aplicații pentru consolă ce implementează un sistem de management al
operațiilor executate de un magazin de mașini. Va trebui să se implementeze atât infrastructura pentru
comunicația cu producătorii de mașini, pentru a le cere acestora fabricarea unor anumite modele, cât
și primirea cererilor de la clienți și vânzarea de mașini.

 Secțiunea 1- Definirea claselor și a tipurilor necesare – 70 p


Pentru acestă aplicație, vor trebui impelementate o serie de clase și membrii acestora. În
continuare, sunt precizați membrii fiecăror clase, precum și semnăturile membrilor de tip metodă.

Enum Color
 Definiți un enum cu numele Color ce va fi folosit pentru specificarea colorii pe care o poate avea o
mașină. Valorile pe care le poate lua o variabilă de tipul Color sunt: Red, Blue, White, Black,
Magenta.

Clasa Car
 Membrii de tip variabilă ai acestei clase:
o Un string nestatic name ce va reține numele mașinii.
o Un string nestatic producer ce va reține numele producătorului mașinii
o O variabilă de tip long nestatică price pentru reținerea prețului mașinii
o O variabilă de tipul Color, carColor, enum-ul definit anterior
 Membrii de tip metodă ai acestei clase:
o public void InitCar(string name, string producer, long price) primește ca parametrii numele
mașinii, numele producătorului și prețul, setând membrii clasei la valorile primite.
o public void SetColor(Color carColor) – seteaza membrul carColor la valoarea primită ca
parametru
o public string GetName() – metodă ce întoarce numele mașinii
o public long GetPrice() – metodă ce întoarce prețul mașinii
Academia Microsoft
2
itacad.ro

Clasa CarFactory
 Membrii de tip variabilă ai acestei clase:
o Un întreg static producedUnits pentru obținerea numărului total de mașini produse
o O variabilă de tip long nestatică income ce va reține valoarea totală a mașinilor produse de
un producător.
o Un vector nestatic de 20 de elemente de tipul Car, availableCars, modelele de mașini pe
care producătorul le oferă.
o Un întreg carTypeCount, ce reține numărul de mașini disponibile pentru producător.
o Un string nestatic name ce va reține numele producătorului.
 Membrii de tip metodă ai acestei clase:
o public void InitCarFactory(string name) primește ca parametrii numele producătorului și il
setează, inițializează la 0 income și instanțiază availableCars
o public void DesignCar(string carName, long carPrice) – instanțiază un obiect de tipul Car,
apelând apoi metoda InitCar pentru noul obiect trimițându-i parametrii primiți. Obiectul
obținut este introdus în vectorul availableCars.
o public Car ProduceCar(int carIndex, Color carColor) – va întoarce obiectul car de la indexul
carIndex , din vectorul availableCars.
 Dacă indexul furnizat nu este valid, va arunca o excepție de tipul
IndexOutOfRangeExeption încluzând mesajul "No existing car has this index”
Pentru obiectul obținut se va apela apoi metoda SetColor pentru a seta culoare mașinii ce se
va produce. Se va întoarce apoi obiectul creat ca valoare de întoarcere a metodei.
o public void DisplayCar() – metodă pentru afișarea detaliilor (nume și preț) unei anumite
mașini ce poate fi produsă. Metoda trebuie să fie supraîncărcată, putând să primească atât
indexul din vectorul availableCars pentru care să se afișeze detaliile, cât și numele mașinii
pentru care se dorește afișarea.
 Dacă indexul furnizat nu este valid, va arunca o excepție de tipul
IndexOutOfRangeExeption încluzând mesajul "No existing car has this index”
o public Car[] GetCars() – metodă ce întoarce instanța vectorului availableCars

Clasa Customer
 Membrii de tip variabilă ai acestei clase:
o Un string nestatic name ce va reține numele clientului.
o O variabilă de tip long availableMoney, banii pe care îi are la dispoziție clientul pentru
cumpărarea unei mașini
o O variabilă de tip Car, ownedCar, în care se va trece mașina pe care o achiziționează clientul
 Membrii de tip metodă ai acestei clase:
o public void InitCustomer primește ca parametru numele clientului și banii pe care acesta îi
are la dispoziție pentru cumpărarea mașinii. Va trebui numele clientului să fie salvat în
variabila name. De asemenea, variabila ownedCar va trebui inițializată la o valoare ce
semnifică o referință nulă.
o public string[] AffordableCars() – metodă ce generează o listă cu numele tuturor mașinilor
pe care clientul curent le poate cumpăra cu banii disponibili. Primește ca parametri un
Academia Microsoft
3
itacad.ro

obiect de tipul CarFactory (producătorul de mașini) și va returna un vector de stringuri, în


care vor fi stocate numele mașinilor.
Notă: Pentru a returna numele tuturor mașinilor veți inițializa un vector de string-uri cu
dimensiunea inițiala 10. Înainte de a adăuga un nou nume, verificați daca vectorul este plin
și, dacă da, redimensionați-l.
o public string GetName() – metodă ce întoarce numele clientului
o public Car GetCar() – metodă ce întoarce mașina clientului

 Secțiunea 2- Aplicație pentru sistemul de management al


magazinului de mașini – 30p
În acestă parte, va trebui să implementați o interfață cu utilizatorul din linie de comandă ce
permite, folosind clasele definite anterior, executarea unui număr de operații. În continuare, sunt
prezentate operațiile ce trebuie implementate:

Pași de executat la pornirea aplicației:


 Instanțierea unui obiect de tipul CarFactory. Numele producătorului va trebui obtinut de la
utilizator.
 Definirea unui vector de obiecte Customer de dimensiune 20, customerArray, și o valoare întreagă
ce reține numărul de clienți creați.
 Definirea unui meniu ce permite selectarea unei anumite operații pe care utilizatorul aplicației
dorește să o execute.

Operații ce trebuie implementate:


 Adăugarea unui client nou
o Instanțierea clasei Customer și interacțiunea cu utilizatorul aplicației pentru aflarea numelui
și a sumei inițiale de bani ale clientului. Obiectul obținut va fi adăugat în vectorul
customerArray
 Afișarea tuturor clienților și a mașinilor pe care aceștia le au
o Se va parcurge vectorul customerArray, afișând indexul și numele fiecărui client, precum și
mașina pe care acesta a achiziționat-o sau un mesaj corespunzător dacă clientul nu a are
încă mașină.
 Afișarea mașinilor pe care le poate cumpăra un client
o Pentru un client specificat printr-un index oferit de utilizatorul aplicației, afișați lista
mașinilor pe care clientul le poate achiziționa.
 Cumpărarea unei mașini
o Pentru un client specificat printr-un index oferit de utilizatorul aplicației, se va cere
utilizatorului aplicației indexul din vectorul avalableCars al obiectului de tipul CarFactory
pentru a specifica ce mașină dorește să cumpere clientul. Utilizatorul va specifica apoi și
culoarea pe care o dorește clientul pentru mașina sa. Obiectul de tip Car obținut va fi pus în
variabila ownedCar.
 Definirea unei noi mașini
o Utilizatorul aplicației va fi rugat să introducă numele noii mașini, precum și prețul de vânzare
al acesteia. Folosind aceste informații, adăugați o nouă mașină producătorului (vectorul
availableCars)

S-ar putea să vă placă și