Curs 4 Reprezentari abstracte

Post on 31-Jan-2017

252 views 1 download

Transcript of Curs 4 Reprezentari abstracte

Unified Meta Language

Ce este de fapt UML?

Definitie: (OMG)

" Unified Modeling Language (UML) reprezinta un limbaj grafic pentru vizualizarea, specificarea, dezvoltarea si documentarea componentelor unei unui sistem software de dimensiuni medii sau mari.

UML ofera semantici si notatii pentru

1. User Interaction/Use Case Model

2. Interaction / Communication Model

3. State / Dynamic Model

4. Logical / Class Model

5. Physical Component Model

6. Physical Deployment Model

Procesul dezvoltare a unei aplicatii

Specificarea Cererilor

Analiza sistemului

Proiectarea sistemului

Implementarea sistemului

Testarea sistemului

Instalarea sistemului

Intretinerea sistemului

Modelele sunt folosite pentru a furnizadescrierile abstracte

Modelul sistem:Modelul obiect: Modelul functional: Modelul dinamic:

Modelul task-urilor:Harta PERT: Planificarea: Harta organizationala:

Problemele Modelului:

Relatiile modelului Modelul sistemului

Probleme ModelModelul task-urilor

Problema modelariiModelelesistemului

Problemele Modelului Modele Task-urilor

Harta PERT

Diagrama Gantt

Hartaorganizationala

Constrangeri

Probleme

Propuneri

Argumente

Modelul Obiect

ModelulFunctional

Modelul dinamic

class...class...class...

Cod

Pro Contra

Proiectare normala

Analiza coduluiExistent(ReverseEngineering)

O diagrama este o reprezentare vizuala intr-un model

Diagrama de Deployment

Diagramause-case

Diagrama deSecventa

Diagrama deStare

ComponentDiagramsComponent

DiagramsDiagrama deComponente

Modele

Diagrama deObiect

Diagrama deColaborare

Diagrama deActivitate

Diagrama deDiagrama de

Diagrama deClasa

Entitati in UML

Exista patru tipuri de entitati in UML:

Entitati structurale

Entitati comportamentale:

Entitati pentru grupare:

Entitati pentru observatii:

Entitati structurale ale UML Sunt partea cea mai “statica” a unui model

indiferenta daca acesta este la nivel fizic sauconceptual

Descriere logica:

Descriere specificatii:

Descriere proces:

Descriere implementatare:

Clasa O clasa: descrierea unui set de obiecte care au

in comun aceleasi atribute, operatii, relatii sisemantici

Pentru reprezentare se foloseste un dreptunghi

Professor

- name- employeeID : UniqueId- hireDate- s tatus

- discipline- maxLoad

+ submitFinalGrade()+ acceptCourseOffering()+ setMaxLoad()+ takeSabbatical()

Attribute

Operatii

OBIECTE

19

Diagrama de clase

Prezinta un set de clase, interfete si colaborariprecum si relatiile dintre acestea.

Ceas Simplu

Buton afisaj Baterie timp

Se observa ca are 2 (obiecte) butoane, un afisaj 2 baterii etc

2 1 2 1

1 1 1 1

Diagrame de tip clasă Atribute/metode

Atributele Nume Vizibilitate

