Objektno orijentisane informacione tehnologije sa programiranjem

Uvod u objektno orijentisano programiranje UML

Objektno orijentisano programiranje
• OOP • Razni oblici programskih jezika
– imperativni
• strukturni (Pascal, C) • objektno-orijentisani (C++, Java)

– funkcionalni (Lisp, Prolog)

2/39

OOP
• Objekti opisuju stvarne elemente (auto, avion) • Sadrže atribute (težina, visina)
– opisuju stanje

• Sadrže operacije (upali, ugasi, podigni) • Klasa je opis objekta
– objekat je instanca klase – kada programiramo, pišemo klase u čijim operacijama se kreiraju objekti, pozivaju njihove operacije i manipuliše njihovim atributima
3/39

OOP
• Sve je objekat
– objekti čuvaju i obrađuju podatke

• Program čine objekti koji pozivaju operacije drugih objekata
– pozivanje operacije == pozivanje metode == slanje poruke

• Atributi objekta mogu biti drugi objekti • Svaki objekat je instanca neke klase
4/39

Primer
class Auto { Tocak prednjiLevi, prednjiDesni, zadnjiLevi, zadnjiDesni; int tezina; boolean radi; void upali() { radi = true; } void ugasi() { radi = false; } }
5/39

Primer
class TestAuto { void test() { Auto a = new Auto(); a.upali(); } }

6/39

Pojmovi
• Entitet: jedinica posmatranja • Koncept: pojam ili misao koja se dodeljuje stvarima (entitetima) bile one stvarne ili apstraktne • Domen problema: oblast interesovanja i okvir za definisanje skupa objekata posmatranog problema

7/39

Osnovni elementi OO pristupa modeliranju sistema
• Objekat • Klasa
– veze

• Interfejs • Paket • Podsistem

8/39

Objekat
• Objekat opisuje pojedinačan predmet, entitet, bilo stvaran ili apstraktan, sa dobro definisanom ulogom u domenu problema. On je određen svojim stanjem, ponašanjem i identitetom. • Stanje objekta obuhvata sve osobine posmatranog objekta i sve vrednosti tih osobina, kao i veze tog objekta sa drugim objektima. • Operacije nad objektom: predstavljaju skup operacija koje mogu da menjaju stanje objekta. • Ponašanje objekta zavisi od operacije izvršene nad objektom i stanja u kome se objekat nalazio u trenutku izvršavanja operacije.
9/39

Objekat
• Atribut - osobina objekta
– ima neku vrednost – dva objekta mogu da imaju iste vrednosti osobina

• Vrednost atributa
– jednostavna – složena – neki drugi objekat

• Identitet objekta
– karakteristika koja ga jednoznačno izdvaja iz skupa objekata; odražava njegovo postojanje i ne menja se pri promeni stanja; mehanizam za povezivanje objekata.

• Struktura objekta
– skup svih njegovih atributa i operacija
10/39

Primer
• • • • • • • • • Objekat Student Ime: Petar Prezime: Petrović Broj dosijea: 326 Godina upisa: 2005 Upisana godina studija: 1 Smer: naziv smera+nastavni plan smera - objekat Broj položenih ispita: 4 Operacija UPIS GODINE: uslov da ukupan broj položenih ispita nije manji od 5. Operacija menja stanje objekta – upisana godina studija postaje 2.
11/39

Ponašanje sistema
• Posmatra se kroz interakciju objekata sistema • Stanje sistema:
– opisuje osnovne karakteristike sistema u jednom trenutku – predstavlja skup objekata sistema+skup međusobnih veza objekata+skup vrednosti atributa u datom vremenskom trenutku

• Svaki objekat sadrži deo stanja sistema i svako stanje sistema sadržano je u nekom objektu • Veza između dva objekta nosi informacije koje objekti imaju jedan o drugom (recimo, operacije koje objekat može da izvrši); opisuju zakonitosti i ograničenja koje važe između objekata u sistemu.

12/39

Primer
• Objekat Student
– – – – – – – Ime: Petar Prezime: Petrović Broj dosijea: 326 Godina upisa: 2005 Upisana godina studija: 1 Smer: naziv smera+nastavni plan smera - objekat Broj položenih ispita: 4

• Objekat Profesor
– Ime: Marko – Prezime: Marković – Zvanje: redovni profesor

• Veza:
– Student Petar Petrović sluša predavanja kod Profesora Marka Markovića

13/39

Klasa
• Klasa predstavlja skup objekata koji imaju iste atribute i operacije, istu semantiku i zajedničke veze sa drugim objektima. Objekat je pojava posmatrane klase i ima određenu ulogu u sistemu. • Pored pojma klasa definisani su i pojmovi:
– Metaklasa – pojave metaklase su neke druge klase – Parametrizovana klasa – uzorak za druge klase;
• konkretizuje se zamenom svojih parametara konkretnim klasama

– Potklasa – vezana za klasu i nasleđivanje
14/39

