Gyakorlat 1: 1. Forrás file-k elhelyezkedése, fordítás, futtatás: Töltse le a honlapról a "sajat.Hello", "sajatMasik.HelloMasik" példa file-kat. Tegye a file-okat a megfelelő helyre és fordítsa és futtassa. A) Legyenek a class file-ok a forrás file-kkal azonos directoryban. B) Legyenek a forrás file-ok "src" directoryban a class file-k "classes" directoryban. 2. Osztály definíció, pédányosítás: Készítsen egy sikbeli Pont osztályt, amely a "pelda1" csomagba tartozik, amelyben - lehet inicializálni két koordinátával (valósak) - lehet inicializálni paraméter (koordináták) nélkül, ilyenkor 0,0 a két koord. - lehet String-ben megkapni a pont adatait "(x, y)" alakban. - lehet megkapni az origótól való távolságot. - lehet paraméterben megadott két pont távolságát megkapni. Készítsen egy PontProba futtatható osztályt, amelyben a main-ben létrehoz két pont objektumot véletlenszerű koordinátákkal, kiírja az adataikat, kiírja az origotól távolabbi pont adatai, kiírja a két pont távolságát. 3. Osztály definíció, pédányosítás, tömbök: Készítsen egy PontokProba futtatható osztályt, amelyben a main-ben létrehoz 10 Pont objektumot véletlenszerűen generált koordinátákkal és írja ki a pontok koordináit és távolságukat az origotól, valamint az origotól legtávolabbi pont koordinátáit. Gyakorlat 2: 1. Készítsen egy Teglalap osztályt, amely a "pelda2" csomagba tartozik, amelyben: - lehet inicializálni két átellenes pontjának (2 db Pont) megadásával. Használja a mult órán készített Pont osztályt, ha szükséges egészítse ki. - lehet inicializálni két átellenes pontja kordinátáinak (4 db double) megadásával - lehet megkapni a téglalap oldalait (két elemű valós tömbben) - lehet megkapni a téglalap területét - lehet megkapni, hogy egy paraméterként kapott másik téglalap nagyobb területű-e, vagy sem - lehet megkapni, hogy egy paraméterként kapott pont objektum a téglalap belsejébe esik-e Készítsen egy TeglaProba futtatható osztályt, amelyben a mainben kipróbálja a Teglalap összes funkcióját. 2. Készítse el a Teglalap és TeglaProba osztály egy másik verzióját TeglalapTag és TeglaTagProba, amely a Pont osztályt statikus tagosztályként definiálja. 3. Osztály definíció, példányosítás, felsorolás típus: Készítsen egy Homerseklet osztályt, amelyben - egy hőmérséklet adatot tárol Kelvinben megadva - definiál egy beágyazott Mertekegyseg felsorolás típust CELSIUS és KELVIN tagokkal és felüldefiniálja a toString()-jét úgy, hogy a "C" és "K" szövegeket adja. - lehet inicializálni egy hőmérséklet és egy mértékegység megadásával - lehet inicializálni csak egy hőmérséklet megadásával a mértékegységet automatikusan Kelvinnek tekintve - lehessen megkapni a hőmérsékeltet szövegesen "érték Kelvin" alakban. - lehessen megkapni a hőmérséklet értéket paraméterben megadott mértékegységben - lehessen megkapni, hogy egy paraméterként megadott Homerseklet objektum magasabb hőmérséklet-e vagy sem - lehessen két paraméterként megadott Homerseklet összegét tartalmazó Homerseklet objektumot megkapni - lehessen egy paraméterben megadott mértékegységben megkapni a paraméterben megadott Homerseklet-et. Készítsen egy HoProba futtatható osztályt, amelyben létrehoz 10 Homerseklet objektumot véletlenszerűen generált 0-100 közötti celsius hőmérséklet értékekkel és kiírja őket Kelvinben, majd kiírja a legnagyobb Homerseklet adatait, majd az átlag hőmersekletet. Gyakorlat 3: 1. Interface, implementació, generikus típus használat a) Egészítse ki a Homerseklet osztályt úgy, hogy implementálja a Comparable interfece-t. b) Egészítse ki a korábbi Pont osztályt úgy, hogy megvalósítsa a Comparable interface-t úgy, hogy a távolságok alapján hasonlítson. c) Készítsünk egy Kereso osztályt, amelyben egy osztály szintű metódus van, amely paraméterként egy T[] tömböt kap és visszaadja az elemek közül a legnagyobbat. d) Készítsen egy futtatható osztályt, amely kipróbálja a Kereso osztályt Homerseklet[]-el és Pont[]-el is. 2. Osztálydefiníció, tömbök Készítsen egy DinTomb osztályt, amely tetszőleges számú egész számot tárol. - lehessen beletárolni újabb egész számot a következő szabad indexpozícióba. - lehessen megkapni egy megadott index-en levő számot - lehessen törölni egy adott index-en levő számot (nagyobb indexűek előrebb kerülnek) - lehessen megkapni az letárolt számok számát - lehessen megkapni egy megadott szám első előfordulásának indexét vagy -1-t. Készítsen egy futtatható osztályt a DinTomb kipróbálására. 3. Generikus típusok készítése: a) Készítse el a DinTomb osztály Object-umokat tároló verzióját. Készítsen használó programot is hozzá. b) Próbálja meg a DinTomb osztályt generikusra elkészíteni. Gyakorlat 4: Információrejtés, objektum létrehozás 1. Javítsa a 2. gyakorlatbeli Teglalap osztályt, ha nem teljesíti maradéktalanul az információ rejtés elveit. 2. Írja meg a Homerseklet osztály olyan verióját, amely nem módosítható osztály. 3. Írja meg a Homerseklet osztály kiterjesztését leszármazás helyett kompozíciót használva, amelyben - tárolja az inicializálásban megadott mértékegységet is - legyenek ugyanolyan paraméterezésű konstruktorai mint a Homerseklet-nek - a metódusát amely visszaadja szövegesen a hőmérsékletet módosítsa úgy, hogy az inicializáláskor megadott mértékegységben adja vissza. Készítsen egy HoProba futtatható osztályt, amelyben létrehoz 10 HomersekletKit objektumot véletlenszerűen generált 0-100 közötti celsius hőmérséklet értékekkel és kiírja őket, majd kiírja a legnagyobb Homerseklet adatait, majd az átlag hőmersekletet. b) Készítsen egy HoHet nevű osztályt, amely egy hét napi közép hőmérséklet objektumait tárolja egy tömbben. - Legyen beágyazott Napok felsorolás, amely a hét napjait tartalmazza. - Legyen konstruktora, amely létrehozza a tömböt null értékekkel. - Legyen "megad" metódusa, amellyel meg lehet adni egy nap középhőmérsékletét, tehát paraméterként egy napot és egy Homerseklet-t kap. - legyen felüldefiniálva a toString úgy, hogy visszaadja egy string-be a hét adatait: Hétfő 12 C Kedd null Szerda 13 C stb. - legyen metódusa, amely visszaadja a heti átlag hőmérsékletet c) Írja át a HoHet osztályt és a Homerseklet és a HomersekletKit osztályt úgy, hogy a HoHet tetszőlegesen használható legyen Homerseklet és HomersekletKit objektumokkal is. 4. Írja át a Pont osztályt, hogy konstruktorok helyett gyártó függvényei vannak. Írjon hozzá kipróbáló osztályt. Gyakorlat 5: equals, toString, clone 1. Equals készítés, használat Módosítsa a Pont, Teglalap, Homerseklet osztályokat úgy, hogy felüldefiniálja a toString, equals, hashCode, clone metódusokat. 2. Készítsen egy Konyv osztályt, amelynek adatai iro, cim, ar. - Lehessen inicializálni mindhárom adat megadásával - Definiálja felül a toString metódust úgy, hogy a könyv adatai adja vissza "iró, cim: ar" alakban. - Definiálja felül a tartalmi egyezőséget vizsgáló metódust úgy, hogy akkor tekintsen egyenlőnek két könyvet, ha az író és a cím megegyezik. - Legyenek getterei az adattagokra 3. Készítsen egy KonyvStringesito osztályt, amely segítségével Konyv tömbből tudunk egyetlen stringet készíteni és vissza. - legyen "egyke" - legyen adattagja a mezőelválasztó karakterre és a rekord elválasztó karakterre - legyen getter, setter metódusa az adattagokra - legyen "kodolas" metódusa, amely megkap egy Konyv tömböt és vissza ad egy String-et összefűzve a könyveket - legyen egy "dekodolas" metódusa, amely egy String-et kap és visszaadja a Konyv[]-t. Dobjon kivételt, ha a nem sikerül a dekódolás. Készítsen egy kipróbáló osztályt. Gyakorlat 6: Gyűjtemények használata 1. Készítse el a múlt órán készített Konyv osztályt azzal kólünbséggel, hogy: - Ne legyenek getter metódusai - Implementálja a Comparable interface-t úgy, hogy az összehasonlítás alapja az író és másodsorban a cím legyen. - Legyen egy publikus statikus beágyazott osztálya, amely implementálja a Comparator interface-t úgy, hogy ár alapján hasonlít. Készítsen egy KonyvesPolc osztályt, amelyben tetszőleges számú könyvet tárol. - Lehessen felvenni új könyvet - Lehessen megkapni a tárolt könyvek számát. - Lehessen megkapni megadott író és címú könyvet - Lehessen megkapni a könyvek tömbjét. - Lehessen törölni megadott Konyv objektumot törölni - Lehessen törölni megadott író és cim adatú könyvet - Lehessen megkapni a könyvek tömbjét, amelyben író(cim) szerinti sorrendben találhatók a könyvek - Lehessen megkapni a legdrágább könyvet. Készítsen egy futtatható osztályt, amelyben kipróbálja a KonyvesPolc osztály funkcióit. 2. Készítse el a KonyvesPolcnak megfelelő TeglalapTar osztályt: - Lehessen felvenni új téglalapot. - Lehessen megkapni a tárolt téglalapok számát - Lehessen törölni egy megadott Teglalap-t. - Lehessen megkapni megadott balfelső és jobbalsó Pont-ú téglalapot, vagy nullt, ha nincs olyan. - Lehessen megkapni a téglalapok tömbjét. - Lehessen megkapni a Teglalapok tömbjét terület alapján rendezve - Lehessen megkapni a legnagyobb kerületű téglalapot. Készítsen ehhez is kipróbáló osztályt. Gyakorlat 7: 1. Erőforrás kezelés, formázás Készítse el az 1+1/2+1/3+1/4+...+1/100 összeget számoló program legalább kétnyelvű változatát. A program az elején írja ki mi a program feladata, majd utána írja ki az eredményt. A kiírások szövege és a szám formátum a program argumentumaként megadott nyelv szerint jelenjen meg. 2. Gyüjtemény és dátum Készítsen egy Szemely osztályt. - legyen név (String), születési dátum adata (Date) adata - lehessen inicializalni mindkét adat megadásával - legyen felüldefiniálva a toString metódusa úgy, hogy a név és a dátum is benne legyen a string-ben (dátumformázás) - legyen felüldefiniálva az equals és a hashcode metódusa úgy, hogy a nev adat alapján működjön - implementálja a Comparable tipizált interface-t szintén a név alapján hasonlítva össze a személyeket - lehessen egy egész tömbbe visszakapni a születési dátum év, hónap, nap részét - lehessen megkapni a kort napokban - lehessen megkapni, hogy hány nap múlva lesz a legközelebbi születésnap - legyen egy private beágyazott osztálya, amely Comparator interface-t implementálja a születés dátum alapján hasonlítva - legyen egy publikus, statikus, final adattagja, amelynek értéke a beágyazott comparator egy példánya. Készítsen egy Szemelyek osztályt - tudjon tetszőleges számú személyt tárolni - legyen személy tároló metódusa - legyen személy törlő metódusa - legyen személyek számát visszaadó metódusa - legyen megadott nevű személyt visszaadó metódusa - legyen névsorba rendezett személyek tömbjét visszaadó metódusa - legyen születési dátum szerint rendezett személyek tömbjét visszadó metódusa - legyen azon személyek tömbjét visszaadó metódusa, akiknek a szülinapja megadott napon belül lesz. Készítsen kipróbáló osztályt hozzá. Gyakorlat 8. IO kezelés 1. Készítsen egy programot, amely egy argumentumban megadott nevű file-ról másolatot készít úgy, hogy a neve név része kiegészüljön a MOD szócskával (pl alma.txt-ből almaMOD.txt) és a tartalmában, pedig minden olyan szó, amely kisbetűvel kezdődik nagybetűvel kezdődjön. 2. Készítsen egy programot, amely egy text fileból olvas Szemely-eket. A file nevét program argumentumában adjuk meg. A file tartalma Név|dátum szerkezetű sorokból áll. (pl Kis Béla|1997.12.24.) A beolvasott személyeket tárolja Szemelyek objektumban, és írja ki az összes személyt születési sorban, valamint azokat, akiknek a születésinapja 30 napon belül lesz. Gyakorlat 9. Gyakorlás 1. Készítsen egy osztályt, amely egy órarend egy bejegyzését reprezentálja a. van megnevezés (szöveg), időpont (Date) adata b. legyen konstruktora, amely paraméterben kapott értékekkel inicializálja az adattagokat c. implementálja a Comparable interface-t úgy hogy az időpont alapján hasonlítson d. legyen tartalmi egyezőséget vizsgáló metódusa, amely szintén az időpont alapján dönt e. legyen metódusa, amely paraméterként egy dátumot kap és visszaadja, hogy a tanóra ezen a napon van-e. f. legyen egy metódusa, amely paraméterként egy szöveget kap és visszaadja, hogy a megnevezésben benne van-e a megadott szöveg. g. definiálja felül a toString-et úgy hogy időpont:megnevezés alakú stringet adjon, ahol az időpont rövid dátum és rövid idő formátumban van 2. Készítsen egy futtatható osztályt, amelyben a. egy szöveg fileból beolvassa az órarendi órákat, a file szerkezete: "megnevezés,eeee.hh.nn. oo:pp" alakú sorokból áll b. kiírja a 2015.05.04.-re eső órákat időpont szerinti sorrendben, c. majd kiírja mikor vannak olyan órák amelyek megnevezésében benne van a "mat" szöveg.