Seminarske naloge
 
Teme



1. Posamezni javanski razredi


V teh temah je treba podrobno preučiti razred, pripraviti predstavitev splošnih konceptov in načina uporabe razreda (kar je mogoče povedati v nekaj minutah) in pripraviti in dokumentirati enega ali več programov, iz katerih se vidi tipična uporaba razreda. Pogledati si je treba tudi izvorno kodo razreda (datoteka src.zip na vrhu J2SDK).
številka ime opis
101 java.awt.Graphics Koncepti, pregled, in omejitve
102 java.awt.Graphics2D Koncepti, pregled, razlike med Graphics in Graphics2D, koordinatni sistemi, double buffering, antaliasing
103 java.awt.GridBagLayout Način uporabe za "tipičen" vnos podatkov
104 java.util.GregorianCalendar Vse o datumih, primeri, zgledi
105 java.util.Stack Način predstavitve sklada. Kako so realizirane metode. Prevedba razreda na "naše" poimenovanje metod in obnašanja.
106 java.util.AbstractCollection Collection implementira v Javi različne podatkovne strukture, ki ustrezajo množicam in funkcijam. AbstractCollection je najbolj splošni razred, v katerem so skupne metode. Podrazredi so dejanske implementacije: LinkedList, ArrayList, Vector, HashSet, TreeSet (abstraktne razrede smo spustili). Pripravi nam pregled splošnega razreda AbstractCollection: koncepti, metode, primeri. Posamezne dejanske implementacije bodo obravnavali drugi.
107 java.util.Collection Collection implementira v Javi različne podatkovne strukture, ki ustrezajo množicam in funkcijam. Preuči hierarhijo razredov in vmesnikov, ki implementirajo Collection. Iz stališča dedovanja in vmesnikov nam pojasni zakaj je struktura taka, kot je.
108 java.util.LinkedList LinkedList je implementacija vmesnika Collection z linearnim seznamom, ArrayList in Vector pa sta implementaciji s tabelo. Podaj posebnosti implementacij: kakšne so specifične metode (ki niso v Collection), kako so razredi dejansko implementirani (oglej si izvorno kodo).
109 java.util.LinkedList LinkedList je implementacija vmesnika Collection z linearnim seznamom, ArrayList in Vector pa sta implementaciji s tabelo. Izmeri časovno zahtevnost karakterističnih operacij v vseh treh implementacijah. Kje so pomembne razlike?
110 java.util.HashSet HashSet in TreeSet sta implementaciji vmesnika Collection z razpršeno tabelo in z (uravnteženim) drevesom. Opiši nam specifičnosti implementacije HashSet glede na Collection in notranje delovanje HashSet.
111 java.util.TreeSet HashSet in TreeSet sta implementaciji vmesnika Collection z razpršeno tabelo in z (uravnteženim) drevesom. Opiši nam specifičnosti implementacije TreeSet glede na Collection in notranje delovanje TreeSet.
112 java.util.Set HashSet in TreeSet sta implementaciji vmesnika Collection z razpršeno tabelo in z (uravnteženim) drevesom. Izmeri časovno zahtevnost posameznih karakterističnih operacij v obeh implementacijah in pripravi nasvete, kdaj uporabimo katero implementacijo.
113 java.util.AbstractMap Map implemetira v Javi različne podatkovne strukture, ki ustrezajo (končnim) preslikavam. AbstractMap je najbolj splošni razred, v katerem so skupne metode. Podrazredi so dejanske implementacije: HashMap, TreeMap (in tudi LinkedHashMap, WeakHashMap, IdentityHashMap). Pripravi nam pregled splošnega razreda AbstractMap: koncepti, metode, primeri. Posamezne dejanske implementacije bodo obravnavali drugi.
114 java.util.HashMap HashMap in TreeMap sta implementaciji vmesnika Map z razpršeno tabelo in z (uravnteženim) drevesom. Opiši nam specifičnosti implementacije HashMap glede na Map in notranje delovanje HashMap.
115 java.util.TreeMap HashMap in TreeMap sta implementaciji vmesnika Map z razpršeno tabelo in z (uravnteženim) drevesom. Opiši nam specifičnosti implementacije TreeMap glede na Map in notranje delovanje TreeMap.
116 java.util.Map HashMap in TreeMap sta implementaciji vmesnika Map z razpršeno tabelo in z (uravnteženim) drevesom. Izmeri časovno zahtevnost posameznih karakterističnih operacij v obeh implementacijah in pripravi nasvete, kdaj uporabimo katero implementacijo.
117 jUnit jUnit je sistem razredov za lažje preizkušanje Javanskih programov. Predstavi ga! http://www.junit.org/index.htm
118 jUnitDoclet Kaj je to? Predstavitev, uporaba, zgledi, ...


