Sunteți pe pagina 1din 12

Ciclul de via al software

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

Programare orientat pe obiecte


1. Dezvoltarea aplicaiilor OO 2. Diagrame de clase i obiecte n UML 3. Aseriuni

Procesul de dezvoltare
Analiz Proiectare Implementare Testare Desfurare sistematic (deployment)
1
OOP7 - M. Joldo - T.U. Cluj

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

Testare. Desfurare sistematic


Testare
Rulm teste pentru a verifica faptul c programul funcioneaz corect Ce rezult: un raport asupra testelor i rezultatelor lor

Proiectarea orientat pe obiecte

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

OOP7 - M. Joldo - T.U. Cluj

Unified Modeling Language (UML)


UML este notaia internaional standard pentru analiza i proiectarea orientat pe obiecte. Este definit de Object Management Group (OMG) UML 2.0 definete treisprezece tipuri de diagrame, mprite n trei categorii:
ase tipuri de diagrame reprezint structura static a aplicaiei; trei reprezint tipuri generale de comportament; patru reprezint diferite aspecte ale interaciunilor

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

OOP7 - M. Joldo - T.U. Cluj

Relaii ntre entitile reprezentate


Asociere
Agregare Compoziie

Relaii: Asociere
Modeleaz o conexiune semantic ntre clase
Numele asocierii

Profesor

Lucreaz pentru

Universitate

Dependen Generalizare Realizare


OOP7 - M. Joldo - T.U. Cluj

Asociere Clas

Nume de roluri

Profesor
Angajat
9

Universitate
Angajator
10

OOP7 - M. Joldo - T.U. Cluj

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

Asociere: Multiplicitate i navigare


Multiplicitatea definete cte obiecte particip ntro relaie
Numrul de instane ale unei clase n raport cu una instan a celeilalte clase Specificat pentru fiecare capt al asocierii

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

OOP7 - M. Joldo - T.U. Cluj

14

Asociere: multiplicitate
Nespecificat Exact una Una sau mai multe Zero sau una Gama specificat
1

Exemplu: multiplicitate i navigare


Multiplicitate

Zero sau mai multe (multe, nelimitat) 0..*


* 1..* 0..1

Student

0..*

OrarCurs

Navigare
2..4 2, 4..6

Game multiple, disjuncte

OOP7 - M. Joldo - T.U. Cluj

15

OOP7 - M. Joldo - T.U. Cluj

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

O problem a unei pri este o problem a ntregului


O ran la unghie este o ran a corpului Automobil
Sofer

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

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

OOP7 - M. Joldo - T.U. Cluj

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

Generalizarea este o relaie de tipul este-unfel-de


OOP7 - M. Joldo - T.U. Cluj

OOP7 - M. Joldo - T.U. Cluj

22

Exemplu: Motenirea simpl


O clas motenete de la alta
Superclas (printe)
Cont -sold -nume -numr +retrage() +creeazaDovada()

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

Relaie de generalizare (motenire)


ContDeEconomii +cerDobinda() +retrage()

ContDeCecuri

Subclase
+retrage()

Cazurile de folosire (use case) i colaborrile care le Form canonic realizeaz


Caz de utilizare
23

Descendeni
OOP7 - M. Joldo - T.U. Cluj

Realizare de caz de utilizare


OOP7 - M. Joldo - T.U. Cluj

24

Efectul schimbrii cerinelor


Presupunnd c e nevoie de un nou mijloc de livrare
Vinzare

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

~articol vindut Produs

~mijloc de livrare Vehicul

PersoanaJuridica

PersoanaFizica

Camion

Tren

IntretineFormularDePlanificare
Schimbarea implic adugarea unei noi subclase

Poate exista cel mult un obiect IntretineFormularDePlanificare pentru o sesiune utilizator.

OOP7 - M. Joldo - T.U. Cluj

25

OOP7 - M. Joldo - T.U. Cluj

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

Proprietile pot fi create de modelori UML n orice scop


ClasaPersistenta {persistence} unObiect : ClasaA {location=server}

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

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

Cartela CRC. Relaii ntre clase


Cartela CRC

Relaii ntre clase


Motenire Agregare Dependen
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; }

Uneori se abuzeaz de aceast relaie


Ar trebui s fie clasa Anvelopa o subclas a lui Cerc? Relaia are-o ar fi mai potrivit aici

Fiecare automobil are o anvelop (de fapt are patru)


