Sunteți pe pagina 1din 42

Analiza

Proiectarea
Implementare
Testare
Parcurgereaincascada(waterflow) 1.
Necesitateareluariicompleteincazulunordefectemajore. -
Poateconducelacrestereatimpuluiderealizare -
Esteunriscfoartemare. -
Dezavantaje:
Pentruscaderearisculuisaugandittotfeluldealtecombinatiiptparcurgereaetapelordedezvoltare.
Analiza
Proiectare
Implementare
Testare
Parcurgereainspirala 2.
abordarepeversiuni
separcurgintrunmodcarelelasaincomplete
vorficompletatelaonouatrecere
versiunileincompletereprezintabazeledezvoltarii
urmatoruluiniveldeparcurgere
oastfeldeabordarescaderisculdeaaveatimpmarede
realizare(riscdepiata)
peparcurssepotinsusiitehnicinoi
Parcurgereaincrementala(incremental) 2.
modelul:RUP>Rationalunifiedprocess(procesderealizareunficata)(folosindtoolsetulRelationalRod)
Intiere(Inception) Elaborare
Constructie
Migrare
Faze:
Fiecarefazapoatecontinemaimulteiteratii(unnumaroarecare)
Fiecareiteratiecontinetoatecele4etapeprezentatemaisus
Iteratii:
definireascopuluiproiectului
Fazadeinitiere
stabilestemoduldeabordare(obiectorientatasaucomponentorientata)
seincearcalimitarea(excluderea)zonelorderisc
Fazadeelaborare
proiectareadetaliatasiimplementareaaplicatiei
Fazadeconstructie
accentulsepunepetrecereadelaprodusulinstaredeprototipla
inglobarealautilizator.Accentulsepunepe testare
Fazademigratie
APOOCurs1
20martie2007
20:57
APOO Curs Page 1
AnalizasiproiectareaObiectOrientatacamodalitatedesistematizare
adezvoltariisoftware
permitedezvoltareaaplicatiilor>colectiideclasesiobiecte
obiectelecolaboareazaintreele>suntinstantealeclaselor
claselesuntmembrealeuneiierarhiideclase(prinmostenire)
Modelulobiect : -
Caracteristicifundamentale:
Nuesteproprienumaimodeluluiobiectdaresteobligatorieptmodelulobiect. i.
>fiecareclasainglobeazaatributelecelemairelevante
Prinabstractizaresedefinescclasele >tipuridedate(tipuriabstracte) ii.
Abstractizarea 1.
Moduleletrebuiesafie"slabcuplate" 1)
Abordareaprincareaplicatiaseimparteinmodule i.
InOOmodulelecontinclasesiobiecte ii.
NuestespecificaOOdar(obligatorie)recomandabila iii.
Modularitate 2.
Clasedebaza 1)
Clasederivate 2)
Proprietateaprincaresepotdefiniiierarhiideclase i.
Specializare porninddelaoclasadebazasidefinindclasespecializate>mostenesc
caracteregeneraledinclasadebazasiausipropriullorspecific
1)
Generalizare proninddelamaimulteclaseoarecumcorelate(indrudite)seextrag
caracteristicilecomune>sefolosescptadefiniioclasadebaza
2)
Sepoatefaceprin2procese: ii.
Mostenirea 3.
Multimeaatributelor(datemembrealeclasei) a)
Implementareametodelor b)
Structura 1)
Comportarea datadeceeacesenumesteinterfataclasei>asiguralegaturacuext. 2)
Multimeametodelorpublicealeclasei prototipurile
Asiguracaoclasasafieimpartitain2parti i.
Permitereutilizareacodului ii.
Permitemodificariindependenteindiferitelemodule iii.
Float x; // datele membre sa fie de tip private
Float y;
Class punct{
Punct(float a, float b); // constructor
Float getx();// functii de tip getter
Float gety();// citesc variabile private (f selector)
Void setx(float a);// modifica valuarea datelor membre
Void sety(float b);// f modificator sau de tip setter
Public:
Exmeplu:
Incapsulareasiascundereaimplementarii 4.
Modelulobiectconstituieoviziuneintegratoareinproiectareamaimultorsisteme(hardware,
arhitectura,etc).Acestlucrucontineounificareacaracteristicilor.
APOO Curs Page 2
Void translate(folat a, float b);
}
Punct::Punct(float a, float b)//constructor
X = a; y = b;
{
}
Return x;
Puncg::getx(){
}
Fiecareobiect=instantauneiclasereprezintaocolectiedevalorialeatributelorclasei
(general)
iv.
Programareprocedurala dificildeimplementat 1)
ProgramareaOO incapsulareaesterecomandatasilimbajeleoferasuportptaceasta
proprietat(nerespectareaesteposibiladarpotsaaparaproblemedesigurantaa
utilizariiobiectelor).
2)
Programareaorientatapecomponente incapsulareaesteobligatorie 3)
Tehnologiiledecomponentesoftteobligasaaiseparatiecompletaintreinterfatasi
implementare
Secomportainmoduridiferiteinfunctiedetipuldeabordarealprogramarii v.
Caracteristicisecundare:
Slabtipizate:smaltalk(C) permitoricefeldecombinatiiintreobiecte. i.
Puternictipizate:Eifel,Java,C# ii.
Mediutipizat:C++ iii.
Tipizarea =regulileprincaresepotcombinasaudeconversiiintrediferitetipuridedatedintrun
limbaj
1.
Persistenta =capacitateadestocarepermanentaadatelorcreateintrunprogram.Exista
posibilitateacaacestedatesasupravietuiascaprogramului.Serializare
2.
Concurenta=seintelegeposibilitateadeexecutieconcomitenta(simultana)amaimultorobiecte
dinaceeasiclasasauclasediferite.Arelocnumaidacaavemdeafacecuuncalculatorparalelsau
sistemdistribuit(reala).(simulata:threaduri).
3.
APOO Curs Page 3
Caracteristicilemodeluluiobiect
Abstractizarea a.
Modularitatea b.
Mostenirea c.
Incapsularea d.
Caracteristicifundamentale 1. Clase:
Structura:datemodul+impl.Modul -
Comportarea:interfata=metdeprotectie,functiipublic -
Fiecareobiect=instantaaclasei obiectecuvaloaredeatributaclasei??
Principiulincapsulariisialascunderiiimplementariisecompolrtainmoduridiferiteinfunctiedetipulde
abordarealprogramarii:
Pentruprogramareaprocedurala,aceastaproprietateestedificildeimplementat -
Nerespectareaacesteiproprietatiesteposibiladarpotsaaparaproblemedesigurantaautilizarii
obiectielor.

PentruprogramareaOO,incapsulareaesterecomandatasilimbajeleOOoferasuportpentruaceasta
proprietate(specificatoridiferiti,dateseparate,etc.)
-
Tehnologiiledecomponentesoftwareteobligasaaiseparatiecompletaintreinterfatasi
implementare

