5.3. OO METODA MODELIRANJA SUSTAVA |
5.3.1. OO analiza
OO modeliranje sustava se sastoji iz OO analize i OO dizajna sustava.
OO analiza (OOA) je metoda analize i projektiranja OO modela na osnovi izučavanja stvarnog svijeta. Ona je po svom položaju i načinu spoznaje slična E-V metodi. OO analiza je nova metoda, čiji razvoj intenzivno traje, koja izgrađuje koncepte strukture na osnovi ostalih semantički bogatih metoda uključujući i koncepte objektne paradigme.
OO dizajn sustava priprema OO model za objektno programiranje.
OO analiza i njen razvoj važan su čimbenik u budućem projektiranju OO metodom.
Osnovni koncepti strukture objektne metode za modeliranje sustava jesu:
|
Razjasnimo pojedine karakteristike OO paradigme (apstrakcije, učahurivanja, nasljeđivanje, asocijacija, komunikacije, ponašanje, polimorfizam) tumačeći koncepte OO metode.
5.3.2. Objekti i klasa
OBJEKT
je bilo što, što u stvarnom sustavu postoji (stvarni
predmet), ili se želi istaknuti (zamišljeni događaj),
a može se opisati strukturom podataka i metodom
posluživanja (načinom rukovanja podacima). Objekt je ili elementarni ili složeni pojam koji nas zanima i kojeg opisujemo. Objekt je bilo što iz realnosti, ali bitno za sustav i problem koji analiziramo i opisujemo. Objekt je apstrakcija nečega u problemskoj domeni, o čemu se prikupljaju podaci i što skriva (sadrži) vrijednosti svojih atributa (obilježja) i svojeg ponašanja (Varga 1994). Objekt je bilo koji predmet, realan ili apstraktan, koji u sebi pohranjuje neke podatke i operacije koje utječu na promjenu tih podataka (Martin i Odell 1991). |
Objekt može biti i multimedijski koncept kao “BLOB - Binary Large Object) i sadržava slike, filmove, grafikone, govor, zvuk, muziku i slično.
Naprimjer : objekt je čovjek s imenom Ivica Sabljak rođen 26.03.1890. u Rijeci.
Ime objekta je trajno svojstvo objekta. Objekt ima svoj jedinstveni identifikator koji ga čini prepoznatljivim u vremenu i koji se ne mijenja tijekom vremena. Pojam objekta odgovara pojmu pojavljivanja entiteta u E-V metodi. U E-V je dozvoljena izmjena vrijednosti ključnog atributa pojedinog pojavljivanja, što objektu nije dozvoljeno.
KLASA
je skup objekata iste vrste dobiven procesom
klasifikacijske apstrakcije. Objekti se s aspekta
zajedničkih svojstava klasificiraju u klase. Svi objekti
iste klase imaju iste osobine mogu sudjelovati u istim
vezama s drugim objektima i nad njima se mogu izvoditi
iste operacije. Tip objekta je imenovana klasa. Objekt je
jedno pojavljivanje u klasi. Klasa je apstraktni tip podatka sa strukturom i operacijama. |
Svi objekti jedne klase imaju ista ponašanja. Klasu i tip se često poistovjećuje.
APSTRAKCIJA je intelektualna operacija prelaska promatranja pojedinog objekta na promatranje klase, odnosno skupa objekata iste vrste. Primjenom klasifikacijske apstrakcije dolazimo do spoznaja o objektu i klasi. |
Klasa i tip objekta predstavljaju kategoriju objekata koji imaju zajedničke atribute. Objekt je jedno pojavljivanje u klasi i još se naziva i instanca klase.
Prema Coad i Yourdon objektnoj metodi klasa se grafički predstavlja simbolom zaobljenog i zadebljanog pravokutnika, kao na slici 5.1.
Slika 5.1: Grafički prikaz koncepta klase
Pojedini objekti se posebno grafički ne prikazuju, a opći predstavnik pojavljivanja u klasi može se predstaviti uz prikaz klase.
Ako se želi pored klase predstaviti i sadržaj klase odnosno predstaviti i njene objekte onda se oko simbola klase crta isti simbol tanjom linijom, kao na slici 5.2. Dvostruki pravokutnik predstavlja klasu i same objekte. U modelu je moguće nacrtati samo klasu i podrazumijevati da ona ne sadrži pojavljivanja objekata, kao na slici 5.1.
Slika 5.2: Grafički prikaz koncepta klase i objekta
Pojam klase odgovara pojmu tipa entiteta odnosno klase entiteta u E-V metodi.
U E-V se operacije nad tipovima entiteta ne opisuju u samom E-V dijagramu već u zasebnom modelu procesa. To je bitna razlika između ova dva pristupa modeliranju.
Programi nad objektima i klasama se u objektnom pristupu nazivaju operacije. Operacije određuju ponašanje objekata. Jedna klasa ima svoje operacije koji su primjenjivi na sve objekte. Objekt ima svoje operacije koji su primjenjivi samo na njega.
Klasa Partner, na slici 5.2, ima servis Dodavanje objekta partner u Klasu koji omogućuje kreiranje novih objekata u klasi. Operacije su detaljnije opisane kod učahurenja.
Ponegdje je važno istaknuti da je objekt odnosno klasa povezan s drugim objektom ili klasom te je uvedeno predstavljanje objekta i klase s dvostrukim pravokutnikom. Ponegdije se zanemaruje povezivanje s objektima i vanjski tanki pravokutnik ne crta. Takav model je sličan E-V dijagramu. Pridruživanje objekata i klase je interakcija istih a odgovara pojmu tipa veze u E-V metodi.
Klase mogu imati podklase i nadklase. Ovdje se uistinu postiže hijerarhijski odnos raznih klasa, te ćemo taj odnos prikazati kod veza između klasa.
5.3.3. atribut objekta
ATRIBUT OBJEKTA ili SVOJSTVO je imenovana karakteristika nekog objekta.
Atribut objekta odgovara pojmu atribut entiteta. Stanje objekta je opisano vrijednostima njegovih atributa. Svaki atribut sadrži jednu vrijednost. Ime atributa i vrijednost predstavljaju informaciju o stanju objekta.
Unutrašnja struktura objekta definirana je njegovim atributima. Stanje objekta definirano je vrijednostima njegovih atributa. Atribut objekta može imati samo jednu vrijednost. |
U općijem slučaju analize varijanti modela ovo nije obavezno, ta atribut može imati više vrijednosti. Prema metodici MIRIS u E-V MIRIS metodi zabranjeni su višeznačni atributi. Cilj je osigurati praktičnu primjenu metoda za ciljnu relacijsku tehnologiju. Ipak treba istaći postojanja manjeg broja novih alata, kao “Pick:Open Database”, koji imaju implementirane višeznačne atribute. Ova tehnologija nije u skladu s relacijskom tehnologijom i relacijskom teorijom, već u skladu s općijim metodama semantičkog modeliranja, kao E-V ili OO.
U klasi Partner postoji objekt identificiran nazivom “GK Rijeka” čije je stanje opisano vrijednostima atributa i to:
Uobičajeni način imenovanja je slaganje više riječi jedna za drugom bez razmaka s početnim velikim slovom, kao naprimjer “NazivPartnera”.
Stanje objekta se mijenja izmjenom vrijednosti njegovih atributa. Sam objekt je stabilan. Operacije (servisi) mijenjaju stanje objekta izmjenom vrijednosti njegovih atributa. Svaki objekt ima svoje operacije. |
U nekim varijantama OO metoda atribut može biti objekt, što otežava modeliranja i jednostavnost opisa. Sustav se može opisati većim ili manjim brojem baznih koncepata pri čemu koncepti imaju različita značenja. Problem modeliranja je pronaći metodu koja mora zadovoljiti znatan broj zahtjeva.
IDENTIFICIRAJUĆI ATRIBUT je svojstvo klase (to je atribut svih objekata) koje omogućuje jedinstveno prepoznavanje objekta preko vrijednosti tog atributa.
Dva različita objekta nemaju istu vrijednost identificirajućeg atributa. Objekt nikada ne mijenja vrijednost identificirajućeg atributa, ona je statična tijekom cijelog životnog ciklusa objekta. Identificirajući atribut odgovara pojmu ključa u E-V i relacijskoj metodi. |
Identificirajući atribut se obilježava oznakom “id”, kako bi se eksplicitno prepoznao među atributima.
Atribut može biti i identifikator drugog objekta, odnosno objekt može sadržavati vezu prema drugom objektu znajući njegov identifikator.
5.3.4. Veza
VEZA među objektima je koncept koji predstavlja neku interakciju među objektima odnosno predstavlja znanje o njihovoj povezanosti. |
Veza je ovisna o objektima sustava i ne može postojati sama za sebe, a predstavlja znanje o interakciji između dva objekta. Koncept veze odgovara konceptu veze u E-V modelu.
KARDINALNOSTI VEZE u objektnom modelu prema Coad i Yourdon odgovaraju kardinalnostima veze u E-V MIRIS metodi. Prikažimo kardinalnosti primjerom.
Na slici 5.3. prikazana je veza objekata klase Organizacijska jedinica i klase Zahtjev za narudžbu.
Slika 5.3: Veza između objekata dvije klase
Objekti klase Organizacijska jedinica (prema slici 5.3) povezani su s objektima klase Zahtjev za narudžbu tako da jednoj ŠifriOJ pripada najmanje nijedna i najviše M (mnogo) ŠifriZahZaNar, a obrnuto jedna ŠifraZahZaNar ispostavljen je najmanje i najviše od jedne ŠifreOJ.
Veza se ne imenuje te su objektni modeli podataka djelomično nerazumljiviji. Moguće je imenovati i vezu i ulogu veze i dobiti čitljivije modele.
Trostruke veze nisu dozvojelne.
Veza čije su kardinalnosti M po gornjoj granici s obije strane (0,M):(0,M) su složene i nepoželjne, odnosno ako jedan objekt iz klase A može biti povezan s puno objekata iz klase B i jedan objekt iz klase B može biti povezan s puno objektata iz klase A. Bolje je takve veze zabraniti u OO modelu, slično kao u E-V MIRIS metodi. Ona se mogu razložiti na dvije (0,1):(0,M) veze uvodeći novu klasu.
5.3.5. operacije
OPREACIJA (servis, metoda, metoda posluživanja, usluga i slično) je proces koja opisuje ponašanje objekata jedne klase.
Objekti sadrže podatke u samom sebi kao vrijednosti atributa. Operacija je proces transformacije vrijednosti atributa iz početne u završnu fazu. Stanje objekta je definirano vrijednošću njegovih atributa. Promjenu stanja objekta izvode operacije.
Operacija se izvode nad objektom u ovisnosti o stanju objekta (vrijednosti atributa), o stanju poruka pristiglih iz drugih objekata koje omugućuju pokretanje operacije. Svaka operacija ima svoju detaljnu logiku. Svaka klasa ima svoj skup servisa. |
Prva operacija kreira objekt u klasi. Pri kreaciji se odredi vrijednost njegovih atributa i time definira stanje objekta. Stanje objekta se ne mijenja bez djelovanja operacija. Postoje operacije, u okviru faza životnog ciklusa objekta, koji mijenjaju stanje objekta od njegovog nastanka do uklanjanja iz klase.
Operacije mogu biti pokrenute stanjem objekta. Na primjer ako štediša koji je u banci dobio kredit, ratu kredita nije uplatio ili je nije uplatio u cijelosti, pokreće se servis za tiskanje opomene štediši.
Projektiranje
operacija je teži dio objektnog projektiranja. Obično svaka klasa ima osnovne servise za:
|
Ukoliko je klasa povezana s drugim klasama onda se uvode i servisi za povezivanje i raskidanje veza među klasama.
Pod primitivnim operacijama (servisima) se podrazumijeva: aritmetičke operacije, usporedba, kreiranje, kopiranje, selekcije, operacije s tekstom, skupovne operacije, prati vrijednost atributa i slično.
Pored primitivnih operacija posebno se definiraju korisničke operacije. Pri definiciji operacije važno je znati koji objekti su vidljivi i kojima se mogu slati poruke, odnosno s kojima se može komunicirati. |
Objektni sustavi za razvoj informacijskih sustava pridodaju ove operacije svakoj definiranoj klasi zajedno s njihovim porukama koje operacije odašilju u objektni sustav. Slično se ponašaju generatori aplikacija koji za svaku definiranu relaciju i njenu vezu s drugim relacijama automatski generiraju programsku strukturu za osnovne programe (servise).
Logika rada operacije opisuje se precizno sredstvima za opis logike procesa.
UČAHURENJE operacija u objekt je svojstvo objekta i odlika objektnog pristupa po kome se stanje objekta može mijenjati isključivo primjenom operacija ugnjezdenih u sam objekt a ne i pomoću vanjskih programa. |
Operacije nad objektom i vrijednosti atributa objekta su na jednom mjestu u objektu. Nema zasebnih mjesta odvojenog čuvanja programa i podataka, kao u klasičnom pristupu.
Objektove operacije su te koje mu omogućuje dinamiku, odnosno da pored statičke strukture definirane njegovim atributima posjeduje i dinamičke strukture sadržane u samom objektu. Operacije mu omogućuju djelovanje u sustavu.
Operacije su učahurene (smještene, inkapsulirane, ugnježdene) u sam objekt.
Objekti u prirodi sadrže samim u sebi svoje operacije.
Na primjer, objekt “radio prijemnik” može primati radio signale i može svirati. Objekt ptica može letjeti. Objekt zmija može puziti, ugristi, gutati, pariti se, leći jaja i dr. Objekt vulkan može izbacivati lavu, izbacivati pepel, izbacivati otrovne plinove. Objekt telefom može zvoniti, primati i slati glas, pozivati drugi telefon. Objekt čovjek može izvoditi desetine tisuća operacija koje zna, a sve one su u samom čovjeku.
Čovjek može izvesti neku operaciju prvi put, iako je prije nije izveo. Ovo objekti u OOA ne mogu. Svak operacija mora biti planirana i dodana objektu a sam objekt nesmije izmišljati operacije.
Klasa se ponaša kao crna kutija. Organizacija klase je nepoznata za korisnika klase. Korisnici klase vide jedino sučelje klase. Sučelje klase je dostupno svim korisnicima.
Sučelje je skup operacija koji se izvodi nad klasom. |
Ako operacija prikazuje podatke ili ih mijenja onda to može izvesti korisnik kroz sučelje. Kakva je interna organizacija podataka u klasi korisnik ne vidi. Kako se izvode operacije, također nije vidljivo. Ove su informacije skrivene u klasi. Klasa je jedan modul, crna kutija.
Crna kutija je modul kod koga poznajemo ulaz i izlaz te funkciju modula ali ne poznajemo način kako modul pretvata ulaz u izlaz.
Prema prijedlogu nekih autora svaka klasa ima svoj zasebam model koji opisuje samu klasu, strukturu koda klase, tok podataka u klasi i kontrolu rada klase.
5.3.6. Poruke i komuniciranje objekata
PORUKA je informacija koju objekt jedne klase šalje drugim objektima.
Poruka je veza između objekta kojom teku informacije poznate strukture i sadržaja. Objekti primaju i šalju poruke. Poruka odgovara konceptima toka podataka u SAS metodi, odnosno vezama između modula u strukurnoj karti i dijagramima prijelaza stanja.
Poruka
je zahtjev jednog objekta prema drugom objektu za
poduzimanje određene akcije koju drugi mora izvesti jer
on sam to ne može. Objekt koji upućuje poruku očekuje povratnu poruku koja će mu donijeti informacije o izvedenoj akciji. |
Operacije (servisi) i atributi su unutrašnji dijelovi objekta i nisu vidljivi izvan objekta.
Objekti mogu međusobno komunicirati izmjenom poruka. Poruka je sučelje objekta. Poruka u sebi nosi niz podataka. Svaka poruka ima pošiljatelja i primatelja. |
Poruka je vezni koncept jer povezuje objekte ali je to veza koja ima sadržaj jer nosi informacije kroz sustav.
Pošiljatelj ima operaciju (servis) koja kreira poruku. Primatelj mora imati metodu koji prima poruku i izvršava planiranu aktivnost, odnosno izvršava poruku. Odgovor objekta primatelja na poruku je izvršenje operacije objekta.
Poruka se grafički predstavlja vektorom između dva objekta, vidi sliku 5.4. Poruka se može imenovati na osnovi imena objekta Pošiljatelja i servisa koji je generira.
Slika 5.4: Poruka od objekta Paket k objektu Kamion
Jedna operacija može proizvesti nijednu, jednu ili više poruka.
Na slici 5.5 prikazan je OO dijagram u kome metod DodajPaket, koji upisuje objekt u klasu Paket, kreira četiri poruke.
Slika 5.5: Poruka koju je kreirala operacija DodajPaket
Da bi se upisao novi objekt Paket potrebno je dodati informacije o objektu Partner koji šalje i objektu Partner koji prima paket, potrebno je dodati robu koja je sadržana u paketu u objekt Roba i definirati u koji kamion će paket biti smješten. Te informacije će objekt Paket dobiti samo tako da pošalje poruke kojima pita za informacije. Objekti odgovore na poruke i pošalju poruke objektu Paket. Operacija DodajPaket ne može pristupiti stanjima okolnih objekata. Na osnovi odgovora operacija DodajPaket izvodi dodavanje podataka. Ukoliko operacija NađiRobu u objektu Roba ustanovi da neki od objekata u paketu predstavljaju lomljivu, pokvarljivu, smrznutu, i sličnu osjetljivu robu koja zahtijeva poseban prijevoz, sigurne puteve, rashladne kamione on će te informacije dostaviti operaciji DodajPaket. Operacija DodajPaket će zahtijevati pronalaženje odgovarajućeg kamiona i zadovoljavanja stanja vrijednosti traženih atributa.
U poruci su specificirane operacije koje će se pokrenuti kad je objekt primatelj prihvati. Pošiljatelj specificira koje operacije se pokreću. Detaljna definicija specifikacije operacija je sadržana u objektu primatelja.
POLIMORFIZAM je svojstvo različite reakcija raznih objekata na istu poruku. |
Poruke u objekt dolaze kroz interfejs (sučelje, točku dodira). Ako je poznat interfejs objekta i njegova svrha, objektom se može upravljati tako da mu pošaljemo poruku koju može prihvatiti interfejs. Za upravljanje objektom nije potrebno detaljno poznavanje logike rada operacija u objektu.
U objektnom prostoru postoje objekti. Objekti u samome sebi imaju učahurene svoje operacije (metode) i razna stanja svojih podataka. Primivši poruku dva objekta mogu reagirati jednako ili različito ovisno o poruci, operacijama i stanju podataka atributa objekta.
Polimorfizam je prirodno svojstvo objekata. Ovaj koncept ima niz pojavljivanja u stvarnom svijetu.
Na primjer, ako objekt vulkan kad izvede operaciju erupcija i emititira niz poruka u okolinu u vidu plinova, lave i potersa. Primivši te poruke razne žive vrste različito će reagirati. Odnosno erupcija će imati različite efekte na živi svijet u okolici vulkana. Svi oni objekti na koje utječe operacija erupcija, oni koji su u dosegu poruke, moraju reagirati na erupciju. Oni objekti koji su izvan dosega poruke, za nju mogu znati ali na njih neće utjecati. Velike ptice će pobjeći iz gnjezda. Kopnene životinje će uginuti od lave i otrovnih plinova. Otrovni plinovi su poruka, interfejs jesu pluća životinja, a izuzetno složeno funkcioniranje organizma u trenutku udisanja toksičnih plinova izazove uginuće. Malim morskim životinjama erupcija će povećati količinu hrane. Ljudi će ostati bez svog vlasništva, a osiguravajuće društvo, koje se usudilo osigurati naselja blizu vulkana, će propasti. Uređaji za mjerenje potresa u meterološkim centrima će reagirati na podrhtavanje tla. Metereološki centar će obavijestiti televizijske centre i TV ekipe će doći helikopterima i snimati erupciju. |
Jedan objekt je poslao niz poruka u sustav i izazvao niz dobrih i loših efekata.
Ploimorfizam možemo prepoznati i u programskim jezicima.
Uzmimo na primjer operaciju zbrajanja.
Zbrajati se mogu brojevi, u slučaju povećavanja brojača kao:
A=A+1.
Zbrajati se mogu tekstovi, u slučaju spajanja taksta kao:
Tekst$=“1.mjesto pripada: ” + IME$.
U prvom slučaju su objekti brojevi a u drugom tekstovi. U oba slučaja je primjenjena operacija “+”. Operacija zbrajanja je polimorfna. Ista operacija “+” jednom označava zbrajanje, što je definirano iz konteksta operatora, a drugi put spajanje. Prevoditelj naredbi programskog jezika zna da “+” predstavlja zbrajanje ako su argumenti (operandi) brojevi.
Jednom objektu ne moraju biti dostupni svi ostali objekti iz OO prostora. Pri definiranju logike operacije potrebno je znati koji objekti su vidljivi i s kojim se mogu razmjenjivati informacije. Neke poruke mogu biti vidljive svim objektima. Objekti mogu primiti poruke i ne reagirati, odnosno ne izmijeniti vrijednosti svojih atributa i ne poslati odgovor. Reagiraju samo oni objekti čije operacije uzrokuju promjene stanja, odnosno oni čija logika rada to zahtijeva. Ovako koncipiran sustav objektnog prostora sličan je ponašanju objekata u prirodi. |
Polimorfizam podrazumijeva mogućnost definiranja standardnih interfejsa (dodirnih točki) za povezivanje grupe objekata. U objektu je propisana operacija koja će se izvesti kada poruka dospije do objekta kroz interfejs. Programer je oslobođen razmišljanja i konstrukcije interne logike rada operacija u objektu. Programer treba samo razumijeti kako koristiti objekt odnosno poznavati interfejs objekta. Na taj način se mogu kreirati izuzetno složeni programi.
Prikažimo pojam interfejsa na PC programima. Veći broj PC softvera ima definiranu funkcijsku tipku F1 za poziv “pomoći”, odnosno pri pritisku na F1 tipku prikazuju se uputa za korištenje programa. F1 je standardna funkcija i predstavlja standardan interfejs za razne programe. Pritisak na F1 uzrokuje pokretanje različitih akcija u raznim programima, prikaziju se razni podaci iz raznih baza podataka. Poruka “F1” je ista a reakcija različita. To je odlika polimorfizma.
Primjer polimorfizma možemo prepoznati u upravljanju različitim automobilima. Interfejs za upravljanje je identičan kod raznih automobila. Papučica gasa je uvijek desno od kočnice a spojka lijevo. Ako želimo stati pritišćemo kočnicu a ne gas. Poruka automobili je pritisak na kočnicu. Vozač poznaje sustav kočenja kroz interfejs. Kad pritisnemo kočnicu, razni automobili različito reagiraju, u ovisnosti o ugrađenom “ABS” sustavu i kvaliteti guma. o sustavu kočenja vozač ne mora znati gotovo ništa, da bi uspiješno vozio automobil. Vozač može uspiješno voziti razne automobile a iako o njihovoj unutrašnjoj građi i funkcioniranju nema spoznaja.
Ako je poznat interfejs automobila i njegova svrha, automobilom se može upravljati tako da mu pošaljemo poruku koju može prihvatiti interfejs. Za upravljanje automobilom nije potrebno detaljno poznavanje logike rada motora i ostalih sklopova.
Objektne baze podataka i objektni programski jezici, odnosno objektni programski sustavi moraju podržavati svojstvo polimorfizma. Znači, moraju postojati objekti i njihovi interfejsi. Programer razvija objekt po objekti i definira njegov interfejs. Kasnije može slati poruke raznim objektima i očekuje njihovu reakciju bez da ulazi u logiku funkcioniranja pojedinog objekta.
5.3.7. Generalizacija - naslijeđivanje
OO DIJAGRAM je objektni model prikazan u grafičkom obliku OO konceptima.
Struktura OO dijagrama gradi se od klasa i njihovih međusobnih veza. Pored klasifikacijske apstrakcije u objektnom pristupu definirane su generalizacijska i agregacijska apstrakcija.
GENERALIZACIJA je specijalna veza između objekata dvije i više klasa, pri čemu jednu klasu nazivamo “nadklasa” a drugu “potklasa”. Jedna ili više potklasa se generalizira i povezuje s nadklasom (vidi sliku 5.6). |
Dijagran s generalizacijom klasa se još naziva i dijagram naslijeđivanja.
Generalizacija je intelektualna operacija perpoznavanja objekata jedne potklase kao objekata jedne nadklase.
Identifikator objekta se pojavljuje u obije klase.
Svaka klasa ima i dalje svoje atribute.
Generalizacijska veza je specijalna veza koja uz sebe ima učahurene odgovarajuće operacije u nadklasi i potklasi, koje se brinu za generalizacijsku vezu.
Dvije klase se mogu generalizirati kao potklase u nadklasu ako su im atributi djelomično slični ako učestvuju u nekim zajedničkim vezama i ako imaju neke operacije zajedničke. Atribut koji postoji kao atribut svih potklasa postaje atribut nadklase. Ovo izvodi projektant.
Veza u kojoj participiraju sve potklase postaje veza nadklase.
Operacija koju imaju sve potklase prebacuje se u nadklasu. Ona više ne postoji kao operacija bilo koje potklase.
Generalizacijska veza se crta polukrugom između linija koje spajaju potklase s nadklasom. Nadklasa se obično crta iznad potklasa.
Pojam generalizacije je detaljno opisan u E-V metodi.
Inverzna apstrakcija od generalizacije je specijalizacija. Specijalizacija je apstrakcija u kojoj se objekti nadklase izdvajaju u potklase ukoliko: imaju atributa koji nisu atributi svih objekata, povezuju se s drugim objektima s kojima se ne povezuju svi objekti i imaju operacije koje nisu zajedničke za sve objekte. |
Slika 5.6: Generalizacija a)podklasa Kupac i Dobavljač u nadklasu Partner i b)potklase JeBio u dvije nadklase.
Prema
samoj definiciji generalizacije vrijedi pravilo
naslijeđivanja:
|
Možemo zaključiti da atributi nadklase Partner (vidi sliku 5.6) pripadaju i potklasama Kupac i Dobavljač. Tako klasa Dobavljač pored svojih atributa Kredit i OdgodaPlaćanja ima i atribute:ŠifraPartnera, NazivPartnera i Adresa.
Generalizacija
je ekskluzivna ako sve potklase jedne nadklase pripadaju
toj i samo toj nadklasi. Generalizacija je neekskluzivna ako neka potklasa pripada dvije ili više nadklasa. |
Na slici 5.6 prikazana je potklasa JeBio koja predstavlja znanje o tome koji kupac je bio i prodavač od svih osoba koje promatramo. Jedna se osoba može pojaviti i kao kupac i kao prodavač a popis svih osoba nemamo jer Osoba nije klasa i objekt već samo klasa bez instanci objekata.
Potklasa nasljeđuje sve atribute nadređene klase i sve njene operacije ali ona može imati svoje vlastite atribute i operacije koji nisu atributi i operacije nadređene klase. Nadređena klasa nasljeđuje sve od njene nadređene klase, pa možemo zaključiti da proizvoljna klasa po indukciji nasljeđuje sve atribute i operacije svih njoj nadređenih klasa. |
Ovo nazivamo višestruko nasljeđivanje.
Prema slici 5.6b možemo zaključiti da klasa JeBio nasljeđuje atribute i operacije klase Osoba, klase Kupac i klase Prodavač. Ključ klase JeBio je jednak ključu nadklasa.
Naslijeđivanje nema nikakve veze s navigacijom nad podacima.
Objekt ne može naslijeđivati svojstva od objekta iste klase.
Klase na višim razinama hijerarhije ne moraju imati objekte (instance) u kalsi.
Naslijeđivanje je glavni mehanizam ponovnog korištenja operacija, bez redudanse. Poželjno je povećati količinu naslijeđivanja.
U OO programskim jezicima i sustavima se nalaze predefinirane kalse i operacije. Taku u Smalltalk/V postoji superklasa “Object”, koja je najapstraktnija klasa cijelog sustava, i koja ima stotinjak metoda za instance podređenih klasa. Te metode su dostupne svim objektima svih kalsa a nisu dostupne ni jednoj klasi. U cijelom sustavu su predefinirani pojmovi kao: polje, skup polja, znak, cijeli broj, realni broj, razlomak, rječnik, aplikacija, kalsa, operacija, debugger, zaslon, program za pisanje, selektor, i drugo. Takav sustav ima prosiječno oko nekoliko stotina operacija po klasi. Tim je jasno omogućen princip ponovnog korištenja koda.
Operacije se redefiniraju ako klasa niže razine generalizacije ima različito ponašanje. Tada operacija ima isto ime kao i operacija nadtipa ali drugu logiku. U tom slučaju se uistinu radi o novim operacijama. Moguće je izvesti i operaciju iz nad klase, ako se ona eksplicitno pozove.
Općenito je naslijeđivanje pri dizajniranju sustavne podrške prirodno i korisno svojstvo. Pri dizajniranju programskih aplikativnih proizvoda ne postoji generalizacijska hijerarhija ili je rijetka te je i naslijeđivanje kao princip za razvoj aplikacija od manje koristi.
5.3.8. Dio - cjelina
DIO/CJELINA odnos objekata je model povezanih objekata specijalnom vezom u kojoj jedan objekt predstavlja “dio” a drugi “cjelinu” u koji se ti dijelovi uključuju. Dio/cjelina je specijalni odnos (specijalna veza) između dva ili više objekata pri čemu jedni objekti predstavljaju članove skupa (dio) a drugi objekt predstavlja sam skup (cjelinu). |
U stvarnosti postoji niz objekata koji se ponašaju i koje možemo opisati kao dijelove drugih objekata. Naprimjer pojedini vagoni i lokomotive su dijelovi cijelog vlaka. Motor, karoserija i kotači su dijelovi auta. Školski klub je dio Škole, Student je član (dio) kluba. Student i klub su dijelovi klase Škola.
Dio / cjelina je osnovna metoda organizacije stvari koja prožima svo ljudsko promišljanje stvarnosti.
Ova zavisnost je na semantičkoj razini i ne precizira što je s ključevima kod implementacije, te je teško izvršiti usporedbu koncepata.
Općenito
možemo definirati tri vrste odnosa dio/cjelina i to: A) hijerarhijski odnos
(uključivanje u jednu cjelinu, slab/jak objekt, prosta
agregacija, dio objekt), |
Ovakva klasifikacija nije istaknuta u literaturi o OO pristupu, a ona je pokušaj uvođenja reda u složene vrste i prikaze ovog koncepta. Razlikujemo uključivanje objekta u jednu cjelinu i uključivanje u dvije cjeline. Cjeline u koje se uključuje tumače objekt dio, daju mu smisao i identifikaciju.
A)
HIJERARHIJSKI ODNOS (DIO OBJEKT-CJELINA OBJEKT)
je skup od dva objekta od kojih je jedan objekt dio nekog
drugog objekta cjeline, odnosno jedan objekt je povezan
specijalnom vezom s drugim objektima. Objekt možemo proglasiti dijelom nekog objekta ako se može naći neka semantička opravdanost njegove podređenosti, odnosno ako među objektima postoji neka veza za koju se može reći da povezuje dijelove s cjelinom. |
Objekt je prost dio (prosto agregiran) ako je uključen kao dio u samo jednu cjelinu.
Objekt koji je uključen kao dio u drugi objekt posjeduje sva svojstva objekta i zavisnost (odnosno povezanost) od objekta cjeline.
Grafički se struktura dio/cjelina prikazuje konceptom veze s trokutom na liniji veze koji pokazuje smjer uključivanja dijela u cjelinu. Veza dio/cjelina se crta kao i svaka druga veza među objektima i na nju se ucrtava zatvorena strelica koja označava smjer uključivanja dijela u cjelinu.
Na liniju veze se upisuju kardinalnosti veze, odnosno brojnost preslikavanja između objekata dvije klase. Kardinalnosti se upisuju u obliku uređenog para na krajevima linije koja povezuje dvije klase.
Slika 5.7a: Primjer klase “Cjelina” i klase ”Dio”
Tako možemo reći, prema slici 5.7a, “Cjelina” se sastoji od nijednog ili od mnogo “Dijelova” a “Dio” je uključen u jednu i samo jednu “Cjelinu”. Prirodno je da cjelina ima više dijelova.
Objekt i klasa “Cjelina” su nacrtani iznad objekta i klase “Dio”. Nije obavezno crtanje dijela objekta ispod objekta cjeline, ali je to poželjno radi lakšeg praćenja modela. Trokut određuje smjer uključivanja.
Projektant određuje koji inkrement semantike dovodi do postavljanja dio/cjelina veze između dva objekta i koji od njih je dio a koji cjelina.
Na slici 5.7 prikazano je više primjera u kojima objekte jedne klase promatramo kao dijelove objekata druge klase. Naprimjer, odjeli u poduzeću pripadaju jednom sektoru a sektoru pripada nijedan ili više odjela, sobe u hotelu su uključene u jedan hotel odnosno hotel posjeduje nijednu ili više svojih soba.
Razmotrimo kardinalnosti veza dio/cjelina, mogu li one biti kao i kardinalnosti svake druge veze. Općenito, ne vodeći brigu o konačnoj implementaciji, sve kardinalnosti su dozvoljene.
Tako je moguće, prema raznim autorima, da jedan dio bude dio više cjelina. Uzmimo objekt dio “Student” koji je dio cjeline “Klub”. Jedan student može biti student ni jednog ili više klubova. Jedan klub ima nijednog ili više studenata u članstvu.
Slično je za objekt Dijete, koje je povezano s jednim (ako drugi nije poznat) ili dva roditelj.
Slika 5.7: Primjeri objekta “cjelina” objekta”dio” i veze “dio/cjelina”
Za većinu ovih veza se mogu postaviti ograničenja pri implementaciji.
Na primjer, postojanja objekta cjeline objekt dio nema smisla i ne dozvolimo njegovo postojanje. Ovo se regulira operacijama dijela i cjeline. Operacija za brisanje objekta cjeline šalje poruku objektu dijelu i aktivira operaciju za brisanje objekta dijela. Operacija za dodavanje objekta dijela šalje poruku za pokretanje operacije za traženje objekta cjeline a ako ga ne nađe šalje poruku za dodavanje objekta cjeline prije dodavanja objekta dijela. Ukoliko se želi uvesti labava veza dijela i cjeline uvodi se obična veza.
U slučaju M:M odnosa po gornjoj granici uvodi se dodatni objekt između postojećih.
Dio objekt ima svoje atribute i operacije i on ne naslijeđuje operacije i atribute od objekata cjelina.
Jedan objekt cjelina može imati više objekata kao svoje dijelove.
Neki objekt cjelina može biti dio nekog drugog objekta cjeline.
Može se postaviti pitanje opravdanosti postojanja M:M veze dijela i cjeline.
Na primjer, ako je pilot uključen u više aviona a avion ima više pilota, kažemo da je pilot dio aviona. On zapravo nije dio aviona, već je povezan s avionom. Jedini kriterij je ljudsko shvaćanje odnosa pilota i aviona. Da li je pilot uistinu dio aviona. Pilot jeste zaseban i nezavisan entitet. Ako od svakog nezavisnog entiteta stvaramo objekt, nećemo imati dijelova koji uključeni u više cjelina, odnosno pilot nije dio aviona. Pitanje je smisla same veze pilota i aviona. Što ta veza znači? Što nas zanima? Zanima li nas samo koji avion je vozio koji pilot. Ako nas samo to zanima onda je veza tipa M:M dobra. Naglasimo da nas pri tom ne zanima: na kom letu je letio taj pilot, kojeg datuma, koji su drugi piloti bili tada u tom avionu, koji su drugi članovi posade i koji putnici tada letjeli tim avionom, od kud je taj avion poletio i gdje je sletio. Ako nas bilo što od tog zanima, onda veza kao takva gubi smisao i zahtijeva novu složeniju strukturu. Odnosno u sustvu postoji više raznih objekata i njihovih veza.
Takve je M:M veze bolje drugačije modelirati. Tako možemo definirati “let”, “posadu aviona”, “misiju”, “letio je” i slične objekte i klase i s njima povezati i pilota i avion vezama tipa 1:M.
Odnos dio/cjelina može biti hijerarhijski odnos ili agregacijski. Ako je uistinu odnos tipa M:M onda tu vezu prevodimo u agregirani objekt, dakle nije hijerarhijskog tipa.
Jedan objekt cjelina iz jedne klase može imati dijelove objekte iz različitih klasa, kao na slici 5.7b. Odjeli su dijelovi sektora, radnici pripadaju jednom sektoru i kooperanti pripadaju jednom sektoru.
Slika 5.7b: Primjeri objekta cjeline povezanog s raznim objektima dijelovima
Općenito, jedan objekt iz jedne klase može biti povezan s objektima raznih klasa. Ne postoji ograničenje na broj klasa dijelova.
B) AGREGIRANI OBJEKT (dvostruko uključen, binarno agregiran, dio u dvije cjeline) je objekt koji je povezan kao dio s dva druga objekta cjeline, odnosno objekt koji je povezan s dvije specijalne veze dio/cjelina s drugim objektima. |
Objekt cjelinu možemo proglasiti agregacijom drugih objekata (agregacijskom cjelinom) ako se može naći neka semantička opravdanost njegove podređenosti i uključenosti u druga dva objekta.
Objekt je binarno agregiran ako je on uključen, kao dio, u druga dva objekta cjeline.
Grafički se agregirani objekt predstavlja pomoću dvije veze k objektima cjelinama, ako na slici 5.8a.
Slika 5.8a: Primjer agregiranog objekta “Dio”
Jedan objekt dio mora biti uključen najmanje i najviše u jednu cjelinu s kojom je povezan. Jedna cjelina ne mora imati povezanih dijelova a može ih imati mnogo.
Na slici 5.8 su prikazani agregirani objekti “StanjeNaSkladištu” i “BrineO”.
Slika 5.8: Primjeri agregiranog objekta “StanjeNaSkladištu” i “BrineO”
“StanjeNaSkladištu” je agregirani objekt. Jedno stanje uključeno je i pridruženo kao dio objekta “Skladište” i objekta “Roba”. Bez cjeline “Skladište” i “Roba” objekt “StanjeNaSkladištu” gubi smisao.
Objekt može biti agregiran od tri i više drugih objekata, ali tu varijantu modela ne promatramo. Ona je prema metodici MIRIS dozvoljena i crta se, samo ako se da izvesti iz binarno agergiranih objekta bez atributa, koji se tijekom projektiranja isključuju iz modela.
Agregirani objekt ima svoje atribute i operacije. Agregirani objekt ne naslijeđuje operacije i atribute od objekata cjelina. |
U literaturi se ovaj tip rijetko razmatra i ne ističe posebno. Posebno se ne ističu identifikatori tih objekata, njihove veze i operacije. Ovo područje je nedovoljno istraženo i opisano.
C) UOBIČAJENA VEZA je isticanje obične veze kao specijalne veze tipa cjelina/dio. |
Objekt možemo proglasiti dijelom nekih cjelina jer se projektantu iz nekih razloga to takvim čini. Ovakav pristup nije opravdan, jer tada ne možemo razlikovati, na modelu sustava, stvarne dijelove od fiktivnih.
Na slici 5.9 prikazan je primjer prema P. Coad i E. Yourdon.
Slika 5.9: Primjeri običnih veza istaknutih kao vrsta veze “cjelina/dio”
Student može biti član više različitih klubova a nemora ni jednog i jedan klub može imti više članova a ako je tek osnovan nemora imati članove. Ovo je M:M veza. Cijeli model opisa studenta kao dijela kluba prestaje vrijediti u trenutku uvođenja atributa “Datum učlanjenja”. To nije atribut ni “Studenta” ni “Kluba”. Ovakav opis je dobar na razini opisa koji nema svrhu poslužiti za razvijanje informacijskog sustava. To nije naš cilj.
Slično vrijedi i za vezu između “Studenta” i “Škole”. Pitanje je ima li netko tko se brine o svim studentima svih škola. Ako ima onda je “Student” nezavisan i nije dio objekta “Škola”. Ako nema, i ako se svaki student posebno identificira “Školom” u kojoj studira, onda je objekt “Student” dio objekta ”Škola”. Ali tad su kardinalnosti veze (1,1) a prepoznavanje objekta instance student u raznim školama osigurava rekurzivna veza. Riješenje mora postati potpuno različito u trenutku dodavanja samo jednog atributa: “Datum upisa”.
Klub u odnosu na školu je dobro modeliran jer je riječ samo o školskim klubovima. U protivnom veza bi bila uobičajena.
5.3.9. Subjektno područje
SUBJEKT (subjektno područje) je podsustav za koga se gradi OO model. Subjekt je poslovno područje, područje od interesa, aplikacija, poslovna funkcija, problemsko područje, dio sustava za koga smo zainteresirani i čiji model gradimo.
Subjekti se mogu dekomponirati procesnom dekompozicijom u dijelove. Subjekt je razumne veličine ako sadrži oko 30 do 40 klasa. Nije poželjno više od 100 klasa u jednom subjektu. Ako je subjekt složeniji onda ga dekomponiramo. |
Jedan subjekt može imati jedan ili više OO dijagrama. Klase se mogu pojaviti u raznim subjektima. U naravi postoji jedan jedinstven OO dijagram koji sadrži sve klase i objekte.
Subjekti su projektantski i korisnički pogled na dio OO dijagrama tako da izdvojimo klase koje su vezane za jedno poslovno područje. |
Klase jednog poslovnog područja su jače povezane s brojnijim vezama i s više međusobnih poruka. Ljudi nisu u stanju shvatiti i modelirati složene sustave te je podjela u subjekte nužna.
© Mile Pavlić, Ris d.o.o. Rijeka