class Automobil extends Vehicul{ . . . private Anvelopa[] anvelope; }
31
OOP7 - M. Joldo - T.U. Cluj

OOP7 - M. Joldo - T.U. Cluj

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

Simboluri UML pentru relaii


Relaie
Motenire Implementare de interfa Agregare Dependen

Simbol

Stil de linie
Solid ntrerupt Solid ntrerupt

Forma vrfului
Triunghi Triunghi Romb Deschis

33

OOP7 - M. Joldo - T.U. Cluj

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

atribute semntur operaii

vizibilitate

+move(p: Point) +resize(s: Scale) +display() #invalidateRegion()

OOP7 - M. Joldo - T.U. Cluj

35

OOP7 - M. Joldo - T.U. Cluj

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

Alt exemplu de diagram de obiecte

legtur valoare de atribut

obiect

obiect anonim

OOP7 - M. Joldo - T.U. Cluj

39

OOP7 - M. Joldo - T.U. Cluj

40

Alt exemplu de diagram de obiecte

Procesul de dezvoltare n cinci pai


Colectm cerinele Folosim cartele CRC pentru a determina clasele, responsabilitile i colaboratorii Folosim diagrame UML pentru a nregistra relaiile dintre clase Folosim javadoc pentru a documenta comportamentul metodelor Implementm programul

OOP7 - M. Joldo - T.U. Cluj

41

OOP7 - M. Joldo - T.U. Cluj

42

Reguli pentru determinarea claselor


ntre 3 i 5 responsabiliti pe clas Nu exist clase singuratice Ferii-v de multe clase mici Ferii-v de puine clase mari Ferii-v de functoizi un functoid este de fapt o funcie procedural normal deghizat n clas. Ferii-v de clase omnipotente
Cutati clase care au system sau controller n nume!

Exemplu: factur simplificat

Evitai arborii de motenire adnci


OOP7 - M. Joldo - T.U. Cluj

43

OOP7 - M. Joldo - T.U. Cluj

44

Exemplu: factur simplificat


Clase care vin n minte: Factura, Rind, i Client Este o idee bun s pstrm o list de clase candidate Folosim brainstorming-ul, pur i simplu punem toate ideile de clas n list Le putem tia pe cel inutile ulterior

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

Reprezentai unele entiti ca obiecte, iar altele ca tipuri primitive


Ar trebui s facem Adresa o clas sau s folosim un String?

Nu toate clasele pot fi descoperite n faza de analiz Unele clase pot exista deja
OOP7 - M. Joldo - T.U. Cluj

45

OOP7 - M. Joldo - T.U. Cluj

46

Tiprirea unei facturi cerine


Sarcina: tiprirea unei facturi Factura: descrie preurile pentru un set de produse n anumite cantiti Omitem lucrurile mai complicate aici
Date, taxe i codurile de factur i de client

Tiprirea unei facturi cartele CRC


Descoperim clasele Substantivele identific clasele posibile
Factura Adresa Rnd Produs Descriere Pre Cantitate Total Suma de pltit

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

OOP7 - M. Joldo - T.U. Cluj

48

Tiprirea unei facturi cartele CRC


Analizm clasele
Factura Adresa Rnd Produs Descriere Pret Cantitate Total Suma de pltit
Semnal

Motive pentru rejectarea unei clase candidate


Motiv Poate fi o subrutina, nu o clasa Poate fi o subrutina, nu o clasa Poate s nu fie o abstraciune propriu-zis Poate fi o informaie opac, nu un TDA, sau poate fi un TDA la care s-au omis rutinele Poate fi un caz de taxomanie Ar trebui divizat n mai multe clase, cte una pentru fiecare abstraciune
50

Clasa cu nume verb (infinitiv sau imperativ)

// 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

Clasa cu o singura metod Clas descrisa ca efectueaz ceva Clas fr metode

Clasele dup un proces de eliminare

Factura Adresa Rnd Produs


49

Clas cu zero sau foarte puine atribute (dar care motenete de la prini) Clas care acoper cteva abstraciuni

OOP7 - M. Joldo - T.U. Cluj

OOP7 - M. Joldo - T.U. Cluj

Cartelele CRC pentru tiprirea unei facturi


Att Factura ct i Adresa trebuie s se poat autoformata responsabiliti: Factura formateaz factura i Adresa formateaz adresa Adugm colaboratori pe cartela facturii: Adresa i Rind Pentru cartela Produs responsabiliti: obine

