Click here to load reader
View
243
Download
2
Embed Size (px)
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