Progamareaorientatapecomponente incapsulareaesteobligatorie -
Limbajeslabtipizate:Smaltalkcarepermiteoricefeldecombinatiiintreobiecte
(programatorultrebuiesaaibagrija)
i.
Limbajeputrenictipizate:Eifell,Java,C# ii.
Limbajemediutipizate:C++ iii.
Tipizarea sereferalaregulileprincaresepotcombinainexpresiisaudeconversiiintrediferite
tipuridedatedintrunlimbaj moduldeconversieeprecizatprincaracteristiciledetipizare
(tipizareasereferalatipui,tipurile=clase=>tipzareasereferalaclase)
a.
Persistenta=capacitateadestocarepermanentaadatelorcreeateintrunprogram datele
creeateintrunprogramsasupravietuiascaprogramului;"serializateadatelor"=datelesunt
transformateinsecventedeocteti,suntscrisesiramanacolocandseterminaprogramul.Lao
nouaexecutieelepotfiutilizate.
b.
ConcurentarelativalamodelulOO=posibilitateadeexecutieconcomitentaamaimultorobiecte
dinaceeasiclasasauclasediferite.Concurentaaparelacalcualtoareparalelesausisteme
distribuite.
c.
Caracteristicisecundare modelobiect: 2.
Analiza,proiectarea,programareaObiectOrientata
Aplicareaproprietatiilorsiaconceptelormodeluluiobiectinacesteetapededezvoltareasoftware.
principiulprincareseslecteazacaracteristicilerelevantealerealitatiimodelate i.
Entitatile>tipdeentitate< clasa
Identificareaclaselorcarevorconstituiiprogramul ii.
Oentitatereprezintaoriceexistainrealitateamodelata
Multimeaentitatilordeacelastipreprezintamultimeaobiectelorinstantealeclasei
respective;
Analizacerintelorrespectaprincipiulgeneraldeabstractizare: a.
AnalizaOO 1.
APOOCurs2
20martie2007
20:55
APOO Curs Page 4
Detaliereaclaselor,obiectelorsilegaturilordintreacesteapebazacerintelorstabiliteinfazade
analiza
a.
Sestabilescmoduleleproiectuluiintroabordare;IntroabordareOO,unmodulesteocolectiede
clase
b.
Sestabilesctehnologiilederealizare>platforma,SO,hardware,limbajesialtestandarde
(biblioteci,etc.)
c.
ProiectareOO 2.
Programarea folosesteunlimbajOO toolseturi,biblioteci a.
Sescriuprogramele b.
ImplementareaOO(programarea) 3.
TestareaOO sefolosescclasegata testatedinbiblioteci 4.
Avantajeleabordariiobiectorientateadezvoltariisoftwareului
Reutilizabilitatecodului sefolosescbibliotecideclase 1)
Extensibilitateacodului sefolosescclasederivate dinclaseledinbilioteci 2)
Existentaincapsularii accesareainmodunitarprininterfataaobiectelor a.
Seimpunmecanismedetratareaexceptiilormaiprecisedecatinaltelimbaje b.
Mentenantaaplicatiilorobiectorientate=intretinereabuneifunctionariaaplicatiiloremaisimplainOO
din2motive:
3)
LimitarileabordariiOO
Saconstatatcatotusiclaselesuntpreamicisipreaspeciale a.
Bibliotecideuzgeneralaufunctionalitatelimitata.MFC(MicrosoftFoundationClases)a
reprezentatbazadezvoltariiprogramelorWindowsinC++.
b.
LainceputsecredeacaOOvarezolvaproblemareutilizabilitatiicodului.Inrealitateaavemdoaro
reutilizabilitatelimitateacodului.
1.
Interoperabilitatealimitata;interoperabilitate=posibilitateadeaoperaimpreunaadiferitelorclasesi
obiecte.Eaestelimitatadatoritafaptuluicabibliotecilesuntcudestinatiilimitatelarandullor.Ex:
claselesipakageurilejavacomunicagreucuclaseleC++.
2.
Tendintelededezvoltaresoftware
Scop:Eliminarea(micsoararea)limitarilorOO.
Reutilizabilitatii eacrestedatoritafaptuluicacomponentelesuntmaimaridecatclasele
Interoperabilitatii crestedatoritastandardelorimpusesidatoritafaptuluicaorice
componentacontineointerfata.Eapoatefiifolositadecimaicomodinprogramare.

beneficiazadestandardegeneralecarepermitobtinerea
Softwareorientatpecomponente -
DezvoltareaprogramelorfolosindmodelareUML
Moduldedezvoltaresoft;sefolosecmodele(conceptecaresintetizeazaabstractizaredinrealitate
pentruunanumitscopsioanumitautilizare).Modelelesepotdezvoltainlimbajedemodelare
-
Anii1990 zecidelimbajediferite,fiecarepropunandunanumitmoddereprezentareaprogramelor. -
Unificareaprinstandardizareaproiectariisoftafostocerintainerenta -
GradyBookh 1994ObjectOrientedAnalisysandDesign limbajG.B -
JamesRumbourgh OMT(ObjectModelingTehnology) -
IvanJacobson OOSE(ObjectOrientedmodelinglanguage) -
Inanul19953cercetatoriauunificatcele3limbajedefinitedeei
APOO Curs Page 5
In1997limbajulUMLafostpreluatdeOMG(ObjectManagementGroup)(www.omg.org)siaudat
primulstandardsispecificareUML1.1.Actualmentesaajunslaversiunea2.1.1
LimbajulUML
Esteunlimbajpentrudezvoltare,specificare,documentaresivizualizareaproduselorsoftware.
UMLesteunlimbajgrafic;elementelesalesuntelemetedegrafica2Dsiacesteelementesuntprocedee
carespecificadiverseleaspectealeprodusuluisoftware.

Toateelementelesuntinsotitedetexte
LimbajulUMLtrebuiesaajutedezvoltatoriisailfoloseascasidecidefinesteconceptealelimbajului,
semantica(intelesuldiverselorelemente),precizeazanotatii(ex:conceptuldeclasificatorsenoteaza
asa...)sideasemeneaoferasolutiisaurecomandarideproiectare(patternuri,tipare)

CaracteristicilelimbajuluiUML
LimbajulumlinseamnaUNIFICARE+FLEXIBILITATE
Integreazacelemaibunepractici.
Ex:ulteriorsauinglobatcomponentelesoftware.
Integrareacontinuaprinadaugarealadiferitelereviziiaunoaspectenoideproiectaresoftware.
Unificarea inmodalitatilededezvoltaresoftware
Poatefiutilizatsiinalteabordarideoarececonceptelepecareledefinesteauuncaractermai
generaldecatmodelulobiect.

Folosestemodelulobiectcabazaaabordariiproiectariisoftware.
Specificari;fiecarespecificarecorespundeunuiaspectsifiecareaspectmaimultorvederi
Analisti
Proiectanti
Colaborareamaimultorcategoriidepersonal
Sistemelesoftwarecomplexenupotsafiereprezentatesinecesita:
Limbajulfolosestetipuridedate(incluseinelemetelegrafice) independentedelimbajelede
programareexistenta(DefinesteRealsauIntegerfarasafacaoprecizarestrictaalegaturiicuaceste
tipuridinlimbajeledeprogramareexistente.Admitesitipurialelimbajelor FLEXIBILITATE).
FlexibilitateaestesimaiputernicrelevatadefaptulcalimbajulUMLofereaomultitudinedevederiale
sistemuluisoftware(views).Aceleasisistempoatefiiprivitdinmaimultepunctedevedere,aspecte
modelatesiapoidezvoltate.

Diagramelordefunctionare(usecase).AcesteaaufostpreluatedinOOSEalluiJacobson servesc
managerilor
-
Diagramealecomponentelor
Diagramededeployment sereferalainstalareadiverselorparti(deployment?=
desfasurare)