Cartelele CRC pentru tiprirea unei facturi Factura trebuie populat cu produse i cantiti:

descrierea, obine preul unitar


Pentru cartela CRC Rind responsabiliti:

formateaz articolul, obine preul total


OOP7 - M. Joldo - T.U. Cluj

51

OOP7 - M. Joldo - T.U. Cluj

52

Tiprirea unei facturi diagrama UML


Factura Adresa

Instrumente pentru realizarea diagramelor UML ArgoUML:


http://argouml.tigris.org ruleaz pe orice platform Java

StarUML
Produs Rind

http://staruml.sourceforge.net/en/ proiect "open source"

Poseidon for UML Community Edition


http://gentleware.com/downloadcenter.0.html

Multe produse comerciale


OOP7 - M. Joldo - T.U. Cluj

53

OOP7 - M. Joldo - T.U. Cluj

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.

Reinei c primele trei sunt specificaii incomplete


OOP7 - M. Joldo - T.U. Cluj

Fiecare specificaie de metod const din


o precondiie (opional), o clauz modific (opional), i o postcondiie.
55
OOP7 - M. Joldo - T.U. Cluj

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

aseriuni trebuie s fie adevrate.

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

sub-aseriunile sunt adevrate.

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

OOP7 - M. Joldo - T.U. Cluj

62

Unde se pun aseriunile

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

*/

OOP7 - M. Joldo - T.U. Cluj

OOP7 - M. Joldo - T.U. Cluj

64

Notaii speciale pentru postcondiii


Valoare returnat (rezultat)
// Within LapTime class /** post: result == distanceInMiles / (timeInSeconds*3600) */ public double milesPerHour() { double velocity; velocity = distanceInMiles/(timeInSeconds*60*60); return velocity }

Proiectarea prin contract


Apelantul metodei garanteaz...
precondiia & invariantul clasei (la momentul apelului metodei)

Metodei i se cere s asigure...


postcondiia & invariantul clasei (la momentul revenirii din metod)

Valoare anterioar (@pre)


// Within LapTime class /** post: distanceInMiles == distanceInMiles@pre * 2 */ public void doubleTheMileage() { distanceInMiles = distanceInMiles * 2; }

Anex: o clauz "modific" poate stipula ce modificri sunt permise


65
OOP7 - M. Joldo - T.U. Cluj

OOP7 - M. Joldo - T.U. Cluj

66

Legturi utile
OMG UML Resource Pages
http://www.uml.org

IBM UML Resource Center


http://www-306.ibm.com/software/rational/uml/

Practical UML: A Hands on introduction for developers


http://bdn.borland.com/article/0,1410,31863,00.html

Robert Martin: UML Class Diagrams for Java Programmers


http://www.phptr.com/articles/article.asp?p=336264&seqNum=2&rl=1

UML by Examples
http://www.geocities.com/siliconvalley/network/1582/uml-example.htm

Holub Associates: UML Reference Card


http://www.holub.com/goodies/uml

Visual Case Tool - UML Tutorial


http://www.visualcase.com/tutorials/class-diagram.htm
OOP7 - M. Joldo - T.U. Cluj

67

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

  • Lab 02
    Lab 02
    Document2 pagini
    Lab 02
    Marcel Bostan
    Încă nu există evaluări
  • SO Curs 2
    SO Curs 2
    Document43 pagini
    SO Curs 2
    Marcel Bostan
    Încă nu există evaluări
  • 07 Mostenire
    07 Mostenire
    Document7 pagini
    07 Mostenire
    Marcel Bostan
    Încă nu există evaluări
  • OOP07 R 6
    OOP07 R 6
    Document12 pagini
    OOP07 R 6
    Marcel Bostan
    Încă nu există evaluări
  • NC1 1
    NC1 1
    Document6 pagini
    NC1 1
    Marcel Bostan
    Încă nu există evaluări
  • NC1 1
    NC1 1
    Document6 pagini
    NC1 1
    Marcel Bostan
    Încă nu există evaluări
  • Biologia Virusurilor 10
    Biologia Virusurilor 10
    Document16 pagini
    Biologia Virusurilor 10
    gabi podosu
    Încă nu există evaluări
  • Laborator 9
    Laborator 9
    Document8 pagini
    Laborator 9
    Andreea Jarcău
    Încă nu există evaluări
  • Barem Real 1
    Barem Real 1
    Document5 pagini
    Barem Real 1
    Marcel Bostan
    Încă nu există evaluări