Odločil sem se, da si bom poskušal vzeti čas in komentirati naloge, ki jih s svojimi sošolci delamo pri programiranju. Prosim, da, v kolikor želite to besedilo objaviti kje drugje, to storite tako, da linkate povezavo do te strani, ne pa da kopirate besedilo na drugo stran.S pisanjem teh nasvetov si (brez pričakovanja plačila) trgam dragocen čas, ki bi ga lahko uporabil za bolj zanimive in zabavne reči.
NAJ TI NAVETI NE BODO (EDINA?) OSNOVA ZA OPRAVLJANJE IZPITA! ZA MOREBITNI NEOPRAVLJEN IZPIT NE ODGOVARJAM!
In tukaj so že nasveti za
3. nalogo:
a)
Nekaj izrazov:
- Oče - razred; navadno je to razred, ki ga bomo dedovali.
- Otrok - razred, ki ga dedujemo po očetu.
Otroke nekega razreda generiramo z rezervirano besedico
extends
. Otroci nekega razreda so prav tako razredi. Otroka deklariramo na običajen način (tako, kot deklariramo vsak drug razred), le da deklaraciji dodamo
extends imeOčeta
kjer je imeOčeta ime razreda, katerega otroka generiramo.
Če želimo, da otroci prožijo konstruktorje svojega očeta, moramo najprej ustvariti konstruktorje v samih otrocih (z imeni otrok). Prvi ukaz v vsakem takem konstruktorju mora biti
super()
oziroma
super(argumenti)
kjer so argumenti takšnega tipa, da se skladajo s tipi argumentov ustreznega očetovega konstruktorja.
Nadaljnji ukazi v konstruktorju pa naj nadaljujejo svoje delo z argumenti otroka (ki jih oče ni inicializiral, ker jih nima).
Nadaljno dedovanje razreda preprečimo z rezervirano besedico final
, ki jo navedemo pred imenom v deklaraciji razreda. Ista besedica se uporablja tudi za "zaključitev" (finalizacijo) argumentov (taki argumenti postanejo konstante), ter, da preprečimo prepis (override) metode v razredu.
Za čas ali datum je dobro uporabljati razred java.util.GregorianCalendar
. Objekt tega tipa lahko hrani kakršen koli datum (gregorijanskega koledarja) in/ali uro. Nato lahko s temi podatki delamo čuda stvari: lahko npr. ugotovimo, kateri dan v tednu je nastavljen datum, lahko primerjamo več objektov in ugotovimo, kateri predstavlja zgodnejši čas... Več podrobnosti tukaj.
b)
Metode nam ob deklaraciji ni potrebno deklarirati. Če je ne, je taka metoda abstraktna. Abstraktne metode označimo z rezervirano besedico
abstract
Takoj, ko ima nek razred neko abstraktno metodo, postane tudi sam abstrakten. To pomeni, da ne moremo tvoriti objektov tega tipa (to počnemo z ukazom new). Tudi abstrakten razred mora biti označen z besedico abstract.
Vsak otrok abstraktnega razreda ima dve možnosti:
- lahko implementira abstraktne metode svojega očeta (takrat ni več abstrakten) ali
- podeduje lastnost abstraktnosti od svojega očeta (in ostane abstrakten).
Z operatorjem
instanceof preverjamo, ali je nek objekt primerek (instanca) določenega razreda. Ta operator uporabljamo na enak način kot vse druge operatorje (+, -, /, &&, ...). Rezultat operacije
primerek instanceof razred
je boolean vrednost true, če je primerek tipa razred oziroma false v obratnem primeru.
Iskanje podniza v nekem večjem nizu se lahko implementira na več načinov. Dva najbolj razširjena (in uporabna) sta bodisi metoda
niz.indeksOf(String podniz)
ki vrne indeks prve črke podniza v nizu, še boljša pa je metoda
niz.contains(String podniz)
ki vrne boolean vrednost true, če niz vsebuje podniz vsaj enkrat.
Več informacij o razredu string in metodah najdete tukaj.
Različni razredi so v Javi organizirani v pakete. Razred String je na primer v paketu java.lang
. Tudi razredi, ki jih ustvarimo sami, bi praviloma morali biti uvrščeni v paket. To storimo, če v prvi vrstici datoteke, v kateri programiramo razred, uporabimo rezervirano besedico
package
takoj za njo pa navedemo paket. Besede v imenu paketa so ločene z piko, dejansko pa pomenijo sistemske mape. Dobra praksa je, če uporabimo za paket kar svojo domeno v obrnjenem vrstnem redu, na primer:
com.ccpcreations
Datoteko razreda, uvrščenega v paket, moramo nato umestiti v ustrezno mapo v našem sistemu. Katera mapa naj bo za osnovo, določimo (ali nam določuje) sistemska spremenljivka classpath. Če v Windowsih odpremo konzolo (cmd.exe) in vpišemo:
set classpath
se nam pokažejo vsa mesta, kamor lahko ta paket uvrstimo (mesta so ločena s podpičjem). Če nam nobeno od teh mest ne ustreza, dodamo svojega:
set classpath=%classpath%;C:\mojemesto
ali pa kar na novo prepišemo (overwrite) spremnljivko:
set classpath=C:\mojemesto
Razred sedaj damo v mapo C:\mojemesto\com\ccpcreations. In ko tak razred želimo uporabiti v svojih programih, ga seveda v njih vključimo z besedico import, na primer
import com.ccpcreations.*;
Potrebno je še poudariti, da sistemska spremenljivka classpath ne bo obdržala sprememb, ki jih naredite. Ko boste konzolno okno zaprli, se bo classpath nastavil na prejšnje stanje. Če želite obdržati spremembe (da jih ni potrebno vedno znova vpisovati), storite naslednje:
- Pojdite v Nadzorno ploščo (Control Panel)
- Poiščite in zaženite Sistem (System)
- Izberite jeziček Napredno (Advanced) ter kliknite gumb Sistemske spremenljivke (Environment Variables), ki se nahaja na dnu okna
- Tukaj spremenite (ali ustvarite, če še ne obstaja) spremenljivko classpath in ji dajte ustrezno vrednost na enak način, kot ste to storili z ukazom set v konzoli.
c)
Naloga ne potrebuje nasvetov.
Nasveti za Javo - 16. april 2007 @ 16:11 - Ogledov: 9433 -
Komentarjev: 3