Diagramelefizice -
Diagramedepachete
Diagramedesubsisteme
Diagramealemodelelor
Diagramedeorganizareasistemuluisoftware -
Fiecarecategoriedepersonaldedezvoltarefolosestediferitevederi(diagrame)infunctiedeatributile
fiecaruia
Acelasielementpoatesafiereprezentatinmaimultemoduridelafoartegeneralpanalafoarte
detaliat.
-
LimbajulUMLpoatefifolositintoateetapenededezvoltare.Infazadeanalizaavemelemente
reprezentatesimplificatajungandinfazeledetestaresiimplementarepanalareprezentarea
detaliataaaceluiaselement
-
LimbajulUMLoferaposibilitateadefiniriipediferitegradededetaliere.
PentrulimbajulUMLsaudezvoltatnumeoasetoolseturiinfunctiedenecesitatisispecificatii.Important
estecauntoolsetnurespectaintrutotulspecificatiilestandardalelimbajului.
APOO Curs Page 6
Structurasereferalapartilecomponentealeunuisistem;arhitecturaunuisistemesereferalapartile
componentesilegaturile(interfata)dintreele.
Reprezentareastructuralaaunuisistemsoftware partilecomponente -
Innoduriavemclase
ArcelereprezintalegaturileUML
Estereprezentatprintrungraf i.
Capteazainformatiistaticealemodelului. ii.
Diagramaclaseloresteunmodelstructuralalunuisistem 1)
suntreprezentateobiecteleinUML.Obiectelesuntinstantealeclaselor. i.
Esteoreprezentarelaunmomentdat(obiecteleaucomportaredinamica) ii.
Utilitaterestransa iii.
Diagramaobiectelor: 2)
Diagramaclaselorsidiagramaobiectelor. -
OBS:
Sepotcombinacele2tipuridediagrame!(clase+obiecte).Reprezentareasefaceinfunctiede
necesitati.
1.
Maiexistasialtediagramestructurale:diagramacomponenteleor (sotfware) 2.
Elementelestructuralealediagrameiclaselor
InUML,unclasificator(classifier)esteunelementstructuralcarereprezintaunconceptdemodelare
carereunesteelementedestructura,elementedecomportaresielementesemantice.
Clasa(class) -
Tipdedate(type) -
Interfata -
Existamaimultecategoriideclasificatori:
OclasainUMLreprezintaomultimedeelementedeaceealsitipcaresuntcaracterizateprinstructura
datadeatribute,comportareadataprinmetodesipentrucaresepoateidentificaunintelesprecis
(caracterulsemantic)
UML
Class
atribut
OO
Class
atribut
Principiulincapsulaiitransformaclasainstructuracuatribute+implementaresicomportaredatade
atributelemetodelorpublice interfataclasei.
OclasaindefdinUMLcorespundeuneiclasedinOO.Eacorespundeunuitipdeentitatesauunei
multimideentitiati.AtributulentitatiicorespundeatributuluidinUML.
DesidefinitileUMLsuntmaigenerale,inanumitesituatiiseobservaofoartebunaechivalarecu
notiunilecunoscutedinprogramareaOO.
Numeleclasei(obligatoriu)
Unstereotip
Numeleclasei+altespecificatii(compartimentobligatoriu)
3compartimentealeunuidreptunghi -
ReprezentareainUML:
Modelareastructurala
APOOCurs3
13martie2007
10:05
APOO Curs Page 7
Constrangerile
(stereotipulsiconstrangerilesuntfacultative)
Tipgeneric(UML)
SpecificlimbajelorOO
Numeatribut tipatribut:
Indicatordevizibilitate
"+" public
"" private
"#" protected
Compartimetuldeatribute(optional)
Numemetoda(obligatoriu)
Indicevizibilitate
Tipreturnat
Compartimentuldemetode(optional)
Clasareprezintaformaimplicitaaunuiclasificator -
Typesiinterfatanecesitastereotipurideprecizareaclasificatorului. -
Interfataesteocolectiedemetode(3modalitatidereprezentare) -
Persoana
Persoana
Persoana
Nume:String
Varsta:integer
adresa:string
+Setnume:void
+Getnume:string
+setNume:string
Nota
legatura
<<type>>
Dimensiune
Stereotipptstructura
<<interface>>
Itranzaction
Itranzaction
+begin():void
+commit():void
+abort():void
<<interface>>
OcomponentasoftwareinUMLeoextindereaclasificatorilor
Pentruclasemaiaparsiconstrangeri
Claseparametrizate(clasetemplate).Oclasatemplateeoclasacaredefinesteocomportareunica
pentrutipuridiferitededate.Tipuldateiesteunparametru.Incazulstivei,tipulLIFOreprezintaun
parametru:
2.
Componente
software
Itranzaction
Forma
{abstract] Clasaabstracta
Tstiva
E
element[n]:E
dim:integer
poz:integer
+push():void
+pop():E
Clasificatoriicudiverseleconstrangerireprezintaelementedestructuradindiagramastructurala.
Elementedelegatura(dindiagramaclaselor)
Esteunelementcarerealizeazaocorespondenta(legatura)intreclasificatorisialteelemente) -
Linieintrerupta
Sageti
Diversetextepeliniesaulacapete
Elementrulsereprezntaprinunulsaumaimultesegmentededreapta+diferitemarcaje(acestea
depinddetipullegaturii):
-
Generalizarea(generalization)
Asocierea(asociation)
Depndentele(dependecies)
Altelegaturi
TipuridelegaturiUML: -
APOO Curs Page 8
Generalizarea: 1.
Estelegaturadintre2clasificatoriincareunclasificatornumitfiumostenestecaracteristicile
clasificatoruluinumitparintesiadauganoicaracterespecificeacestuia.Generalizareaestedecilegata
deMOSTENIRE.
-
vehicul
automobil tractor bicicleta
generalizare
Reprezentarealegaturii:
Sageatacontinua
Sepotdefiniiierarhiideclasepeoricateniveluri.
Sepoatedefiniioierarhieprintrunprocedeuinvers(prinspecializare).Specializareaeoperatiainversa
princaresepleacadelaoclasacucaractergeneralsisemergespreclasemaispecializate(existasuport
inlimbajeleOOpentrumosteniresidecinusemaifacspecificariinUML)
-
Legaturadeasociere 2.
Prinasociereserealizeazacorespondente(legaturi)intreelementelediferitilorclasificatori. -
InUMLunobiectesteoinstantaauneiclase(clasificator).Nuexistasuportspecificpentruasocierein
limbajeleOO.Sefolosescdiferitemecanismecaresaasigureasocierea.
Clasificarialeasocierilor:
2clasificatori asocieribinare a.
>2clasificatori asocierimultiple;nare>potfirestranseinasocieribinare b.
Dinpunctdevederealnumaruluideclase(clasificatori)pusiincorespondenta: I.
Dinpunctdevederealraportuluidecardinalitate II.
Asocierisimple a.
Asocieridetipparteintreg(intregparte??) b.
Dinpunctdevederesemantic(alintelesului).Dinpunctdevederesemanticexista: III.
Clasificareadinpunctdevederealraportuluidecardinalitate II.
Asocieridetipunullaunu1:1.Elereprezintaasociereaprincareunuielementdinprimamultimeii
corespundeunsingurelementdina2amultimea.
1)
Asociereaunullamaimulti1:N.Asociereaprincareunuielemdinprimamultimeiicorespundmai
multeelementedina2amultimedarnusiinvers
2)
Asociereamultilamulti 3)
APOO Curs Page 9
x
x
x
y
y
y
x
x
y
y
y
y
Princardinalitatesaumultiplicitateseintelegenumaruldeelementeauneiasocierifatadeunuldin
clasificatori(saumultimedeelemente)esteegalacunumaruldeelementedinacelclasificatorcarepot
fiilegatelaunelementdincelalalatclasificator
Raportuldemultiplicitate criteriudeclasificare.
Asocierilemultiplesereprezintaprinmaimulterapoartedecardinalitatesaudemultiplicitate. -
Reprezentareaasocierilor:asocierileinumlsereprezintaprinunulsaumaimultesegmentecontiunue,
intreclasificator(asocieribinare)
-
x
x
x
y
y
y
y
1:1
1:N
M:N
Class1 Class2
Numeleasocierii(facultativ) a.
min...max i.
01
1val
Multiplicitatilefatadefiecareclasificator.Sescriulacapatulliniei.Conceptulamavut1:1,1:N,
M:N;InUML:
b.
Rol rolulclasificatoruluiinasocierearespectiva(sereprezintatotlacapete) c.
Navigabilitatea posibilitateadeaajungedelaunelementdintroclasaincealalata.Eapoatesa
fieunidirectionalasisereprezintacuosageata.Eapoatesafiebidirectionalasauneprecizata.
d.
MarcajepeasocierilebinareUML
Exempledeasociere:
1:N(generic) a)
Rolnumeasocrol
0...11...*
Intreprindere Persoana
1...11...*
Angajatorangajariangajat
APOO Curs Page 10
Dacaseimpuneconditiacaopersoanasalucrezeintrosingurainntreprindere asociereaeste1:N.Se
potdamaimultevariantedemultiplicitateinfunctiedediferiteleprecizarialemodelului
M:N b)
Profesor Student
**
1...101...1000
Asocierilemultiple.Elesereprezintafolosindunrombculinii c)
Clasificareadinpunctdevederesemanticaasocierilor:
Asocierisimple=asocieriincareelementeleasociateauexistentaproprie,independentdeasocieresi
deelementeledinclasificatorulcucarearelocasocierea.
1)
Asocieridetipcompozitie a.
Asocieridetipagregare b.
Asocieriledetipintregpartesuntasocierile(ingeneralbinare)incareexistaunclasificatorcurolde
intregsiunulsaumaimulticlasificatoricuroldeparte(parti)[general].Potexistasi2saumaimulti
clasificatoriintregfiecarecu2saumaimulticlasificatoridetipparte.
2)
APOO Curs Page 11
ReprezentareUML
Masina
CaroserieMotorRoata
Legaturadecompozitieesteceamaiputernicalegaturadeasocieredinceleexistente.
Legaturadeagregare 2)
Estelegaturacarestabilestecorespondentaintregrupurideinstantealeclasificatorilorasociati. -
Grup
Membriiaigrupurilor
Clasificatoricarereprezinta: -
EstedereguladetipulM:Ndarpoatefiisi1:N(cazparticular)
Oinstantaaclasificatoruluigrupcarereprezintaunintregpoateexistasifaramembriisai.
Oinstantaaclasificatoruluipoatefiiasociatamaimultorgrupuri
Legaturaestederegulaomogena.
Caracteristici: -
114
Club
Persoana
M:N
0...*
0...*
Legaturideasociere
Auabordarimaiputinfixe(precizate)(fiecarelimbajaretoolseturiproprii -
Simple
Tipintregparte
LanivelUMLavemasocieri -
Rapoartedemultiplicitate:1:1;1:N;M:N;
I asocierisimple>clasificatoredesinestatator;potexistaasocieri;esteceamaislabainsensul
legaturiicareexistaintrecei2clasificatori
Compozitie a.
Agregare b.
Asociereadetipintregparte I.
Legaturiintreclasificatoridintrecareunclasificatorareroluldeintreg(exprimaoentitatecomplexa)si
unasaumaimulteentitaticomplexecarereprezintapartialeintregului
-
Potaveaunulsaumaimulticlasificatoricuroldeintreg -
Obiectuldetipintregestecompusdinobiectedetipparte a.
Deregulaobiectuldetipintregnupoateexistafaraobiecteledetipparte b.
(deregula)unobiectparteapartineunuisingurobiectintreg(launmomentdat) c.
Este(ingeneral)heterogena(existaclasificatoridiferiticaparticeintraincombinatiepentrua
formaintregul)
d.
Compozitie>areurmatoarelecaracteristici: 1)
APOOCurs4
20martie2007
10:20
APOO Curs Page 12
Padure
Copac
1:N
1
0...*
Clasificareauneiasocieri>depindedeinterpretareadatadedezvoltator
Legaturilededependenta
Dependentelepotsafiedemaimultefeluri.Eaestelegaturaprincareunclasificatornumitclient
depindedeunaltclasificatornumittarget(supplier)
-
ClientFurnizor
Tipuridedependenta:
Folosimobiectedinclasafurnizorinimplementaridemetode a.
Inargumentealemetodeiclaseiclient b.
Legaturadeutilizare(stereotip<<uses>>) 1)
Clasificatorultemplate>clasificatorultipuluidedatefolosit a.
Legaturidecoeziune. 2)
Clasa1Clasa2
uses
Cl.Template Cl.Tip<=> Template
tip
Intreclasificatoricarereprezintaacelasiconceptpeniveluridedezvoltarediferite a.
Preprezintaevolutiasoftdinpunctdevederealversiunii
Legaturadetrasare(stereotip<<trace>>) 3)
Legaturarafine(stereotip<<reffine>>) 4)
Poatefiilegaturaintreinterfatasiclasa a.
Poatefiilegaturadeinstantiereinreclasasiobiectuldinaceaclasa b.
Legaturaderealizare.Easereferalafaptulcaunanumitconceptestespecificatprinintremediulaltui
conceptsauinstanta.
5)
<<Interface>>
Cl d ifi
<<realizare>>
Reprezentarealeternativa:
<<interface>>
Interfata1
Clasa1
APOO Curs Page 13
Clasadespecificare
<<realizare>>
Interfata1
Clasadespecificare
Obiect1
Obiectesidiagramealeobiectelor
InUML,unobiectesteoinstantaauneiclase -
Reprezentare: -
Punct
x:float
y:float
getx():float
...
P1:Punct
x:float=1
y:float=1
Graf,obiectelaunmomentdat -
Legaturiledintreobiecte:instantealelegaturiidinclaseleinstantiate -
Diagramaobiectelor:
Diagramaobiecteloresteconsiderataunsnapshot.Decelemaimulteorieaesteinlocuitacualte
diagrame.
Ex:
ProfesorStudent
p1
p2
p3
s1
s2
s3
Diagramaobiectelorpoatecontinesiclase!
Exemplu diagramaclaselor.(Elenutrebuiesafiedetaliate)
APOO Curs Page 14
P1
Cerc
-End9
1
-End10
*
Class1
Class2
S1
-End11
1
-End12
*
-End13
1
-End14
*
Implementareaclaselorsialegaturilordintreelemente
Scriereaprogramuluiintrunlimbajobiectorientat. -
DetaliereadiagramelorUML -
Scriereaprogramelor implementareaaplicatiilorsoftinmodelulOOporninddelaUML I.
Class(UML)>class(OO)
<<interface>>>infunctiedelimbajuneiinterfeteiicorespundetotoclasasautipulinterface
Implementareaclaselor: 1)
LegaturadegeneralizatedevinelegaturademostenireinlimbajeOO a.
Int r;
Int g;
Int b;
Class Culoare{
Public:...};
Float x;
Float y;
Class punct{
Public:....};
Culoare culoare;
....
Class forma{ //clasa abstracta deoarece contine functii virtuale pure
Virtual float aria()=0;
Virtual float perimetru()=0; //functii virtuale pure
Public:
Punct centru;
Float raza;
Class cerc:public forma{
Int intersectie(segment s);
..... };
Public:
Punct p1;
Class segment:public forma{
Implementarealegaturilorditreclase. 2)
APOO Curs Page 15
Punct p2;
Public:.... };
Punct varfuri [max];
Int nr_varfuri;
Class poligon:public forma{
Public:.... };
Obiecteincluseinclasaintreg a)
Pointerisaureferintelaobiectedinclasaparte:inJavasuntnumaireferinte,in
C#deregulareferinteiarinC++putemaveaambele
b)
Variabiledetipulclasei"parte" 1)
Asocieriledecompozitie compunereaclaselor i.
Implementarealegaturilordeasociere b.
Diagramaclaselormaidetaliate(inetapadeimplementare)
APOO Curs Page 16
Implementareaclaselor(UML)sialegaturilordintreacestea
Clasa(UML)>clasainlimbajOO
Generalizarea(UML)>clasederivateinlimbajeOO -
Compozitia>obiectecadatemembredeclasesaureferintelaobiecte
Variabiledeasociere
Clasedeasociere
Simpla,deagregare
Asocierea(UML) -
Legaturiledintreclase:
Variabiledeasociere I.
Ex:
#define max 100
Class Student;
Char *nume;
Student *lista_studenti[max];
Int nr_studenti;
//ultimele 2 informatii reprezinta variabila de asociere care poate fii o lista
//inlantuita sau o alta structura de date cu o asemenea legatura. Variabila se
//numeste variabila de asociere
New char[strlen(n)+1};
strcopy (nume, n);
nr_studenti=0;
}
Profesor (char *n){
void addStudent(Student *s){
lista_studenti[nr_studenti]=s;;
nr_studenti++;}
if(nr_studenti<max){
else {tratare eroare depasire}
}
//presupunem ca lista este de tipul LIFO; presupunem ca nr_studenti este
//prima locatie libera
nr_studenti....
}
if(nr_studenti>0){
else{tratare eroare depasire}
}
void getStudent(){
public:
Class Profesor{
Char *nume;
Profesor *lista_profesori[max]; //pot fii si referinte
Int nr_profesori;
//Variabila de asociere care permite directia de navigabilitate student ---->
//profesor
public:
nume=new char[strlen(n)+1];
strcopy(nume,n);
nr_profesori=0;
}
Student(char *n){
//functii de asociere
lista_profesori[nr_profesori]=p;
nr_profesori++
if(nr_profesor<max)
else{eroare}
}
void add_Profesor(Profesor *p){
Class Student{
APOOCurs5
27martie2007
10:08
APOO Curs Page 17
if (nr_profesori>0){
nr_profesori--;
return lista_profesori;
}
else{.........}
}
Profesor *getProfesor()
int main(){
profesor *p1=new Profesor("prof1");
profesor *p2=new Profesor("prof2");
profesor *p3=new Profesor("prof3");
Student *s1=new Student("stud1");
Student *s2=new Student("stud2");
Student *s3=new Student("stud3");
Student *s4=new Student("stud4");
//Obiectele sunt de sine statatoare; Asocierea se face folosind diverse metore ale
//claselor
p1 : Profesor
p2 : Profesor
p3 : Profesor
s1 : Student
s2 : Student
s3 : Student
s4 : Student
-End3
*
-End4
*
-End5
*
-End6
*
-End7 *
-End8
*
-End9
*
-End10
* -End11
*
-End12
* -End13
*
-End14
* -End15
*
-End16
*
FiecarelegaturaestecreeatadeaddStudentsiaddProfesorlafiecareobiectinparte
OBS:
ExempluldemaisusreprezintaoasocieresimplaM:Nbidirectionala.Faptulcaeasocieresimplanu
diferadesituatiaincareamaveaoagregare.
Directionalitateaasocierii>dacaestebidirectionalaavemvariabiledeasociereinambeleclase.Daca
esteunidirectionala,atunciavemnevoiedeovariabiladeasocierenumaiinclasadeorigineasagetiide
navigabilitate.
Variabileledeasocieresuntderegulavectoridepointerilaclasaasociata(saureferinte).Putemavea
listeinlantuitesauoricealtestructuri.
M:N>sefolosescvectoridepointeriinambeleclase(exempluldat) a)
1:N>inclasacarearecoeficientuldemultiplicitate1avemunvectordepointerisiina2a
clasaavemunpointersimplu.
b)
class Sectie;
Dinpunctevederealraportuluidemultiplicitate:
APOO Curs Page 18
char *nume;
Sectie *s;
....
};
class Angajat{
char *nume;
Angajati *lista_angajati[max]
int nr_angajati;
....
};
class Sectie{
1:1>variabileledeasocieresuntpointeri c)
SefolosescingeneralpentruM:N -
Clasedeasociere
Implementare:
#definemax100
char *nume;
class Profesor{
public:....
}
char *nume;
class Student{
public:....
}
pointer *Profesor;
pointer *Student;
p=p1;
s=s1;
}
PS(Profesor *p1, Student *s1){
};
struct PS{
PS asocieri[max];//existenta a mai multor pointei pe fiecare element permite
//accesul sau din mai multe directii
int nr_asocieri;
class APS{ //clasa de asociere
APS(){nr_asocieri=0;)
void addPS(PS i);
PS getPS();
}
public: //functii de asociere propriu-zisa
int main(){
profesor p1=new profesor("prof1");
student s1=new student("stud1");
student s2=new student("stud2");
student s3=new student("stud3");
student s4=new student("stud4");
PS ps11(p1,s1);
asocieri.addPS(ps11);
PS ps12(p1,s2);
APOO Curs Page 19
asocieri.addPS(ps12);
....
return 0;
}
Mostenireaasocierilor
Cl Baza1 Cl Baza2
* *
Deriv1 Deriv2
* *
Claselederivatemostenescvariabileledeasociere,metodeledeadaugareainstantelor
Ex:
class Profesor{
//cu var de asocirere
};
class Student{
//cu var de asociere
};
char *univ_de_unde_vine;
class ProfesorInvitat:public Profesor{
ProfesorInvitat (char *nume, char *u):Profesor(nume){
univ_de_unde_vine=new char[strlen(u)+1;
strcopy(univ_de_unde_vine, u);
};
public:
}
float *bursa;
class StudentBursier:public Student{
StudentBursier(char *n, float b):Student(n){bursa=b;);
public:
}
//in clasele derivate nu avem variabile de asociere.
ProfesorInvitat *p1=new ProfesorInvitat("prof1", "Univ1");
ProfesorInvitat *p2=new ProfesorInvitat("prof2", "Univ2");
StudentNursier *s1=new StudentBursier("stud1", 1000);
StudentNursier *s2=new StudentBursier("stud2", 1200);
//asocierea dintre student bursier si profesor invitat este o asociere mostenita.Nu
//ameplam nici o alta functie pentru a o implementa.
// p1 ----> addStudent(s1);
// s1 ----> addProfesor(p1);
.
.
.
.
}
Mostenirea+asocierileconstituieunmecanismfoarteputrenicdereutilizareadatelorinprogramarea
obiectorientata.
Altexemplu:MFC:
CDocument CView
0..1 0..*
CMyDoc CMyView
0..1 0..*
APOO Curs Page 20
CDocument CView
0..1 0..*
CMyDoc CMyView
0..1 0..*
Esteimplementataprinvariabilesifunctiideasociere.AsociereaintreCMyDocsiCMyVieweste
mostenita.
Implementarealegaturilordedependenta.
Legaturaderafinare(<<rafine>>)>nuseimplementeazaintrunmodspecific(nocode); 1)
Legaturadetrasare(<<trace>>)>nuseimplementeazaniciea(nocode); 2)
Legaturadeconectare(<<bind>>)>seimplementeazaprinclaseletemplate; 3)
template <classE> class Tvector{.........};
Instantiereaobiectelor> a)
Class1
Object1
class X{...};
class X obx;
Legaturaderealizareaauneiinterfetedecatreoclasa b)
interface
Interfata1
ClasaY
uses
ImplementareJava:
Interface
clasay implements interfata{....};
C++: pt metoda: clasa abstracta - mostenire :-??
Legaturaderealizare 4)
unobdintroclasaestefolositinaltaclasainfunctiedeargument a)
class Cerc: public Forma{
.
.
.
}
int intersectie(Segment s){
float panta=s.getPanta();
}
public:
};
Legaturadeutilizare 5)
Punct
Cerc Segment
1 * 1 *
APOO Curs Page 21
Punct
Cerc Segment
1 * 1 *
Observatie:
Panaacumamstudiatdiagramealeclaselorsiobiectelor.Acestediagramesuntstaticesireprezinta
structuramodelului(lanivelfoartedetaliat)
diagramedecomponente -
diagramealesistemeorsisubsistemelor -
diagramealepachetelor -
Ulteriorvomintalniisialtediagramedesctructurapenivelurimaiinalte
APOO Curs Page 22
Modelareacomportamentala(behaveior)asistemelor.
Oaltavedereasuprasistemuluisoftware -
Nedainformatiidesprecomportareaelementelorsistemului(prininteractiuniintreelementeleunui
sistem)
-
Lanivelgeneric>comportareaintreclase,sisteme,pachete.
Laniveldeinstante:intreobiecte,instantealesistemelorsiinstantedepachete.
Modelareacomportarii
Clase(clasificatori)
Sisteme(sisubsisteme)
Pachete
Modelareacomportariipediferiteniveluridedetalierealesistemului:
InUML:unmesaj=unelementcomportamentalcarereprezintaointeractiuneintreelementeale
modelului.(interactiuniledaufunctionareasistemului)
-
Client>carecereoanumitaactiune
Server>furnizeazaunrezultat(aluneiactiunideregula).
Unmesajimplica2entitati:
Agent=elementcareareatatroldeservercatsideclient. -
Ex:mesajintre2obiecte=apeluluneifunctiiaunuiobiectdecatrealtobiect(dintro
functieaobiectuluiclientmaiexact).

