Објектно орјентисано
програмирање
Владимир Филиповић
vladaf@matf.bg.ac.rs
Александар Картељ
kartelj@matf.bg.ac.rs
Објектно орјентисанa
парадигма
Владимир Филиповић
vladaf@matf.bg.ac.rs
Александар Картељ
kartelj@matf.bg.ac.rs
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 3 / 26
Основни појмови
Објекат : интегрална целина података и процедура за рад са њима (*).
Промена унутрашњег стања објекта се може реализовати само преко функције смештене унутар тог објекта.
Подаци унутар објекта представљају атрибуте (особине) објекта.
Метод - функција која је саставни део објекта, тј. поступак којим се реализује порука упућена објекту. Методи описују понашање објекта.
Порука - скуп информација који се шаље објекту. Састоји се из адресе (објекта примаоца поруке) и саопштења (казује шта треба да се уради).
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 4 / 26
Објектно-оријентисано програмирање (И смер)
програмска парадигма заснована на скупу објеката
који имају међусобну интеракцију.
Класа - скуп објеката сазаједничким својствима, који се
понашају на исти начин. Класа дефинише шаблон за
креирањеобјеката, тј описује структуру објекта.
Примерак (инстанца) класе -конкретан објекат дате класе.
У Јави је сваки објекат примерак неке класе, а објекти постоје
само током извршавања програма.
Основни појмови (2)
Илустрација објекта и класе
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 5 / 26
Објекат је потпуно одређен својим атрибутима и понашањем.
Класом је дефинисан тип објекта, а за сваки објекат примерак,
тј. инстанцу, инстанцна променљива има конкретну вредност
атрибута, на пример:
tacka (x,y, boja):
t1(4,5,crvena)
t2(0,0,zuta)
automobil(broj_sasije, broj_motora, boja, broj_sedišta)
a1(4534332, 1X467,plava,4)
a2(4321564, B3536, bela, 5)
Понашање објекта одређено је методима у класи
који могу дејствовати на тај објекат, на пример:
Врати x-координату тачке, померитачкуза dx, заdy,...
Покренивозило, промени брзину,скрени лево,заустави...
Основни појмови (3)
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 6 / 26
Класа Б је поткласа (класа потомак, изведена класа) класе А
ако су сви примерцикласе Б истовремено и примерцикласе А.
За класу А кажемо да је наткласа (родитељска класа) класе Б.
Поткласе представљају даљу конкретизацијунаткласе.
Оне настају додавањем новихсвојстава (атрибута и/или метода)
или модификовањем постојећих својставанаткласе.
Ако је некиобјекат примерак класе Б, онда је он истовремено и
примерак њене наткласе А.
Наслеђивање - механизам за креирање новихкласа из
постојећих. Наслеђивањем се формирају релације између класа.
Основни појмови (4)
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 7 / 26
Наслеђивање описујеодносе:
1. «јесте конкретизација» када се посматра са позиције подкласе, нпр. «Студент јесте конкретизација од Човек». 2. «јесте уопштење» када се посматра са позиције надкласе. Нпр. «Човек јесте уопштење од Студент». Пореднаслеђивања, битан однос међу класама јеи садржавање – када објекат једне класе као свој деосадржи објекат друге класе: 1. «је део од» ако се посматра са позиције објекта-дела, нпр. «Мотор је деоод Ауто». 2. «садржи» ако се посматра сапозиције објекта-садржаоца. На пример, «Ауто садржи Мотор».
Основни појмови (5)
Дијаграм класе
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 8 / 26
Примери наслеђивања
Наслеђивањем се формира хијерархија класа.
Живо биће
Животиња Биљка
Сисар Птица
Грабљивица Певачица
Јастреб Орао
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 9 / 26
Библиотечки примерак
Часопис Књига Микрофилм
Дневни Остали
Белетристика Стручна
Примери наслеђивања (2)
Још један пример хијерархијског наслеђивања:
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 10 / 26
Пример вишеструког наслеђивања -класа може имати више
директних наткласа.
летелица возило брод
једрилица авион са мотором без мотора
путничко теретно амфибија
Вишеструко наслеђивање није подржано у Јава-језику, али
јесте у језику C++.
Примери наслеђивања(3)
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 11 / 26
Зашто је објектно-оријентисан
концепт доживео велики успех?
Погодан за: анализу, пројектовање и програмирање.
Олакшано одржавање софтвера
Oмогућава лако и једноставно уклапање модула.
Поновна искористивост софтвера.
Најпогоднији за симулирање догађаја.
Објашњење се делимично може наћи
кроз поглед историјског развоја ООП.
1967: Dall и Simula 67.
70 - тих година: A. Kay и Smalltalk.
Развој осталих ОО језика.
Доменски језици.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 12 / 26
УМЛ дијаграми класа
- енг. Unified Modelling Language
- Укратко:
Стандардизовани формат
за моделовање софтвера
коришћењем графичких
облика и текста.
- Постоје различити
типови дијаграма.
- Тренутно нас
интересују само
дијаграми класа.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 13 / 26
Јава је објектно орјентисан програмски језик.
Јава и C++ деле многе од принципа на којима се заснивају.
Највећи број њихових разлика се односи на стил и на структуру.
Јава је дизајнирана тако да подржава само једноструко наслеђивање.
У циљу одржавање једноставности (а самим тим и ефикасности) Јаве, нису баш сви елементи реализовани као објекти: Логичкевеличине (истина и лаж), бројевии другипрости типовинисуреализовани каообјекти.
Јава као објектно-орјентисан језик
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 14 / 26
Јава као објектно-орјентисан језик (2)
Јава је објектно оријентисан језик са хијерархијском структуром
класа.
Vozilo Student ... Component
Object
Apsolvent
Applet
MojAplet
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 15 / 26
На врху класне хијерархијесе налази класа Object.
КласаObject припадапакету java.langиз ЈаваAPI-ја.
За сваку класу су битне две карактеристике:
стање се описујепреко променљивих:
- Класнепроменљиве
- Објектнепроменљиве(променљивепримерка) понашање њених инстанциодређује се преко метода. Класе у Јави су организованепо пакетима. Основни пакети су: java.lang, java.util, java.io, java.net, java.awt, java.applet. Пакет је скуп класа и интерфејса намењених једнојврсти посла (које чине сроднуцелину). Све класе из једног или више пакета чијије бајт-код спакован заједно чине библиотеку класа.
Јава као објектно-орјентисан језик (3)
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 16 / 26
Јава као објектно-орјентисан језик ( 4 )
Важно језапамтити да је Јавастриктно објектно орјентисана:
не допуштада се декларишебило шта штонијеенкапсулирано
(учаурено) у објекат.
Дакле, функције у Јави морају да буду у оквиру неке класе,
тј. нема самосталних процедура тј. функција.
На нивоу хардвера променљива која представља објекат у Јави
уствари садржи референцу на део меморијског простора који
заузима дати објекат.
На пример, објектна променљива centar која представља тачку
у дводимензионалном координатном простору
са координатама (3,4) изгледа овако
centar
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 17 / 26
Апстрактне класе
Апстрактна класа је класа у којој постоји бар један метод који
нема дефиницију (тело) већ само његову декларацију (заглавље).
Такав метод се зове апстрактан метод.
На пример, на претходном дијаграму класа за жива бића, метод
pomeriSe би се могао прогласити апстрактним, а разлог је:
Знамо да би животиња требала да може да се помера.
Међутим, не померају све животиње на исти начин, па не можемо на
нивоу класе Животиња дефинисати конкретан начин померања.
Апстракнта класа се не може инстанцирати, тј. не може се
направити објекат апстрактне класе.
Поткласа апстрактне класе:
- Може реализовати све апстракнте методе и у том случају она постаје регуларна класа.
- Не мора реализовати апстрактне методе и у том случају и поткласа остаје апстрактна.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 18 / 26
Апстрактне класе (2)
Најчешће, Јава програмер користиапстрактне класе у ситуацији када жели да обавеже да све поткласе дате класе морају да реализују неко понашање, али је то понашање сувише опште, па га нијемогуће реализовати на нивоу наткласе.
Објекат примерак конкретне класе јеистовремено и примерак апстрактне наткласе (исто као код наслеђивања регуларнихкласа)
Пример наслеђивањаса апстрактом класом (на десној слици се користи UML нотација за дијаграм класа):
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 19 / 26
Апстрактне класе (3)
Још један пример наслеђивања саапстрактом класом
(на десној слицисе користи UML нотација за дијаграм класа):
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 20 / 26
Јава допушта креирање тотално апстрактних класа,
које су познате као интерфејси.
У оквиру интерфејса се могу наћи само заглављаметода
и дефиниције константи.
Интерфејси описујупонашање, а класа која их имплеметира
одређује какосе то понашање реализује.
Мада Јава искључивоподржава једноструко наслеђивање,
она ипак допушта да класаимплементира више од једног
интерфејса.
Јава на овај начин делимичнокомпензује непостојање
вишеструког наслеђивања.
Објекат примерак конкретне класе која имплементира
неколико интерфејса се може посматрати као примерак
сваког од тих интерфејса.
Интерфејси
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 21 / 26
Класа имплементира интерфејс ако саржи реализацију сваког од метода тог интерфејса.
На следећем дијаграму црвена линија представља наслеђивање, а зелена имплементацију.
MojaKlasa Ptica ....... Sisar
Object
Orao Pas
Civava
NanosiBol
Kretanje
Интерфејси (2)
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 22 / 26
Интерфејси (2)
- Однос између класа Tocakи PrevoznoSredstvoје типа «је део од»односно «садржи»из другог смера.
- Овај тип односа се још зове и асоцијација.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 23 / 26
Задаци за вежбање
- Описатиједну хијерархијску структуру са класамаи поткласама.
- Описатиједну структуру са вишеструким наслеђивањем.
- Из решења за тачку 2. вишеструко наслеђивање заменити употребом интерфејса.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 24 / 26
Дијаграм на основу сценарија
На основу следећег сценарија направитиУМЛ дијаграм класа:
Авио-превозникјефирма којаможеда поседујенеколикоаеродромaширом
света каои одређени бројавиона, а најмање 1. Авио-превозник има своје
име, шифру и државу у којој је регистрован.
Аеродром се описује трословном ознаком, државом у којој се налази и
максималним бројем дневних летова. Постоје домаћи и међународни
аеродроми, а разлика је у контроли пасоша и начину сервисирања авиона.
Авио-линија се описује својом почетном и завршном локацију односно
аеордромом полетања и слетања. Поред тога, она има и своју ознаку.
За једну авио-линију постоје летови који се дефинишу ознаком излазне
капије и очекиваним временом полетања и слетања.
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 25 / 26
УМЛ алати
За прављење УМЛ дијаграма можесе користити
неки од следећих алата:
StarUML http://staruml.io/download
ArgoUML http://argouml.tigris.org/
Microsoft Visio –може се добити пуна верзија уз msdnaa matf лиценцу:
http://alas.matf.bg.ac.rs/msdnaa.html
И још многи други који се могу наћи путем Интернета...
Математички факултет {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rsrs 26 / 26