2. Programerski problemčki


Seminarska naloga kratko opisuje problem, ki ga je treba rešiti. Pričakujemo dodelano in praktično uporabno rešitev problema. Podrobne specifikacije naj bodo prilagojene praktični uporabnosti. Algoritme in ostalo dokumentacijo poiščemo na spletu.

Pričakujemo dobro opisan problem, lepo izdelano rešitev s komentarjem posebnosti in načrtovalskih odločitev. Obseg programa seveda ni omejen.
številka ime opis
201 Tarok Napravi program za pisanje rezultatov pri taroku. Posebej bi bil zanimiv v J2ME (glej nalogo 304).
202 Album Napravi program, ki omogoča ogled fotografij, ki jih napravimo z digitalnim fotoaparatom; omogoča naj ogled majhnih verzij fotografij, prikaz in urejanje datumov, dodajanje naslovov in komentarjev, ...
203 CGI Na tvojem priljubljenem WWW strežniku pripravi (CGI) program v Javi, ki omogoča vpis enostavnih podatkov prek spleta, npr. zbiranje elektronskih naslovov zainteresiranih. Podatke na zbira v enostavni datoteki.
204 Programerski izziv 204 Sodelovanje na tekmovanju http://rc.fmf.uni-lj.si/matija/PI/Pi2004.htm. Za seminarsko nalogo je potrebno rešiti vsaj tri probleme. Pri vsakem je potrebno opisati problem, način reševanja, težave in predstaviti končno kodo.
205 On-line tekmovanja Potrebno je poiskati čimveč (vsaj 5 spletnih mest), kjer se je mogoče udeleževati programerskih tekmovanj in pisati programe v Javi. Spletena mesta je potrebno opisati, predstaviti njihove značilnosti, ... Seveda morate poskusiti reševati naloge na vsaj 5 tekmovanjih in na vsakem rešiti vsaj eno nalogo.
206 Rekurzivne krivulje Krivulj kot so Kochova črta, Zmajnica, ... je kar nekaj. Ustrezne podatke lahko najdeš, če poiščeš po spletu pod ključnimi besedami: space-filling curves, fractal curves, ... Pripravi ustrezen razred RekurzivneKrivulje, ki bo vseboval kar se da mnogo metod za risanje tovrstnih krivulj. Denimo nekaj takega: http://www.cs.utexas.edu/users/vbb/misc/sfc/Oindex.html ali http://www.ph.biu.ac.il/~rapaport/java-apps/lsys.html.
207 Potapljanje ladjic Za osnovo vzemi ideje na http://www.sleepinggiantsoftware.com/FGJ/tutorials.htm, kjer je podrobno opisan razvoj tega programa. Pričakujemo, da ga boš na kratko predstavil, ustrezno prilagodil, opremil s slovenskimi komentarji, dokumentacijo, ...
208 Hanoiski stolpiči Sestavi interaktivni programček s katerim boš prikazal reševanje problema Hanoiskih stolpičev. Če nimaš ideje, kako naj bi stvar bila videti, poglej na http://jeans.studentenweb.org/study/hanoi/hanoi.html.
209 4 v vrsto Programček v Javi, ki bo omogočal igranje igre 4 v vrsto. Primer: http://jeans.studentenweb.org/conn4/connect.html
210 Tekači Oglej si igro na http://jeans.studentenweb.org/java/bishop/bishop.html in pripravi svojo različico igre.