Ex:intresubsisteme:trimitereaunuimesajpeoretea;webbrowsertrimiteunumesajcatre
unwebserver

Mesaj
Modcomportarii:unelementtrimiteunmesaj unuialtelement.(interactiunea)
Existentauneilegaturiintreelementeleclientsiservercarecomunica.Oricelegaturapoate
permitetrimitereaunuimesaj:deasociere,deutilizare,degeneralizare,etc.)

Conditiadevizibilitateaserveruluifatadeclient.Ex:serverulsafievizibil;adicasafieaccesibil,sa
fieinacealasdomeniu.

Pentrutrimitereaunumesaj: -
Exemplu:
float x;
class Punct{
{x=a;y=b};
{x+=m; y+=n};
void move (float m, float n)
};
public: Punct(float a, float b)
Punct p1;
Punct p2;
class Segment{
p1.move(a,b);
p2.move(a,b);
} //clasa segment trimite un mesaj clasei punct - interact la nivel generic
//un obiect din clasa segment trimte un mesaj unui ob din clasa punct -
void move (float a, float b){
public: Segment (Punct a, Punct b){p1=a; p2=b};
APOOCurs6
3aprilie2007
10:01
APOO Curs Page 23
//nivel de instanta
float getPanta(){........};
Punct cemtru;
float raza;
class Cerc{
int intersectie (Segment s){
float panta=s.getPanta();
/*legatura de utilizare (Cerc, Segment) este un mesaj intre clasa cerc si clasa
segment; el este reprezentat de apelul functiei getPanta*/
public: Cerc (float cx, float cy, float r):centru(cx,cy){raza r;}
prindiagramedecolaborare -
prindiagramedesecventaamesajelor -
ReprezentareainUMLainteractiunilorintreelementealesistemuluisepoatefacein2feluri:
intreclase
intresubsisteme
cazurideutilizare
lanivelgeneric
Diagramedecolaborare:
intreobiecte
intreinstantedesubsisteme
intrecazurideutilizare,etc.
laniveldeinstanta
Punct p1(1,2);
Punct p2(4,5);
Segment s1(p1,p2);
s1.move (7,8)
Punct c(100,200);
Cerc c1(c,10);
c1.intersectie(s1);
}
void main(){
Diagramadesecventaamesajelor:
Segment Punct
move
APOO Curs Page 24
Segment Punct
move
lifeline
Ordonareatemporaraamesajeloresteimplicitaindiagramadesecventaamesajelordeoareceaxa
verticalareprezintatimpul.
Diagrameledesecventaamesajelorsuntmultmaiutilesimultmaiintuitive.
ob1
ob2 ob3 ob4
APOO Curs Page 25
ob1
ob2 ob3 ob4
Cele2reprezentarisuntsimilare
Diagramedestare
osatareesteocolectiebinedefinitadevalorialeatributelor. -
trecereasefaceprintranzitie.Otranzitiearelocintre2starisiarelocderegulacaurmareaunei
activitati.
-
Sereferalastarileprincaretrecobiecteleinstantealeuneiclase.
pornit
oprit
motor:
Dacastarileprezintavaloricusemnificatiidiferitedelaovaloarelaalta,atunciputemaveanevoiede
astfeldereprezentari.Ex:
Cele2staripotfidatedeturaitie(comparatiefatade0)
Tranzitiadelaostarelaalta
Ex:Diagramadestareaunuiproces(gestionatdeSO):stare
Gata de executie
planificare
Executie
lansare
prelevare
Blocat
Aparitia
eveniment
ului
Asteptare
eveniment
extern
Diagramadeactivitate
APOO Curs Page 26
Sereprezintasecventaactivitatilorcareasigurarezolvareauneianumitefunctiuni[elementulUML
corespunzatororganigramelorfolositeinaintedeUML]
ostaredectivitate eareprezintaoproceduracareseexecutapentruarealizacevaanume. a)
tranzitii treceriintrestarideactivitateceaulocincursulrezolvariifunctiuniirespective b)
Activitate
Activitate 2
Decizie(branch) c)
Activitate
Activitate 2
State1 State2
Elementedeexecutieconcurenta d)
State3 State4
Easecompunedin:
Ex:diagramadeactivitate"LivrareProdus"
Primire ordin de livrare
Inregistrare ordin Trimitere factura
Livrare de noapte Livrare zi
Primirea facturii
APOO Curs Page 27
Primire ordin de livrare
Inregistrare ordin Trimitere factura
Livrare de noapte Livrare zi
Primirea facturii
Inchidere ordin
Modelareastructurala(clase,obiecte.....)>vederestructurala -
Mocelareacomportamentala(instante.....) -
usecase(cazurideutilizare)
vedereasistemuluidinpunctdevederealutilizarii
recomandatepentruastabiliicerintelededezvolatarealeunuisistem
lanivelgeneric
leniveldeinstante
destructuri -
decomponente -
Diagrameusecase
Modelareautilisariisistemelor -
unsetderoluripecareilpoatejucaunelementalansamblului -
tip"actor"(generic) -
instantaaunuitip -
Unactorpoatefiiopersoanasauunaltsistemcareutilizeazasistemuldat.Poatereprezentachiar
unevenimentdetimp!
-
Actor a)
uncazdeutilizarereprezintaunsetdefunctiunipecareunelementiloferaactorilor.Se
reprezintaprintruncercincareaparedenumireacazuluideutilizare
-
Cazuldeutilizare(contextdeutilizare;usecase) b)
intreactori -
intreusecaseuri -
intreactorisiusecaseuri -
Legaturi: c)
APOO Curs Page 28
Modelareautilizarii
Usecase -
maialesinfazadestabilireacerintelor
pentruutilizatoricarenusuntinteresatidestructurasistemuluicideutilizare.
Deregulaestefoarteutila -
Actorii(unsetderoluri;poatefiiopersoanasauunsistem)
Contextedeutilizare(seturidefunctiisaufunctionalitati)
Entitati: -
Diagramadeutilizareincaresereprezintaactoriisicontexteleculegaturiledintreacestia.Legaturile
suntmaispeciale,elespecificandmoduldeutilizare(asemanatoareculegdeasociere)
-
Generalizare i.
Deutilizare(<<uses>>) 1)
Deinstantiere 2)
Dependente ii.
Legaturiintreactori: a)
Altelegaturiposibileincadrulmodelariiutilizarii:
Generalizare a)
<<include>> i.
<<extend>> ii.
Deinstantiere(<<instanceof>>) iii.
Dependenta b)
Intrecontexte: b)
APOOCurs7
17aprilie2007
09:59
APOO Curs Page 29
Extendssiincludeaudirdiferite.Arputeafiiconsiderateechivalentedarlegaturadeincludereestemai
puternica.
Diagrameusecase>modelarestructurala -
Diagramedeinteractiune>modelarecomportamentala -
Incadrulfunctionalitatilordemodelareaautilizariisepotfolosii:
Client
Furnizare bani
Introducere card
Cerere Pin
Introducere pin
Cerere suma
Introducere suma
Eliberare card
Carecomandare,uncontextdeutilizaretrebuiesaoferefunctionalitaticaresacorespundaunuiscopal
actorului.Toateactiunilementionatemaisusalcatuiescunscop.
Modelareacomponentelor.
Oferaoanumitafunctionalitateprintrointerfata -
Potfidezvoltate,achizitionatesiutilizateindependent -
Potfiinlocuibile -
Impreunaduclacreeareasoftuluibazatpecomponente. -
Componentesoftware:esteounitatedeprogram(executabil) -
Ocomponentaesteoextindereanotiuniideclasificator.
LaprogramareOO>clasesiobiecte -
LaprogramareanonOO>maimultefunctii -
Experientadeprogramareaduslanecesitateadeaaveacomponentemaimari,cumaimultefunctii.O
componenta=ogruparede:
APOO Curs Page 30
Reprezentaredediagrameacompenentelor(reprezstructurale)>exitindereadiagramei
claselor
-
Diagramedeinteractiune(reprezmodelarecomportamentala)>diagramedesecventaa
mesajelor,diagramedecolaborare,etc
-
Incadrulmodelariicomponentelor:
Generic>tipcomponenta -
Instanta>instantealecomponentelor -
Diagramelepotfiide2tipuri:
legaturadecompozitie
Utilizare
Instantiere
Legdedependenta
Legautiintrecomponente
Legaturadecompozitie
Diagramedeinteractiune
Actor1
Object1
Component4 Component5
Message1
Message2
Message3
Message4
Message5
Message6
Componentelepotfiideployedinnoduridecalcul
OrganizareamodelelorUML
Package(pachet)
Systems(subsisteme)
Model
Gruparedeelemente(alemodelului)
Reducereacomplexitatii -
APOO Curs Page 31
Organizareierarhica
Unpachetesteogruparedeelementealemodelului.Elementelegrupatedeunpachetpotfii:
Clasificatori
Altepachete
Pachete 1)
Degeneralizare -
Decompozitie -
Dedependente>deutilizare<<import>>sau<<uses>> -
Legaturile:
Diagramapachetelor:pachetele+legaturileintreacestea.
Esteunpachet(grupare)deelemente;Organizareunuisubsistemsefaceprecriteriul
functionalitatii.
a)
subsystem
SubSystem1
Celmaiinaltnivel
Legaturadecompozitie(lafelcalapachete,cusemnul+)
Legaturideutilizareposibileintrediversesubsisteme.
Legaturadecompozitie>ducelaierarhiidesubsisteme
Subsisteme+legaturidedate:
Diagramealesubsistemelor: b)
Subsisteme(UML): 2)
subsystem
SubSystem1
subsystem
SubSystem2
subsystem
SubSystem3
-End1
1
-End2
*
-End3
1
-End4
*
subsystem
SubSystem4
subsystem
SubSystem5
-End5
1
-End6
*
-End7 1
-End8 *
APOO Curs Page 32
Controler
Specificationelements>options
Specification
Realizationelements
Pecriteriulvederii(utilizarii)incadrulproiectului -
Model:ogrupare(package)deelementealemodulului
Diagramedemodele:legdecompozitie -
Putemaveaierarhiidemodelesauierarhiicombinate:modele+subsistem
APOO Curs Page 33
Diagramededeployment
Nodurileretelei:calculatoare(host):dinpunctdevederealroluluijucatinaplrespectiva -
Elementealemodelului(grupare):subsisteme,componente+legdedatedintreacestea -
Generice -
Aleinstantelor -
Diagrame:
Ex.delegaturaintreelementealemodelului:
Legaturadedependenta(inexempluldemaisus)
Concluzii:
ModelareUML
UMLemaiintuitiv a.
UMLasiguracompatibilitateaintrediferitiutilizatorisidezvoltator. b.
Aplicatiilesoftwaremarinupotfiidezvoltateoricum.Elebeneficiazadeoabordaresistematicaincare
suntprecizatediverseleetapesioperatiicaretrebuiescefectuate.Ceamaidesfolositaabordareextecu
ajutorullimbajuluiUMLcarepoatefiifolositintoateetapele.
1)
Tehnologiidedezvoltaresoftware(softwareengineering)
Printrotehnologiesoftwareseintelegeunansambludelimbaje,standarde,biblioteci,interfete,
sistemededezvoltare,toolseturi,toateavandcaobiectivdezvoltareasoftului,inclusivimplementare
(panalatestareasiexecutiaprogramului)
Clasificareaunuinumardedomenii:
Dezvoltarea"fromscratch" custommode(sepleacadela0).Sefolosesccelmultnistebiblioteci
faradiversealtecomponente.Sepotdezvoltaaplicatiisoftwaremici.Avantaje:flexibilitatefoarte
maresiadaptarefoartebunalacerinteleclientului.Dezavantaje:riscdepiata,ceprovinedintrun
posibilitimpderealizareridicat eficientascazuta.
a.
Dezvoltareaprinachizitiedeprodusesoftwaregatarealizate.Avantaje:riscdepiataredus,timp
derealizaremicsidecieficientamare.Dezavantaje:flexibilitateredusa,adaptabilitateaeste
redusa seadapteazacerintelelasoftwarenusoftwareullacerinte,dificultatedeintretinere,
vulnerabilitateinfataconcurentei.
b.
Moduldeabordareadezvoltariisoftware I.
APOOCurs8
24aprilie2007
10:10
APOO Curs Page 34
%softcumparat
flexibilitate
%softcumparat
eficienta
Ocomponentasoftwareesteounitatede:productie,achizitie,asamblare(deployment)
independentadealteunitati.
i.
Ocomponentasoftwarepoatefiiconsideratasicaounitateexecutabila. ii.
Auinterfetebineprecizatecaresuntdenumitecontracte(intrecomponentasiutilizatoriiei) iii.
Auavutodezvoltaremailentadecataltecomponente(hardware) iv.
Acestlucruprovinedincaracterulabstractalproduselorsoftware.Chiardefinitiaeste
controversata.Panalacenivelsemergecucompartimentarea?Inmomentuldefataexista
opiatadecomponenteacarordezvoltareaavutlocmailentdareaexista.
ComponentelesoftwareauinceputcasiVBX visualbasiccontrols componentefolosite
pentrudezvoltareadeinterfete.
v.
Dezvoltareasoftwareuluibazatpecomponenteesteosolutieintermediaraintrecele2
extreme:Areungraddeflexibilitatemaimaredecatsoftulcumparat,eficienta
intermediara,etc.Altavantaj:sepotcombinasolutii.Sepoatecumparaopartegatafacuta
lipitacuunsoftpropriucareimpreunasaprezintetoatecerinteledoriteincluzivunanumit
avantajfatacecompetitori.
vi.
Softwarebazatpecomponente realizareasoftuluiprinasamblaredecomponentesoftware. c.
Combinareacomponentelorsoftwarenuesteatatdeflexibiladeoarecedepindede
producator.[compatibilitateredusa,maialesintreproducatori]
-
Existadezvoltaridecomponentepebazacatorvatehnologii. -
Inrealitate:
1proces(unulsaumaimulte)cuunulsaumaimultethreaduricareseexecutapeo
singurastatie.Nuaparcomunicatiipereteasideciaplicatiaserezolvalocal.
-
MSDEV(bazatpeC++)caresesprijinapebibliotecaMFCcepermitedezvoltarea
usoaraaiinterfetelorgraficeprinintermedulVisualC++.Unframework=
gruparedeelementecarepermitedezvoltareaunoranumitetipurideaplicatii.

