Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:agregare-mostenire [2024/10/20 11:05]
alexandra.nioata
poo-ca-cd:laboratoare:agregare-mostenire [2024/10/20 22:48] (current)
alexandra.nioata
Line 714: Line 714:
  
 <note important>​ <note important>​
-Veți încărca soluția ​voastră pe LambdaCheckercontest [[https://beta.lambdachecker.io/contest/​54/​problems?​page=1 | POO LAB3]]+Pentru a încărca soluția, ​va trebui să accesați link-ul ​https://code.devmind.ro/login, să intrați pe tab-ul Contests, unde veți găsi laboratorul grupei voastre.
  
-Încercați să accesați de aici contest-ul, altfel e posibil să vă ceară o parolă care nu există. De asemena, să fiți logați pe LambdaChecker înainte de accesa link-ul. m( 
 </​note>​ </​note>​
-Schelet laborator: [[https://​github.com/​oop-pub/​oop-labs/​tree/​master/​src/​lab3 | Laborator 3]] 
  
- +**Task 1 [1p]**
-**Task 1** [1p]+
  
 Veți proiecta o clasă Form care va avea câmpul privat color (String). Veți proiecta o clasă Form care va avea câmpul privat color (String).
  
-Clasa va avea, de asemenea: ​ +Clasa va avea, de asemenea:
-  *  un constructor fără parametri, care va inițializa culoarea cu "​white";​ +
-  *  un constructor cu parametri;​ +
-  *  o metodă de tip float getArea(), care va întoarce valoarea 0; +
-  *  o metodă toString(): "This form has the color [color]"​.+
  
-**Task 2** [2p] 
  
-Din clasa Form derivați clasele Square, Triangle, Circle: ​+- un constructor fără parametri, care va inițializa culoarea cu “white”;​ 
 + 
 +- un constructor cu parametri;​ 
 + 
 +- o metodă de tip float getArea(), care va întoarce valoarea 0; 
 + 
 +- o metodă toString(): “This form has the color [color]”. 
 + 
 + 
 +**Task 2 [2p]** 
 + 
 +Din clasa Form derivați clasele Square, Triangle, Circle: 
 + 
 +- clasa Triangle (triunghi isoscel) va avea 2 membri height și base (adiacenta unghiurilor congruente) de tip float; 
 + 
 +- clasa Circle va avea membrul radius de tip float; 
 + 
 +- clasa Square va avea membrul side de tip float.
  
-  * clasa Triangle va avea 2 membri height și base de tip float; 
-  * clasa Circle va avea membrul radius de tip float; 
-  * clasa Square va avea membrul side de tip float. 
  
 Clasele vor avea: Clasele vor avea:
-  * constructori fără parametri;​ +constructori fără parametri;​ 
-  ​* ​constructori care permit inițializarea membrilor. Identificați o modalitate de reutilizare a codului existent; + 
-  ​* ​suprascrieți metoda getArea() pentru a întoarce aria specifică fiecărei figuri geometrice;​ +constructori care permit inițializarea membrilor. Identificați o modalitate de reutilizare a codului existent; 
-  ​* ​suprascrieți metoda toString() în clasele derivate, astfel încât aceasta să utilizeze implementarea metodei toString() din clasa de baza.+ 
 +suprascrieți metoda getArea() pentru a întoarce aria specifică fiecărei figuri geometrice;​ 
 + 
 +suprascrieți metoda toString() în clasele derivate, astfel încât aceasta să utilizeze implementarea metodei toString() din clasa de baza. 
 + 
 + 
 +**Task 3 [2p]**
  
-**Task 3** [2p] 
-  
 Adăugați o metodă equals() în clasa Triangle. Adăugați o metodă equals() în clasa Triangle.
  
 Justificați criteriul de echivalență ales. Justificați criteriul de echivalență ales.
  
-<note important>​**Hint:** +Hint: Puteți genera automat metoda, cu ajutorul IDE. Selectați câmpurile considerate și analizați în ce fel va fi suprascrisă metoda equals.
-Puteți genera automat metoda, cu ajutorul IDE. Selectați câmpurile considerate și +
-analizați în ce fel va fi suprascrisă metoda equals.</​note>​+
  
-**Task 4** //''​Upcasting''// ​[2p]+**Task 4 - Upcasting [1p]** 
 + 
 +Creați un vector de obiecte Form și populați-l cu obiecte de tip Triangle, Circle și Square (upcasting). ​
  
-Creați un vector de obiecte Form și populați-l cu obiecte de tip Triangle, Circle și Square (upcasting). 
 Parcurgeți acest vector și apelați metoda toString() pentru elementele sale. Ce observați? Parcurgeți acest vector și apelați metoda toString() pentru elementele sale. Ce observați?
  
-**Task 5** //''​Downcasting''// ​[2p]+**Task 5 - Downcasting [2p]** 
 + 
 +Adăugați:​ 
 + 
 +- clasei Triangle metoda printTriangleDimensions,​ 
 + 
 +- clasei Circle metoda printCircleDimensions 
 + 
 +- clasei Square metoda printSquareDimensions
  
-Adăugați clasei Triangle metoda printTriangleDimensions,​ clasei Circle metoda printCircleDimensions și clasei Square metoda printSquareDimensions. 
 Implementarea metodelor constă în afișarea bazei și înălțimii,​ razei, respectiv laturii. Implementarea metodelor constă în afișarea bazei și înălțimii,​ razei, respectiv laturii.
  
-Parcurgeți vectorul de la exercițiul anterior și, folosind downcasting la clasa corespunzătoare,​ apelați ​ + 
-metodele specifice fiecărei clase (printTriangleDimensions pentru TriangleprintCircleDimensions pentru Circle ​și printSquareDimensions pentru Square). +Parcurgeți vectorul de la exercițiul anterior și, folosind downcasting la clasa corespunzătoare,​ apelați metodele specifice fiecărei clase
 + 
 + 
 +printTriangleDimensions pentru Triangle 
 + 
 +printCircleDimensions pentru Circle 
 + 
 +printSquareDimensions pentru Square
  
 Pentru a stabili tipul obiectului curent folosiți operatorul instanceof. Pentru a stabili tipul obiectului curent folosiți operatorul instanceof.
  
-**Task 6** //''​Agregare''// ​[1p]+**Task 6 - Agregare [1p]**
  
 Afișați dimensiunile formelor din vectorul creat fără a folosi operatorul instanceof. Afișați dimensiunile formelor din vectorul creat fără a folosi operatorul instanceof.
 +
 +**Task 7 - Final [1p]**
 +
 +Afișați perimetrul fiecărui obiect din vectorul creat utilizând exclusiv funcția printPerimeter,​ modificând doar ce se afla in corpul funcției, lasând antetul identic.
 +
  
 ==== Resurse ==== ==== Resurse ====
poo-ca-cd/laboratoare/agregare-mostenire.1729411533.txt.gz · Last modified: 2024/10/20 11:05 by alexandra.nioata
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0