Documente Academic
Documente Profesional
Documente Cultură
Cuprinde toate activitile de la analiza iniial pn cnd nu se mai folosete e nvechit Procesul formal pentru dezvoltarea de software
Descrie fazele procesului de dezvoltare Ofer linii de ghidare pentru modul n care trebuie desfurate fazele
Procesul de dezvoltare
Analiz Proiectare Implementare Testare Desfurare sistematic (deployment)
1
OOP7 - M. Joldo - T.U. Cluj
Analiza
Se decide ce anume trebuie s fac proiectul NU se gndete cum i va ndeplini programul sarcinile Ce rezult: documentul care cuprinde cerinele
Descrie ce va face programul o dat terminat Manualul de utilizare: spune cum va opera utilizatorul programul Criterii de performan
OOP7 - M. Joldo - T.U. Cluj
Proiectare. Implementare
Proiectare
Plnuim cum s implementm sistemul Descoperim structurile care stau la baza problemei de rezolvat Decidem ce clase i ce metode sunt necesare Ce rezult:
Descrierea claselor i a metodelor Diagrame care arat relaiile dintre clase
Implementare
Scriem i compilm codul surs Codul implementeaz clase i metode descoperite n faza de proiectare Ce rezult: un program finalizat
3
OOP7 - M. Joldo - T.U. Cluj
1. Descoperim clasele 2. Determinm responsabilitile fiecrei clase 3. Descriem relaiile dintre clase
Desfurare sistematic
Utilizatorii instaleaz programul Utilizatorii folosesc programul n scopul n care a fost construit
OOP7 - M. Joldo - T.U. Cluj
Descoperirea claselor
O clas reprezint un concept util
Entiti concrete: conturi bancare, elipse, produse Concepte abstracte: fluxuri (streams) i ferestre
Diagramele de structur cuprind diagrama de clase, diagrame de obiecte, diagrama de componente, diagrama de structur compozit, diagrama de pachete i diagrama de desfurare sistematic.
OOP7 - M. Joldo - T.U. Cluj
Gsim clasele cutnd substantive n descrierea sarcinii Definim comportamentul fiecrei clase Gsim metodele cutnd verbe n descrierea sarcinii
Relaii: Asociere
Modeleaz o conexiune semantic ntre clase
Numele asocierii
Profesor
Lucreaz pentru
Universitate
Asociere Clas
Nume de roluri
Profesor
Angajat
9
Universitate
Angajator
10
Folosirea asocierilor
Trei scopuri generale:
Pentru a reprezenta o situaie n care un obiect de o clas folosete serviciile unui alt obiect, sau ele i folosesc reciproc serviciile adic un obiect i trimite mesaje celuilalt sau i trimit mesaje ntre ele.. (n primul caz, navigabilitatea poate fi unidirecional; n cel de al doilea, ea trebuie s fie bidirecional.) Pentru a reprezenta agregarea sau compoziia unde obiecte de o clas sunt ntregi compui din obiecte de cealalt clas ca pri. n acest caz, o relaie de tip folosete este implicit prezent ntregul folosete prile pentru a-i ndeplini funcia, iar prile pot si ele avea nevoie s foloseasc ntregul. Pentru a reprezenta o situaie n care obiectele sunt nrudite, chiar dac nu schimb mesaje. Aceasta se ntmpl de obicei cnd cel puin unul dintre obiecte este folosit n esen la stocare de informaie.
OOP7 - M. Joldo - T.U. Cluj
Relaii: Agregare
O form special de asociere care modeleaz relaia partentreg ntre un agregat (ntregul) i prile sale
ntreg Parte
Student
OrarCurs
Agregare
OOP7 - M. Joldo - T.U. Cluj
11
12
Relaii: compunere
O form de agregare cu posesiune puternic i durate de via care coincid
Prile nu pot supravieui ntregului/agregatului
ntreg Parte
Student
Note
Asocierile i agregrile sunt implicit bidirecionale, dar adesea este de dorit s se restrng navigarea la o singur direcie
Dac navigarea este restricionat, se adaug o sgeat pentru a indica direcia de navigare
Agregare
OOP7 - M. Joldo - T.U. Cluj
13
14
Asociere: multiplicitate
Nespecificat Exact una Una sau mai multe Zero sau una Gama specificat
1
Student
0..*
OrarCurs
Navigare
2..4 2, 4..6
15
16
Exemple de asocieri
Compoziie parte a Motor Motor
Observaii
Teste pentru relaii parte-ntreg adevrate
transitivittate: dac A parte a lui B & B part a lui C atunci A parte a lui C
Unghia este parte a degetului, degetul este parte a minii; mna este parte a extremitii superioare a corpului
Poziiile sunt parte a sistemului electric al automobilului. Un defect al poziiilor este un defect al automobilului
Este-parte-a e diferit de
Persoana
Agregare are o
esteConinutn : cami, pantaloni,... --- valiza [observai ca testul de defectare nu ine aici: pantalonii stricai nu nseamn valiz stricat] esteLegatDE : valiz --- persoan (care o duce) esteRamurA : artera iliac,... --- aorta seAflan : cas... --- strad
17
OOP7 - M. Joldo - T.U. Cluj
18
Cnd s folosim agregarea Ca regul general, se poate marca o asociere ca agregare, dac sunt adevrate urmtoarele:
Se poate spune c
Prile sunt parte a agregatului sau agregatul este compus din pri
Agregare i compoziie
Asociere
Obiectele tiu unul despre altul astfel nct pot lucra mpreun
Agregare
Protejeaz integritatea configuraiei Funcioneaz ca un singur tot Controlul se face printr-un obiect propagarea este n jos
Cnd ceva deine sau controleaz agregatul, atunci acel ceva deine sau controleaz prile
OOP7 - M. Joldo - T.U. Cluj
Compoziie
Fiecare parte poate fi membru al unui singur obiect agregat
19
20
Relaii: dependen
O relaie ntre dou elemente ale modelului n care o schimbare n unul dintre elemente poate cauza o schimbare n cellalt Relaie nestructural, de tip folosete
Clasa Client Furnizor Component
Relaii: generalizare
O relaie ntre clase n care o clas partajeaz structura i/sau comportamentul uneia sau mai multor clase Definete o ierarhie de abstraciuni n care o subclas motenete de la una sau mai multe superclase
Motenire simpl/de la o singur clas Motenire multipl
Pachet
Relaie de dependen
Client
Furnizor
PachetClient
PachetFurnizor
Relaie de dependen
21
22
Relaii: realizare
Un clasificator servete pe post de contract pe care cellalt este de acord s-l ndeplineasc Regsit ntre:
Interfeele i clasificatorii care le realizeaz
Clas Subsistem
Interfa Interfa Forma prescurtat Interfa Component
Strmo
ContDeCecuri
Subclase
+retrage()
Descendeni
OOP7 - M. Joldo - T.U. Cluj
24
Note (adnotri)
Se poate aduga o not (adnotare) la orice element UML Notele se pot aduga pentru a furniza informaii suplimentare n diagram Este un dreptunghi cu ureche de cine Nota poate fi ancorat la un element cu o linie ntrerupt
Avion
~vinzator AgentVinzari
~cumparator Client
PersoanaJuridica
PersoanaFizica
Camion
Tren
IntretineFormularDePlanificare
Schimbarea implic adugarea unei noi subclase
25
26
Valori etichetate
Sunt extensii ale proprietilor sau ale anumitor atribute ale unui element UML Unele proprieti sunt definite de UML
Persistena Localizarea (d.e., client, server)
Constrngeri
Suport adugarea de reguli noi sau modificarea regulilor existente
Profesor
Membru 1..* Sef catedra 1 {subset} 1 1
Catedra
Aceast notaie este folosit pentru a surprinde dou relaii ntre obiecte de tip Profesor i obiecte de tip Catedra, unde una dintre relaii este un subset al celeilalte. Arat cum se pot croi diagramele UML pentru a modela corect relaii exacte
OOP7 - M. Joldo - T.U. Cluj
27
28
Cartela CRC
Cartela CRC: descrie o clas, responsabilitile i colaboratorii si Se folosete o cartel pentru fiecare clas Alegem clasa care trebuie s fie rspunztoare de fiecare metod (verb) Scriem responsabilitatea pe cartela clasei Indicm ce alte clase sunt necesare pentru a ndeplini responsabilitatea (colaboratorii)
OOP7 - M. Joldo - T.U. Cluj
29
30
Motenire
Relaie de tipul este-o/un Relaie ntre o clasa mai general (superclas) i una mai specializat (subclas) Exemple:
Orice cont de economii este un cont bancar Orice cerc este o elips (cu lime i nlime egale)
Agregare
Relaie de tipul are-o/un Obiectele unei clase conin referine la obiectele altei clase Folosesc variabile instan
O anvelop are un cerc pe post de contur: class Anvelopa { . . . private String catalogare; private Cerc contur; }
32
Dependen
Relaie de tip folosete Exemplu: multe dintre aplicaiile noastre depind de clasa Scanner pentru a citi intrarea Agregarea este o form mai puternic de dependen Folosim agregarea pentru a ine minte un alt obiect ntre apelurile metodelor
OOP7 - M. Joldo - T.U. Cluj
Simbol
Stil de linie
Solid ntrerupt Solid ntrerupt
Forma vrfului
Triunghi Triunghi Romb Deschis
33
34
Agregare i asociere
Asocierea: o form mai general de relaie ntre clase Se folosete de timpuriu n faza de proiectare O clas este asociat cu o alta dac putem naviga de la obiectele unei clase la obiectele celeilalte clase Fiind dat un obiect a Banca, putem naviga la obiecte Client
Banca serveste Client
Diagram de clase
Reprezint un set de clase, interfee, colaborri i alte relaii Reflect proiectul static al unui sistem Poate genera confuzii dac este folosit pentru a explica dinamica sistemului; folosii n loc diagramele de obiecte pentru obiecte: subliniat care sunt mai puin abstracte pentru clase abstracte: cursiv
nume vizibilitate
Shape -origin: Point
vizibilitate
35
36
Diagrame de obiecte
Reprezint un set de obiecte (instane de clase) i relaiile dintre acestea. Un instantaneu static al unei vederi dinamice a sistemului. Reprezint cazuri reale sau cazuri prototip. Foarte utile nainte de dezvoltarea diagramelor de clase. Merit salvate ca elaborri ale diagramelor de clase.
OOP7 - M. Joldo - T.U. Cluj
Diagrame de obiecte
Utile n explicarea de pri mici cu relaii complicate, mai ales n cazul relaiilor recursive Fiecare dreptunghi din diagrama de obiecte corespunde unei singure instane. Numele instanelor (numele obiectelor) sunt subliniate n diagramele UML.
Aceast mic diagram de clase arat c un departament poate conine multe alte subdepartamente.
37
OOP7 - M. Joldo - T.U. Cluj
38
Diagrame de obiecte
Diagrama de obiecte de mai jos este o instaniere a diagramei de clase, clasele fiind nlocuite de exemple concrete Numele de clase sau instane pot fi omise dac semnificaia diagramei rmne clar.
nume de instan nume de clas
obiect
obiect anonim
39
40
41
42
43
44
Determinarea claselor
inei minte urmtoarele puncte:
Clasele reprezint mulimi de obiecte cu acelai comportament
Entitile cu apariii multiple n descrierea problemei sunt candidai buni pentru obiecte Aflai ce au n comun Proiectai clasele pentru a surprinde ce este comun
Nu toate clasele pot fi descoperite n faza de analiz Unele clase pot exista deja
OOP7 - M. Joldo - T.U. Cluj
45
46
Tiprim factura cu
Adresa clientului, toate rndurile, suma de pltit
Rndul conine
Descriere, pre unitar, cantitatea comandat, preul total
Pentru simplitate nu crem interfaa cu utilizatorul Programul de test: adaug rnduri n factur i apoi o tiprete
OOP7 - M. Joldo - T.U. Cluj
47
48
// nregistreaz produsul i cantitatea // // // // // Cmp al clasei produs Cmp al clasei produs Nu este un atribut al unui Produs Calculat, nu se memoreaz Calculat, nu se memoreaz
Clas cu zero sau foarte puine atribute (dar care motenete de la prini) Clas care acoper cteva abstraciuni
Cartelele CRC pentru tiprirea unei facturi Factura trebuie populat cu produse i cantiti:
51
52
StarUML
Produs Rind
53
54
Tipuri de specificaii
Diagrame de clase Diagrame de obiecte Diagrame de activiti (diagrame de curgere a controlului) Aseriuni (precondiii, postcondiii, invariani)
Altele
Specificarea claselor
O specificaie software indic sarcina (sau un aspect al sarcinii) care se presupune a fi efectuat la execuia software respectiv O specificaie de clas definete semantica (comportamentul) unei clase prin:
invariant de clas care descrie ceea ce este ntotdeauna adevrat pentru obiectele clasei. specificaii pentru fiecare dintre metodele clasei.
56
Specificarea metodelor
O precondiie declar condiiile care sunt necesare pentru ca metoda s se execute n mod corespunztor O clauz modific reprezint o list de obiecte care ar putea fi modificate prin execuia metodei. O postcondiie declar ce este adevrat atunci cnd metoda i-a finalizat execuia
OOP7 - M. Joldo - T.U. Cluj
Aseriune
O aseriune este o declaraie a unui fapt care este presupus adevrat relativ la o locaie/locaii din cod. Exemplu
// assert: str este String si str.length > 2 char firstChar, secondChar, bigChar; firstChar = str.charAt(0); secondChar = str.charAt(1); if (firstChar > secondChar) { bigChar = firstChar; } else { bigChar = secondChar; } /* assert: str.length > 2 and (str.charAt(0) > str.charAt(1) implies bigChar == str.charAt(0)) and (str.charAt(0) str.charAt(1) implies bigChar == str.charAt(1)) */
OOP7 - M. Joldo - T.U. Cluj
57
58
Notarea aseriunilor
Aseriunile sunt bazate pe logic i anumite notaii din program (adic referine la variabile i, posibil, apeluri de metode non-void). Aseriunile NU trebuie s conin verbe de aciune Operatori logici
Notarea aseriunilor
Alt notaie logic, cuantificarea, permite exprimarea aseriunilor referitoare la structuri de date. Cuantificarea universal
forAll (tip var : condiieLimit | SubAseriune )
Exemplu:
forAll (Integer j : 0j2 | arr1[j] > 0 )
semnificaie: arr1[0] > 0 and arr1[1] > 0 and arr1[2] > 0
OOP7 - M. Joldo - T.U. Cluj
not SubAssertion1 sub-aseriunea trebuie s fie fals. SubAssertion1 and SubAssertion2 ambele subSubAssertion1 or SubAssertion2 una sau amndou SubAssertion1 implies SubAssertion2 cnd prima
sub-aseriune este adevrat i cea de a doua trebuie s fie adevrat
OOP7 - M. Joldo - T.U. Cluj
59
60
Notarea aseriunilor
Cuantificarea existenial
exists (tip var : condiieLimit | SubAseriune )
Exemplu:
exists (Integer j : 0j2 | arr1[j] == 5 )
semnificaie: arr1[0] ==5 or arr1[1] == 5 or arr1[2] == 5
Exemple de cuantificri
Fie dou tablouri de double: a1 i a2 i a1.length == a2.length == 4
forAll (Integer r : 0 r 3 | a1[r] < a1[r+1] ) forAll (Integer w : 0 w 3 | a1[w] == a2[w] ) exists (Integer k : 0 k 3 | a1[k] == 22 and a2[k] == 22 ) exists (Integer k : 0 k 3
| ( a1[k] < 0
and forAll (Integer j : k < j 3 | a2[k] == a1[j]) ) ) forAll (j,k : 0 j,k 3 and j != k | a1[j] != a2[k] )
OOP7 - M. Joldo - T.U. Cluj
61
62
Exemple de aseriuni
/** invariant de clas distanceInMiles > 0 and timeInSeconds > 0 */ public class LapTime { private double distanceInMiles, timeInSeconds;
Locuri posibile
Invariantul clasei Postcondiia metodei Precondiia metodei Invariantul de bucl
/** pre: d > 0 and t > 0 post: distanceInMiles == d and timeInSeconds == t public LapTime(double d, double t) { distanceInMiles = d; timeInSeconds = t; } /** post: distanceInMiles == 60 and timeInSeconds == 3600 */ public void setTo60MPH() { distanceInMiles = 60; timeInSeconds = 3600; }
63
*/
64
66
Legturi utile
OMG UML Resource Pages
http://www.uml.org
UML by Examples
http://www.geocities.com/siliconvalley/network/1582/uml-example.htm
67