You are on page 1of 35

Objektno orijentisani jezici

Programski jezici
Elektronski fakultet u Ni

Pregled tehnika programiranja


Nestrukturno programiranje
Glavni program direktno operie sa globalnim podacima.
Dugi i nepregledni programi
Copy paste- Kod se viestruko koristi kopiranjem delova

Pregled tehnika programiranja

Strukterno proceduralno programiranje

Program se moe posmatrati kao sekvenca poziva potprograma


(procedura).

Strukture podataka se modeliraju odvojeno od koda procedura koje ih


obrauju.
Viestruko korienje koda postie se preko biblioteka procedura i
funkcija.

Pregled tehnika programiranja

Modularno programiranje
Procedure sa zajednikom funkcionalnou su integrisane u
jedan modul
Svaki modul moe da ima svoje sopstvene podatke.
Viestruko korienje struktura podataka i procedura

Pregled tehnika programiranja

Object Oriented Programming

Strukture podataka i procedure integrisane u klase


Program moe da se posmatra kao mrea objekata koji su u interakciji pri
emu svaki objekat svoje stanje.
Inkapsulacija, nasleivanje, polimorfizam i apstrakcija
Ponovno korienje objekata

Pregled tehnika programiranja

Komponentno programiranje (Component Development)


Aplikacija se gradi od prekompiliranih softverskih blokova, slino
konceptu integrisanih kola u elektronici
Akcenat je na modeliranju interfejsa
Komponente se mogu viestruko koristiti (Binary reuse of functionality)
Nezavisnost od programskog jezika i platforme na kojoj se aplikacija
koristi.

Objektno orijentisano programiranje


OO karakteristike
Sve je objekat.
Objekat je definisan podacima i skupom metoda
koji opisuju njegovo ponaanje.
Objekti komuniciraju meusobno slanjem poruka.
Svaki objekat pripada svojoj klasi (ima svoj tip).
Klasa opisuje strukturu objekta i njegovo
ponaanje.
Svi objekti iste klase mogu da odgovore na iste
poruke.

Objektno orijentisano programiranje


Osnovni koncepti
Klasa
Definie strukturu objekata (podatke) i njihovu funkcionalnost
(ponaanje). Klasa moe da se posmatra kao ablon objekata,
(template) kojim se opisuje model po kome ae se kreirati novi
objekat. Klase se ponekad nazivaju fabrikama objekata (Cox
1986)

- Objekat
Primerci (istace) klasa. pojedninani,.
Svi objekti jedne klase imaju strukturu definisanu klasom i nad
njima se mogu izvravati samo operacije definisane klasom kojoj
pripadaju.

- Poruka
Objekat odgovara na poruku time to se izvrava odgovarajui
metod.
Kaemo da na objekte delujemo porukama, pri emu svaka
poruka predstavlja poziv metoda (funkcije ili procedure)
definisanog u klasi kojoj objekat pripada.

Interakcija izmeu objekata


Komande
Komande sa
argumentima

Pitanja

A
A

Stand up

Look up

B
in

Where were you born?

I was born in
Pitanja sa
argumentima

Did you see

on

(yes/no)

Inkapsulacija zatvaranje

Interface
(Methods and messages)

programer, kreator klase

Korisnik klase

Primer
public class Light {
protected boolean isOn;

Methods

Properties

Class

public void TurnOff()


{/*...*/}
public void TurnOn()
{/*...*/}
}

Kreiranje objekta:
Light kitchenLight = new Light();
kitchenLight.TurnOn();

Nasleivanje
Nasleuju se sva svojstva postojee
klase i njima se dodaju nova.
Class Derived extends
Base
{
}

Nasleivanje
Nasleivanje omoguava da se definiu nove klase na osnovu
postojeih.
Nova klasa se definie kao specijalizacija ili proirenje neke
klase koja ve postoji.
Nova klasa inicijalno ima sva svojstva klase koju nasleuje.
Novoj klasi mogu da budu pridodata nova svojstva.
Kada jedna klasa, u oo terminologiji podklasa (subclass,
child class, derived class), nasleuje neku klasu , u oo
terminologiji superklasa (superclass, parent class,
base class), onda podklasa nasleuje sva svojstva
superklase.

Nasleivanje

Podklasi mogu biti pridodata nova svojstva (podaci,


metodi, poruke), a neka svojstva (prvenstveno metodi)
mogu biti izmenjena sa ciljem da se nova klasa prilagodi
specifinim potrebama.
Sva dodata svojstva i izmene odnose se na poklasu
(subclas) dok originalna klasa (superclas) ostaje
nepromenjena.
Svojstva koja nisu definisana u podklasi automatski se
preuzimaju iz njene superklase.

ta se moe menjati

Nove poruke, time se proiruje interfejs nove klase. Za svaku


novu poruku treba da bude definisan odgovarajui metod.

Novi podaci instanci, time se proiruje struktura objekata.


Posmatrano sa strane apstrakcije objekti podklasa su
specijalizovani (detaljnije opisani) od objekata superklasa.
Subklase ne samo da imaju veu funkcionalnost ve imaju i vie
svojstava..

Postojei metodi mogu biti predefinisani, na taj nain se


modifikuje ponaanje objekta. U ovom sluaju govorimo o
predefinisanju (overriding) metoda.

Primer nasleivanja

