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 22:03] Adriana Draghici |
||
---|---|---|---|
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 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; |