Existadiferitetoolseturidedezvoltare -
Aplicatiilocale desktop,nedistribuite; 1)
Clasificareaaplicatiilordinpunctdevederealnumaruluidestatiipecareseexecuta.
APOO Curs Page 35
JDK J2SE.DesiJavaafostdezvoltatpentruinternet,elpoatefiifolositca
modalitatededezvoltareaaunuisoftwarelocal.

Arhitecturaclientserver(pe2niveluri):
Arhitecturidedezvoltareaaplicatiilordistribuite: -
Aplicatiidistribuite:maimulteprocese,posibilcumaimultethreaduri,careseexecutape
maimultestatiiinterconectateprintroretea.
2)
Arhitecturaclientslab(pe2niveluri):Necesitaunserverputernic,estesimplu
deimplementat,oferaosecuritateputernica(toateoperatiileserezolvala
server)siintretinereaestesimpla.Dezavantaje:poatesaaparacongestia
serverului.

Arhitecturaclientputernic(pe2nivele):Avantaje:serverulnuse
congestioneaza.Dezavantaje:intretinerecomplicata(oriceschimbare
presupuneschimbarilatoticlientii),securitatemaislaba,etc.

Arhitecturipemaimulteniveluri: -
Portiuneadinmijloc,maipoartasidenumireademiddleware.
Nivel de prezentare Logica aplicatiei Nivel de date.
retea retea
Client
Nivelul business
logic
Sisteme de
gestionare a
bazelor de date
Rol de server Aplication
server
Exdeaplicatie3tier:
Aplicatiewebincareavemclientul webbrowser carecereinformatiidelaunserverwebcarela
randulluipoatesacearadatedintrunsgdbcarepersonalizeazasauspecificamaiclarcerintele
clientuluiweb.
Nivelurileuneiaplicatiimultitiersuntnivelurilogice.Elepotsafieexecutatefiecarepecateun
hostsaupotsafiegrupate
TehnologiiMicrosoft porninddelaoviziune(Desktop)saajunslaaplicatiidistribuiteputernice
(1985).
a.
TehnologiaCORBA ComonObjectRequestBrokerArhitecture.Arhitecturapornestedin b.
Tehnologiilededezvoltaresoftware III.
APOO Curs Page 36
In1991,tehnologiaafostspecificatadeOMG(ObjectManagementGroup).Momentanasa
ajunslaCORBA3.0denumitasiCCM corbacomponentmodel.
1)
perspectivaenterprise.
JDK Javastandardeditioncareoferainmareparteaplicatiidesktopsiaplicatiidistribuitein
diverseacceptiunidintrecareappleturilesuntfolositeininternet.Existaunpachetjava.net
carepermitecomunicatiaprinsoclurisicarepoatesafiefolostidirect.Maiavemsipachetul
java.rmicarepemitecomunicatiainretea
1)
J2EE Javaenterpriseedition.Enterpriseinseamnadistribuit.Acestpachetoferasuport
pentruaplicatiidistribuiteatatinretealocala.DinpachetulJ2EEfacparteEJB enterprise
javabeanscaresuntcomponentesoftwareutilizateinrelelelocalesiininternetservletisi
JSP.Acesteadinumrapotfiiconsideratecomponentesoftware.Toatecomponentelesunt
OO.
2)
TehnologiileJava1995 dezvoltatadeSunMicrosystemspornitadinperspectivainternet.Easia
propussaoferesolutiiptaplicatiileininternet.
c.
Seremarcaospiraladedezvoltareatehnologiilorsoftware.Sereiauanumiteideidelaotehnologiela
alta.TehnologiaCORBAesteconsideratainternetunfriendly.Nuareprevazutunmecanismeficientde
travesareafirewallurilor.
TehnologiiMicrosoft
Dezvoltareadeaplicatiidetipdesktop MSDEV -
EtapaCOMDCOM.(ComponenteObjectModel DistributedCOM).Aceastatehnologieeste
inglobatainsistemeledeoperare.Ainceputin1991printehnologiaOLE1.0 objectlinkingand
editing1.0.Saincercatlegareadeaplicatiidetipdesktop.In1992standardulintroducenotiunea
decomponenta.IN1993 OLE2;1996 ActiveX tehnologiaCOMpentruinternet;In2000 com+

