You are on page 1of 13

OBJEKTNO ORIJENTISANO

PROJEKTOVANJE

Klase
Uvod
• Klasa je jedan od osnovnih pojmova u objektno orijentisanoj
paradigmi. Predstavlja logičku konstrukciju kojom se definiše
oblik i ponašanje objketa. Bilo koji koncept koji treba da se
realizuje u nekom objektno orijentisanom programskom jeziku
mora da se enkapsulira u klasu.
• Klasa se može predstaviti i kao struktura podataka kojoj su
dodate neke nove funkcionalnosti – metode ali klasa
predstavlja i novi, korisnički definisani tip. Objekat predstavlja
konkretni primerak datog tipa.
Uvod
Objekat može da se posmatra sa dva stanovišta:
• unutrašnji – detalji vezani za promenljive i metode koji su definisani
u klasi,
• spoljašnji - usluge koje objekat obezbeđuje i način kako objekat
komunicira sa ostatkom sistema.
Spolja gledano, objekat je enkapsulirani entitet koji obezbeđuje niz
specifičnih usluga koje definišu interfejs objekta. Objekat u funkciji
klijenta može da koristi usluge koje obezbeđuje drugi objekat i da pri
tome ne bude obavešten o načinu implementacije tih usluga. Objekat
treba da se konstruiše tako da da može da upravlja sa samim sobom.
Uvod
Opšti oblik definicije klase je:
class ImeKlase
{tip promenljiva1;
tip promenljiva2;
....
tip promenljivaN;
tip ImeMetode1 (lista parametara){telo metode}
tip ImeMetode2 (lista parametara){telo metode}
...
tip ImeMetodeM (lista parametara){telo metode}
}
Uvod
• Ispred imena klase treba da stoji službena reč class.
• Definicija klase treba da stoji unutar velikih zagrada.
• Metode nisu ništa drugo, nego funkcije koje imaju svoje liste
argumenata i povratnu vrednost (opciono). Promenljive u listi
argumenata su lokalne za metodu a atributi su vidljivi svuda
unutar klase i metode im pristupaju direktno, samo
navođenjem imena.
• Metode unutar jedne klase se međusobno vide i mogu da se
pozivaju samo navođenjem imena (i potrebne liste
argumenata).
Uvod
• Vidljivost klasa se definiše isto kao i vidljivost atributa i metoda.
Unutar jednog fajla može biti definisano više klasa ali samo
jedna može biti javna i vidljiva spolja.
• Unutar jednog fajla sve klase se međusobno vide ali ono što je
privatno u klasi nije vidljivo nigde izvan nje pa ni u klasi koja se
eventualno nalazi u istom fajlu.
Primer za analizu
Putnik na aerodromu treba da se prijavi• . za let i tom prilikom
predaje prtljag. Avio kompanija postavlja uslove za dimenziju i
težinu prtljaga u zavisnosti od toga za koju klasu je kupljena
karta. Postoje tri klase (od najskuplje do najjeftinije): prva, biznis
i ekonomska. Za prvu klasu ne postoje nikakva ograničenja za
prtljag; putnik biznis (ekonomske) klase može da nosi najviše
jedan komad prtljaga kome težina ne prelazi 32 kg (23 kg) i zbir
dimenzija (širina+visina+dužina) ne prelazi 153 cm.
Napomena: nije se vršila kontrola podataka
Klasa Kofer
class Kofer
{ float sirina=0, duzina=0, visina=0, tezina=0;
public
float postaviSirinu(float x){sirina=x; return sirina;}
float postaviVisinu(float x){visina=x; return visina;}
float postaviDuzinu(float x){duzina=x; return duzina;}
float postaviTezinu(float x){tezina=x; return tezina;}
float vratiSirinu(){return sirina;}
float vratiDuzinu(){return duzina;}
float vratiVisinu(){return visina;}
float vratiTezinu(){return tezina;}
//float zapreminaKofera(){return sirina*duzina*visina;}
float zbirDimenzija(){return sirina+duzina+visina;}}
Klasa Putnik
class Putnik
{String ime;
Kofer prtljag;
int kolicinaprtljaga;
int status;
boolean dozvoljeno;
public
Putnik(String ime,Kofer prtljag,int kolicinaPrtljaga,int status)
{this.ime=ime; this.prtljag=prtljag; this.kolicinaPrtljaga=kolicinaPrtljaga; this.status=status;
dozvoljeno=false;}
String vratiIme(){return ime;}
Kofer vratiPrtljag(){return prtljag;}
int vratiKolicinaPrtljaga(){return kolicinaPrtljaga;}
int vratiStatus(){return status;}
Osnovni pojmovi
• atributi/metode
• funkcije dosega
• deklaracija – rezervacija prostora
• službena reč new
• konstruktori – destruktori
• private – public
• komunikacija klasa
Dijagram klasa
Napomena
Konstrukcije:
• float tez=globetrotter.vratiPrtljag().vratiTezinu();
• float zbirdimenzija=globetrotter.vratiPrtljag().zbirDimenzija();
VSER

You might also like