adriana gheorghies‚, ovidiu gheorghies‚ogh/files/ip/curs-04.pdf · particularizarea a lui a...
TRANSCRIPT
1 / 38
Ingineria programarii
Adriana Gheorghies, Ovidiu Gheorghies
23 octombrie 2005
Cuprins
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram
2 / 38
• Concepte OO• Modele. Modelare• Diagrama de clase
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
3 / 38
Concepte OO
Obiect
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
4 / 38
• Entitate care are:
◦ identitate◦ stare◦ comportament
• Exemple:
◦ Mingea mea galbena de tenis, cu diametrul de 10 cm, caresare.
Clasa
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
5 / 38
• Descriere a unei multimi de obiecte cu
◦ aceleasi caracteristici structurale◦ aceleasi caracteristici comportamentale
• Exemplu: mingi care
◦ au culoare, diametru, ıntrebuintare◦ sar
Instanta
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
6 / 38
• Despre un obiect care apartine unei clase spunem ca esteinstanta a acelei clase.
• Exemplu: Popescu Viorel este un Student
Orientat obiect
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
7 / 38
• Este orice abordare ce cuprinde
◦ ıncapsularea datelor◦ mostenire◦ polimorfism
(promoveaza reutilizarea codului)• In principiu orice model OO ar trebui sa poata fi implementat
ıntr-un limbaj OO• Exista diferente intre limbaje. Un model bun nu va putea ignora
detaliile de implementare
Incapsularea datelor
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
8 / 38
• Inseamna punerea la un loc a datelor (atributelor) si a codului(metodelor)
• Datele pot fi modificate (doar) prin intermediul metodelor• Data hiding: nu ne intereseaza cum se ofera serviciile, ci doar ca
se ofera• Daca se schimba structura, sau modul de realizare, interfata
ramane neschimbata
Mostenire
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
9 / 38
• Anumite clase sunt specializari (particularizari) ale altor clase• O subclasa are (mosteneste) caracteristicile super-clasei, pe
care le poate extinde ıntr-un anume fel• O instanta a unei clase derivate este ın mod automat si o
instanta a clasei de baza• Exemplu (Student - Persoana)
Polimorfism
• Cuprins
Concepte OO• Obiect• Clasa• Instanta• Orientat obiect• Incapsularea datelor• Mostenire• Polimorfism
Modele. Modelare
Diagrama de claseClass Diagram
10 / 38
• Interpretarea semanticii unui apel de metoda se face de catre celcare primeste apelul.
• Exemplu: Eu spun unei forme: DESENEAZA-TE. Ea, daca epatrat trage 4 linii, daca e cerc, face niste puncte de jur imprejurulcentrului.De altfel, nu ma intereseaza cine, cum face.
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
11 / 38
Modele. Modelare
Tipuri de modele
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
12 / 38
• Modele al domeniului• Modele ale sistemului (programului)
Model al domeniului
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
13 / 38
Este o reprezentare simplificata
• a conceptelor prezente ın domeniul problemei• a relatiilor care se stabilesc ıntre aceste concepte• a atributelor specifice conceptelor
Identificarea conceptelor
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
14 / 38
• Se face pornind de la specificatii (scenarii) si analizanddescrierea problemei (cautam substantive)
• Constructia modelului se face incremental• La fiecare pas se considera un singur scenariu ⇒ model partial
care reflecta acel scenariu, nu mai mult• Se poate ıntampla ca anumite concepte sa nu aiba atribute (au
rol pur comportamental, nu si informational).
Identificarea relatiilor (1)
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
15 / 38
• A este o parte fizica/logica a lui B (aripa-avion) ⇒ compozitie• A este continut fizic/logic ın B (pasager-avion, oraDeCurs-orar)
⇒ agregare• A comunica cu B (agentieDeRezervari-pasager) ⇒ asociere• A ıl cunoaste pe B (student-profesor) ⇒ asociere
Identificarea relatiilor (2)
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
16 / 38
• A este generalizare a lui B / B este un tip de A / B este oparticularizarea a lui A (formaGeometrica-patrat) ⇒ generalizare(mostenire)
• A este ca B / A este similar cu B (mere - pere: ambele suntfructe) ⇒ conduce la aparitia unei abstractiuni
• A ıl foloseste pe B (programDe EditatImagini - bibliotecaGrafica)⇒ dependenta
Recomandari
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
17 / 38
• Concentrati-va asupra relatiilor absolut necesare (need to know)• Identificarea conceptelor este mai importanta decat identificarea
asocierilor• Prea multe relatii fac modelul confuz si greu de ınteles• Evitati sa aratati relatiile redundante
Identificarea atributelor
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
18 / 38
• Informatii care trebuie memorate (se extrag din cerinte)• Ar trebui sa aiba tipuri de date simple:
◦ predefinite: Boolean, Date, Number, String, Time◦ definite de utilizator: Address, PhoneNumber, Color, Point,
ZIP, tipuri enumerative
• Eroare frecventa: reprezint ceva ca atribut cand de fapt ar trebuisa fie un concept
Recomandare
• Cuprins
Concepte OO
Modele. Modelare• Tipuri de modele• Model al domeniului• Identificareaconceptelor• Identificarea relatiilor(1)• Identificarea relatiilor(2)• Recomandari• Identificareaatributelor• Recomandare
Diagrama de claseClass Diagram
19 / 38
• Daca X nu poate fi privit, ın domeniul problemei, ca numar sautext, atunci probabil ca X este un concept, nu un atribut.
• Acest lucru se ıntampla cand:
◦ X este compus din sectiuni separate (ex. numar de telefon,numele unei persoane)
◦ Exista operatii care sunt ın mod uzual asociate cu X , cum arfi parsare sau validare (ex. CNP, email)
◦ X are alte atribute (ex. un pret promotional poate avea o datade ınceput si o data de sfarsit).
◦ X este o cantitate care are o unitate de masura (ex. plata seface utilizand o anumita valuta)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
20 / 38
Diagrama de claseClass Diagram
Diagrama de clase (1)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
21 / 38
• Modeleaza vocabularul sistemului ce trebuie dezvoltat• Surprinde conexiunile semantice sau interactiunile care se
stabilesc ıntre elementele componente• Folosita pentru a modela structura unui program
Diagrama de clase (2)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
22 / 38
Poate contine
• Clase/Interfete• Obiecte• Relatii
◦ Asociere◦ Agregare◦ Generalizare◦ Dependenta◦ Realizare
Clase
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
23 / 38
• Modeleaza vocabularul = identifica conceptele pe care clientulsau programatorul le foloseste pentru a descrie solutia problemei
• Pot fi:
◦ Abstractii care fac parte din domeniul problemei◦ Clase necesare la momentul implementarii
• Elementele unei clase:
◦ Nume: identifica o clasa◦ Atribute: proprietati ale clasei◦ Metode: implementarea unui serviciu care poate fi cerut
oricarei instante a clasei.
Clasa: Notatie grafica
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
24 / 38
Obiect
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
25 / 38
• Reprezinta o instanta a unei clase• Are identitate si valori ale atributelor• Notatie grafica:
Interfata
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
26 / 38
• Specifica o multime de operatii, dar nu mentioneaza structurainterna sau implementarea acestora
• O interfata poate fi implementata de mai multe clase• Notatie grafica:
Clasa parametrizata (template)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
27 / 38
• Este o clasa care are unul sau mai multi parametri formali• Defineste o familie de clase (dand valori parametrilor formali)• De obicei parametrii reprezinta tipuri ale atributelor• Notatie grafica:
Relatii
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
28 / 38
• Intre clase
◦ Generalizare◦ Dependenta◦ Realizare
• Intre instante ale claselor
◦ Asociere◦ Agregare
Generalizare
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
29 / 38
• Modeleaza conceptul de mostenire ıntre clase• Mai poarta denumirea de relatie de tip is a (este un/este o)
Generalizare: Notatie grafica
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
30 / 38
Dependenta
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
31 / 38
• Modeleaza interdependente ce apar la implementare.• Indica o relatie semantica ıntre doua elemente ale modelului.• Se foloseste cand o schimbare an elementul destinatie poate
atrage dupa sine o schimbare an elementul sursa.
Dependenta: Notatie grafica
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
32 / 38
Realizare
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
33 / 38
• Se foloseste atunci cand o clasa implementeaza (realizeaza) ointerfata
• Notatie grafica:
Asociere (1)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
34 / 38
• Exprima o conexiune semantica sau o interactiune ıntre obiecteapartinand diferitelor clase.
• Pe masura ce sistemul evolueaza noi legaturi ıntre obiecte pot ficreate, sau legaturi existente pot fi distruse.
• O asociere interactioneaza cu obiectele sale prin intermediulcapetelor de asociere.
Asociere (2)
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
35 / 38
• Elemente:
◦ Nume: descrie relatia◦ Capete de asociere
• Nume = rolul jucat de obiect an relatie• Multiplicitate = cate instante ale unei clase corespund unei
singure instante ale celeilalte clase.
Asociere: Notatie grafica
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
36 / 38
Agregare
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
37 / 38
• Este un caz particular al relatiei de asociere• Modeleaza o relatie de tip parte-ıntreg• Poate avea toate elementele unei relatii de asociere, ınsa ın
general se specifica numai multiplicitatea• Se foloseste pentru a modela situatiile ıntre care un obiect este
format din mai multe componente.
Agregare: notatie grafica
• Cuprins
Concepte OO
Modele. Modelare
Diagrama de claseClass Diagram• Diagrama de clase (1)• Diagrama de clase (2)• Clase• Clasa: Notatie grafica• Obiect• Interfata• Clasa parametrizata(template)• Relatii• Generalizare• Generalizare: Notatiegrafica• Dependenta• Dependenta: Notatiegrafica• Realizare• Asociere (1)• Asociere (2)• Asociere: Notatiegrafica• Agregare• Agregare: notatiegrafica
38 / 38