User Tools

Site Tools


Problem constructing authldap
laboratoare:agregare-mostenire
Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:agregare-mostenire [2019/10/13 23:54]
Florin Mihalache [Exerciții]
laboratoare:agregare-mostenire [2019/10/30 01:02] (current)
Florin Mihalache [Resurse]
Line 291: Line 291:
 Constructorii **nu** se moștenesc și pot fi apelați doar în contextul unui constructor copil. Apelurile de constructor sunt înlănțuite,​ ceea ce înseamnă că înainte de a se inițializa obiectul copil, mai întâi se va inițializa obiectul părinte. În cazul în care părintele este copil la rândul lui, se va înițializa părintele lui (până se va ajunge la parintele suprem -- root). Constructorii **nu** se moștenesc și pot fi apelați doar în contextul unui constructor copil. Apelurile de constructor sunt înlănțuite,​ ceea ce înseamnă că înainte de a se inițializa obiectul copil, mai întâi se va inițializa obiectul părinte. În cazul în care părintele este copil la rândul lui, se va înițializa părintele lui (până se va ajunge la parintele suprem -- root).
  
-În laboratorul [[http://​elf.cs.pub.ro/​poo/​laboratoare/​constructori-referinte#​cuvantul-cheie-final--obiecte-immutable |Constructori și referințe]] au fost prezentate și câteva din cuvintele cheie ce pot fi puse înaintea unor membri ai claselor, sau chiar a claselor. 
- 
-* cuvântul cheie **''​final''​** ​ 
-    * folosit la declararea unei metode, implicând faptul că metoda nu poate fi suprascrisă în clasele derivate ​ 
-    * folosit la declararea unei clase, implicând faptul că acea clasă nu poate fi derivată ​ (de exemplu clasa [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​lang/​String.html | String]]) 
-  ​ 
 Pe lângă reutilizarea codului, moștenirea dă posibilitatea de a dezvolta pas cu pas o aplicație (procedeul poartă numele de //​incremental development//​). Astfel, putem folosi un cod deja funcțional și adaugă alt cod nou la acesta, în felul acesta izolându-se bug-urile în codul nou adăugat. Pentru mai multe informații citiți capitolul //Reusing Classes// din cartea //Thinking în Java (Bruce Eckel)// ​ Pe lângă reutilizarea codului, moștenirea dă posibilitatea de a dezvolta pas cu pas o aplicație (procedeul poartă numele de //​incremental development//​). Astfel, putem folosi un cod deja funcțional și adaugă alt cod nou la acesta, în felul acesta izolându-se bug-urile în codul nou adăugat. Pentru mai multe informații citiți capitolul //Reusing Classes// din cartea //Thinking în Java (Bruce Eckel)// ​
  
Line 394: Line 388:
 Int c = new Int(10); Int c = new Int(10);
  
-a.print(); // afișează Car +a.equals(a); // afișează Car 
-b.print(); // afișează Car deoarece se face upcasting de la Dacia la Car +a.equals(b); // afișează Car deoarece se face upcasting de la Dacia la Car 
-c.print(); // afișează Object deoarece se face upcasting de la Int la Object+a.equals(c); // afișează Object deoarece se face upcasting de la Int la Object
 </​code>​ </​code>​
  
Line 550: Line 544:
 **Task 2** [2p] **Task 2** [2p]
  
-Din ea derivați clasele ''​Lindt'',​ ''​Chococo'',​ ''​Baravelli'',​ ''​ChocAmor''​. Pentru un design interesant, cutiile vor avea forme diferite:+Din ea derivați clasele ''​Lindt'',​ ''​Baravelli'',​ ''​ChocAmor''​. Pentru un design interesant, cutiile vor avea forme diferite:
   * //Lindt// va contine ''​length'',​ ''​width'',​ ''​height''​ (float);   * //Lindt// va contine ''​length'',​ ''​width'',​ ''​height''​ (float);
-  * //Chococo// va avea forma unui cilindru cu baza triunghilara,​ cu campurile ''​baseHeight'',​ ''​height''​ si ''​base''​ (float) 
   * //​Baravelli//​ va fi un cilindru. Acesta va conține un camp ''​radius''​ și unul ''​height''​ (float);   * //​Baravelli//​ va fi un cilindru. Acesta va conține un camp ''​radius''​ și unul ''​height''​ (float);
   * //​ChocAmor//,​ fiind un cub, va conține un camp ''​length''​ (float);   * //​ChocAmor//,​ fiind un cub, va conține un camp ''​length''​ (float);
Line 565: Line 558:
    
  
-Adăugați o metodă ''​equals()''​ în clasa ''​CandyBar''​. Justificați criteriul de echivalentă ales. Vedeți metodele clasei [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​lang/​Object.html | Object]], moștenită de toate clasele - Object are metoda equals, a cărei implementare verifică echivalența obiectelor comparând referințele.+Adăugați o metodă ''​equals()''​ în clasa ''​CandyBox''​. Justificați criteriul de echivalentă ales. Vedeți metodele clasei [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​lang/​Object.html | Object]], moștenită de toate clasele - Object are metoda equals, a cărei implementare verifică echivalența obiectelor comparând referințele.
 <note important>​**Hint:​** <note important>​**Hint:​**
 Puteti genera automat metoda, cu ajutorul IDE. Selectați câmpurile considerate și Puteti genera automat metoda, cu ajutorul IDE. Selectați câmpurile considerate și
