PKWWW-w2.pdf

(251 KB) Pobierz
Microsoft Word - w2.doc
ProgramowaniawJavie
DziałaniekaŜdegoprogramupoleganaprzetwarzaniudanych.Zaczniemywięcodzapoznania
sięztypamidanychJavy.Abyprzetwarzaćdane,trzebaumiećnanichoperować.Dotego
słuŜąoperatory,którełączązmienne,stałeiliteraływwyraŜenia.MusimyteŜumieć
zapisywaćlogikędziałaniafragmentówprogramuwtymceluposługujemysięinstrukcjami
sterującymi.Tosątrzypoczątkowezagadnienia.
ProgramywJaviezapisujesięjakodefinicjeklas.Poznamywięczasadyichkonstrukcjioraz
działanianaobiektachklaszapomocąmetod(czylikomunikatów).Ostatniaczęśćrozdziału
poświęconabędziebardzouŜytecznymobiektomtablicom.
Typyideklaracje
Abykompilatormógłwłaściwieinterpretowaćdaneioperacjenadnimi,kaŜdejjednostce
danychtrzebaprzypisaćtyp.Mówisięczęsto,Ŝetyptozestawwartości,któremoŜe
przybieraćdana,pluszestawoperacji,któremoŜnanaddanąwykonywać.OtypyLiterałów
troszczysięsamkompilator(moŜnamuwtymczasemtrochępomóc).Typyzmiennychi
stałych,któreniesąliterałami,programistamusipodaćsamwdeklaracjach.Deklaracje
obowiązkowomusząpoprzedzaćuŜyciezmiennychistałychwinnychinstrukcjachprogramu.
Wjęzykuistniejeszeregtypówprostych:
WszystkieinnedanewJaviesątraktowanejakoobiekty,którychatrybutyora;
funkcjonalność(moŜliweoperacjenadanych)definiująokreśloneklasy.Nazwaklas}jestw
tymprzypadkunazwątypudanegoobiektu.
Deklaracjazmiennejlubstałejwyglądatak:nazwa_typunazwa_zmiennej_lub_stałej
np.:
inta;//deklaracjazmiennejcałkowitoliczboweja
charc;//deklaracjazmiennej,któramoŜezawieraćznakiUnikodu
Strings;
Buttonb;
IdentyfikatoryStringiButtonsąnazwamitypówobiektowych,nazwamiodpowiednichklas
(odpowiednio:klasyreprezentującejłańcuchyznakoweorazklasyprzycisków).
648110973.002.png
WystępujezasadniczaróŜnicapomiędzydeklaracjamizmiennychtypówprostychitypów
obiektowych.
Wprzypadkutypówprostychdeklaracjajestzarazem definicjąwydzielawpamięcimiejsce
naprzechowaniezmiennejdanegotypu.
Deklaracjazmiennejtypuobiektowegojestfaktyczniedeklaracją(idefinicją)referencjido
obiektu,niewydzielanatomiastwpamięcimiejscanaprzechowaniesamegoobiektu.
Referencjatotylkoodniesienie,wskazanienamiejscewpamięci,gdziemoŜebyć
przechowywanydanyobiekt.
Deklarującreferencję,nieuzyskujemyobiektu.Obiektdopieromusimystworzyć(doczego
słuŜywyraŜenienew,zwracającereferencjędonowoutworzonegoobiektu).Ewentualnie
zadeklarowanejreferencjimoŜemyprzypisaćreferencjędojuŜistniejącegoobiektu.
Naprzykładpodeklaracji:Buttonb;
zmiennabzawierareferencjędoobiektutypuButton,alenarazieniewskazujenaŜaden
obiekt.DopierouŜyciewyraŜenianew:
b=newButton();
tworzyobiekt,azwróconaprzeznew...referencjajestpodstawiananazmiennąb.W
deklaracjachmoŜemyinicjalizowaćdane,np.:
inta=1;
charc='a';
Buttonb=newButtonO;
Strings="alamakota"//!!!
Ostatniprzykładniejestodstępstwemodogólnejregułytraktowaniatypówobiektowych.
Rzeczwtym,ŜewJaviedopuszczalnesąliterałyłańcuchowe(napisywcudzysłowie),
którychuŜycie(niewidoczniedlanas)powodujezbudowanieobiektutypuStringizwrot
referencjidoniego.Zatemzmiennaszostajezainicjalizowanareferencjądoautomatycznie
utworzonegoobiektutypuString,któryzawieranapis..alamakota".
Stałedeklarowanesązespecyfikatoremfinał,np.:
finałintSIZE=1024;
//nazwystałychzazwyczajpiszemyduŜymiliterami
Winicjalizacjach(zarównozmiennych,jakistałych)moŜemyuŜywaćwyraŜeńiwtym
równieŜwywołaniametod).
OperatoryiwyraŜenia
Zezmiennych,stałychiliterałów,posługującsięoperatoramijęzykainawiasamimoŜemy
konstruowaćwyraŜenia.WyraŜeniasąwyliczane,aichrezultatymogąbyćwróŜnysposób
wykorzystane(np.doprzypisaniawartościwyraŜeniazmiennej,winstrukcjachsterujących
wykonaniemprogramu,jakoargumentymetod).KolejnośćwyliczeńzaleŜyodpriorytetówi
wiązańoperatorówuŜytychwwyraŜeniach.Priorytetymówiąotym,wjakiejkolejnościbędą
wykonywaneróŜneoperacjezawartewtymsamymwyraŜeniu(np.czywwyraŜeniua+b*c
najpierwbędziewykonywanemnoŜenie,czydodawanie).Wiązaniaokreślająkolejność
wykonywaniaoperacjiotymsamympriorytecie.
648110973.003.png
OpracowaniewyraŜeniarelacyjnegoilogicznegodajewynikboolean
a>b;//MUSIbyćtypuboolean
NiemamoŜliwościkonwersjizbooleandotypówcałkowitych.Wtypowychprzypadkach,
gdziewCstosowano„arytmetykę",narelacjachmoŜnauŜyćoperatora?:
Kolejnośćopracowaniaargumentówoperacjidwuargumentowych(ilistyargumentów
wywołaniametody)jestściśleokreślona:ODLEWEJDOPRAWEJ.
648110973.004.png
Operatory+,=,+=mająspecjalneznaczeniedlaobiektówklasyString:
Strings;//referencja
3="napis";'tworzonyjestobiektStringzawierającyłańcuch"napis"
iODNIESIENIEdotegoobiektuprzypisywanejestreferencjiss=s+"X";
//konkatenacjałańcuchów
ZłańcuchamiznakowymimoŜnakonkatenowaćdanewszystkichinnychtypów(w
szczególnościobiektowych).Przykonkatenacjisąautomatycznieprzekształcanedotypu
String.Wprzypadkutypówobiektowychoznaczatoniejawnewywołaniewobecobiektu
metodytoString()zjegoklasylubzktórejśzjegonadklas.
Stringsl;
Strings2="Asia";
sl=s2+"mapsa";//konkatenacjałańcuchówi
przypisanie
sl=sl+s2;//slzawieranapis"AsiamapsaAsia"
ZobiektamitypuStringmoŜnakonkatenowaćliczby:
ntk=1;
sl=k+k+s2;//odlewejdoprawej!!!:da:2Asia
sl=s2+k+k;//odlewejdoprawej!!!:da:Asiall
sl=s2+(k+k);//nawiaszmiemakolejność:wwynikumamyAsia2
slk+k;//błądkompilacji(jedenzargumentówmusibyćtypu String)
JakrównieŜobiektyinnychklas:
Datedate=newDate();
sl="Data..."+date;//daData...ibieŜącądatę
DoporównywaniaobiektównienaleŜyuŜywaćoperatorówrelacyjnychirówności,
nierówności.Operatorytezastosowanewobeczmiennychoznaczającychobiektyfaktycznie
porównująreferencje(czyliodniesieniadoobiektów),bowiemzmienneoznaczająobiekty,
alezawierająreferencje.DoporównaniaobiektówsłuŜąmetodyichklas:equals(...)i
compareTo(.„).PorównaniereferencjimoŜenampowiedziećtylko,czydanareferencja
wskazujenatensamobiektcoinna,aleniepowienicotym,czywskazywaneobiektysą
„treściowo"takiesame.
Strings2="Asia";Strings3=newString("Asia");booleanb;
b=(s2==s3);//porównaniereferencji:wynikfalse,boto
//nietensamobiekt,choćnapisjestidentyczny
b=s2.equals(s3);//porównanieStringów:wyniktrue,bonapisysą
//takiesame.
Wyjątekwprzypadkuliteratówłańcuchowych:
32="Asia";s3="Asia";b=(s2==s3);
//true,botensamliteralnynapisjestjednymobiektem
Operatorinstanceof
xinstanceofTypObiektowyoznacza:
czyxjestreferencjądoobiektutypuTypObiektowy?
WartośćwyraŜeniajesttypuboolean(prawdafałsz,taknie).
WyraŜeniestwierdzaczyxjestobiektemklasyonazwieTypObiektowyalbodowolnejjej
nadklasy,alboklasyimplementującejinterfejsTypObiektowy.Tegroźniebrzmiące
sformułowaniazostanądokładniewyjaśnionewnastępnychrozdziałach.
648110973.005.png
Terazchodzioogólnezrozumienie.Otoprostyprzykładzastosowania:metodaotrzymujeargument
typuComponent,naleŜypodjąćróŜnedziałaniawzaleŜnościodtego,zjakiejkonkretniepodklasy
klasyComponentpochodziobiekt,dcktóregoreferencjazostałaprzekazanajakoargumentmetody:
voidmetoda(Componentc)C
if(cinstanceofButton)...
//jeŜelicoznaczaprzycisk...robimycci elseif(cinstanceof
Label)...
//ajeŜelietykietątocoinnegoelse...//itd.else...
Promocje
PrzyopracowaniuwyraŜeńarytmetycznychzmiennebyte,short,charprzekształcanesądotypuint,
floatdodouble,longdofloatidouble.
Konwersjearytmetyczner ozszerzające(czyliprzekształcającemłodszetypydostarszych)są
dokonywaneniejawnie.
ZawęŜające(wodwrotnymkierunku)musząbyćdokonanejawniezapomocąoperatorakonwersji.
Instrukcje
ZbiórinstrukcjijęzykaJava,wzorowanynazbiorzeinstrukcjijęzykaC,zawiera:
instrukcjęprzypisania,
instrukcjewarunkoweifiswitch,
instrukcjeiteracyjnefor,whileido,
instrukcjesterujące:continue,break
blokciąginstrukcjiwnawiasach{}
Wkolejnychpodpunktach,omówimypostaciskładnioweisemantykęwymienionych
instrukcji.
WJaviedodyspozycjimamynastępująceinstrukcjesterujące:if,for,while,switch.
Instrukcjewarunkowe
Instrukcjawarunkowaifprzyjmujepostać:
if(wyraŜenie_logiczne)instrukcjaelseinstrukcja;
lub
if(wyraŜenie_logiczne)instrukcja
WykonanieinstrukcjipoleganaobliczeniuwartościwyraŜenia_logicznegoi,jeślijestona
równatrue,towykonaniupodlegapierwszainstrukcja,wprzeciwnymprzypadku(dla
wartościrównejfalse),wykonywanajestinstrukcjaumieszczonaposłowiekluczowymelse
(jeśliwystępuje)lubnastępnainstrukcjaprogramu.
648110973.001.png
Zgłoś jeśli naruszono regulamin