3. Ostalo
številka ime opis
401 CVS Ko smo reševali probleme v skupini, smo videli, da je težko vzdrževati red na skupnem imeniku. CVS je orodje v ta namen, ki omogoča vzdrževanje verzij, delo s skupnim repozitorijem, dodajanje komentarjev, delo v skupini, ... Poleg centralnega repozitorija obstaja množica klientov (Web, java, Windows, ...).
402 drJava drJava je preprost razvojni sistem za Javo. Opiši funkcionalnost, pripravi primere, ...
403 Java V1.5 V1.5 je nova verzija Jave, ki bo kmalu na voljo. Pripravi pregled novosti.
404 J2ME J2ME je Java platforma za mobilno okolje (Mobile Environment). Uredi si razvojno okolje in pripravi kak preprost programček za svoj mobilni telefon. Opiši posebnosti mobilnega okolja!
405 jcc jcc je predprogram za odprtokodni prevajalnik gcc (GNU C++), ki naj bi znal prevajati Javo v .exe datoteke. Preveri kakšne so omejitve in prevedi vsaj kak program. Kakšne knjižnice lahko uporabljaš?
406 Java vs. C++ Pripravi nam primerjavo med Javo in C++, izberi najpomembnejše razlike o katerih se da kaj povedati v 10 minutah. V pisnem izdelku pripravi obširnejši pregled razlik.
407 Java vs. JavaScript Pripravi nam primerjavo med Javo in JavaSript, skriptnim jezikom spletnih brkljalnikov; izberi najpomembnejše razlike o katerih se da kaj povedati v 10 minutah. V pisnem izdelku pripravi obširnejši pregled razlik.
408 Razvojna okolja (IDE) Primerjava prosto/preizkusno dostopnih razvojnih okolij za Javo. Opis funkcionalnosti, prikaz gradnje uporabniških vmesnikov, načina programiranja, prednosti in slabosti. Nekaj okolij: NetBeans, Eclipse, anyJ, personalJBuilder, ... Del ustreznih programov lahko dobiš tudi na CDju v sobi 204.
409 Urejevalniki Določeni prosto/preizkusno dostopni tekstovni urejevalniki so še posebej primerni za programiranje v Javi. Taki so npr. TextPad, Arachnophilia, JEdit, ... Primerjava, zmožnosti, prednosti/slabosti, .... Del ustreznih programov lahko dobiš tudi na CDju v sobi 204.
410 BlueJ BlueJ je šolsko razvojno okolje za javo, glej http://www.bluej.org/index.html. Opiši funkcionalnost, idejo samega okolja, prikaži način dela z objekti/razredi, pripravi primere, ...
411 TextPad in Java podrobno obdelaj način, kako si lahko olajšaš delo pri programiranju z Javo, če uporabljaš TextPad. Opis različnih nastavitev (sintaksno barvanje - priprava nekaj shem), prilagoditev orodij, priprava ustreznega makra, ki "zgradi okostje" programa/programčka v Javi, ... Opis "dodatkov" za TextPad v povezavi z Javo. Del ustreznih programov lahko dobiš tudi na CDju v sobi 204.
412 eXtreme programming Kaj je eXtreme programming, zgledi, primeri, orodja, ...
413 kozmetika Programska koda mora biti "lepa" - zamikanje, komentarji, poimenovanje, ... Pripravi opis stila pisanja, pripravi primere in poišči nekaj orodij, ki pomagajo "olepšati" grdo napisane programe v Javi.