nesneye dayalı programlama ve uml

download nesneye dayalı programlama ve uml

of 39

Transcript of nesneye dayalı programlama ve uml

  • 8/8/2019 nesneye dayal programlama ve uml

    1/39

    Nesneye Dayal

    Programlama nedir?UML Nedir?

    Snf Diyagramlar

    Nesneye Dayal Programlamann Temel Talar

    Miras alma (Inheritance)

    ok biimlilik (Polymorphism)Veri saklama (Encapsulation)

  • 8/8/2019 nesneye dayal programlama ve uml

    2/39

    Yazlmsektrndeprogramgelitirmekonusundagnmzekadarbirokyaklamdenenmitir.Bunlarnilkiprogramnbatanaayasrasileyazlpaltrlmasdr.BuyaklamlaBASICdilikullanlarakbirokprogramyazldnbiliyoruz.Buradasorunprogramnaksrasndadeiikksmlaragoto deyimiileatlanmasdr.Programkodubirkabinsatrolunca,koduokumakveynetmekgerektenok

    byksorunoluyordu.GWBAsic,QBasic,QuickBasicgibiderleyicilerbunaiyirnekti.

    kinciyaklamiseilevedayal(procedrel)yaklamdr.Programlardabirokiin

    tekrartekrarfarkldeerlerikullanlarakyapldfarkedildi.Meselaherhangibirprogramdaikitariharasndanekadargnolduunubulmakbirokkezgerekolabilir.Budurumdabalangvebiti tarihlerinialparadakignsaysnverenbirfonksiyonyazlabilirvebufonksiyonihtiyaduyulduuyerdeuygunparametrelerle

    ar

    l

    pistenensonueldeedilebilir.Yap

    salyakla

    mPascalveCdillerindeuzunyllarbaariilekullanlmtr.

  • 8/8/2019 nesneye dayal programlama ve uml

    3/39

  • 8/8/2019 nesneye dayal programlama ve uml

    4/39

  • 8/8/2019 nesneye dayal programlama ve uml

    5/39

  • 8/8/2019 nesneye dayal programlama ve uml

    6/39

    UMLHereyden nce UML bir programlama dili deildir. UML(Unified Modeling Language) dahaok Nesneye Dayal Programlama iin kullanabileceimiz bir modelleme dilidir. Grady Blooch,James Rumbaugh ve Ivar Jacobson tarafndan gelitirilmitir. UML'den nce yukarda ad geenkiilerin her birinin kendi gelitirdii metodolojiler vard. Grady Booch'un "Booch

    Metodolojisi", James Rumbaugh'un "OMT(Object Modeling Technique)" ve Ivar Jacobson'un "OOSE (Object Oriented Software Engineering) " metodolojileri vard. Rational firmastarafndan bu grsel modelleme dilleri birletirilerek 1995'te UML gelitirilmi ve 1997 ylndaObject Management Group (OMG) tarafndan bir standart olarak kabul edilmitir.

    www.omg.org

    UML1.0(1997)

    UML2.0(2004)

    http://www.omg.org/http://www.omg.org/
  • 8/8/2019 nesneye dayal programlama ve uml

    7/39

    Yazlm teknolojisi gelitike yazlan programlarn karmakl ve zorluu giderek

    artmaktadr. Donanm ve yazlmn i ie girdii, byk a sistemlerinin giderekartt bir dnemde doaldr ki biz programclarn yazaca programlardabyyecektir.Yazacamz programlar ok karmak olaca iin kod organizasyonu

    yapmamz zor olacaktr. Hele birok programcnn alaca projelerde bu nerdeyseimkansz hale gelmitir. Bu yzden standart bir modelleme ve analiz diline ihtiya

    duyar

    z. Program

    m

    z

    n analiz ve dizayn aamas

    nda modellemeyi gzel yaparsakileride doabilecek birok problemin kmasna engel olmu oluruz. UML daha oknesneye dayal programlama dilleri iin uygundur. Problemlerimizi paralaraayrabiliyorsak, ve paralar arasnda belirli ilikiler salayabiliyorsak UML bizim iinbiilmi kaftan gibidir. Mesela bir ATM siteminde mteriyi, banka memurunu ve

    ATM makinasn ayr paralar halinde dnebiliriz. Mteri ATM makinasndan

    para eker, banka memuru ATM makinasna para ykler.Ama banka memuru ilemteri arasnda dorudan bir iliki yoktur.Bu tr ilikiler UML 'de eitlidiyagramlarla gsterilir. Bu diyagramlar hakknda geni ve detayl bilgiyi daha sonraki

    yazlarmzda ele alacaz.

    Bu k

    sa giriten sonra UML 'in tarihine bakal

    m.UML 'in douu son y

    llarda yaz

    l

    mendstrisindeki en byk gelimelerden biri olarak kabul edilebilir. UML 1997 ylndayazlmn, diyagram eklinde ifade edilmesi iin bir standartlar komitesi tarafndanoluturuldu. Daha nce hemen hemen her daldaki mhendislerin standart birdiyagram izme arac vard. Ve imdi de programclarn UML 'si var.

  • 8/8/2019 nesneye dayal programlama ve uml

    8/39

    UMLilehazrlanm biryazlmhemdahaazmaliyetlihemdahaetkilivedahauzunmrlolur.UMLile

    dokmantasyonuyap

    lm

    birprogram

    nsonradandzenlenmesidahakolayolur.BtnbunlarUMLkullanmamziinyeterlisebeplerdirdiyednyorum.Ksaca,UML'ninfaydalarnmaddelerhalindesralarsak;1) ncelikleprogrammzkodlanmayabalamadanncegeni biranalizivetasarmyaplm olacndankodlamailemidahakolayolur.nkprogramdannebeklediimiziveprogramlamaileneleryapacamzprofesyonelbir ekildebelirlerizUMLile.

    2) Programmzdabeklenmedikbirtakmmantksalhatalar(bug)minimumaindirgemi oluruz.3) Tasarmaamasdzgnyapldysatekrarkullanlabilenkodlarnsaysartacaktr.Budaprogramgelitirmemaliyetinibykldedrecektir.

    4) UML diagramlarprogrammzntamamnkapsayacaiinbellekkullanmndahaetkilihalegetirebiliriz.

    5) Programmznkararllartacaktr.UMLiledokmanlandrlm kodlardzenlemekdahaazzamanalacaktr.

    6) Ortakallanprojelerdeprogramclarniletiimidahakolayhalegelir.nkUMLileprogrammzparalaraayrdkveparalararasndabirilikikurduk.

    Birsistemingelitirilmesikabacaaadakiaamalardangemektedir. lkikiaamadaUMLbyklderoloynar.

  • 8/8/2019 nesneye dayal programlama ve uml

    9/39

    imdiksavezbir ekildeUMLkomponentlerinden(diagramlar)bahsedelim:NesnelerarasndailikikurmakiinUMLbirtakmgrafikselelemanlarasahiptir.Buelemanlarkullanarakdiyagramlaroluturacaz.Bu

    makaledesadecebudiagramlarnneieyaradngreceiz.UMLtemelolarak9diyagramtrndenoluur.

    CLASSDIAGRAM

    Gerekdnyadaeyalarnaslaraba,masa,bilgisayar eklindesnflandryorsakyazlmdadabirtakmbenzer

    zelliklerevefiilleresahipgruplarolutururuz.Bunlara"Class"(s

    n

    f)denir.Gelitiricia

    s

    ndannemliolan"ClassDiagramlar"hakkndadahasonradetaylbirmakalemizolacak.

    OBJECTDIAGRAM

    Birnesne(object)snfn(class)birrneidir.Butrdiyagramlardasnfnyerinegereknesnelerkullanlr.

    STATEDIAGRAM

    Gereknesnelerinherhangibirzamaniindekidurumunugsterendiyagramlardr.Mesela,Alinesnesiinsansnfnngerekbirrneiolsun.Ali'nindomas,bymesi,genliivelmesiStateDiagram'larylagsterilir.

    SEQUENCEDIAGRAMClassveObjectdiyagramlarstatikbilgiyimodeller.Halbukigerekzamanlsistemlerdezamaniindedeieninteraktivitelerbudiyagramlarlagsterilemez.Butrzamanladeiendurumlarbelirtmekiinsequencediyagramlarkullanlr.

  • 8/8/2019 nesneye dayal programlama ve uml

    10/39

    ACTIVITYDIAGRAM

    Birnesnesinindurumuzamanlakullanctarafndanyadanesneninkendiiselilevleritarafndandeiebilir.Budeiimsrasnactivitydiyagramlarylagsteririz.USECASEDIAGRAM

    ProgrammzndavrannnbirkullancgzyleincelenmesiUseCasediyagramlarylayaplr.Gerekdnyadainsanlarnkullanacabirsistemdebudiyagramlarbyknemtarlar.

    COLLABORATIONDIAGRAMBirsisteminamacnnyerinegelmesiiinsisteminbtnparalarileriniyerinegetirmesigerekir.Builergenelliklebirkaparannberaberalmasylammknolabilir.Butrilikilerigstermekiin

    CollaborationDiyagramlargsterilir.

    COMPONENTDIAGRAMzelliklebirdenokgelitiricininyrttprojelerdesistemicomponentdediimizparalaraayrmak,gelitirmeyikolaylatrr.Sistemiylemodellememizgerekirkihergelitiricitekinden

    bamszolarakalabilsin.ButrmodellemelerComponentDiyagramlarylayaplr.

    DEPLOYMENTDIAGRAMButrdiyagramlarlasisteminfizikselincelenmesiyaplr.Meselabilgisayarlararasndakibaglantlar,programnkurulacamakinalarvesistemimizdekibtnaletlerDeploymentDiyagramndagsterilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    11/39

    Nesne(object)Gerekdnyada,ayrayrtanmlanabilen

    hereybirnesnedir.

    Modelde,hernesneninbirkimlii,durumu,vedavranvardr.

    Snf(class)Gerekdnyada,benzerkarakteristikve

    davranlarasahipnesnelerbirsnf(class)ile

    temsiledilir.Modelde,birsnf,nesnelertarafndan

    paylalandurumvedavranlartemsileder.

  • 8/8/2019 nesneye dayal programlama ve uml

    12/39

    NESNE

    Kimlik(identity)

    Nesneyibirtek(unique)olaraktanmlarveonudier

    nesnelerdenayrr

    Durum(state)

    zellikler(fieldsveyaattributes)ilebelirtilirDavran (behavior)

    Metotlar(methodsveyaoperations):nesnenindurumbilgilerineeriebilenvedeitirebilenilemler.Metot,metotad,aldparametretrleri,ve

    dndrdtriletanmlanr.Herhangibirdeer

    dndrmeyenmetotlarvoidilebelirtilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    13/39

    NESNErneiKimlik:

    renci123

    Durum:ad:AliYlmaz

    renciNo:0401..yl:2007

    Metotlar:

    dersEkle()dersSil()

    dansmanAta()

  • 8/8/2019 nesneye dayal programlama ve uml

    14/39

    S

    n

    f(class

    )aa

    dakileritan

    mlar:

    Alanlar(fields): Nesnezelliklerinitanmlayan

    deikenler,adlarvetrleriile.

    Metotlar(methods): Metotadlar,dndrdtr,parametreleri,vemetotugerekletirenprogramkodu

  • 8/8/2019 nesneye dayal programlama ve uml

    15/39

    UML Diyagram

  • 8/8/2019 nesneye dayal programlama ve uml

    16/39

    UMLS

    n

    fTan

    mlamalar

    Alanlar :

    Kod private long maas

    UML private maas : long

    Metotlar :

    Kod public double maasHesapla()

    UML public maasHesapla(): double

  • 8/8/2019 nesneye dayal programlama ve uml

    17/39

    ERM

    Public: diersnflareriebilir.UMLde+ sembolilegsterilir.

    Protected: aynpaketteki(package)diersnflarvebtnaltsnflar(subclasses)tarafndaeriilebilir.UMLde # sembolilegsterilir.

    Package: aynpaketteki(package)diersnflartarafndaeriilebilir.UMLde~ sembolilegsterilir.

    Private:yalnzcaiindebulunduusnftarafndaneriilebilir(diersnflareriemezler).UMLde sembolilegsterilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    18/39

    UMLdeNesneGsterimi

  • 8/8/2019 nesneye dayal programlama ve uml

    19/39

    UMLde Nesne Gsterimi

  • 8/8/2019 nesneye dayal programlama ve uml

    20/39

    UMLdePaketGsterimi

    Birbirleriyleilikilisnflarbirpaket(package)iine

    yerletirilirler.

    Paketisimlerkkharflerleyazlr

  • 8/8/2019 nesneye dayal programlama ve uml

    21/39

    ASSOCATION(S

    n

    flararas

    iliki)Snflararasndakiilikiyigstermekiinikisnfarasnadzbirizgiekilir.likiyigsterenizgininzerineilikinintryazlr.MeselaKitapvensansnflarolsun.Kitapileinsansnfarasnda"okuma"ilikisi

    vardr.Bunusnfdiyagramndaaadakigibigsteririz.

    Bir nsansnfgereknesnesiolan"Ali"ilekitapsnfgereknesnesiolan"UMLkitab"arasnda"okuma"ilkisivard.Ksaca ylederiz.Ali,UMLkitabokur.Tabigerekbirsistemdeilkilerbukadarbasitolmayabilir.Bazdurumlardaikidenfazlasnfarasndailikiolabilir,ozamandahersnfarasndakiilkiyitanmlamamzgerekir.Bazdurumlardaisebelirtilenilikininbirkuralauymasgerekebilir.Budurumdailikiizgisininyanna"constraints"(ilikikural)yazlr.

  • 8/8/2019 nesneye dayal programlama ve uml

    22/39

    Baz durumlarda snflar arasndaki iliki, bir izgiyle belirtebileceimiz ekilde basit

    olmayabilir.Bu durumda iliki snflar kullanlr.liki snflar bildigimiz snflarlaayndr.zellik ve ilev elemanlar olabilir.Snflar arasndaki iliki eer bir snftryle belirleniyorsa UML ile gsterimi aadaki ekildeki gibi yaplr.

    GrldgibiMteriileKitapsnfarasnda"satnalma"ilikisivardr.Fakatmterisatnalrkencretdemekzorundadr.Builikiyigstermekiincretsnf

    ilikiilekesikliizgiilebirletirilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    23/39

    u ana kadar grdmz ilikiler birebir ilikilerdi.likiler birebir olmak zorunda

    deildir.Bir snf, n tane baka bir snf ile ilikiliyse buna bireok iliiki denir.MeselaYzba ile Er arasnda bireyz bir iliki vardr.Diyagramda bunu gsterirken Yzbasnfna 1 Er snfna ise 100 yazacaz.Gsterimi aadaki gibidir.

    En temel ilikiler aadaki gibi listelenebilir:

    -> Bire-bir

    -> Bire-ok-> Bire-bir veya daha fazla

    -> Bire-sfr veya bir

    -> Bire-snrl aralk (mesela:bire-[0,20] aral)

    -> Bire-n (UML de birden ok ifadesini kullanmak iin '*' simgesi kullanlr.)

    -> Bire-Be yada Bire-sekiz

  • 8/8/2019 nesneye dayal programlama ve uml

    24/39

    KALITIM(INHERITANCE)Eereyalararasndagenellemeleryapabiliyorsakgenellemeyiyaptmzeyalardaortakzelliklerinolduunubiliriz.Mesela,"Hayvan"diyebirsnfmzolsun.Memeliler,Srngenler,Kulardadiersnflarmzolsun.Memeliler,SrngenlerveKularsnfnnfarklzellikleriolduugibihepsininHayvanolmasndandolaybirtakmortakzelliklerivardr.BuyzdenMemeliler,SrngenlerveKularbirerhayvandrderiz.YaniksacasMemeliler,SrngenlerveKular,Hayvansnfndantremiveherbirininkendinezgzelliklerivardrderiz.Nesneynelimliprogramlamadabunakaltm(Inheritance)denir.UML'dekaltm

    aadaki ekildeolduugibigsterilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    25/39

    Kal

    t

    ma rnek

  • 8/8/2019 nesneye dayal programlama ve uml

    26/39

    ERME(AGGREGATIONS)Bazsnflarbirdenfazlaparadanoluur.Butrzelilikiye"Aggregation"denir.Mesela,birTV'yielealalm.Birtelevizyoneitliparalardan

    olumutur.Ekran,UzaktanKumanda,Devrelervs..Btnbuparalar

    birers

    n

    filetemsiledersekTVbirbtnolarakoluturulduundaparalarnistediimizgibiekleyebiliriz.Aggregationilikisini'btnpara'yukardaolacak ekildeve'btnpara'nnucunaiibo elmasyerletirecek ekildegsteririz.rnekbir ekilaadakigibidir.

  • 8/8/2019 nesneye dayal programlama ve uml

    27/39

    stteki ekilden de grld zere bir TV sistemi 1 EKRAN,1 KUMANDA, birden

    ok DEVRE 'den olumaktadr. TV' nin bir paras olan KUMANDA ise 2 PL, 1 TUTAKIMI ve 1 IIK LAMBASI 'ndan olumaktadr. i bo elma ile gsterilen ilkilerdeherbir para ayr bir snftr ve tek balarna anlam ifade ederler. Para btn arasndaok sk bir iliki yoktur. TV nesnesi yaratldnda bir ekran veya bir kumanda

    nesnesi daha sonradan oluturularak TV ye taklr. Ama baz durumlarda btnnesneyi yarattmzda paralarnn da yaratlmasn isteriz. Mesela bir insanbedenini analizini yapalm.Bir insan vcudu ba, gvde, el ve ayaklardan oluur. Birinsan vcudunu dndmzde tmyle dnrz.

    Sadece "Beden" nesnesini oluturup sonradan bedene el, ayak, ba takmakok mantksz olurdu. Bu tr ilikilerin gsterilmesine ise "COMPOSITEASSOCATION" denir. Bu iliki dierine gre daha skdr. Bu tr ilikilerde

    btn nesne yaratldnda paralar da annda yaratlr. Baz durumlarda,taklacak paralar duruma gre deiebilir.Belirli koullarda Kumanda, bazdurumlarda da Ekran olmayacaksa bu tr durumlar koul ifadeleri ilebirlikte noktal izgilerle belirtilir.Bu konuyu daha sonraki makalelerimizde

    detayl bir ekilde ele alacaz. Bu durumda taklacak paralar"constraint(koul)" ile belirtilir.

  • 8/8/2019 nesneye dayal programlama ve uml

    28/39

    Gerek bir BEDEN nesnesi olutuunda mutlaka ve mutlaka 1KAFA, 1 GVDE ve 4 EL_AYAK nesnesiyaratlacaktr.Grdnz gibi sk bir parabtn ilikisimevcuttur.

  • 8/8/2019 nesneye dayal programlama ve uml

    29/39

    ARAYZ(INTERFACE)Bazdurumlardabirsnfsadecebelirliilemleriyapmakiinkullanlr.Herhangibirsnflailikisiolmayanvestandartbazilemleriyerinegetirensnfabenzeryaplaraarayz(interface)denir.Arayzlerinzellikleriyoktur.Yalnzcabirtakmileriyerinegetirmekiinbakasnflartarafndankullanlrlar.Mesela,bir"TuaBasma"arayzyaparakisteronu"KUMANDA"snfndaistersekdeaadaki ekildegrldgibi"KLAVYE"snfndakullanabiliriz.Snfilearayzarasndakiilikiyikesikizgilerleveizgininucundabo genolacak ekildegsteririz.Snfilearayzarasndakibuilikiyegerekleme(realization)denir.Snfla,arayzarasndaUMLgsterimiasndanfazlabirfarkyoktur.Tekfarkarayzdezellik(attribute)yoktur.Dierbirfarkisearayzadlarnyazarkenadnstneyazsneklemektir.Aadabirarayzsnfilikisimevcuttur.

  • 8/8/2019 nesneye dayal programlama ve uml

    30/39

    Polymorphism (ok biimlilik)

    ok biimlilik bir nesnenin davran ekillerinin

    duruma gre deitirilebilmesidir." Aynen, bulunduuortamn artlarna gre renklerini mkemmel bir biimdeayarlayan bukalemun gibi.

  • 8/8/2019 nesneye dayal programlama ve uml

    31/39

    Encapsulation (Kapslleme)

    alma detaylarn sunumdan gizleme. CepTelefonu snf iin tanmlananMarka, Model gibi public zellikler CepTelefonu snfnn grnen yzdr.Dardan bakan sadece bu public alanlar ve metodlar grebilir. Ama snfn

    iine girdiimizde seriNo, frekans gibi baka private (zel) zelliklergryoruz. Bunlar tamamen implementation (CepTelefonu'nun almas)ile ilgili eyler. Dardan bilinmesi gerekmiyor. Hele hele dardandeitirilmemeliler yoksa telefon bozulabilir.

    Snflarmzda dardan bilinmesi gerekmeyen zellikleri ve metodlargizlemek iin private deyimini kullanyoruz.

    Private zellikler sadece snfn iinden grlebilen, deitirilebilenzelliklerdir.

    Bilinmesindeve/veya/yahut/yadadeitirilmesindesakncaolmayanzellikvemetodlarisepublicyapyoruz.

  • 8/8/2019 nesneye dayal programlama ve uml

    32/39

    rnek : Hayvanlar (Kal

    t

    m kullanmadan)

  • 8/8/2019 nesneye dayal programlama ve uml

    33/39

    Hayvanlar (Kal

    t

    m kullanarak)

  • 8/8/2019 nesneye dayal programlama ve uml

    34/39

    Karlatrma

    Kaltmolmadan:9dosya,200satrkod

    Kaltmlabirlikte:13dosya,167satrkod

    yaklak%15tasarruf(basitbirrnekiin)

  • 8/8/2019 nesneye dayal programlama ve uml

    35/39

    UseCases(Kullanm ekilleri)Diyagramlar

    SistemgereksinimleriUMLUseCase(kullanm ekilleri)diyagramlarilebelirtilir

    Yazlmgelitirmeiingereklideildir,fakatgereksinimlervenesneselmodellerarasndaennemlibalantdr

    UseCase:Kullan

    m ekli

    Birsistemfonksiyonunundardangzlemlenendavran

    Sistemle,sistemdaktrler(kullancveyadiersistemlergibi)arasndaetkileimler..Sistemneyapyorlailgili,naslyapyorlailgilideil..

  • 8/8/2019 nesneye dayal programlama ve uml

    36/39

  • 8/8/2019 nesneye dayal programlama ve uml

    37/39

  • 8/8/2019 nesneye dayal programlama ve uml

    38/39

  • 8/8/2019 nesneye dayal programlama ve uml

    39/39

    Kaynaklar

    1)HeadFirstObjectOrientedAnalysis&Design

    2)www.csharpnedir.com3)Y.Do.Dr.FezaBUZLUCAdersnotlar

    4)Do.Dr.ErdoanDODUdersnotlar

    http://www.csharpnedir.com/http://www.csharpnedir.com/