Klasa - pogled
• Spoljašnji pogled • Sakriva strukturu klase i implementaciju operacija • Sastoji se od: deklaracija operacija i atributa klase • Skup deklaracija može biti podeljen u:
– javni: skup deklaracija dostupnih objektima drugih klasa – zaštićeni: skup deklaracija dostupnih samoj klasi i njenim potklasama – privatni: skup deklaracija dostupnih samo klasi
15/39

Klasa - pogled
• Unutrašnji pogled • Implementacija klase
– sastoji se od implementacije svih operacija definisanih u spoljašnjem pogledu klase

• Operacije klase
– omogućuju izmenu stanja objekta te klase ili preuzimanje vrednosti atributa tog objekta – jedino operacije pridružene klasi imaju pravo pristupa osobinama objekta te klase – stanju objekta se može pristupati samo preko definisanog skupa operacija
16/39

Komunikacija među objektima
• Operacije objekta pozivaju se putem poruka • Poruka je zahtev upućen pojavi klase da izvrši neku od svojih operacija • Objekti (pojave klase) međusobno komuniciraju putem poruka • Komunikacija je prosleđivanje poruka od jednog do drugog objekta
– objekat koji prosleđuje poruku ne mora da ima informaciju o klasi objekta kome je poruka prosleđena
• posledica je da se operacija može implementirati na različite načine u različitim klasama, odnosno pomoću različitih metoda - polimorfizam
17/39

Vrste operacija
• Modifikator (modificator): menja osobinu objekta, • Selektor (selector): pristupa osobini objekta ali je ne menja, • Iterator (iterator): dozvoljava da neke osobine objekta budu dostupne u nekom dobro definisanom redosledu, • Konstruktor (constructor): poziva se prilikom kreiranja objekta i (opciono) inicijalizuje njegovo stanje • Destruktor (destructor): poziva se prilikom uništavanja objekta i (opciono) oslobađa memoriju koju je on zauzeo prilikom inicijalizacije

18/39

Veze između klasa
• • • • Asocijacija (association), Agregacija (aggregation), Nasleđivanje (inheritance) i Veza zavisnosti (dependency).

19/39

Asocijacija
• Veza koja označava semantičku zavisnost između klasa • Specifikacija veze
– ime veze – klase koje u njoj učestvuju – uloge klasa – kardinalitet veze (jedan prema jedan, jedan prema više, više prema više)
20/39

Asocijacija
• Veza asocijacije između klasa Student i Profesor • Model veze da student sluša predavanja kod nekih profesora i da profesor drži nastavu nekim studentima: veza više prema više, profesor ima ulogu predavača • Model veze između klasa Predmet i Profesor. Za izvođenje nastave iz datog predmeta zadužen je jedan i samo jedan profesor a jedan profesor može da bude zadužen za izvođenje nastave na više predmeta – primer veze jedan prema više
21/39

Agregacija
• Veza celina/deo između pojava datih klasa • Agregacija po referenci
– životni vek objekta-dela nezavisan je od životnog veka objekta celine – objekat-deo može se koristiti u više celina

• Kompozicija: Sadržavanje po vrednosti u smislu fizičkog sadržavanja
– objekat koji predstavlja deo ne postoji nezavisno od celine čiji je deo – životni vek objekta-dela zavisan je od životnog veka objekta celine
22/39

Agregacija i kompozicija - primer
• Klase: Student, Grupa za laboratorijske vežbe • Grupa za laboratorijske vežbe je klasa koja predstavlja agregaciju po referenci objekata klase Student jer objekat klase student može da postoji nezavisno od objekta klase Grupa za laboratorijske vežbe • Klase: Fakultet, Odsek, Smer • Veza između klasa je kompozicija; npr. ne može da postoji Smer nezavisno od Odseka ili Odsek nezavisno od Fakulteta
23/39

Nasleđivanje
• Veza između klasa u kojoj neka klasa deli stukturu i/ili ponašanje definisano u jednoj klasi (jednostruko nasleđivanje) ili više klasa (višestruko nasleđivanje) • Superklasa (nadređena klasa) – klasa od koje se nasleđuje • Potklasa (podređena klasa) – klasa od koje se nasleđuje
– povećava strukturu i/ili ponašanje – proširivanje

• Sve klase u hijerarhiji nasleđivanja ne moraju imati pojave
– klase koje imaju pojave su konkretne klase – klase koje nemaju pojave su apstraktne klase – klasa sa najopštijom strukturom je osnovna klasa
24/39

Apstraktne klase
• Klasa koja sadrži apstraktne operacije (nedefinisane) • Prilikom nasleđivanja, klasa naslednica će redefinisati apstraktne metode • Klasa naslednica ne mora da redefiniše sve apstraktne metode – postaje apstraktna klasa

25/39

Nasleđivanje - primer
• • • • • Klasa Avion Krila: Rep: Trup: Točkovi: Klasa BorbeniAvion Krila: Rep: Trup: Točkovi: Top: Bombe:

