Click here to load reader

6 Uvod u objektno-orijentisano modeliranje Softverski ... Uvod u objektno-orijentisano... · PDF file6. Uvod u objektno-orijentisano modeliranje / Softverski inženjering Kao što

  • View
    243

  • Download
    2

Embed Size (px)

Text of 6 Uvod u objektno-orijentisano modeliranje Softverski ... Uvod u...

  • 6. Uvod u objektno-orijentisano modeliranje / Softverski inenjering

    Kao to je u poglavlju 3 objanjeno, objektno-orijentisani model razmiljanja je idealna osnova za softversko reavanje inenjerskih problema. Konkretno reenje inenjerskih praktinih problema zahteva znanja iz objektno-orijentisanog pristupa navedena u poglavlju 3, koja sada treba primeniti.

    Osnova svakog objektno-orijentisanog reenja je takozvano objektno-orijentisano

    modeliranje (OOM), kojim se definie principijelni postupak reavanja, ali takoe i opte-primenljivi mehanizam, ili, bolje reeno, pogodan matematiki opis problema, koji omoguava formalnu, ali takoe jasnu i preciznu formulaciju problema. Posledino se moe izvriti prevoenje u softver pomou razumljivog i objektno-orijentisanog programskog jezika (u naem sluaju JAVA).

    Pre nego to se pree na formalizme i notaciju OOM, trebalo bi - radi pravilne klasifikacije

    objektno-orijentisanih metoda - kratko obraditi istorijski razvoj.

    6.1. Istorijski razvoj objektno-orijentisanih metoda

    Razvoj i projektovanje softvera brzo je od informatiara nazvan inenjerstvom i mogao se izrazom programiranje samo nepotpuno definisati: da bi se dolo do toga da je softver pravi inenjerski proizvod uporediv sa drugim inenjerskim proizvodima na primer, mostom, mainom, ureajem, i sl. i da bi se uinilo razumljivim da je proces stvaranja softvera slian drugim inenjerskim procesima na primer procesu konstruisanja, uveden je izraz softversko inenjerstvo. Ovaj izraz bi trebalo da objasni da softver mora da bude konstruisan po strogo postavljenim principima i kontrolisan jasno definisanom sistematikom, uz omoguavanje upravljanja njime.

    Objektna orijentacija je najnovije dostignue u razvoju softverskog inenjerstva: mnogi

    poznati principi softverskog inenjerstva su pritom preuzeti (npr. princip modularnosti, princip lokalnosti i dr.) i povezani sa novim idejama (jedinstvo podataka i operacija, asocijacije, izmena novosti, itd.). Ovo je imalo za posledicu da se se pored numerikih problema vie nego do tada nenumeriki (kognitivni, tj. podacima orijentisani) problemi mogli reavati; ak su i humanoidni aspekti (npr. interaktivnost, bolja uslunost, individualnost) mogli biti bolje realizovani nego kod konvencionalnog softverskog inenjerstva.

    Ideja objektne orijentacije je pritom stara vie od 30 godina: upravo ezdesetih godina

    prolog veka stvoren je prvi objektno-orijentisani programski jezik, SIMULA. No tek sa programskim jezikom SMALLTALK, poetkom osamdesetih, ire je postao poznat objektno-orijentisani model miljenja. Posle toga su nastali mnogi objektno-orijentisani programski jezici

    47

  • Hartmann, orevi, Goci: Uvod u inenjersku informatiku I

    48

    (Objective C, C++, Eiffel, Clos, Object Pascal, Object Cobol, Ada 9 i JAVA). Sledei grafikon prikazuje razvojni tok objektno-orijentisanih jezika u kontekstu sa ostalim programskim jezicima.

    Istorijski razvoj programskih jezika

    Iako se objektno-orijentisani programski jezici ve dugo vreme upotrebljavaju, iznenaujue

    je da je objektno-orijentisano modeliranje, koje je u sutini koncepcionalna osnova objektno-orijentisanog programiranja, nastalo mnogo docnije. Prvi udbenici o OOM pojavili su se tek poetkom devedesetih. S time u vezi se mogu posebno navesti knjige autora Von Boocha, Coad/Yourdon, Rumbaugh i dr., Wirfs-Brock/Johnson, Shlaer/Mellor i Jacobsen.

    Zatim se pojavio itav niz razliitih, meusobno konkurentnih OOM-metoda. Sledei

    grafikon daje razvoj pojedinih metoda sa naznakom autora pojedinih metoda i pripadajuom skraenicom metode.

    Razvoj OOM (objektno-orijentisane metode)

  • 6. Uvod u objektno-orijentisano modeliranje / Softverski inenjering

    49

    Posebno su dominantne dve metode:

    Object-Modeling Technique (OMT Tehnika za objektno modeliranje), autora Rumbaugha, i

    Object Oriented Design (OOD metoda Booch-a).

    OMT se jako oslanja na klasine struktuirane metode, dok je OOD vie orijentisana ka komercijalnim i vremensko-kritinim primenama.

    Godine 1995. su saradnjom Rumbaugha i Boocha OMT i OOD metoda prevedene u jedan

    zajedniki oblik, takozvani Unified Method (UM), ujedinjeni metod. Kada je i Jacobsen, takoe pristalica OOM pristupio grupi Booch/Rumbaugh (Trijumvirat se nazvao tri Amigosa) i uveo sopstvene principe, posebno Use Cases (tj. sluajeve primene), nastao je Unified Modelling Language (UML) (Jedinstveni jezik za modeliranje), i kao Verzija 1.0 1997. godine stigao kod Object Management Group (konzorcijum za popularizaciju Objektne tehnologije) za standardizaciju i odmah poeo da se razvija kao priznati standard za modeliranje.

    UML je zadovoljio sve uslove jednog konzistentnog opisnog matematikog alata i

    podravao obe oblasti virtuelnog programiranja, tehniku analize i dizajna projektovanja.

    Bazirajui se na definisanoj sistematici i formalnoj notaciji, moe se pomou UML-a od pojedinog problema razviti odgovarajui meta-model (tj. jedan slikoviti, ali od nepotrebnih detalja abstrahovan model problema), koji se relativno lako, poto je konsekventno objektno-orijentisano postavljen, bez znaajnijih gubitaka informacija, pomou objektno-orijentisanog jezika prevesti u izvrni program. Striktna konzistentnost objektne orijentacije, od analize preko dizajna do programiranja, omoguuje ak i automatsko generisanje programskog koda. Tipian primer za to je razvojni alat Together J, pomou koga se metamodel razvijen pomou UML notacije moe automatski prevesti u jezik JAVA i obrnuto.

    6.2. Modeliranje pomou UML i prevoenje u programu JAVA

    Na osnovu injenice da se UML u meuvremenu razvio u svetski priznati standard, u Inenjerskoj informatici je izabran za standardni jezik za opis problema, a u oblasti programiranja mu je data prednost. Drugim reima, daje se prednost objektivno-orijentisanom modeliranju

    Problem

    Reenje problema Programiranje

    Analiza

    Dizajn

  • Hartmann, orevi, Goci: Uvod u inenjersku informatiku I

    50

    problema, kojim se omoguava misaoni prodor u reenje problema. Tek poto je taj prodor uspean, okreemo se programiranju problemskog reenja, na osnovu metamodela notiranog u UML jeziku. Da bi se ovaj kolski model mogao slediti, moraju se izloiti najvaniji elementi i najvaniji formalizmi UML jezika.

    6.2.1. Klase i objekti Posebni oblici klasa

    Objekti i klase su ve kratko informaciono obraeni (videti poglavlje 3), ali su za konkretno reavanje problema na osnovu UML neophodni jo neki detalji i pojedinosti.

    Izlazni rezultat UML jezika su objekti, koji kao to znamo predstavljaju razumljive

    abstrakcije stvari iz odgovarajueg okruenja (iz domena problema) i dobijaju se eliminisanjem nepotrebnih pojedinosti (detalja). Pored toga znamo da objekti imaju osobine koje sadre s jedne strane atribute, s druge strane operacije, tj. metode (kao i funkcionalnost) i da su veze (asocijacije) izmeu objekata vrlo vane.

    Za rad sa modelima objekata su i klase, koje ine objekti iste semantike i stoje u vezi sa

    drugim klasama. Uvoenjem klasa, koje predstavljaju plan gradnje, pomou koga se mogu automatski izvesti tj. proizvesti konkretni, nezamenljivi primeri klasa, postaje nepotrebno pojedinano koncipiranje svakog objekta (kao kod klasinog modela razmiljanja). Objekti pritom fiziki zauzimaju mesto u memoriji odgovarajue planu gradnje (strukturi) klase, radi docnije realizacije na raunaru.

    Ukoliko su gore obuhvaeni osnovni koncepti relativno brzo objanjeni, moe se njihov

    nain funkcionisanja razjasniti na konkretnim primerima; ovde e biti razmotrena dva mala praktina problema.

    Primer (nauno-popularni):

  • 6. Uvod u objektno-orijentisano modeliranje / Softverski inenjering

    51

    injenino stanje Jedna krava, kao Objekt, daje mleko; mnogo krava, kao Objekti iste semantike daju isto tako

    sve mleko, posedujui pritom iste osobine i operacije (davati mleko), to sugerie da se u OOM (Object Oriented Modeling) moe modelirati jedna Klasa Krava.

    Notacija U UML notaciji je prihvaeno da se klase i objekti predstavljaju pravougaonicima. Pritom se

    pojedini pravougaonici obeleavaju imenima klase odnosno objekta i to masnim slovima (bold) sa poetnim velikim slovom. Za razliku od imena klasa, imena objekata su podvuena.

    Tako su sve gorenavedene krave, iako svaka za sebe nezamenljiva, nastale po projektu

    krava, tako da su one takozvane instance (objektne instance) klase (Objektne klase) Krava. Izrazi Instanca tj. Instanciranje baziraju se na slobodnom prevodu engleskog izraza instance za objekte; ispravnije bi bilo re instance prevesti sa egzemplar ili primer (primer objekta).

    Odnos izmeu instanca jedne klase i njoj dodeljene klase moe se predstaviti isprekidanom

    strelicom > pri emu svaka strelica ima znaenje instance-of ili primer-od. Primer (iz projektovanja noseih konstrukcija)

    injenino stanje Za objekte Nosa, Nadvratnik, Konzola, modelira se klasa greda, poto se sva tri

    objekta po teoriji konstrukcija u smislu teorije deformacije mogu obuhvatiti gredama optereenim na savijanje.

    Nosa 1

    Rigla 2

    Konzola 3

    Nosa 1 Rigla 2 Konzola 3

    G r e d a

    instance_ofinstance_of

    instance_of

  • Hartmann, orevi, Goci: Uvod u inenjersku informatiku I

    52

    Apstraktne klase

    Primer (Projektovanje nosaa) Primer za to da se klase mogu koristiti kao osnova za druge klase (podklase) i tek onda iz

    njih izvesti instance je klasa Nosei elemenat. On direktno ne ini nijedan konkretni objekat, ve preputa kao via klasa kreiranje svojim podklasama Greda, Ram, Ploa, Platno, itd. Ovakve klase, koje ne proizvode direktno objekte, nazivaju se apstraktne klase. Apstraktne kl