IS A relacija
Nasleivanjem se definie IS A relacija izmeu
originalne klase i nove, izvedene klase.
Kako objekti podklase mogu da prime sve poruke
kao i objekti superklase oni se mogu koristiti
svuda gde se mogu koristiti i objekti superklase.
Svaki objekat jedne klase je i (is an) objekat
njene superklase.

Hierarhija klasa
Kada se nasleivanje primeni viestruko
dobija se struktura tipa stabla koja se obino
naziva hierarhija klasa.

Object

C1

C1a
C1b

C2
Primer hierarhije klasa

C2a
C2b

Polimorfizam
Polimorfizam se esto navodi kao najae svojstvo OO jezika.
Termin oznaava vie formi - "many forms", i u kontekstu
objektnih jezika ukazuje na mogunost da se razliiti metodi
pozivaju preko istog interfejsa.
Sposobnost da raziliiti objekti odgovore ne iste poruke (na
sebi svojstven nain).
Koristi se isti interfejs za ratliite objekte.

Polimorfizam
Zakasnelo povezivanje.

Jo jedan primer polimorfizma


Shape c = new Circle();
Shape t = new Triangle();
Shape s = new Square();
// ...
c.draw();
t.draw();
s.draw();

Apstraktne klase i interfejsi


Osnovne klase koje slue kao osnova za generisanje
novih klasa.

Shape

Line

print
resize

BoldLine
print

print
resize
Circle

print
resize

Apstrakcija
Mentalni proces izdvajanja nekih karakteristika isvojstava i
iskljuivanja preostalih koja nisu relevantna

- ima krila, leti

Apstrakcija je uvek sa nekim ciljem, namenom


Istre stvari mogue je apstrakovati na vie razliitih
naina
Svaka apstrakcija je nepotpuna slika realnosti
Ne elimo potpunost, ve samo adekvatno
modeliranje!

Tipovi apstrakcije
Klasifikacija vri se apstrakcija objekata sa istim osobinama u jedan tip

DBMS
software

Microsoft
software

Relacija
IS_MEMBER_OF

Relacija
IS_MEMBER_OF

Word

PowerPoint

...

Access

Oracle

...

Sybase

Istiu se zajednika svojstva i ignoriu


posebna

Tipovi apstrakcije
agregacija razliiti tipovi podataka se udruuju u sloeniji tip

avion
Relacija
IS_PART_OF

Krila

Tokovi

...

Motori

ignoriu se razlike izmeu delova Koncentriemo se na injenicu da oni ine


celinu

Tipovi apstrakcije
generalizacija uoavanjem zajednikih osobina i
operacija vie tipova kreira se novi generalniji tip
superclass/supertype

redovni

student

vanredni

IS_A
relationship

...

poslediplomci

subclass/subtype

Uoimo razliku izmeu klasifikacije i generalizacije

klasifikacija primenjuje se na individualne instance


objekata
generalizacija na skup objekata (klase)

Tipovi apstrakcije
student
generalizacija
Redovnistudent

klasifikacija
Saa

Tijana

...

Jovan

agregacija
Ime

Brojindekasa...

OO jezici
C

ALGOL

Objective-C

Pascal
SIMULA
Delphi

Object Pascal

C++
Smalltalk

Java
Eiffel
LISP

Flavors

Loops

Actor
CLOS

Primer
Hoemo da nacrtamo krug sa krstom u njemu.
Krug treba da ima radijus r i centrom u poziciji
(x,y).
Potrebna su nam tri objekta da bi reili ovaj
problem. Jedan krug i dve linije.

circ: krug (instanca klase Circle)


vert: vertikalna linija (instanca klase Line)
hori: horizontalna linija (instanca klase
Line)

Smalltalk

Smalltalk-80 verzija iz 1980.


Program se sastoji od poruka ija sintaksa odgovara uproenom
engleskom jeziku
Na objekte se deluje porukama koje predstavljaju pozive metoda.
Dinamika implementacija, kasno povezivanje.

krug := Circle new;


krug center: x @ y radius:r;
vert := Line new; vert start: x @ (y-r);
vert end: x @ (y+r);
hori := Line new; hori start: (x-r) @ y;
hori end: (x+r) @ y;
ckrug display; vert display; hori
display;

C++
1980 Bjarne Stroustrup je projektovao skup jezika koji su bili
nazvani "C With Classes" to je posluilo kao osnova za
definisanje jezika C++.
Proirenje programskog jezika C
Klase su ujedno i tipovi podataka

krug = new Circle(x,y,r)


vert = new Line(x, x-r, x, y+r)
hori = new Line(x-r, y, x+r, y)
krug -> display()
vert -> display()
hori -> display()

Object Pascal - Delphi


In 1986 Apple realizuje Object Pascal za Mac.
1995 pojavljuje se Delphi- popularna verzija razvojnog
okruenja (RAD tool) zasnovanog na Object Pascalu.

New(krug); krug.ICircle(x,y,r);
New(vert); vert.ILine(x,x-r,x,y+r);
New(hori); hori.ICircle(x-r,y,x+r,y);
krug.display; vert.display,
hory.display

Java
May 1995.
Popularan je jer je jednostavniji od C++.
Ima primenu u razvoju Internet aplikacija

OO programiranje
Programmer

Integrated Development Enviroment

Class Library (Class Hierarchy)

Svojstva dobrog OO programa


Reusability
Extensibility
Flexibility
Simplicity

- Viestruko korienje
- Laka proirljivost
- Lako prilagoavanje
- Jednostavnost

You might also like