Download - Programare Orientata Pe Obiecte
-
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