Sunteți pe pagina 1din 4

Ingineria Sistemelor de Programe 2012

LABORATOR 3 INGINERIA SISTEMELOR DE PROGRAME

Subiecte studiate
Implementarea relatiei de asociatie cu multiplicitate 1 si cu multiplicitate N

Cerinte
Se considerea urmatorul scenariu : Intr-o gradina zoologica sunt mai multe animale. Toate animalele stiu sa manance. Fiecare animal are nevoie de o anumita cantitate de mancare pentru a se satura. In acest moment, in gradina zoologica sunt 2 tipuri de animale : PanteraRoz si Leu. Fiecare pantera are cate o jucarie. Fiecare jucarie are o culoare specifica, care se atribuie jucariei la creare. Pantera primeste jucaria la creare. In plus, pantera mai are o proprietate specifica, denumita umor, care la crearea unei pantere va avea valoarea 10. Felul in care mananca o pantera este specific (difera de cel al unui animal obisnuit), in sensul ca dupa fiecare masa ii creste nivelul umorului cu 2 unitati. Leul are o proprietate specifica, denumita somnolenta, care la crearea unui leu va avea valoarea 0. Felul in care mananca un leu este specific (difera de cel al unui animal obisnuit), in sensul ca dupa fiecare masa ii creste nivelul somnolentei cu 10 unitati. Exista un Ingrijitor care stie sa hraneasca animalele, el putand avea si alte atribute (nume, salariu, numarul de rani capatate in urma hranirii animalelor, etc.). Ingrijitorul hraneste animalele din gradina zoologica. De fiecare data cand le hraneste, decide ce cantitate de mancare y le da. La creare, fiecarui animal i se vor aloca x unitati de mancare. In momentul in care un animal este hranit de ingrijitor cu y unitati de mancare, se va considera ca el mananca y unitati din cele x care i-au fost alocate la creare. Daca x-y > 0, inseamna ca animalul a avut suficienta mancare si este satul. Altfel, va spune ca inca ii este foame. Gradina zoologica este formata in acest moment din 2 lei si o pantera roz.

Se cere sa:
1. Reprezentati diagrama cazurilor de utilizare in Astah. 2. Identificati clasele si relatiile dintre ele. Reprezentati diagrama de clase in Astah. 1

Ingineria Sistemelor de Programe 2012

3. Creati animalele si ingrijitorul din gradina zoological si hraniti animalele (in Java). Daca x-y > 0, animalul va afisa mesajul Salut. Eu sunt un leu/pantera (dupa caz) si tocmai am mancat.. Daca x-y < 0, animalul va afisa mesajul Salut. Eu sunt un leu/pantera (dupa caz) si inca mi-e foame.. Animalului ii creste nivelul de umor sau somnolenta si in acest caz.

Suport pentru laborator Relatia de asociatie


Relaiile de asociaie sunt cele mai simple relaii care pot ap rea ntre clase. O asociaie are dou capete, un nume i o direcie (pentru a se evita ambiguitatea). n plus putem avea i roluri pentru a explica care este rolul fiecrei pari ntr-o asociaie. Pentru ca lucrurile s fie ct mai complet specificate, dintr-o relaie de asociaie nu ar trebui s lipseasc multiplicitatea - adic numrul de obiecte participante sau, altfel spus, numrul posibil de instane asociate cu o singur instan a celuilalt cap t. Cazuri de posibile multipliciti: 1 0..1 0..* * 1..* 1..n 0.. n sau n nl, n2, n3 N-m Reprezentare UML: unul i doar un obiect; Nici unul su maxim un obiect; Nici unul sau mai multe obiecte; Zero sau mai multe obiecte; Unul sau mai multe obiecte; Unul su maxim n obiecte; Nici unul su maxim n obiecte; niruire de numere, care exprim numrul de obiecte; Numr de obiecte cuprins ntre n i m.

Implementarea n Java a unei asocia ii cu multiplicitate 1 Relaia de asocia ie cu multiplicitate 1 apare atunci cnd o proprietate a unei clase conine o referin ctre o singur instan a altei clase. Cu alte cuvinte, o singur instan dintr-o clas este legat de o singur instan a altei clase. Un student are o singur foaie matricol i o foaie matricol aparine unui singur student. Exemplu: Intre clasele Persoana si Buletin este o relatie de asociatie de asociatie cu multiplicitate 1, deoarece o persoana poate avea un singur buletin. Relaia este

Ingineria Sistemelor de Programe 2012

unidirecionala ntruct persoana poate deine un buletin i nu invers (un buletin s dein o persoan).

In implementarea claselor in Java, aceasta relatie este vizibila in codul clasei Persoana:
public class Persoana { private Buletin buletin; /** *Buletinul este o caracteristic a persoanei; o persoan nu poate avea mai mult de un buletin */ public Persoana (Buletin buletin) { this.buletin = buletin; }

.. Pentru instantiere, trebuie ca mai intai sa fie creat obiectul Buletin, care va fi apoi asociat unui obiect Persoana.

Implementarea n Java a unei asocia ii cu multiplicitate N i n cazul acestei relaii este vorba despre asociaie, diferena constnd n creterea numrului de instane. Se poate discuta despre relaie unul la mai muli (mai multe instane ale unei clase sunt legate de o singur instan a unei clase n particular). De exemplu, un departament al unei firme internaionale angajeaz mai multe persoane, dar o persoan este angajat la un singur departament. Tot n sfera multiplicitii N este i relaia mai multe (instane) la mai multe (instane). O singur instan a unei clase poate avea legturi cu mai multe instane ale altei clase, i invers. Un manual colar are mai muli autori i un anumit autor apare pe mai multe manuale. Un om poate avea contracte de lucru la mai multe firme i o firm poate ncheia contracte cu mai multe persoane. Exemplu: Intre clasele Liceu si Elev este o relatie de asociatie cu multiplicitate N, deoarece un liceu poate avea unul sau mai muli elevi, iar un elev nu poate fi nscris dect la un sigur liceu.

Ingineria Sistemelor de Programe 2012

In implementarea claselor in Java, aceasta relatie este vizibila in codul clasei Liceu:
public class Liceu { private Elev [] elevi; private int elevi_adugai; public Liceu (){ Elevi = new Elev [2000]; Elevi_adugai=0; } public void addElev (Elev p){ if (elevi_adugai < elevi. Length){ Elevi [elevi_adugai] = p; Elevi_adugai++; } }

Reguli de transformare a asocierile


1. O asociere navigabil cu multiplicitatea 1 -> o variabil de tip referin la obiect 2. O asociere navigabil cu multiplicitatea n -> un atribut de tip colecie de date n loc de simpl referin la obiect 3. O asociere bilateral -> o pereche de referine, una n fiecare clas

Bibliografie
1. A.D. Ionita, A. Cernian, Notiuni aplicate de inginerie a sistemelor de programe, Editura MATRIXROM, 2009 2. Kathy Sierra, Bert Bates, Head First Java, OReilly

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