In2002.NETFramework1.0;C#.Aplicatiilesuntorientatepecomponentesoftware.In.NET
componentelesoftwaresuntmaiinregimentate.Unansamblu(oentitatedezvoltata
in.NET)reprezintaocomponentasoftware.NET

IN2001 tehnologia.NET orientatapeaplicatiiInternet(distribuita)


Dezvoltareaaplicatilordistribuite: -
APOO Curs Page 37
TehnologiaMicrosoft.NET
Dezvoltatadupaanul2003;Estedirectionatacatreaplicatiidistribuite;InlocuimtehnologiaCOM,DCOM -
Interoperabilitaeaintrediferiteaplicatii
Integrarealimbajelor(inaplicatiisepotfolosiimaimultelimbajediferite)
EstelimitatalasistemeledeoperaredetipWindows.
Principii.NET: -
.NETFramework cadrudedezvlotareaaplicatiilorcarepermitedezvoltareaaplicatiilorin
platforma.NET.Maipoartasinumeledeplatforma.NET
-
Windows
FrameworkBaseClases(FBC)
Data&XML
WebForm\WindowsForms
WebServices
EsteechivalentcuomasinavirtualaJava.
Executa(controleazaexecutia)inlimbajintermediarIL(MSIL:MicrosoftInternalLanguage)
C#(seamanasicuC++sicuJava)
VB.NET
J#
ManagedC++
ILseobtindincompilarearesurselor:limbajele.NET:
IntrebibliotecasisistemuldeoperaremaiaparesiCLR parteaexecutivaaprogramelor(.NET
Framework).
ToateprogrameleproduccodinlimbajIL
SursaC#
SursaJ#
Managedmodule
IL
SingurulprogramdiferitesteManagedC++carepoategeneramodulmanagedsaunu.
Managedmodule moduladministrabil:ILsipoatefiiexecutatsubcontrolulCLR.
Ununmanagedmodule modulneadministrat poatefiiexecutatdirectdeSOsiesteunmodulincod
nativ(limbajulCPUpecareselucreaza)
FunctionareCLR -
APOOCurs9
15mai2007
10:12
APOO Curs Page 38
Modul managed
Managed IL
Managed IL
Compilat
incarcare
Verificare cod
DA
Cod nativ
managed
NU
executie
executie
Garbage col
Verificarederuntime
"Garbagecolector":obiecteledinmemorialiberasuntdistruse.Executiaestesigurapentrucanu
maiexistaoperatoruldeletecaregeneraproblemeinC++