26/39

Veza zavisnosti (dependency)
• Specifična veza kojom se opisuje zavisnost između klasa i drugih elemenata modela • Značenje zavisnosti je da prisustvo jednog elementa modela zahteva prisustvo elementa modela sa kojim je u vezi • Primer: predstavljanje veze između dve klase koje su zavisne tako što se jedna klasa referencira na drugu pri izvršavanju svoje operacije; tipično: veza između parametrizirane klase i njenih izvedenih klasa.
27/39

Parametrizovana klasa i zavisnost
• Stek je struktura podataka u koju se mogu stavljati podaci i iz nje vaditi podaci. Standardne operacije su stavljanje elementa na stek i uzimanje elementa sa steka. Elementi mogu da budu: broj, karakter, niz karaktera, .... • Klasa: Stek • Parametrizirana klasa kod koje je element steka objekat neke druge klase ili primitivni tip (stek integera ili stek automobila) • Zamenom elementa konkretnom klasom (primitivnim tipom podataka) dobija se izvedena klasa StekNečega koja je sa parametriziranom klasom Stek povezana vezom zavisnosti (nema sadržavanja, nema referenciranja)
28/39

Interfejs
• Interfejs predstavlja skup operacija koje definišu neko ponašanje. • On definiše spoljašnje vidljive operacije neke klase, ne definišući internu strukturu tih operacija. • Interfejs se može posmatrati kao apstraktna klasa bez atributa, isključivo sa apstraktnim operacijama.
29/39

Paket
• Paket predstavlja podskup modela koji čini logičku celinu i sastoji se od elemenata modela i veza između njih. On, takođe određuje oblast definisanosti za klase sistema. • Veze su zavisnost, nasleđivanje ili kompozicija

30/39

Podsistem
• Za razliku od paketa koji predstavljaju generički mehanizam za organizovanje elemenata modela, podsistem je izdvojena celina sistema čiji elementi imaju zajedničko ponašanje. • Podsistem daje zajedničku specifikaciju ponašanja onih elemenata modela koji su sastavni deo podsistema.
31/39

Proširenje osnovnih elemenata modela
• Stereotip (stereotype), • Ograničenje (constraint) i • Označene vrednosti (tagged value).

32/39

Stereotip
• Mehanizam za definisanje novih elemenata modela, odnosno novih koncepata na osnovu osnovnih (postojećih) elemenata modela. Notacija je na osnovu polaznog elementa. Stereotip se navodi u okviru znakova << i >> (« i », guillemets) • Uvode se novi elementi a jezik se ne menja
33/39

Ograničenje
• Mehanizam za definisanje ograničenja nad elementom modela, menjajući tako njegovu semantiku i način korišćenja elementa u modeliranju. • Ograničenjem se specificiraju uslovi i osobine koji moraju biti zadovoljeni • Informacija koja će biti značajna u implementaciji sistema • Navodi se u vitičastim zagradama
34/39

Označene vrednosti
• Mehanizam za definisanje različitih osobina elemenata modela • Osobine se zadaju preko imena i vrednosti • Mogu se definisati za
– – – – klasu, atribute klase, operacije klase, asocijaciji, itd.

• Omogućuju dodavanje bilo koja informacije u model.
35/39

UML
• Objedinjeni jezik modeliranja (UNIFIED MODELING LANGUAGE) • Jezik za modeliranje koji je standardizovan od strane OMG (Object Management Group), najšire korišćen u OO analizi i dizajnu • Vizuelni jezik • UML daje standardizovanu notaciju i semantiku za skup OO apstrakcija
36/39

Istorija
• Kako se razvijalo OO programiranje, postojale su različite grafičke notacije za OO dizajn • Notacije: Booch, OMT, Objectory, ShallerMellor, CRC • Potrebna je bila standardizovana notacija • Puno problema i diskusija • Tri kreatora popularne OO notacije našla se u firmi Rational Software (rane 90te): Booch, Rumbaugh (OMT), Jacobsen (Objectory)
37/39

Istorija
• Zajedno su krenuli da kreiraju nešto što su nazvali “Unified Modeling Language” • Prva verzija 0.8 - 1.0 (sredina 90tih) • Odlučeno da se UML podnese grupi OMG (Object Management Group) da standardizuje verziju 1.1 • Veliki korak napred, uključuju se mnoge kompanije • Verzije: 1.0, 1.1-1.5, 2.0
38/39

Dijagrami
• Slučajevi korišćenja (use-case diagram) • Statički
– dijagram klasa (class diagram)

• Dinamički
– – – – dijagram sekvenci (sequence diagram) dijagram saradnje (collaboration diagram) dijagram stanja (statechart diagram) dijagram aktivnosti (activity diagram)

• Fizički
– dijagram komponenti (component diagram) – dijagram razmeštaja (deployment diagram)
39/39

Sign up to vote on this title
UsefulNot useful