This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
laboratoare:agregare-mostenire [2019/10/13 21:53] Adriana Draghici |
laboratoare:agregare-mostenire [2019/10/13 23:54] Florin Mihalache [Exerciții] |
||
---|---|---|---|
Line 47: | Line 47: | ||
class Book { | class Book { | ||
- | private String title; // Compoziţie | + | private String title; // Compunere |
- | private Page[] pages; // Compoziţie | + | private Page[] pages; // Compunere |
private LibraryRow libraryRow = null; // Agregare | private LibraryRow libraryRow = null; // Agregare | ||
Line 511: | Line 511: | ||
| | ||
==Summary== | ==Summary== | ||
- | Relatii intre obiecte: | + | **Relații între obiecte:** |
* Agregare - **has a** | * Agregare - **has a** | ||
- | * Mostenire - **is a** | + | * Moștenire - **is a** |
**Upcasting** | **Upcasting** | ||
* convertire **copil** => **parinte** | * convertire **copil** => **parinte** | ||
- | * realizata automat | + | * realizată automat |
**Downcasting** | **Downcasting** | ||
* convertire **parinte** =>**copil** | * convertire **parinte** =>**copil** | ||
- | * trebuie facuta explicit de catre programator | + | * trebuie facută explicit de către programator |
- | * incercati sa evitati folosirea operatorului **instanceof** | + | * încercați să evitați folosirea operatorului **instanceof** |
**Suprascrierea** | **Suprascrierea** | ||
- | * inlocuirea functionalitatii metodei din parinte in copil | + | * înlocuirea functionalitații metodei din clasa de bază în clasa derivată |
- | * pastreaza numele si semnatura metodei; | + | * pastreaza numele și semnatura metodei |
**Supraincarcarea** | **Supraincarcarea** | ||
- | * in interiorul clasei pot exista mai multe metode cu acelasi nume, cu conditia ca semnatura (tipul, argumentele) sa fie diferita | + | * în interiorul clasei pot exista mai multe metode cu acelasi nume, cu condiția ca semnătura (tipul, argumentele) să fie diferită |
**super** | **super** | ||
- | * instanta clasei parinte | + | * instanța clasei parinte |
- | * amintiti-va ca **[[.lab2|this]]** se refera la instanta clasei curente | + | * amintiți-vă din laboratorul anterior că **[[[[laboratoare:constructori-referinte|this]]** se referă la instanța clasei curente |
==Exerciții== | ==Exerciții== | ||
- | <note important>Exercițiile 1-6 se rezolvă în ordine.</note> | + | Gigel vrea să-i faca mamei sale un cadou de ziua ei și știe că-i plac foarte mult bomboanele. El are nevoie de ajutorul vostru pentru a construi cel mai frumos și gustos cadou: |
- | + | ||
- | Gigel vrea sa-i faca mamei sale un cadou de ziua ei si stie ca-i plac foarte mult bomboanele. El are nevoie de ajutorul vostru pentru ca construi cel mai frumos si gustos cadou: | + | |
| | ||
**Task 1** [2p] | **Task 1** [2p] | ||
Line 546: | Line 545: | ||
* un constructor fără parametri | * un constructor fără parametri | ||
* un constructor ce va inițializa toate campurile | * un constructor ce va inițializa toate campurile | ||
- | * o metoda ''getVolume()'', care va intoarce valoarea 0; | + | * o metoda de tip float ''getVolume()'', care va intoarce valoarea 0; |
* Întrucât clasa ''Object'' se află în rădăcina arborelui de moștenire pentru orice clasă, orice instanta va avea acces la o serie de facilități oferite de Object. Una dintre ele este metoda ''toString()'', al cărei scop este de a oferi o reprezentare unei instanțe sub forma unui șir de caractere, utilizata in momentul apelului System.out.println(). Adaugati o metoda ''toString()'', care va returna flavor-ul si regiunea de proveniență a cutiei de bomboane. | * Întrucât clasa ''Object'' se află în rădăcina arborelui de moștenire pentru orice clasă, orice instanta va avea acces la o serie de facilități oferite de Object. Una dintre ele este metoda ''toString()'', al cărei scop este de a oferi o reprezentare unei instanțe sub forma unui șir de caractere, utilizata in momentul apelului System.out.println(). Adaugati o metoda ''toString()'', care va returna flavor-ul si regiunea de proveniență a cutiei de bomboane. | ||
Line 573: | Line 572: | ||
**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 Chococo si testați egalitatea lor; |