ControlulexecutieiCLR
CodulIL
"Metadata":tabelecaredescriutipuriledefiniteinmodululrespectiv
Compilator Modul(managed):
Unitateadeexecutie,instalare,versionaresisecuritateestedenumitaansamblu(assembly).Un
ansambluesteunitateacaresepoateinstala.Unansamblupoatesacontina1saumaimulte
module.Elaredecimodulelepropriuzise(carecontincodILsimetadata),diverseresursesiun
manifest(carecontinelistadatelor).Unansambluesteocomponentasoftware.

Organizareaprogr.NET
ExempluHelloWorld:
//fisier sursa Hello.cs
using System;
Console.Writeline("HelloWorld");
public static void Main(){
}
class Hello{
}
CompilarecscHello.cs
InurmaacesteicomenzisecreeazaHello.exe(ansamblucontinutinwindowspe portableexecutable)
SemodificaloaderulSOailoaderulpoatedeosebiiunPEincodnativdeunPEincodIL.
InstalareCLR(.NETFramework) -
Inwindowslibrariilepoartadenumireadedll(DinamibLinkLibrary)
C#estemaipurdinpunctdevederealOOfatadeC++.Nuadmitemetodesivariabileglobale.Medmain
cucareincepeexecutiadevineometodastaticaauneiclase.Eapoatefiiinvocatafarainstantierea
claseidincarefaceparte.
a)
suntgruparilogicedeentitati a.
claseincarenumeledeidentificatorisuntunice b.
permitevitareacoliziunilordenume. c.
spatiiledenumesepotgrupaierarhic d.
Spatiiledenume b)
namespace Spatiul1{
APOO Curs Page 39
.......
class Clasa1{
......
}
}
manespace Subspatiul1{
}
Numeleuneiclase:Spatiul1.Subspatiul1.Clasa1.
Lautilizare,directivausingnepermiteoutilizaremaisimplaaspatiilor.AstfelSyste.Consoledevine
Console
System
System.Collection
System.IO
System.Data
System.Winows.Forms
System.Web.UI
System.Web.Services
Tipurilededate.NET
tipuricomuneCTS(CommonTypeSpecifications)
tipuriimpuselimbajelornumiteCLS(CommonLanguageSpecifications)
fiecarelimbajdefinestecamultimeatipurilorsaleomultimecareesteosubmultimeaCTSsi
includeCLS

