J1.PDF

(85 KB) Pobierz
136416349 UNPDF
Rozdział4
KLASY,OBIEKTY,
METODY
Javajestj¦zykiemwpełnizorientowanymobiektowo.Wszystkieelementy
opisuj¡cedane,zawyj¡tkiemzmiennychprostychs¡obiektami.Sampro-
gramte»jestobiektempewnejklasy.
Abyutworzy¢obiektnale»ynajpierwzdefiniowa¢klas¦,którajest
wzoremdotworzeniaobiektówtejklasy.
Klasadefiniujezarównodanejakialgorytmysłu»¡cedoichprzetwa-
rzania.Danes¡zapisywanewklasiewpostacipól(zmiennychlubstałych
składowych),aalgorytmywpostacimetod.Metod¡jestwydzielonyfrag-
mentprogramu,naogółzawieraj¡cyparametry,którymo»eoperowa¢na
±ci±leokre±lonychdanych.
Abyutworzy¢klas¦,nale»yu»y¢słowakluczowego class wykorzystu-
j¡cponi»szyschemat(tekstnast¦puj¡cywwierszupodwóchznakach//
jestkomentarzem):
classnazwaKlasy{
//deklaracjapól
typzmiennaPierwsza;
typzmiennaDruga;
...
//deklaracjametod
typmetodaPierwsza(parametry)
16 4.KLASY,OBIEKTY,METODY
{
//ciałometody
}
typmetodaDruga(parametry)
{
//ciałometody
}
...
}
Dlaprzykładurozwa»myklas¦pozwalaj¡c¡tworzy¢obiektyzawie-
raj¡ceinformacjeopaczkach,którenaprzykładtrzebaprzewie¹¢ci¦»a-
rówk¡.Paczekjestwi¦cejni»mo»epomie±ci¢ci¦»arówkaichodzioto,
byzaładowa¢naci¦»arówk¦jaknajwi¦cejpaczektak,abysumawarto±ci
tychpaczekbyłamaksymalna.Dlaka»dejpaczkimusimyzatemdys-
ponowa¢nast¦puj¡cymidanymi:długo±¢podstawy,szeroko±¢podstawy,
wysoko±¢ioczywi±ciewarto±¢paczki.
PierwszawersjaklasyPaczka(bezprojektowaniametod)mo»ewygl¡-
da¢nast¦puj¡co(typ int jesttypemcałkowitymomówionymwrozdziale
5):
classPaczka{
intdlugosc;
intszerokosc;
intwysokosc;
intwartosc;
}
ObiektklasyPaczkamo»emyutworzy¢wdwóchetapach.Najpierw
trzebazadeklarowa¢referencj¦doobiektuklasyPaczka:
Paczkatelewizor;
Referencjaczyliinaczejodno±nikidentyfikujedanyobiekt.Mo»emy
sobiewyobrazi¢,»ereferencjapodajemi¦dzyinnymiadreswpami¦ci,
gdziejestumieszczonyobiekt,jegowielko±¢itp.Powykonaniupowy»szej
instrukcjizmienna telewizor posiadawarto±¢ null ,czyliniezawiera
referencjido»adnegoobiektu.
Abyutworzy¢nowyobiekt,nale»ywykorzysta¢operator new :
4.KLASY,OBIEKTY,METODY 17
telewizor=newPaczka();
Operator new tworzynowyobiektklasyPaczka,areferencjadoniego
jestprzypisywanazmiennej telewizor (przypomocyoperatora=).Od
tegomomentuzmienna telewizor nieposiadaju»warto±ci null ,lecz
odnosisi¦dopewnegoobiektuklasyPaczka.
Obiepowy»szeinstrukcjemo»napoł¡czy¢iutworzy¢obiektklasy
Paczkawjednymetapie:
Paczkatelewizor=newPaczka();
Ka»dyobiektposiadawłasn¡kopi¦pólzadeklarowanychwklasie.
Dost¦pdotychpólmo»nauzyska¢przypomocyoperatora”.”.(kropka).
Ustawieniewarto±ciwszystkichpóldlaobiektu,doktóregoreferencj¡jest
zmienna telewizor wygl¡danast¦puj¡co:
telewizor.dlugosc=150;
telewizor.szerokosc=80;
telewizor.wysokosc=120;
telewizor.wartosc=6000;
Obiektówdanejklasymo»nautworzy¢dowolniedu»o.Dlaprzykładu
utworzymyjeszczejedenobiektklasyPaczka:
Paczkapralka=newPaczka();
Warto±cipólobiektu,doktóregoreferencj¡jestzmienna pralka ,
ustawiamyanalogiczniejakpoprzednio:
pralka.dlugosc=70;
pralka.szerokosc=50;
pralka.wysokosc=130;
pralka.wartosc=5000;
Jeszczerazpodkre±lmy,»eka»dyobiektklasyPaczkamaswoj¡wła-
sn¡kopi¦pólzdefiniowanychwklasie.Ilustrujetorys.4.1.
Obliczenieobj¦to±cipaczki-obiektu,doktóregoreferencj¡jestzmienna
telewizor mo»nadokona¢przypomocyinstrukcji:
obj=telewizor.dlugosc*telewizor.szerokosc
*telewizor.wysokosc;
18 4.KLASY,OBIEKTY,METODY
Rysunek4.1:ObiektyklasyPaczka,doktórychreferencjamis¡
telewizor i pralka
Ka»depoleimetodazdefiniowanewklasiemo»emie¢wyszczegól-
nionyspecyfikatordost¦puokre±lanyprzezsłowa: public , private oraz
protected .Umieszczeniesłowa public oznacza,»edanyskładnikjest
dost¦pnywcałymprogramie.Słowo private oznacza,»edanyskładnik
mo»eby¢wykorzystywanytylkoprzezmetodydanejklasy.Specyfikator
dost¦puokre±lonyprzezsłowo protected jestomówionywrozdziale13
inarazienieb¦dziemysi¦nimzajmowa¢.
Istniejejeszczespecyfikatordomy±lnywyst¦puj¡cywtedy,gdynie
u»ywamy»adnegosłowa(polazdefiniowanewdotychczasowejwersjiklasy
Paczkamiaływła±niedomy±lnyspecyfikatordost¦pu).Domy±lnyspecy-
fikatormaznaczenietakiesamojakspecyfikator public dlaklaszde-
finiowanychwtymsamympakiecie.Poniewa»pakietamizajmiemysi¦
dopierowrozdziale16,narazieprzyjmiemy,»especyfikatordomy±lny
jestrównowa»nyspecyfikatorowi public .
Zmie«myterazdefinicj¦klasyPaczkawsposóbnast¦puj¡cy:
classPaczka{
privateintdlugosc;
privateintszerokosc;
privateintwysokosc;
privateintwartosc;
}
Wtymprzypadkuniemaju»mo»liwo±ciwykorzystywaniawprogramie
instrukcjirodzaju:
telewizor.dlugosc=150;
4.KLASY,OBIEKTY,METODY 19
czyte»
obj=telewizor.dlugosc*telewizor.szerokosc
*telewizor.wysokosc;
Pola dlugosc , szerokosc , wysokosc i wartosc s¡niedost¦pnenaze-
wn¡trzklasy.Itakwwi¦kszo±ciprzypadkówpowinnoby¢.Dost¦pdo
tychpólczyte»wykonywanienanichoperacjipowinnoodbywa¢si¦
przypomocymetod.
Ogólnyschematdlautworzeniametodyjestnast¦puj¡cy:
typnazwa(parametry)
{
//ciałometody
}
Dlaprzykładuutwórzmyterazmetod¦pozwalaj¡c¡naobliczenieobj¦-
to±cipaczki.
publicintObliczObj()
{
returndlugosc*szerokosc*wysokosc;
}
Metodatapowinnaby¢umieszczonawewn¡trzdefinicjiklasyPaczka:
classPaczka{
privateintdlugosc;
privateintszerokosc;
privateintwysokosc;
privateintwartosc;
publicintObliczObj()
{
returndlugosc*szerokosc*wysokosc;
}
}
MetodaObliczObj()niezawiera»adnychparametrówidziałanapolach
zdefiniowanychwklasiePaczka.Mimo»es¡topolazespecyfikatorem
Zgłoś jeśli naruszono regulamin