P2 - 2021/22 - 05 nakupovalni sistem
Nakupovalni seznam¶
Napišite program, ki omogoča pripravo nakupovalnega seznama (dodajanje in brisanje postavk, izpis seznama ...). Vso kodo tudi primerno strukturirajte.
Najprej ustvarite paket nakupovanje, v katerem naj se nahaja razred NakupovalniSeznam
. Razred vsebuje dve metodi: izpisiNavodila()
in metodo main()
, v kateri lahko interaktivno sestavimo (nakupovalni) seznam stvari. Koda tega razreda je že napisana in jo le vključite v vaš projekt.
Ustvarite tudi paket zbirke, v katerem naj se nahaja razred Seznam
. Ta razred vsebuje različne metode za delo s seznamom (opisane v nadaljevanju naloge), ki jih boste napisali tako, da se bo program NakupovalniSeznam uspešno izvedel.
1. deklarirajte ustrezne spremenljivke¶
V razredu Seznam
deklarirajte ustrezne spremenljivke. Potrebovali boste vsaj dve:
- tabelo nizov (tip
String[]
) za hranjenje elementov seznama (vsak element seznama je niz znakov) in - celoštevilsko spremenljivko, ki hrani trenutno število elementov v seznamu.
2. Metoda narediSeznam(int n)¶
V razred dodajte metodo narediSeznam(int n)
, ki naredi seznam dolžine n. Pri tem je n pozitivno celo število, ki določa kapaciteto seznama (največje število elementov, ki jih lahko shranimo v seznam). Če je nov seznam uspešno ustvarjen, metoda vrne true
. Če seznam že obstaja, metoda ne naredi novega seznama, ampak vrne false
.
3. Metoda dodajNaKonecSeznama(String element)¶
Note
Z dodajanjem elementa se spremeni tudi dolžina trenutnega seznama!
V razred dodajte metodo dodajNaKonecSeznama(String element)
, ki na konec seznama doda podani element.
Če je element uspešno dodan, metoda vrne true
.
Če seznam ne obstaja ali če je seznam že poln, metoda elementa ne more dodati in vrne false
.
4. Metoda izpisiSeznam()¶
V razred dodajte metodo izpisiSeznam()
, ki na zaslon izpiše vse elemente seznama.
Če seznam ne obstaja ali pa je prazen, naj metoda to izpiše (npr. "NAPAKA: Seznam ne obstaja."
oz. "Seznam je prazen (nima elementov)."
).
5. Metoda odstraniIzSeznama(int mesto)¶
Note
Ob brisanju elementa iz seznama se spremeni tudi dolžina seznama. Pazite tudi, da zapolnite "luknjo" v seznamu, ki nastane pri brisanju (ostale elemente naj metoda pomakne tako, da med elementi ni praznih mest).
V razred dodajte metodo odstraniIzSeznama(int mesto)
, s katero lahko iz seznama odstranimo element na podanem mestu (mesto je celo število od 1 do dolžine seznama).
Metoda vrne element, ki smo ga odstranili iz seznama.
Če brisanje ni uspešno (ker tak element ne obstaja), metoda vrne null
.
6. Metoda dodajVSeznam(String element, int mesto)¶
Note
Pri vrivanju elementa v seznam moramo najprej narediti prostor za dodani element. Pazite, da se pri tem ne "izgubijo" (prepišejo) ostali elementi v seznamu.
V razred dodajte metodo dodajVSeznam(String element, int mesto)
, ki na podano mesto v seznamu doda podani element. Mesta štejemo od 1
naprej. Če je podano mesto večje od dolžine seznama, metoda doda element na konec seznama. Če je element uspešno dodan, metoda vrne true
, sicer pa false
(če seznam ne obstaja, če je že poln ali če mesto mi pravilno podano - npr. 0
).
7. Metoda dolzinaSeznama()¶
V razred dodajte metodo dolzinaSeznama()
, ki vrne trenutno število elementov v seznamu. Če seznam ne obstaja, metoda vrne vrednost -1
.
8. Metoda uniciSeznam()¶
V razred dodajte metodo uniciSeznam()
, ki uniči cel seznam (torej seznam ne obstaja več, pri tem pa se seveda zbrišejo tudi vsi njegovi elementi). Ob uspešnem uničenju seznama metoda vrne true
. Če seznam, ki ga želimo uničiti, ne obstaja, metoda vrne false
.
9. napišite ustrezne komentarje¶
V razredu Seznam
napišite ustrezne komentarje. Vsaka metoda naj bo podrobneje opisana z dokumentacijskimi komentarji, kjer poleg opisa delovanja metode opišite tudi vse parametre metode in vrnjene vrednosti (spomni se predavanj: značko @param
uporabimo pri opisu parametrov metode, značko @return pa za opis rezultata metode). Kjer koda "ne govori sama zase", dodajte tudi vrstične komentarje (predvsem je smiselno pojasniti uporabljene razredne spremenljivke).
DODATNA NALOGA¶
10. Metoda izpisiSeznam64Bit()¶
V razred Seznam
dodajte še metodo izpisiSeznam64Bit()
, ki elemente seznama izpiše z uporabo velikih 64-bitnih grafičnih znakov. Uporabite metodo Znaki.izpisi64bit(String niz)
, ki ste jo napisali na 3. vajah.
Za bolje strukturirano in pregledno kodo najprej ustvarite nov paket izpis ter vanj prestavite razred Znaki. Tako boste imeli vso kodo za delo z znaki ločeno v svojem paketu, v razredu Seznam pa le pokličete ustrezno metodo. Pazite, da boste metodam dodali ustrezna dostopna določila (iz drugega paketa lahko kličemo le public metode).
11. Datoteka jar¶
Note
Če imate na sistemu Windows težave s prikazovanjem šumnikov v konzoli, poskusite spremeniti aktivno kodno tabelo konzole z ukazom chcp 65001.
Izdelajte datoteko jar in delovanje programa preizkusite v konzoli. IntelliJ: v glavnem meniju izberi File -> Project Structure in Artifacts. Izberi +, nato JAR in From modules with dependencies. Za Main Class izberi nakupovanje.NakupovalniSeznam ter Apply in OK. Datoteko jar ustvarimo z Build -> Build Artifacts, izbiro Nakupovanje:jar in Build. Datoteka .jar se nahaja v mapi Nakupovanje/out/artifacts. NetBeans: desni klik na projekt -> Properties -> Packaging. Označi Build JAR after Compiling in označi Compress JAR File, OK. Preveri tudi, če je kot Main Class izbran nakupovanje.NakupovalniSeznam. Datoteko jar ustvarimo z desnim klikom na projekt -> Build (ali Clean and Build). Datoteka .jar
se nahaja v mapi Nakupovanje/dist.
Datoteko .jar
lahko poženemo v konzoli z ukazom java -jar Nakupovanje.jar
.