Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
gwarantują,żeichobiektypododaniudozbiorówidomap(jakokluczemap)nigdy
niezmieniąswoichstanów,cojakpamiętamyjestwarunkiem,abyzbioryoraz
kluczewmapachzachowywałyspójność(oczywiściewpokazanejtuklasiePerson
trzebabybyłojeszczezdeniowaćmetodyequals()ihashCode(),takbyobiekty
tejklasymogłybyćdodawanedoHashSetlubwystępowaćjakokluczewHashMap);
żadnametoda,uzyskująctakiobiektjakoargument,niemożezmienićjegostanów,
azatemunikamyprzypadkowychbłędów;
posługiwaniesięnimiwprogramowaniuwspółbieżnymniewymagasynchronizacji,
którazwyklejesttrudnymzadaniem(zob.rozdziałoprogramowaniuwspółbieżnym).
PokazanaklasaPersonniejestabsolutnieniezmienna.Zgodniezzasadamipowinniśmy
wniejjeszczewkilkumiejscachużyćsłowakluczowegonal:
nalpublicclassPerson{
//tunalzabraniadziedziczeniaklasyPerson
//atuprzeznalzabezpieczamysięprzedbłędamiwkodzieklasy:
privatenalStringname;
privatenalStringpesel;
//iii
}
Stosowanieklasniezmiennychznacznieułatwiaprogramowanie,aleoczywiścienie
zawszemożemytorobić.NaprzykładwprzypadkuklasyVehiclejejzmienność(zmien-
nestanypojazdów:stoi,jedzieitp.)wydajesięnaturalnymrozwiązaniem.
1.7.Inicjowanie
Podczastworzeniaobiektu:
polaklasymajązagwarantowaneinicjowanienawartościZERO(0,falsedla
typuboolean,nulldlareferencji);
zwyklewkonstruktorzedokonujesięreinicjacjipól;
alemożnarównieżposłużyćsięjawnąinicjacjąpodczasdeklaracjipól.
WtrakcietworzeniaobiektuklasyVehicle(newVehicle(iii)por.kod1.6)elemen-
tynowegoobiektu,odpowiadającepolomklasy,uzyskająwartości0(dlaelementówtypu
int)oraznulldlaelementuodpowiadającegoreferencjom(owneristate).Następnie
zostaniewywołanykonstruktor,wktórymdokonujemywłaściwegoinicjowania.
Możnabybyłonapisaćnp.:
privateVehStatestate=STOPPED;//jawnainicjacjapola
iusunąćzkonstruktorainstrukcjęstate=STOPPED.
28
1.Klasy