Integrarealimbajelor -
CLS
CTS
C++
C#
VB.NET
Clasificareatipurilordistribuitedin.NET
tipurivaloare
tipurireferinta
Dupamoduldecreere: -
tipuridefinitein.NET
tipuridefinitedeutilizator.
Dupaloculdecreeare: -
APOO Curs Page 40
Tip.NET C# ManagedC++ Dimensiune
Byte byte unsignedchar 8biti
Int32 int ins,long 32biti
Single float float 32biti
Char char 16biti
Boolean bool bool 1bit
LimbajulC#
AndreasHejsberg,cottWiltamuth -
C++,Java -
Limbajuloficialal.NET
TipuridedateC#
secreeazaprindeclaratie i.
secreeazainstiva ii.
nuavemreferinte iii.
Tipuriprimitive:intx=1; a.
using System;
mica=1;
potrivita=2;
mare=3;
};
enum Valori{
Console.Writeln ("Valori {0},{1},{2}",
Valori.mica,Valori.potrivita, Valori.mare);
}
public void static Main(){
}
public class Class1{
Tipulenumerare definesteocolectiedevaloriconstante. b.
Seafiseaza:Valori1,2,3
Structuri: c.
//Fisier...
intx;
inty;
x=a; y=b;}
public Locatie(int a, int b){
return "Locatie"+x+" "+y;
public override string ToString(){//override se refera la dominare
}
struct Locatie{ //implicit derivata din valuetype; nu permite derivarea.
}
Locatie.l1=new Locatie(4,5);//returneaza valoarea - obiectul care se
//creeaza in stiva
public static void Main(){
public class Program{
Tipurivaloare I.
APOO Curs Page 41
System.Console.Writeln(l1.ToString);
}
}
Afiseaza:Locatie45
Curssecontinuaculaboratoarele.NET(7si8)
Exempluclasastatica:
//Fisier statice.cs
using System;
private int x;
private const int c=10;//se poate initializa numai in declaratie o const
private readonly int r=2;//se mai poate initializa si in constructor
public static s;//ca in Java, nu in C++!!!
public Clasa(int a, intb, int c){x=a;r=b;s=c;}
public void inc(){x++;s++}//met nestatice pot accesa date membre statice si
//nestatice
public static void incs(){x++;/*da eroare*/s++;}
return "x="+x+"r="+r+"s="+s;
public override string toString(){
}
public class Clasa{
Clasa c1=new Clasa(1,2,3);
Console.writeline(c1);//toString de aici e mostenit din object insa daca
//vrem sa afiseze ceva anume se va face redefinirea. Se poate folosii
//Console.Writeln(c1.toString());
Clasa.s=5;
c1.inc();
Console.Writeline(c1);//afiseaza x=2r=2s=6
c1.incs();//eroare, nu se poate accesa metoda statica folosind un obiect
Clasa.incs();//corect
}
punlic static void Main(){
}
public class Program{
APOO Curs Page 42