Analiza
Proiectarea
Implementare
Testare
Parcurgereaincascada(waterflow)1.
Necesitateareluariicompleteincazulunordefectemajore.-Poateconducelacrestereatimpuluiderealizare-Esteunriscfoartemare.-
Dezavantaje:
Pentruscaderearisculuisaugandittotfeluldealtecombinatiiptparcurgereaetapelordedezvoltare.
Analiza Proiectare
ImplementareTestare
Parcurgereainspirala2.
abordarepeversiuniseparcurgintrunmodcarelelasaincompletevorficompletatelaonouatrecereversiunileincompletereprezintabazeledezvoltariiurmatoruluiniveldeparcurgereoastfeldeabordarescaderisculdeaaveatimpmarederealizare(riscdepiata)peparcurssepotinsusiitehnicinoi
Parcurgereaincrementala(incremental)2.
modelul:RUP>Rationalunifiedprocess(procesderealizareunficata)(folosindtoolsetulRelationalRod)
Intiere(Inception) Elaborare Constructie MigrareFaze:
Fiecarefazapoatecontinemaimulteiteratii(unnumaroarecare)Fiecareiteratiecontinetoatecele4etapeprezentatemaisus
Iteratii:
definireascopuluiproiectuluiFazadeinitiere
stabilestemoduldeabordare(obiectorientatasaucomponentorientata)seincearcalimitarea(excluderea)zonelorderisc
Fazadeelaborare
proiectareadetaliatasiimplementareaaplicatieiFazadeconstructie
accentulsepunepetrecereadelaprodusulinstaredeprototiplainglobarealautilizator.Accentulsepunepe testare
Fazademigratie
APOOCurs120martie200720:57
APOO Curs Page 1
AnalizasiproiectareaObiectOrientatacamodalitatedesistematizareadezvoltariisoftware
permitedezvoltareaaplicatiilor>colectiideclasesiobiecteobiectelecolaboareazaintreele>suntinstantealeclaselorclaselesuntmembrealeuneiierarhiideclase(prinmostenire)
Modelulobiect :-
Caracteristicifundamentale:
Nuesteproprienumaimodeluluiobiectdaresteobligatorieptmodelulobiect.i.
>fiecareclasainglobeazaatributelecelemairelevantePrinabstractizaresedefinescclasele >tipuridedate(tipuriabstracte)ii.
Abstractizarea1.
Moduleletrebuiesafie"slabcuplate"1)Abordareaprincareaplicatiaseimparteinmodulei.
InOOmodulelecontinclasesiobiecteii.NuestespecificaOOdar(obligatorie)recomandabilaiii.
Modularitate2.
Clasedebaza1)Clasederivate2)
Proprietateaprincaresepotdefiniiierarhiideclasei.
Specializare porninddelaoclasadebazasidefinindclasespecializate>mostenesccaracteregeneraledinclasadebazasiausipropriullorspecific
1)
Generalizare proninddelamaimulteclaseoarecumcorelate(indrudite)seextragcaracteristicilecomune>sefolosescptadefiniioclasadebaza
2)
Sepoatefaceprin2procese:ii.
Mostenirea3.
Multimeaatributelor(datemembrealeclasei)a)Implementareametodelorb)
Structura1)
Comportarea datadeceeacesenumesteinterfataclasei>asiguralegaturacuext.2)Multimeametodelorpublicealeclasei prototipurile
Asiguracaoclasasafieimpartitain2partii.
Permitereutilizareacoduluiii.
Permitemodificariindependenteindiferitelemoduleiii.
Float x; // datele membre sa fie de tip privateFloat y;
Class punct{
Punct(float a, float b); // constructor
Float getx();// functii de tip getterFloat gety();// citesc variabile private (f selector)Void setx(float a);// modifica valuarea datelor membreVoid sety(float b);// f modificator sau de tip setter
Public:
Exmeplu:
Incapsulareasiascundereaimplementarii4.
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 dificildeimplementat1)ProgramareaOO incapsulareaesterecomandatasilimbajeleoferasuportptaceastaproprietat(nerespectareaesteposibiladarpotsaaparaproblemedesigurantaautilizariiobiectelor).
2)
Programareaorientatapecomponente incapsulareaesteobligatorie3)Tehnologiiledecomponentesoftteobligasaaiseparatiecompletaintreinterfatasiimplementare
Secomportainmoduridiferiteinfunctiedetipuldeabordarealprogramariiv.
Caracteristicisecundare:
Slabtipizate:smaltalk(C) permitoricefeldecombinatiiintreobiecte.i.Puternictipizate:Eifel,Java,C#ii.Mediutipizat:C++iii.
Tipizarea =regulileprincaresepotcombinasaudeconversiiintrediferitetipuridedatedintrunlimbaj
1.
Persistenta =capacitateadestocarepermanentaadatelorcreateintrunprogram.Existaposibilitateacaacestedatesasupravietuiascaprogramului.Serializare
2.
Concurenta=seintelegeposibilitateadeexecutieconcomitenta(simultana)amaimultorobiectedinaceeasiclasasauclasediferite.Arelocnumaidacaavemdeafacecuuncalculatorparalelsausistemdistribuit(reala).(simulata:threaduri).
3.
APOO Curs Page 3
Caracteristicilemodeluluiobiect
Abstractizareaa.Modularitateab.Mostenireac.Incapsularead.
Caracteristicifundamentale1. Clase:Structura:datemodul+impl.Modul-Comportarea:interfata=metdeprotectie,functiipublic-
Fiecareobiect=instantaaclasei obiectecuvaloaredeatributaclasei??
Principiulincapsulariisialascunderiiimplementariisecompolrtainmoduridiferiteinfunctiedetipuldeabordarealprogramarii:Pentruprogramareaprocedurala,aceastaproprietateestedificildeimplementat-
Nerespectareaacesteiproprietatiesteposibiladarpotsaaparaproblemedesigurantaautilizariiobiectielor.
PentruprogramareaOO,incapsulareaesterecomandatasilimbajeleOOoferasuportpentruaceastaproprietate(specificatoridiferiti,dateseparate,etc.)
-
Tehnologiiledecomponentesoftwareteobligasaaiseparatiecompletaintreinterfatasiimplementare
Progamareaorientatapecomponente incapsulareaesteobligatorie-
Limbajeslabtipizate:Smaltalkcarepermiteoricefeldecombinatiiintreobiecte(programatorultrebuiesaaibagrija)
i.
Limbajeputrenictipizate:Eifell,Java,C#ii.Limbajemediutipizate:C++iii.
Tipizarea sereferalaregulileprincaresepotcombinainexpresiisaudeconversiiintrediferitetipuridedatedintrunlimbaj moduldeconversieeprecizatprincaracteristiciledetipizare(tipizareasereferalatipui,tipurile=clase=>tipzareasereferalaclase)
a.
Persistenta=capacitateadestocarepermanentaadatelorcreeateintrunprogram datelecreeateintrunprogramsasupravietuiascaprogramului;"serializateadatelor"=datelesunttransformateinsecventedeocteti,suntscrisesiramanacolocandseterminaprogramul.Laonouaexecutieelepotfiutilizate.
b.
ConcurentarelativalamodelulOO=posibilitateadeexecutieconcomitentaamaimultorobiectedinaceeasiclasasauclasediferite.Concurentaaparelacalcualtoareparalelesausistemedistribuite.
c.
Caracteristicisecundare modelobiect:2.
Analiza,proiectarea,programareaObiectOrientata
Aplicareaproprietatiilorsiaconceptelormodeluluiobiectinacesteetapededezvoltareasoftware.
principiulprincareseslecteazacaracteristicilerelevantealerealitatiimodelatei.
Entitatile>tipdeentitate
Detaliereaclaselor,obiectelorsilegaturilordintreacesteapebazacerintelorstabiliteinfazadeanaliza
a.
Sestabilescmoduleleproiectuluiintroabordare;IntroabordareOO,unmodulesteocolectiedeclase
b.
Sestabilesctehnologiilederealizare>platforma,SO,hardware,limbajesialtestandarde(biblioteci,etc.)
c.
ProiectareOO2.
Programarea folosesteunlimbajOO toolseturi,bibliotecia.Sescriuprogrameleb.
ImplementareaOO(programarea)3.
TestareaOO sefolosescclasegata testatedinbiblioteci4.
Avantajeleabordariiobiectorientateadezvoltariisoftwareului
Reutilizabilitatecodului sefolosescbibliotecideclase1)Extensibilitateacodului sefolosescclasederivate dinclaseledinbilioteci2)
Existentaincapsularii accesareainmodunitarprininterfataaobiectelora.Seimpunmecanismedetratareaexceptiilormaiprecisedecatinaltelimbajeb.
Mentenantaaplicatiilorobiectorientate=intretinereabuneifunctionariaaplicatiiloremaisimplainOOdin2motive:
3)
LimitarileabordariiOO
Saconstatatcatotusiclaselesuntpreamicisipreaspecialea.Bibliotecideuzgeneralaufunctionalitatelimitata.MFC(MicrosoftFoundationClases)areprezentatbazadezvoltariiprogramelorWindowsinC++.
b.
LainceputsecredeacaOOvarezolvaproblemareutilizabilitatiicodului.Inrealitateaavemdoaroreutilizabilitatelimitateacodului.
1.
Interoperabilitatealimitata;interoperabilitate=posibilitateadeaoperaimpreunaadiferitelorclasesiobiecte.Eaestelimitatadatoritafaptuluicabibliotecilesuntcudestinatiilimitatelarandullor.Ex:claselesipakageurilejavacomunicagreucuclaseleC++.
2.
Tendintelededezvoltaresoftware
Scop:Eliminarea(micsoararea)limitarilorOO.
Reutilizabilitatii eacrestedatoritafaptuluicacomponentelesuntmaimaridecatclaseleInteroperabilitatii crestedatoritastandardelorimpusesidatoritafaptuluicaoricecomponentacontineointerfata.Eapoatefiifolositadecimaicomodinprogramare.
beneficiazadestandardegeneralecarepermitobtinereaSoftwareorientatpecomponente-
DezvoltareaprogramelorfolosindmodelareUML
Moduldedezvoltaresoft;sefolosecmodele(conceptecaresintetizeazaabstractizaredinrealitatepentruunanumitscopsioanumitautilizare).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)siaudatprimulstandardsispecificareUML1.1.Actualmentesaajunslaversiunea2.1.1LimbajulUMLEsteunlimbajpentrudezvoltare,specificare,documentaresivizualizareaproduselorsoftware.UMLesteunlimbajgrafic;elementelesalesuntelemetedegrafica2Dsiacesteelementesuntprocedeecarespecificadiverseleaspectealeprodusuluisoftware.
ToateelementelesuntinsotitedetexteLimbajulUMLtrebuiesaajutedezvoltatoriisailfoloseascasidecidefinesteconceptealelimbajului,semantica(intelesuldiverselorelemente),precizeazanotatii(ex:conceptuldeclasificatorsenoteazaasa...)sideasemeneaoferasolutiisaurecomandarideproiectare(patternuri,tipare)
CaracteristicilelimbajuluiUMLLimbajulumlinseamnaUNIFICARE+FLEXIBILITATE
Integreazacelemaibunepractici.
Ex:ulteriorsauinglobatcomponentelesoftware.Integrareacontinuaprinadaugarealadiferitelereviziiaunoaspectenoideproiectaresoftware.
Unificarea inmodalitatilededezvoltaresoftware
Poatefiutilizatsiinalteabordarideoarececonceptelepecareledefinesteauuncaractermaigeneraldecatmodelulobiect.
Folosestemodelulobiectcabazaaabordariiproiectariisoftware.
Specificari;fiecarespecificarecorespundeunuiaspectsifiecareaspectmaimultorvederi
AnalistiProiectanti
Colaborareamaimultorcategoriidepersonal
Sistemelesoftwarecomplexenupotsafiereprezentatesinecesita:
Limbajulfolosestetipuridedate(incluseinelemetelegrafice) independentedelimbajeledeprogramareexistenta(DefinesteRealsauIntegerfarasafacaoprecizarestrictaalegaturiicuacestetipuridinlimbajeledeprogramareexistente.Admitesitipurialelimbajelor FLEXIBILITATE).FlexibilitateaestesimaiputernicrelevatadefaptulcalimbajulUMLofereaomultitudinedevederialesistemuluisoftware(views).Aceleasisistempoatefiiprivitdinmaimultepunctedevedere,aspectemodelatesiapoidezvoltate.
Diagramelordefunctionare(usecase).AcesteaaufostpreluatedinOOSEalluiJacobson servescmanagerilor
-
DiagramealecomponentelorDiagramededeployment sereferalainstalareadiverselorparti(deployment?=desfasurare)
Diagramelefizice-
DiagramedepacheteDiagramedesubsistemeDiagramealemodelelor
Diagramedeorganizareasistemuluisoftware-
Fiecarecategoriedepersonaldedezvoltarefolosestediferitevederi(diagrame)infunctiedeatributilefiecaruia
Acelasielementpoatesafiereprezentatinmaimultemoduridelafoartegeneralpanalafoartedetaliat.
-
LimbajulUMLpoatefifolositintoateetapenededezvoltare.Infazadeanalizaavemelementereprezentatesimplificatajungandinfazeledetestaresiimplementarepanalareprezentareadetaliataaaceluiaselement
-
LimbajulUMLoferaposibilitateadefiniriipediferitegradededetaliere.
PentrulimbajulUMLsaudezvoltatnumeoasetoolseturiinfunctiedenecesitatisispecificatii.Importantestecauntoolsetnurespectaintrutotulspecificatiilestandardalelimbajului.
APOO Curs Page 6
Structurasereferalapartilecomponentealeunuisistem;arhitecturaunuisistemesereferalapartilecomponentesilegaturile(interfata)dintreele.
Reprezentareastructuralaaunuisistemsoftware partilecomponente-
InnoduriavemclaseArcelereprezintalegaturileUML
Estereprezentatprintrungrafi.
Capteazainformatiistaticealemodelului.ii.
Diagramaclaseloresteunmodelstructuralalunuisistem1)
suntreprezentateobiecteleinUML.Obiectelesuntinstantealeclaselor.i.Esteoreprezentarelaunmomentdat(obiecteleaucomportaredinamica)ii.Utilitaterestransaiii.
Diagramaobiectelor:2)
Diagramaclaselorsidiagramaobiectelor.-
OBS:Sepotcombinacele2tipuridediagrame!(clase+obiecte).Reprezentareasefaceinfunctiedenecesitati.
1.
Maiexistasialtediagramestructurale:diagramacomponenteleor (sotfware)2.
Elementelestructuralealediagrameiclaselor
InUML,unclasificator(classifier)esteunelementstructuralcarereprezintaunconceptdemodelarecarereunesteelementedestructura,elementedecomportaresielementesemantice.
Clasa(class)-Tipdedate(type)-Interfata-
Existamaimultecategoriideclasificatori:
OclasainUMLreprezintaomultimedeelementedeaceealsitipcaresuntcaracterizateprinstructuradatadeatribute,comportareadataprinmetodesipentrucaresepoateidentificaunintelesprecis(caracterulsemantic)
UMLClassatribut
OOClassatribut
Principiulincapsulaiitransformaclasainstructuracuatribute+implementaresicomportaredatadeatributelemetodelorpublice interfataclasei.OclasaindefdinUMLcorespundeuneiclasedinOO.Eacorespundeunuitipdeentitatesauuneimultimideentitiati.AtributulentitatiicorespundeatributuluidinUML.DesidefinitileUMLsuntmaigenerale,inanumitesituatiiseobservaofoartebunaechivalarecunotiunilecunoscutedinprogramareaOO.
Numeleclasei(obligatoriu)Unstereotip
Numeleclasei+altespecificatii(compartimentobligatoriu)3compartimentealeunuidreptunghi-
ReprezentareainUML:
Modelareastructurala
APOOCurs313martie200710:05
APOO Curs Page 7
Constrangerile(stereotipulsiconstrangerilesuntfacultative)
Tipgeneric(UML)SpecificlimbajelorOO
Numeatribut tipatribut:
Indicatordevizibilitate"+" public"" private"#" protected
Compartimetuldeatribute(optional)
Numemetoda(obligatoriu)IndicevizibilitateTipreturnat
Compartimentuldemetode(optional)
Clasareprezintaformaimplicitaaunuiclasificator-Typesiinterfatanecesitastereotipurideprecizareaclasificatorului.-Interfataesteocolectiedemetode(3modalitatidereprezentare)-
Persoana Persoana
Persoana
Nume:StringVarsta:integeradresa:string
+Setnume:void+Getnume:string
+setNume:string
Nota
legatura
Dimensiune
Stereotipptstructura
Itranzaction
Itranzaction+begin():void+commit():void+abort():void
OcomponentasoftwareinUMLeoextindereaclasificatorilor
Pentruclasemaiaparsiconstrangeri
Claseparametrizate(clasetemplate).Oclasatemplateeoclasacaredefinesteocomportareunicapentrutipuridiferitededate.Tipuldateiesteunparametru.Incazulstivei,tipulLIFOreprezintaunparametru:
2.
Componentesoftware
Itranzaction
Forma{abstract] Clasaabstracta
TstivaE
element[n]:Edim:integerpoz:integer
+push():void+pop():E
Clasificatoriicudiverseleconstrangerireprezintaelementedestructuradindiagramastructurala.
Elementedelegatura(dindiagramaclaselor)
Esteunelementcarerealizeazaocorespondenta(legatura)intreclasificatorisialteelemente)-
LinieintreruptaSagetiDiversetextepeliniesaulacapete
Elementrulsereprezntaprinunulsaumaimultesegmentededreapta+diferitemarcaje(acesteadepinddetipullegaturii):
-
Generalizarea(generalization)Asocierea(asociation)Depndentele(dependecies)Altelegaturi
TipuridelegaturiUML:-
APOO Curs Page 8
Generalizarea:1.
Estelegaturadintre2clasificatoriincareunclasificatornumitfiumostenestecaracteristicileclasificatoruluinumitparintesiadauganoicaracterespecificeacestuia.GeneralizareaestedecilegatadeMOSTENIRE.
-
vehicul
automobil tractor bicicleta
generalizare
Reprezentarealegaturii:
Sageatacontinua
Sepotdefiniiierarhiideclasepeoricateniveluri.
Sepoatedefiniioierarhieprintrunprocedeuinvers(prinspecializare).Specializareaeoperatiainversaprincaresepleacadelaoclasacucaractergeneralsisemergespreclasemaispecializate(existasuportinlimbajeleOOpentrumosteniresidecinusemaifacspecificariinUML)
-
Legaturadeasociere2.
Prinasociereserealizeazacorespondente(legaturi)intreelementelediferitilorclasificatori.-InUMLunobiectesteoinstantaauneiclase(clasificator).NuexistasuportspecificpentruasociereinlimbajeleOO.Sefolosescdiferitemecanismecaresaasigureasocierea.
Clasificarialeasocierilor:
2clasificatori asocieribinarea.>2clasificatori asocierimultiple;nare>potfirestranseinasocieribinareb.
Dinpunctdevederealnumaruluideclase(clasificatori)pusiincorespondenta:I.
DinpunctdevederealraportuluidecardinalitateII.
Asocierisimplea.Asocieridetipparteintreg(intregparte??)b.
Dinpunctdevederesemantic(alintelesului).Dinpunctdevederesemanticexista:III.
ClasificareadinpunctdevederealraportuluidecardinalitateII.
Asocieridetipunullaunu1:1.Elereprezintaasociereaprincareunuielementdinprimamultimeiicorespundeunsingurelementdina2amultimea.
1)
Asociereaunullamaimulti1:N.Asociereaprincareunuielemdinprimamultimeiicorespundmaimulteelementedina2amultimedarnusiinvers
2)
Asociereamultilamulti3)
APOO Curs Page 9
xxx
yyy
x
x
yyyy
Princardinalitatesaumultiplicitateseintelegenumaruldeelementeauneiasocierifatadeunuldinclasificatori(saumultimedeelemente)esteegalacunumaruldeelementedinacelclasificatorcarepotfiilegatelaunelementdincelalalatclasificator
Raportuldemultiplicitate criteriudeclasificare.Asocierilemultiplesereprezintaprinmaimulterapoartedecardinalitatesaudemultiplicitate.-Reprezentareaasocierilor:asocierileinumlsereprezintaprinunulsaumaimultesegmentecontiunue,intreclasificator(asocieribinare)
-
xxx
yyyy
1:1
1:N
M:N
Class1 Class2
Numeleasocierii(facultativ)a.
min...maxi.011val
Multiplicitatilefatadefiecareclasificator.Sescriulacapatulliniei.Conceptulamavut1:1,1:N,M:N;InUML:
b.
Rol rolulclasificatoruluiinasocierearespectiva(sereprezintatotlacapete)c.Navigabilitatea posibilitateadeaajungedelaunelementdintroclasaincealalata.Eapoatesafieunidirectionalasisereprezintacuosageata.Eapoatesafiebidirectionalasauneprecizata.
d.
MarcajepeasocierilebinareUML
Exempledeasociere:1:N(generic)a)
Rolnumeasocrol
0...11...*
Intreprindere Persoana1...11...*Angajatorangajariangajat
APOO Curs Page 10
Dacaseimpuneconditiacaopersoanasalucrezeintrosingurainntreprindere asociereaeste1:N.Sepotdamaimultevariantedemultiplicitateinfunctiedediferiteleprecizarialemodelului
M:Nb)
Profesor Student**1...101...1000
Asocierilemultiple.Elesereprezintafolosindunrombculiniic)
Clasificareadinpunctdevederesemanticaasocierilor:
Asocierisimple=asocieriincareelementeleasociateauexistentaproprie,independentdeasocieresideelementeledinclasificatorulcucarearelocasocierea.
1)
Asocieridetipcompozitiea.Asocieridetipagregareb.
Asocieriledetipintregpartesuntasocierile(ingeneralbinare)incareexistaunclasificatorcuroldeintregsiunulsaumaimulticlasificatoricuroldeparte(parti)[general].Potexistasi2saumaimulticlasificatoriintregfiecarecu2saumaimulticlasificatoridetipparte.
2)
APOO Curs Page 11
ReprezentareUML
Masina
CaroserieMotorRoata
Legaturadecompozitieesteceamaiputernicalegaturadeasocieredinceleexistente.
Legaturadeagregare2)Estelegaturacarestabilestecorespondentaintregrupurideinstantealeclasificatorilorasociati.-
GrupMembriiaigrupurilor
Clasificatoricarereprezinta:-
EstedereguladetipulM:Ndarpoatefiisi1:N(cazparticular)Oinstantaaclasificatoruluigrupcarereprezintaunintregpoateexistasifaramembriisai.OinstantaaclasificatoruluipoatefiiasociatamaimultorgrupuriLegaturaestederegulaomogena.
Caracteristici:-
114
Club
Persoana
M:N
0...*
0...*
Legaturideasociere
Auabordarimaiputinfixe(precizate)(fiecarelimbajaretoolseturiproprii-
SimpleTipintregparte
LanivelUMLavemasocieri-
Rapoartedemultiplicitate:1:1;1:N;M:N;
I asocierisimple>clasificatoredesinestatator;potexistaasocieri;esteceamaislabainsensullegaturiicareexistaintrecei2clasificatori
Compozitiea.Agregareb.
AsociereadetipintregparteI.
Legaturiintreclasificatoridintrecareunclasificatorareroluldeintreg(exprimaoentitatecomplexa)siunasaumaimulteentitaticomplexecarereprezintapartialeintregului
-
Potaveaunulsaumaimulticlasificatoricuroldeintreg-
Obiectuldetipintregestecompusdinobiectedetippartea.Deregulaobiectuldetipintregnupoateexistafaraobiecteledetipparteb.(deregula)unobiectparteapartineunuisingurobiectintreg(launmomentdat)c.Este(ingeneral)heterogena(existaclasificatoridiferiticaparticeintraincombinatiepentruaformaintregul)
d.
Compozitie>areurmatoarelecaracteristici:1)
APOOCurs420martie200710:20
APOO Curs Page 12
Padure
Copac
1:N
1
0...*
Clasificareauneiasocieri>depindedeinterpretareadatadedezvoltator
Legaturilededependenta
Dependentelepotsafiedemaimultefeluri.Eaestelegaturaprincareunclasificatornumitclientdepindedeunaltclasificatornumittarget(supplier)
-
ClientFurnizor
Tipuridedependenta:
Folosimobiectedinclasafurnizorinimplementaridemetodea.Inargumentealemetodeiclaseiclientb.
Legaturadeutilizare(stereotip)1)
Clasificatorultemplate>clasificatorultipuluidedatefolosita.Legaturidecoeziune.2)
Clasa1Clasa2
uses
Cl.Template Cl.Tip Template
tip
Intreclasificatoricarereprezintaacelasiconceptpeniveluridedezvoltarediferitea.Preprezintaevolutiasoftdinpunctdevederealversiunii
Legaturadetrasare(stereotip)3)
Legaturarafine(stereotip)4)
Poatefiilegaturaintreinterfatasiclasaa.Poatefiilegaturadeinstantiereinreclasasiobiectuldinaceaclasab.
Legaturaderealizare.Easereferalafaptulcaunanumitconceptestespecificatprinintremediulaltuiconceptsauinstanta.
5)
Cl d ifi
Reprezentarealeternativa:
Interfata1 Clasa1
APOO Curs Page 13
Clasadespecificare
Interfata1
ClasadespecificareObiect1
Obiectesidiagramealeobiectelor
InUML,unobiectesteoinstantaauneiclase-Reprezentare:-
Punctx:floaty:float
getx():float...
P1:Punct
x:float=1y:float=1
Graf,obiectelaunmomentdat-Legaturiledintreobiecte:instantealelegaturiidinclaseleinstantiate-
Diagramaobiectelor:
Diagramaobiecteloresteconsiderataunsnapshot.Decelemaimulteorieaesteinlocuitacualtediagrame.
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 implementareaaplicatiilorsoftinmodelulOOporninddelaUMLI.
Class(UML)>class(OO)>infunctiedelimbajuneiinterfeteiicorespundetotoclasasautipulinterface
Implementareaclaselor:1)
LegaturadegeneralizatedevinelegaturademostenireinlimbajeOOa.
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:.... };
Obiecteincluseinclasaintrega)Pointerisaureferintelaobiectedinclasaparte:inJavasuntnumaireferinte,inC#deregulareferinteiarinC++putemaveaambele
b)
Variabiledetipulclasei"parte"1)Asocieriledecompozitie compunereaclaselori.
Implementarealegaturilordeasociereb.
Diagramaclaselormaidetaliate(inetapadeimplementare)
APOO Curs Page 16
Implementareaclaselor(UML)sialegaturilordintreacestea
Clasa(UML)>clasainlimbajOO
Generalizarea(UML)>clasederivateinlimbajeOO-
Compozitia>obiectecadatemembredeclasesaureferintelaobiecte
VariabiledeasociereClasedeasociere
Simpla,deagregare
Asocierea(UML)-
Legaturiledintreclase:
VariabiledeasociereI.Ex:
#define max 100Class 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_studenti0){
else{tratare eroare depasire}}
void getStudent(){
public:
Class Profesor{
Char *nume;Profesor *lista_profesori[max]; //pot fii si referinteInt nr_profesori;//Variabila de asociere care permite directia de navigabilitate student ----> //profesorpublic:
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
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.Faptulcaeasocieresimplanudiferadesituatiaincareamaveaoagregare.Directionalitateaasocierii>dacaestebidirectionalaavemvariabiledeasociereinambeleclase.Dacaesteunidirectionala,atunciavemnevoiedeovariabiladeasocierenumaiinclasadeorigineasagetiidenavigabilitate.
Variabileledeasocieresuntderegulavectoridepointerilaclasaasociata(saureferinte).Putemavealisteinlantuitesauoricealtestructuri.
M:N>sefolosescvectoridepointeriinambeleclase(exempluldat)a)1:N>inclasacarearecoeficientuldemultiplicitate1avemunvectordepointerisiina2aclasaavemunpointersimplu.
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>variabileledeasocieresuntpointeric)
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 directiiint 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,metodeledeadaugareainstantelorEx: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+asocierileconstituieunmecanismfoarteputrenicdereutilizareadatelorinprogramareaobiectorientata.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.AsociereaintreCMyDocsiCMyViewestemostenita.
Implementarealegaturilordedependenta.
Legaturaderafinare()>nuseimplementeazaintrunmodspecific(nocode);1)Legaturadetrasare()>nuseimplementeazaniciea(nocode);2)Legaturadeconectare()>seimplementeazaprinclaseletemplate;3)template class Tvector{.........};
Instantiereaobiectelor>a)Class1
Object1
class X{...};class X obx;Legaturaderealizareaauneiinterfetedecatreoclasab)
interfaceInterfata1
ClasaY
uses
ImplementareJava:Interfaceclasay implements interfata{....};C++: pt metoda: clasa abstracta - mostenire :-??
Legaturaderealizare4)
unobdintroclasaestefolositinaltaclasainfunctiedeargumenta)class Cerc: public Forma{...}
int intersectie(Segment s){float panta=s.getPanta();}
public:
};
Legaturadeutilizare5)
Punct
Cerc Segment
1 * 1*
APOO Curs Page 21
Punct
Cerc Segment
1 * 1*
Observatie:
Panaacumamstudiatdiagramealeclaselorsiobiectelor.Acestediagramesuntstaticesireprezintastructuramodelului(lanivelfoartedetaliat)
diagramedecomponente-diagramealesistemeorsisubsistemelor-diagramealepachetelor-
Ulteriorvomintalniisialtediagramedesctructurapenivelurimaiinalte
APOO Curs Page 22
Modelareacomportamentala(behaveior)asistemelor.
Oaltavedereasuprasistemuluisoftware-Nedainformatiidesprecomportareaelementelorsistemului(prininteractiuniintreelementeleunuisistem)
-
Lanivelgeneric>comportareaintreclase,sisteme,pachete.Laniveldeinstante:intreobiecte,instantealesistemelorsiinstantedepachete.
Modelareacomportarii
Clase(clasificatori)Sisteme(sisubsisteme)Pachete
Modelareacomportariipediferiteniveluridedetalierealesistemului:
InUML:unmesaj=unelementcomportamentalcarereprezintaointeractiuneintreelementealemodelului.(interactiuniledaufunctionareasistemului)
-
Client>carecereoanumitaactiuneServer>furnizeazaunrezultat(aluneiactiunideregula).
Unmesajimplica2entitati:
Agent=elementcareareatatroldeservercatsideclient.-
Ex:mesajintre2obiecte=apeluluneifunctiiaunuiobiectdecatrealtobiect(dintrofunctieaobiectuluiclientmaiexact).
Ex:intresubsisteme:trimitereaunuimesajpeoretea;webbrowsertrimiteunumesajcatreunwebserver
Mesaj
Modcomportarii:unelementtrimiteunmesaj unuialtelement.(interactiunea)
Existentauneilegaturiintreelementeleclientsiservercarecomunica.Oricelegaturapoatepermitetrimitereaunuimesaj:deasociere,deutilizare,degeneralizare,etc.)
Conditiadevizibilitateaserveruluifatadeclient.Ex:serverulsafievizibil;adicasafieaccesibil,safieinacealasdomeniu.
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};
APOOCurs63aprilie200710:01
APOO Curs Page 23
//nivel de instantafloat 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:
intreclaseintresubsistemecazurideutilizare
lanivelgenericDiagramedecolaborare:
intreobiecteintreinstantedesubsistemeintrecazurideutilizare,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
Ordonareatemporaraamesajeloresteimplicitaindiagramadesecventaamesajelordeoareceaxaverticalareprezintatimpul.Diagrameledesecventaamesajelorsuntmultmaiutilesimultmaiintuitive.
ob1 ob2 ob3 ob4
APOO Curs Page 25
ob1 ob2 ob3 ob4
Cele2reprezentarisuntsimilare
Diagramedestare
osatareesteocolectiebinedefinitadevalorialeatributelor.-trecereasefaceprintranzitie.Otranzitiearelocintre2starisiarelocderegulacaurmareauneiactivitati.
-
Sereferalastarileprincaretrecobiecteleinstantealeuneiclase.
pornitoprit
motor:
Dacastarileprezintavaloricusemnificatiidiferitedelaovaloarelaalta,atunciputemaveanevoiedeastfeldereprezentari.Ex:
Cele2staripotfidatedeturaitie(comparatiefatade0)
Tranzitiadelaostarelaalta
Ex:Diagramadestareaunuiproces(gestionatdeSO):stare
Gata de executie
planificare
Executie
lansare
prelevare Blocat
Aparitia eveniment
ului
Asteptareeveniment
extern
Diagramadeactivitate
APOO Curs Page 26
Sereprezintasecventaactivitatilorcareasigurarezolvareauneianumitefunctiuni[elementulUMLcorespunzatororganigramelorfolositeinaintedeUML]
ostaredectivitate eareprezintaoproceduracareseexecutapentruarealizacevaanume.a)
tranzitii treceriintrestarideactivitateceaulocincursulrezolvariifunctiuniirespectiveb)
Activitate
Activitate 2
Decizie(branch)c)
Activitate
Activitate 2
State1 State2
Elementedeexecutieconcurentad)
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)vedereasistemuluidinpunctdevederealutilizariirecomandatepentruastabiliicerintelededezvolatarealeunuisistem
lanivelgenericleniveldeinstantedestructuri-decomponente-
Diagrameusecase
Modelareautilisariisistemelor-
unsetderoluripecareilpoatejucaunelementalansamblului-tip"actor"(generic)-instantaaunuitip-Unactorpoatefiiopersoanasauunaltsistemcareutilizeazasistemuldat.Poatereprezentachiarunevenimentdetimp!
-
Actora)
uncazdeutilizarereprezintaunsetdefunctiunipecareunelementiloferaactorilor.Sereprezintaprintruncercincareaparedenumireacazuluideutilizare
-Cazuldeutilizare(contextdeutilizare;usecase)b)
intreactori-intreusecaseuri-intreactorisiusecaseuri-
Legaturi:c)
APOO Curs Page 28
Modelareautilizarii
Usecase-
maialesinfazadestabilireacerintelorpentruutilizatoricarenusuntinteresatidestructurasistemuluicideutilizare.
Deregulaestefoarteutila-
Actorii(unsetderoluri;poatefiiopersoanasauunsistem)Contextedeutilizare(seturidefunctiisaufunctionalitati)
Entitati:-
Diagramadeutilizareincaresereprezintaactoriisicontexteleculegaturiledintreacestia.Legaturilesuntmaispeciale,elespecificandmoduldeutilizare(asemanatoareculegdeasociere)
-
Generalizarei.
Deutilizare()1)Deinstantiere2)
Dependenteii.
Legaturiintreactori:a)Altelegaturiposibileincadrulmodelariiutilizarii:
Generalizarea)
i.ii.Deinstantiere()iii.
Dependentab)
Intrecontexte:b)
APOOCurs717aprilie200709:59
APOO Curs Page 29
Extendssiincludeaudirdiferite.Arputeafiiconsiderateechivalentedarlegaturadeincludereestemaiputernica.
Diagrameusecase>modelarestructurala-Diagramedeinteractiune>modelarecomportamentala-
Incadrulfunctionalitatilordemodelareaautilizariisepotfolosii:
Client
Furnizare bani
Introducere card
Cerere Pin
Introducere pin
Cerere suma
Introducere suma
Eliberare card
Carecomandare,uncontextdeutilizaretrebuiesaoferefunctionalitaticaresacorespundaunuiscopalactorului.Toateactiunilementionatemaisusalcatuiescunscop.
Modelareacomponentelor.
Oferaoanumitafunctionalitateprintrointerfata-Potfidezvoltate,achizitionatesiutilizateindependent-Potfiinlocuibile-Impreunaduclacreeareasoftuluibazatpecomponente.-
Componentesoftware:esteounitatedeprogram(executabil)-
Ocomponentaesteoextindereanotiuniideclasificator.
LaprogramareOO>clasesiobiecte-LaprogramareanonOO>maimultefunctii-
Experientadeprogramareaduslanecesitateadeaaveacomponentemaimari,cumaimultefunctii.Ocomponenta=ogruparede:
APOO Curs Page 30
Reprezentaredediagrameacompenentelor(reprezstructurale)>exitindereadiagrameiclaselor
-
Diagramedeinteractiune(reprezmodelarecomportamentala)>diagramedesecventaamesajelor,diagramedecolaborare,etc
-
Incadrulmodelariicomponentelor:
Generic>tipcomponenta-Instanta>instantealecomponentelor-
Diagramelepotfiide2tipuri:
legaturadecompozitie
UtilizareInstantiere
Legdedependenta
Legautiintrecomponente
Legaturadecompozitie
Diagramedeinteractiune
Actor1
Object1 Component4 Component5
Message1
Message2Message3
Message4Message5
Message6
Componentelepotfiideployedinnoduridecalcul
OrganizareamodelelorUML
Package(pachet)Systems(subsisteme)Model
Gruparedeelemente(alemodelului)Reducereacomplexitatii-
APOO Curs Page 31
Organizareierarhica
Unpachetesteogruparedeelementealemodelului.Elementelegrupatedeunpachetpotfii:
ClasificatoriAltepachete
Pachete1)
Degeneralizare-
Decompozitie-Dedependente>deutilizaresau-
Legaturile:Diagramapachetelor:pachetele+legaturileintreacestea.
Esteunpachet(grupare)deelemente;Organizareunuisubsistemsefaceprecriteriulfunctionalitatii.
a)
subsystemSubSystem1
Celmaiinaltnivel
Legaturadecompozitie(lafelcalapachete,cusemnul+)Legaturideutilizareposibileintrediversesubsisteme.Legaturadecompozitie>ducelaierarhiidesubsisteme
Subsisteme+legaturidedate:Diagramealesubsistemelor:b)
Subsisteme(UML):2)
subsystemSubSystem1
subsystemSubSystem2
subsystemSubSystem3
-End11 -End2*-End31
-End4*
subsystemSubSystem4
subsystemSubSystem5
-End51-End6*
-End71 -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
UMLemaiintuitiva.UMLasiguracompatibilitateaintrediferitiutilizatorisidezvoltator.b.
Aplicatiilesoftwaremarinupotfiidezvoltateoricum.Elebeneficiazadeoabordaresistematicaincaresuntprecizatediverseleetapesioperatiicaretrebuiescefectuate.CeamaidesfolositaabordareextecuajutorullimbajuluiUMLcarepoatefiifolositintoateetapele.
1)
Tehnologiidedezvoltaresoftware(softwareengineering)
Printrotehnologiesoftwareseintelegeunansambludelimbaje,standarde,biblioteci,interfete,sistemededezvoltare,toolseturi,toateavandcaobiectivdezvoltareasoftului,inclusivimplementare(panalatestareasiexecutiaprogramului)
Clasificareaunuinumardedomenii:
Dezvoltarea"fromscratch" custommode(sepleacadela0).Sefolosesccelmultnistebibliotecifaradiversealtecomponente.Sepotdezvoltaaplicatiisoftwaremici.Avantaje:flexibilitatefoartemaresiadaptarefoartebunalacerinteleclientului.Dezavantaje:riscdepiata,ceprovinedintrunposibilitimpderealizareridicat eficientascazuta.
a.
Dezvoltareaprinachizitiedeprodusesoftwaregatarealizate.Avantaje:riscdepiataredus,timpderealizaremicsidecieficientamare.Dezavantaje:flexibilitateredusa,adaptabilitateaesteredusa seadapteazacerintelelasoftwarenusoftwareullacerinte,dificultatedeintretinere,vulnerabilitateinfataconcurentei.
b.
ModuldeabordareadezvoltariisoftwareI.
APOOCurs824aprilie200710: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.Chiardefinitiaestecontroversata.Panalacenivelsemergecucompartimentarea?Inmomentuldefataexistaopiatadecomponenteacarordezvoltareaavutlocmailentdareaexista.ComponentelesoftwareauinceputcasiVBX visualbasiccontrols componentefolositepentrudezvoltareadeinterfete.
v.
Dezvoltareasoftwareuluibazatpecomponenteesteosolutieintermediaraintrecele2extreme:Areungraddeflexibilitatemaimaredecatsoftulcumparat,eficientaintermediara,etc.Altavantaj:sepotcombinasolutii.Sepoatecumparaopartegatafacutalipitacuunsoftpropriucareimpreunasaprezintetoatecerinteledoriteincluzivunanumitavantajfatacecompetitori.
vi.
Softwarebazatpecomponente realizareasoftuluiprinasamblaredecomponentesoftware.c.
Combinareacomponentelorsoftwarenuesteatatdeflexibiladeoarecedepindedeproducator.[compatibilitateredusa,maialesintreproducatori]
-
Existadezvoltaridecomponentepebazacatorvatehnologii.-
Inrealitate:
1proces(unulsaumaimulte)cuunulsaumaimultethreaduricareseexecutapeosingurastatie.Nuaparcomunicatiipereteasideciaplicatiaserezolvalocal.
-
MSDEV(bazatpeC++)caresesprijinapebibliotecaMFCcepermitedezvoltareausoaraaiinterfetelorgraficeprinintermedulVisualC++.Unframework=gruparedeelementecarepermitedezvoltareaunoranumitetipurideaplicatii.
Existadiferitetoolseturidedezvoltare-
Aplicatiilocale desktop,nedistribuite;1)Clasificareaaplicatiilordinpunctdevederealnumaruluidestatiipecareseexecuta.
APOO Curs Page 35
JDK J2SE.DesiJavaafostdezvoltatpentruinternet,elpoatefiifolositcamodalitatededezvoltareaaunuisoftwarelocal.
Arhitecturaclientserver(pe2niveluri):Arhitecturidedezvoltareaaplicatiilordistribuite:-
Aplicatiidistribuite:maimulteprocese,posibilcumaimultethreaduri,careseexecutapemaimultestatiiinterconectateprintroretea.
2)
Arhitecturaclientslab(pe2niveluri):Necesitaunserverputernic,estesimpludeimplementat,oferaosecuritateputernica(toateoperatiileserezolvalaserver)siintretinereaestesimpla.Dezavantaje:poatesaaparacongestiaserverului.
Arhitecturaclientputernic(pe2nivele):Avantaje:serverulnusecongestioneaza.Dezavantaje:intretinerecomplicata(oriceschimbarepresupuneschimbarilatoticlientii),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 carecereinformatiidelaunserverwebcarelarandulluipoatesacearadatedintrunsgdbcarepersonalizeazasauspecificamaiclarcerinteleclientuluiweb.
Nivelurileuneiaplicatiimultitiersuntnivelurilogice.Elepotsafieexecutatefiecarepecateunhostsaupotsafiegrupate
TehnologiiMicrosoft porninddelaoviziune(Desktop)saajunslaaplicatiidistribuiteputernice(1985).
a.
TehnologiaCORBA ComonObjectRequestBrokerArhitecture.Arhitecturapornestedinb.
TehnologiilededezvoltaresoftwareIII.
APOO Curs Page 36
In1991,tehnologiaafostspecificatadeOMG(ObjectManagementGroup).MomentanasaajunslaCORBA3.0denumitasiCCM corbacomponentmodel.
1)perspectivaenterprise.
JDK Javastandardeditioncareoferainmareparteaplicatiidesktopsiaplicatiidistribuiteindiverseacceptiunidintrecareappleturilesuntfolositeininternet.Existaunpachetjava.netcarepermitecomunicatiaprinsoclurisicarepoatesafiefolostidirect.Maiavemsipachetuljava.rmicarepemitecomunicatiainretea
1)
J2EE Javaenterpriseedition.Enterpriseinseamnadistribuit.Acestpachetoferasuportpentruaplicatiidistribuiteatatinretealocala.DinpachetulJ2EEfacparteEJB enterprisejavabeanscaresuntcomponentesoftwareutilizateinrelelelocalesiininternetservletisiJSP.Acesteadinumrapotfiiconsideratecomponentesoftware.ToatecomponentelesuntOO.
2)
TehnologiileJava1995 dezvoltatadeSunMicrosystemspornitadinperspectivainternet.Easiapropussaoferesolutiiptaplicatiileininternet.
c.
Seremarcaospiraladedezvoltareatehnologiilorsoftware.Sereiauanumiteideidelaotehnologielaalta.TehnologiaCORBAesteconsideratainternetunfriendly.Nuareprevazutunmecanismeficientdetravesareafirewallurilor.
TehnologiiMicrosoft
Dezvoltareadeaplicatiidetipdesktop MSDEV-
EtapaCOMDCOM.(ComponenteObjectModel DistributedCOM).Aceastatehnologieesteinglobatainsistemeledeoperare.Ainceputin1991printehnologiaOLE1.0 objectlinkingandediting1.0.Saincercatlegareadeaplicatiidetipdesktop.In1992standardulintroducenotiuneadecomponenta.IN1993 OLE2;1996 ActiveX tehnologiaCOMpentruinternet;In2000 com+
In2002.NETFramework1.0;C#.Aplicatiilesuntorientatepecomponentesoftware.In.NETcomponentelesoftwaresuntmaiinregimentate.Unansamblu(oentitatedezvoltatain.NET)reprezintaocomponentasoftware.NET
IN2001 tehnologia.NET orientatapeaplicatiiInternet(distribuita)
Dezvoltareaaplicatilordistribuite:-
APOO Curs Page 37
TehnologiaMicrosoft.NET
Dezvoltatadupaanul2003;Estedirectionatacatreaplicatiidistribuite;InlocuimtehnologiaCOM,DCOM-
InteroperabilitaeaintrediferiteaplicatiiIntegrarealimbajelor(inaplicatiisepotfolosiimaimultelimbajediferite)EstelimitatalasistemeledeoperaredetipWindows.
Principii.NET:-
.NETFramework cadrudedezvlotareaaplicatiilorcarepermitedezvoltareaaplicatiilorinplatforma.NET.Maipoartasinumeledeplatforma.NET
-
Windows
FrameworkBaseClases(FBC)
Data&XML
WebForm\WindowsFormsWebServices
EsteechivalentcuomasinavirtualaJava.Executa(controleazaexecutia)inlimbajintermediarIL(MSIL:MicrosoftInternalLanguage)
C#(seamanasicuC++sicuJava)VB.NETJ#ManagedC++
ILseobtindincompilarearesurselor:limbajele.NET:
IntrebibliotecasisistemuldeoperaremaiaparesiCLR parteaexecutivaaprogramelor(.NETFramework).
ToateprogrameleproduccodinlimbajIL
SursaC#SursaJ#
ManagedmoduleIL
SingurulprogramdiferitesteManagedC++carepoategeneramodulmanagedsaunu.
Managedmodule moduladministrabil:ILsipoatefiiexecutatsubcontrolulCLR.Ununmanagedmodule modulneadministrat poatefiiexecutatdirectdeSOsiesteunmodulincodnativ(limbajulCPUpecareselucreaza)
FunctionareCLR-
APOOCurs915mai200710:12
APOO Curs Page 38
Modul managed
Managed IL
Managed IL
Compilat
incarcare
Verificare cod
DA
Cod nativ managedNU
executieexecutie
Garbage col
Verificarederuntime"Garbagecolector":obiecteledinmemorialiberasuntdistruse.ExecutiaestesigurapentrucanumaiexistaoperatoruldeletecaregeneraproblemeinC++
ControlulexecutieiCLR
CodulIL"Metadata":tabelecaredescriutipuriledefiniteinmodululrespectiv
Compilator Modul(managed):
Unitateadeexecutie,instalare,versionaresisecuritateestedenumitaansamblu(assembly).Unansambluesteunitateacaresepoateinstala.Unansamblupoatesacontina1saumaimultemodule.Elaredecimodulelepropriuzise(carecontincodILsimetadata),diverseresursesiunmanifest(carecontinelistadatelor).Unansambluesteocomponentasoftware.
Organizareaprogr.NET
ExempluHelloWorld:
//fisier sursa Hello.csusing System;
Console.Writeline("HelloWorld");public static void Main(){
}
class Hello{
}
CompilarecscHello.csInurmaacesteicomenzisecreeazaHello.exe(ansamblucontinutinwindowspe portableexecutable)
SemodificaloaderulSOailoaderulpoatedeosebiiunPEincodnativdeunPEincodIL.InstalareCLR(.NETFramework)-
Inwindowslibrariilepoartadenumireadedll(DinamibLinkLibrary)
C#estemaipurdinpunctdevederealOOfatadeC++.Nuadmitemetodesivariabileglobale.Medmaincucareincepeexecutiadevineometodastaticaauneiclase.Eapoatefiiinvocatafarainstantiereaclaseidincarefaceparte.
a)
suntgruparilogicedeentitatia.claseincarenumeledeidentificatorisuntuniceb.permitevitareacoliziunilordenume.c.spatiiledenumesepotgrupaierarhicd.
Spatiiledenumeb)
namespace Spatiul1{
APOO Curs Page 39
.......
class Clasa1{......}}
manespace Subspatiul1{
}
Numeleuneiclase:Spatiul1.Subspatiul1.Clasa1.Lautilizare,directivausingnepermiteoutilizaremaisimplaaspatiilor.AstfelSyste.ConsoledevineConsole
SystemSystem.CollectionSystem.IOSystem.DataSystem.Winows.FormsSystem.Web.UISystem.Web.Services
Tipurilededate.NET
tipuricomuneCTS(CommonTypeSpecifications)tipuriimpuselimbajelornumiteCLS(CommonLanguageSpecifications)fiecarelimbajdefinestecamultimeatipurilorsaleomultimecareesteosubmultimeaCTSsiincludeCLS
Integrarealimbajelor-
CLS
CTS
C++
C#
VB.NET
Clasificareatipurilordistribuitedin.NET
tipurivaloaretipurireferinta
Dupamoduldecreere:-
tipuridefinitein.NETtipuridefinitedeutilizator.
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#
secreeazaprindeclaratiei.secreeazainstivaii.nuavemreferinteiii.
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,3Structuri: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{
TipurivaloareI.
APOO Curs Page 41
System.Console.Writeln(l1.ToString);}
}
Afiseaza:Locatie45Curssecontinuaculaboratoarele.NET(7si8)Exempluclasastatica://Fisier statice.csusing System;
private int x;private const int c=10;//se poate initializa numai in declaratie o constprivate readonly int r=2;//se mai poate initializa si in constructorpublic 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 //nestaticepublic 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=6c1.incs();//eroare, nu se poate accesa metoda statica folosind un obiectClasa.incs();//corect}
punlic static void Main(){
}
public class Program{
APOO Curs Page 42
Top Related