Programare Orientata Pe Obiecte

download Programare Orientata Pe Obiecte

of 42

description

Programare Orientata Pe Obiecte

Transcript of 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