(+)public – (-)private – (#)protected

Operaţiile/Metodele Nume Vizibilitate

21

Obiectul

UN obiect este o instanta a unei calse

Fiecare obiect apartine unei sinugure clase

In UML numele instantelor sunt subliniate

CatelulMeu:Catel

supercatelul:WebCatel

Catel

WebCatel

<<instanceOf>>

<<instanceOf>>

Tub

Piramida

Cub

Shape

DesenezMutScalezRotesc

<<interface>>

Realizarea legaturilor

Interfata O interfata este o colectie de operatii care

specifica serviciile unei clase sau componente

Tub

Piramida

Cub

Forma

DeseneazaMutaScaleazaRoteste

<<interface>>

Tub

Piramida

CubForma

Clasic

Reprezentarea interfetelor

Acadea

Colaborari In contextul arhitecturii sistemului o colaborare permite

crearea unei grupari care va contine atat aspecte statice cat siaspecte dinamice sub un nume comun

IesireIesire

25

Diagrame Use Case

Ceas de mana

Citeste ora

Potriveste ceasul

Schimba bateria

Utilizator ceasReparator ceasuri

26

ActoriModeleaza o entitate externa care comunica cu sistemul si pot fi

Utilizator

Sistem extern

Mediu fizic

27

Use Case

De obicei reprezinta o clasa de functionalitatioferite de sistem ca un sir de evenimente

Un caz de utilizare consta in

Nume unic

Actori implicati

Conditii initiale

Zirul de evenimente

Conditii de iesire

Necesitati speciale

28

Exemplu Use Case

Nume:Cumpara bilet ticket

Actor implicat:Pasager

Conditii initiale:Pasagerul sta in fata automatului de bilete.

Pasagerul are destuibani pentru a cumparabiletul.

Sir de evenimente1. Pasagerul specifica ruta dorita2. Automatul de bilete afiseazacostul calatoriei pe acea ruta3. Pasagerul insereaza cash saucard in automat (e presupune caeste disponibila suma necesara) 4. Automatul de bilete da rest (daca e cazul).5. Automatul de bilete da biletul.

29

Relatia <<extend>>

Pasager

Cumpara bilet

Nici o comanda

<<extend>>

Neschimbat

<<extend>>indisponibil

<<extend>>

Abandoneaza

<<extend>>

30

Relatia <<include>>

Pasager

Cumpara bilet simplu

Cumpara abonament

Nu am resr

<<extend>>

Abandoneazal

<<extend>>

<<include>>

Primeste banii

<<include>>

Clasa activa O clasa activa este acea clasa in care obiectele detin

mai multe procese sau fire de executie si ca atare pot initia un control al unei activitati.

Gestionare de evenimente

suspenda()

Goleste_tampon()

Componenta Este o parte modulara a proiectarii unui sistem care

ASCUNDE implementarea ei in spetele unui set de INTERFETE EXTERNE

OrdinDePlata

Diagrama de componente

component.java

ImageObserver

image.java

Arata organizarea precum si relatiile intre componentesoftware inclusiv cod sursa, cod obect sau cod executabil.

Aceste diagrame contin:

Componente pachet

Componente

Interfete

Relatii intre entitatile implicate

Diagrama de Componente

Diagrama de componente

Artefact

Reprezinta o parte fizica a sistemuluicare poate fi schimbata si contineinformatie la nivel fizic .

Security.dll

<<artifact>>

Nodul Reprezinta un element fizic care exista pe durata

executiei si reprezinta o resursa de calcul.

Nod #1

<<Nod>>

Diagrama de functionare/instalare (deployment) Prezinta configurarea in timpul executiei a nodurilor de calcul

precum si a componenentelor sistemului software care suntinstalate pe acestea

Diagrame de instalare

Entitati comportamentale ale UML Se mai numesc si “verbele” modelului

UML.

Reprezinta cea mai dinamica a acestuia

Interactiunea O interactiune reprezinta un comportament care

contine un set de mesaje schimbat intre un set de obiecte intr-un context particular asociat unui scopspecific.

afisaj()

Diagrama de Interactiune Prezinta o interactiune ce consta dintr-un set de

obiecte si relatiile intre ele inclusiv mesajeleschimbate intre acestea

Diagrama de secventa Diagrama de colaborare

43

Diagrame de secventa

Sunt foloste in faza analizei specificatiilor sistem

Pentru a clarifica/rafina descrierele de tip use-case

Pentru a gasi obiecte suplimentare (“participating objects”)

Mai sunt folosite si in cazul proiectarii sistemuluipentru a imbunatati interfetele subsistemelor

Diagrama de secventa

1: doSomething()

ObjectClient ObjectFurnizor

Mesaj

:Client :Furnizor

Control

Mesaj reflexiv

Durata de viataa Objectului

1.1: doAnotherthing()

Numarul secventei

Pune accentul pe ordinea in timp a mesajelor

45

Diagrama de secventa – pt Setare Timp

:Ceas Simplu

:Utilizator Ceas

:Ecran :Timp

apasButon1() Clipesc orele()

apasButon1() Clipesc Minutele()

apasButon2() incrementare Minute()

refresh()

ApasButon1 si 2() Memoreza noua setare()

Opreste clipitul()

Exemplu de mecanism de desenare in applet

: Thread : Toolkit : ComponentPeer

target : HelloWord

client

run( )run( )

callbackLoop( )

handleExpose( )paint( )

Diagrama de colaborare Pune in evidenta organizarea obiectelor care

participa intr-o interactiune

1: faCeva()

Object Client Object Furnizor

Mesaj

Legatura

:Client :Furnizor

Diagrama de colaborare

Diagrama de activitate

Stare initiala

Stare actiune

concurrent fork

concurrent join

Selectare site

Fa treaba cumpara

Expresie verificare[ inacceptabil ]

[ else ]

Calcul oferte

Terminaconstructia

Stare finala

decizie

50

Diagrame de stare

Descriu comportamentul unui obiect individual (e.g. un automat finit) care se refera la numarulfinit de stari prin care obiectul poate treceprecum si tranzitiile dintre acestea.

Starile sunt reprezentate prin oval-uri

51

Diagrame de stare

Ora Clipeste Incrementare Ore

Minutele Clipesc IncrementareMinute

Secondele Clipesc Incrementare SecundeOprire Clipire

Butonul 2 apasat

Butonul 2 apasat

Butonul 2 apasat

butoanele1&2 apasate

butoanele1&2 apasate

butoanele1&2 apasate

Butonul 1 apasat

Butonul 1 apasat

superstate

substate

add student /numStudents = numStudents + 1

Open

Unassigned

Assigned

H

add a professor

Closed

Cancelled

do: Send cancellation notices

Full

Committed

do: Generate class roster

closeRegistration

close

remove a professor

close[ numStudents < 3 ]

[ numStudents = 10 ]

closeRegistration[ numStudents >= 3 ]

close[ numStudents >= 3 ]

closeRegistration [ has Professor assigned ]

close

/ numStudents = 0

remove student / numStudents = numStudents - 1

cancelcancel

Diagrama de stare

53

Diagrame de activitate

O diagrama de activitate descrie sistemul in termende activitati

Acestea sunt prezentate ca stari care reprezintaexecutia unui set de operatii

54

Diagrame de activitate

Exemplu: Diagrama pentru gestiunea unui incident

Initiaza un nouraport pentruincidentul in curs

Rezervaresurse

Condu resurselepentru rezolvare

Document Incident

Inchide siarhiveaza raport

Gruparea entitati in UML Un pachet (package) este un mecanism de uz

general folosit pentru a organiza diverse entitati in grupuri

Reguli Economice(Business rules)

Pachete

Entitatile structurale, comportamentale si chiar alteentitati de grupare pot fi plasate ntr-un container

A(din pachet A)

B(din pachet B)

Relatie de dependenta

Pachet A Pachet B

Abstractii de baza

Applet

HelloWorld

Panel

Object

Component

Container

ImageObserver

applet

awt

lang

java

HelloWorld

Entitati aditionale - Note

Entitatile folosite in note si observati sunt o componenta explicativa a modelelor UML (cam cacometariile in cod) si pot avea orice grad de detalilerenecesar contextului (de la simpleremarci, clarificarisau chiar descrieri complete)

Una din acestea vafi executata

Relatii intre entitatile UML Exista patru tipuri de relatii in UML:

Asocierea Dependenta Generalizarea si Realizarea

Ce este asocierea?O relatie semantica dintre doua sau mai

multe clase care specifica legaturi intreinstantele lor

Curs

<<entity>>

Student

<<entity>>

Orar

<<entity>>

Profesor Universitate

AngajatorAngajat

Nume roluri

Lucreaza pentru

Associere

Numele asocierii

Asocierea - exempluclass CatalogueEntry {private string name;private int number;private double cost;public double getCost () {

return cost; }

}class Part {

private CatalogueEntry entry;

public double cost () {return entry.getCost();

}}

CatalogueEntry screw= new CatalogueEntry(“screw”, 28834, 0.02);

Part screw1 = new Part(screw) ;

screw1.cost();

: Part : Part

: CatalogueEntry

name = “screw”number = 28834cost = 0.02

Descrie Descrie

O legatura reprezinta o conexiune intre obiecte

O legatura specifica o cale de-a lungul careia acesta poatetrimite un mesaj catre alt obiect (sau catre el insusi)

Asocierea Este o relatie structurala care descrie un set de legaturi

: CatalogueEntry

name = “screw”number = 28834cost = 0.02

: PartClientcost()

Aflarea costului unuei parti

getCost()

Exemplu de asociere

CatalogueEntry

- name - number - cost

+ cost()

Part

+ getCost() 1*

O legatura poate fi vazuta si ca o instanta a uneiasocieri

Caracteristicile unei asocieri

Persoana Companienn

-angajator-angajat

treaba nn

Numele asocierii

Numele Rolurilor

Numele: descrie natura relatiei respective

Caracteristicile unei asocieri Navigare: In cazul unei asocieri de clase este posibila

“navigarea” din obiectele unei clase catre obiectele celeilalteclase

Multiplicitate reprezentare

2..4

0..1

1..*

0..*

1

*

2, 4..6

Universitate Profesor1 0..*

Multiplicitatea

Navigare

Nespecificat

Eaxct una

Zero sau maimulte (nelimitat)

Una sau maimulte

Zero sau unu

Cu interval specificat

Mai multe valoridiferite

Student/Masina Orar/Motor

Intreg

Agregare

Parte

Asociere - Agregare O forma speciala de asociere care modeleaza o

relatie intreg parte intre un agregat (un intreg) sipartile sale componente

Intreg

Composition

Parte

Asociere - Compunerea O forma de agregare cu o forma de proprietate

(partile nu pot exista fara intreg)

Student Schedule

Asocierea - Clase asociate In cazul asocierii intre doua clase chiar asocierea

poate avea ea insasi proprietati

Companie Persoana* 1..*

-angajator -angajat

Munca

-salariu

+ getSalariu()

Asociere - Asociere clase

Decizie de proiectare

Companie Persoana*1..*Munca

-salariu

+ getSalariu()

1 1

Companie Persoana* 1..*

-angajator -angajat

Munca

-salariu

+ getSalariu()

Asociere - autoasociere

Curs

Materii pregatitoare

0..*

Scoala

Student

1..n

n

1..n

n

membru

Curs

nn

Participa Profesor1..nn 1..nn

prezentat

Departmente

1 1..n1

are

1..n

1..n1..n

1..n

1..n

Asignat la

0..10..1

0..1

-sef

Associere - Exemplu

Client Furnizor

Pachet

PachetClient PachetFurnizor

Client Furnizor

Clasa

Relatie de dependenta

Relatie de dependenta

Componenta

Dependenta O relatie intre doua elemente unde o schimbare

asupra unuia dintre ele s-ar putea sa cauzeze o modificare si in celalalt

Dependenta– Exemplu

Profesor Curs

class Profesor {public void preda(Curs c) { ……..}

……………..}

class Profesor {public void preda() { Curs c = new Curs(); ……..}

……………..}

Generalizare Se referea la o relatie intre clase in care o clasa

are comun structura sau / si comportamentuluneia sau mai multor clase

Angajat

ManagerInginer

Relatie de generalizare

Account

balancenamenumber

Withdraw()CreateStatement()

Checking

Withdraw()

Savings

GetInterest()Withdraw()

Super-clasa(parinte)

Sub-clase

Relatiegeneralizare

Stramos

Descendenti

Mostenire simpla O clasa mosteneste de la alta

Aeroplan Elicopter Lupf Cal

Zburatoare Animal

Pasare

Mostenire multipla

Mostenire multipla O clasa poate mosteni caracteristici de la mai

multe clase simultan

Realizarea UN clsificator care reprezinta un contract pe care

alt clasificator se obliga sa il indeplineasca

Shape

Tub

Piramida

Cub

Shape

draw()move()scale()rotate()

<<Interface>>

Tub

Piramida

Cub

ReprezentareCanonica(reprezentarestandard cu clase)

Reprezentareeliptica/iconica(“lollipop”)

Relatie de Realizare

Realizare

Circle

Shape

interface Shape {public void draw() ;

}

class Circle implements Shape {public void draw() {…..}

……}

class Shape {

public:virtual void draw() = 0 ;

};

class Circle : public Shape {

public:

void draw() {…..}……

};

UML jokes