Line 572: Line 565:
 **Task 4** - //''​Upcasting''//​ [2p] **Task 4** - //''​Upcasting''//​ [2p]
  
-Acum că am stabilit tipul cutiilor de bomboane, putem construi cadoul, ramanand la latitudinea vostra care va fi designul lui. In pachetul java.util se gaseste clasa ''​ArrayList'',​ care definește un resizable array, cu metodele specifice (add, size, get, lista lor completa este in [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​util/​ArrayList.html|documentatie]]). Creati o clasă ''​CandyBag'',​ care va conține un ArrayList cu mai multe cutii din fiecare tip. Creați obiecte de tip Chococo ​si testați egalitatea lor;+Acum că am stabilit tipul cutiilor de bomboane, putem construi cadoul, ramanand la latitudinea vostra care va fi designul lui. In pachetul java.util se gaseste clasa ''​ArrayList'',​ care definește un resizable array, cu metodele specifice (add, size, get, lista lor completa este in [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​util/​ArrayList.html|documentatie]]). Creati o clasă ''​CandyBag'',​ care va conține un ArrayList cu mai multe cutii din fiecare tip. Creați obiecte de tip Lindt si testați egalitatea lor;
  
  
 **Task 5** - //''​Downcasting''//​ [1p] **Task 5** - //''​Downcasting''//​ [1p]
  
-Adaugati clasei ''​Baravelli'',​ functia ''​printBaravelliDim()'',​ care va afișa dimensiunile razei și inaltimii. În mod analog, procedati cu celelalte tipuri de cutii, adaugand metodele ​''​printChococoDim()'', ​''​printChocAmorDim()''​ si ''​printLindtDim()'',​ în care să afișați dimensiunile fiecarei cutii.+Adaugati clasei ''​Baravelli'',​ functia ''​printBaravelliDim()'',​ care va afișa dimensiunile razei și inaltimii. În mod analog, procedati cu celelalte tipuri de cutii, adaugand metodele ''​printChocAmorDim()''​ si ''​printLindtDim()'',​ în care să afișați dimensiunile fiecarei cutii.
  
 **Task 6** - //''​Agregare''//​ [2p] **Task 6** - //''​Agregare''//​ [2p]
Line 591: Line 584:
  
 == Resurse == == Resurse ==
-* {{|Soluție}} ​(disponibilă din 28.10.2019)+* {{laboratoare:​agregare-mostenire:​lab3-sol-2019.zip|Soluție}}
 * [[laboratoare:​old-exercises|Exerciții din alți ani]] * [[laboratoare:​old-exercises|Exerciții din alți ani]]
  
laboratoare/agregare-mostenire.1571000065.txt.gz · Last modified: 2019/10/13 23:54 by Florin Mihalache