44
Eclipse és Java teljesen kezdőknek Segédanyag Eclipse és Java teljesen kezdőknek Segédanyag Írta: Mark Dexter Fordította: Csapó Krisztina Tartalomjegyzék Bevezetés...........................................................................................................................................2 A tanfolyam célközönsége..................................................................................................................2 A tanfolyam célja.................................................................................................................................2 Miért jó az Eclipse környezettel tanulni a Java nyelvet?....................................................................3 Tárgyalt témakörök.............................................................................................................................3 A tanfolyam által használt megközelítés.............................................................................................3 A tananyag elsajátításának legjobb módja.........................................................................................4 Minta Java alkalmazás – Személyes könyvtár...................................................................................4 Az Eclipse letöltése és telepítése.......................................................................................................4 A leckék lejátszása..............................................................................................................................5 A video átméretezése.....................................................................................................................5 Feliratok és a lecke tartalomjegyzéke ...........................................................................................6 A leckék vázlatai .................................................................................................................................6 1. lecke – Az első Java osztály létrehozása...................................................................................6 2. lecke – Metódusok hozzáadása az osztályhoz..........................................................................6 3. lecke – Az Eclipse vázlatkönyv (Scrapbook) használata...........................................................6 4. lecke - JUnit tesztelés az Eclipse környezetben, 1. rész...........................................................7 5. lecke - JUnit tesztelés folytatása ...............................................................................................7 6. lecke – “Először tesztelés” fejlesztési módszer használata az Eclipse környezetben...............7 7. lecke – A Book osztály létrehozása............................................................................................7 8. lecke – A Person osztály hozzáadása a Book osztályhoz..........................................................7 9. lecke – A MyLibrary osztály és az ArrayList létrehozása............................................................7 10. lecke – A MyLibrary osztály létrehozása .................................................................................8 11. lecke – A MyLibrary osztály első metódusainak létrehozása...................................................8 12. lecke – A checkOut, és checkIn metódusok létrehozása.........................................................8 13. lecke – A checkOut metódus folytatása....................................................................................8 14. lecke – A checkOut metódus befejezése..................................................................................8 15. lecke – A MyLibrary osztály metódusainak befejezése............................................................9 16. lecke – A main metódus és a JAR fájl létrehozása..................................................................9 Alfabetikus index leckék szerint..........................................................................................................9 Szószedet.........................................................................................................................................12 További információforrások...............................................................................................................15 Eclipse webhelyek........................................................................................................................15 Java webhelyek............................................................................................................................15 Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 1/ 44

Total Beginner Companion Document Hu

Embed Size (px)

Citation preview

Page 1: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Eclipse és Java teljesen kezdőknekSegédanyag

Írta: Mark DexterFordította: Csapó Krisztina

TartalomjegyzékBevezetés...........................................................................................................................................2A tanfolyam célközönsége..................................................................................................................2A tanfolyam célja.................................................................................................................................2Miért jó az Eclipse környezettel tanulni a Java nyelvet?....................................................................3Tárgyalt témakörök.............................................................................................................................3A tanfolyam által használt megközelítés.............................................................................................3A tananyag elsajátításának legjobb módja.........................................................................................4Minta Java alkalmazás – Személyes könyvtár...................................................................................4Az Eclipse letöltése és telepítése.......................................................................................................4A leckék lejátszása..............................................................................................................................5

A video átméretezése.....................................................................................................................5Feliratok és a lecke tartalomjegyzéke ...........................................................................................6

A leckék vázlatai .................................................................................................................................61. lecke – Az első Java osztály létrehozása...................................................................................62. lecke – Metódusok hozzáadása az osztályhoz..........................................................................63. lecke – Az Eclipse vázlatkönyv (Scrapbook) használata...........................................................64. lecke - JUnit tesztelés az Eclipse környezetben, 1. rész...........................................................75. lecke - JUnit tesztelés folytatása ...............................................................................................76. lecke – “Először tesztelés” fejlesztési módszer használata az Eclipse környezetben...............77. lecke – A Book osztály létrehozása............................................................................................78. lecke – A Person osztály hozzáadása a Book osztályhoz..........................................................79. lecke – A MyLibrary osztály és az ArrayList létrehozása............................................................710. lecke – A MyLibrary osztály létrehozása .................................................................................811. lecke – A MyLibrary osztály első metódusainak létrehozása...................................................812. lecke – A checkOut, és checkIn metódusok létrehozása.........................................................813. lecke – A checkOut metódus folytatása....................................................................................814. lecke – A checkOut metódus befejezése..................................................................................815. lecke – A MyLibrary osztály metódusainak befejezése............................................................916. lecke – A main metódus és a JAR fájl létrehozása..................................................................9

Alfabetikus index leckék szerint..........................................................................................................9Szószedet.........................................................................................................................................12További információforrások...............................................................................................................15

Eclipse webhelyek........................................................................................................................15Java webhelyek............................................................................................................................15

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 1/ 44

Page 2: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Java könyvek................................................................................................................................15Kódrészletek.....................................................................................................................................16

1. lecke – Person osztály (mezők és konstruktor)........................................................................162. lecke – Person osztály (get és set metódusokkal)...................................................................163. lecke (scrapbook pillanatképek)...............................................................................................175. lecke – PersonTest osztály.......................................................................................................186. lecke – A Person osztályhoz hozzáadott toString() metódus...................................................187. lecke – A TestBook és Book osztályok....................................................................................208. lecke – A Person hozzáadása a Book osztályhoz....................................................................219. lecke – A MyLibrary osztály és az ArrayList.............................................................................2310. lecke – A MyLibrary osztály létrehozása ...............................................................................2311. lecke – A MyLibrary osztály első metódusainak létrehozása.................................................2512. lecke – A checkOut és checkIn metódusok létrehozása........................................................2713. lecke – A checkOut Method folytatása...................................................................................3114. lecke – A checkOut metódus befejezése................................................................................3215. lecke – A MyLibrary osztály metódusainak befejezése..........................................................3416. lecke – A main metódus és a JAR fájl létrehozása................................................................41

BevezetésEz a segédanyag az “Eclipse és Java teljesen kezdőknek” video tanfolyam útmutatója, amely a http://eclipsetutorial.sourceforge.net/ címen érhető el.

A tanfolyam célközönségeA tananyag azok számára készült, akik még nem ismerik az Eclipse környezetet és a Java nyelvet. Egyformán hasznos lehet a programozási tapasztalattal még egyáltalán nem rendelkezőknek, és azoknak, akik programoztak már más nyelven.

A tanfolyam céljaA tanfolyam céljai a következők:

Az Eclipse használatának bemutatása Java programok írásához (alapok) Az Eclipse használatának bemutatása az agile software development Meglévő Java oktatási információforrások (ismertetők, példák, könyvek) használatának

bemutatása az Eclipse környezeten belül Alapok biztosítása a Java és az Eclipse tanulásának folytatásához

Vedd figyelembe, hogy mind a Java, mind pedig az Eclipse elég nagy területek, amelyeket nem lehet egyik napról a másikra tökéletesen elsajátítani. Ez a tanfolyam segít a kezdeti lépésekben, és ad néhány olyan készséget, amelyek az önálló tanuláshoz szükségesek.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 2/ 44

Page 3: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Miért jó az Eclipse környezettel tanulni a Java nyelvet?A Java programozás tanulásának több módja is van. Az oktatóanyag készítője úgy gondolja, hogy vannak előnyei annak, ha a Java nyelvet az Eclipse integrált fejlesztői környezet (IDE) használatával tanulja valaki. Ezek közül néhány:

Az Eclipse számos segédeszközt biztosít, amelyek sokkal gyorsabbá és könnyebbé teszik a Java kód írását, mint a szövegszerkesztő használata. Ez azt jelenti, hogy több időt fordíthatsz a Java tanulására, és kevesebbet kell eltölteni a gépeléssel és a keresgéléssel a dokumentációban.

Az Eclipse hibakereső (debugger) és a vázlatkönyv (scrapbook) betekintést ad a Java kód végrehajtásába. Ez lehetővé teszi, hogy “lásd” az objektumokat és megértsd, hogyan működik a Java a színfalak mögött

Az Eclipse teljes támogatást nyújt az agilis szoftverfejlesztési technikákhoz, mint például a teszt-vezérelt fejlesztés és átdolgozás (refactoring). Ez lehetővé teszi a bevált módszerek elsajátítását a Java nyelv tanulása közben.

Ha valaki azt tervezi, hogy Java nyelven fejleszt majd programokat, akkor meg kell majd tanulnia az Eclipse vagy egy másik IDE kezelését. Így az Eclipse használata a kezdetektől időt és energiát takarít meg.

A legfontosabb szempont azonban az, hogy az IDE tanulása önmagában is nehéz, és elvonhat a Java tanulásától. Ez a tanfolyam reményeim szerint viszonylag fájdalommentessé teszi az Eclipse alapjainak elsajátítását, így könnyebb a Java tanulására koncentrálni.

Tárgyalt témakörökEz a tananyag a következő témaköröket tárgyalja:

Az Eclipse alapjai Java fejlesztéshez A Java nyelv és az Objektumorientált programozás (OOP) alapjai Teszt-vezérelt fejlesztés (TDD) és egységtesztelés Eclipse környezetben

A tanfolyam által használt megközelítésA tanfolyam során a következőkre lesz lehetőség:

Egyszerű minta Java alkalmazás írása a személyes könyvtár figyeléséhez Az “először tesztelés” megközelítés használata a legtöbb metódus fejlesztésekor Egy “teszt-vezérelt” program írása és egy végrehajtható JAR fájl létrehozása, valamint a JAR

fájl futtatása a rendszerkonzolról. Az elméleti tudnivalók a minta alkalmazások fejlesztése során szükség szerint bővülnek.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 3/ 44

Page 4: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

A tananyag elsajátításának legjobb módjaA tananyag bemutatja a Java fejlesztést Eclipse környezetben. Ha viszont valóban szeretnél megtanulni Java alkalmazásokat írni Eclipse környezetben, akkor a következő megközelítést javaslom:

Legyen a gépeden egy használatra kész Eclipse. Dolgozz a leckék mentén, állítsd le, tekerd vissza, ha szükséges. Használd igény szerint ezt a kézikönyvet. Szükség esetén nézz utána más forrásokban is az itt tárgyalt témaköröknek, hogy

alaposabban megismerd azokat. Pozitívan állj hozzá a tanuláshoz!

Minta Java alkalmazás – Személyes könyvtárA leckék során egy kis minta alkalmazást fogunk fejleszteni, amely nyilvántartja a személyes könyvtárunkat. Ez tartalmazza azoknak a személyeknek a listáját is, akiknek könyveket adunk kölcsön. Az alkalmazásban három Java osztály lesz:

1. A Person (Személy), amelyben a személy nevét és az általa egyszerre kölcsönözhető könyvek számát tároló mezők szerepelnek.

2. A Book (Könyv), amelyben a cím, a szerző és a könyvet jelenleg kölcsönző személy tárolására szolgáló mezők szerepelnek.

3. A MyLibrary (Saját könyvtár), amely az összes könyv listáját és az összes olyan személy listáját fogja tartalmazni, akik kölcsönözhetik a könyveket.

Az Eclipse letöltése és telepítéseAz Eclipse telepítése előtt a számítógépen szükség lesz egy telepített Java fejlesztői eszközkészletre (Java Development Kit, JDK), vagy Java futási környezetre (Java Runtime Environment, JRE). Ezek a http://java.sun.com/javase/downloads/index.jsp webcímről tölthetők el.A JDK vagy a JRE telepítése elég egyszerű. Szükség esetén részletes, lépésről lépésre leírt útmutatások a https://www.arctechsoftware.com/tutorial/welcomePage.do webhelyen található PDF Eclipse Tutorial című anyagban érhetők el (angol nyelven), a Beginning Eclipse hivatkozásra kattintva. A Java fejlesztéshez a JDK ajánlott, mert ez lehetővé teszi a szabványos Java osztályok dokumentációjának és forráskódjának megtekintését is. Ehhez a tanfolyamhoz azonban a JRE és a JDK egyformán megfelelő.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 4/ 44

Page 5: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Ez a tanfolyam az Eclipse 3.3 változaton alapul, bár használható a 3.2 és valószínűleg a későbbi változatokkal is. Az Eclipse 3.3 telepítéséhez szükséges lépések:

Az Eclipse webhelyen menj a letöltések oldalára: www.eclipse.org/downloads Válaszd az “Eclipse IDE for Java Developers” lehetőséget. Ha Linux vagy MacOSX operációs

rendszer fut a számítógépeden, akkor a jobboldali oszlopban található hivatkozást válaszd. Használhatod az “Eclipse IDE for Java EE Developers”, “Eclipse for RCP/Plug-in Developers”, vagy az “Eclipse Classic” változatot is. Ezek mind tartalmazzák az Eclipse Java fejlesztéshez szükséges részeit, amelyekre a tananyag elvégzéséhez szükség lesz.

A www.eclipse.org/downloads oldalon kattints a “Find out more” hivatkozásra. Görgess lefelé a böngészőben, amíg meg nem jelenik a képernyő jobb oldalán a “Tutorials and Help” (Ismertetők és súgó) keret. Az első ismertető egy Screencam video ismertető, ami végigvezet az Eclipse letöltési és telepítési folyamatán, Windows operációs rendszer esetén.

Az Eclipse telepítése igen egyszerű. Nincs telepítőprogramja. Ehelyett létrehozol egy felső szintű mappát, majd kitömöríted a zip fájlt ebbe a mappába. Például Windows XP használata esetén másold a zip fájlt a gyökérkönyvtárba (pl. “C:\”), majd tömörítsd ki. Az Eclipse programok több almappát tartalmaznak (configuration, features, plugins, readme). Az eljárás Linux rendszeren is nagyon hasonló, kivéve, hogy itt a tar.gz fájlt kell kitömöríteni.

A leckék lejátszásaA leckék lejátszásához tedd a következőket.

1. Töltsd le a 16 lecke zip fájljait (totalbeginnerlessonxx.zip). 2. Tömörítsd ki az egyes leckék zip fájljait a rendszer egyik könyvtárába.3. Keresd meg a “lessonxx.html” fájlt, ahol xx a lecke száma 01-16 között. 4. Nyisd meg ezt a fájlt a böngésződdel (például Internet Explorer vagy Firefox), majd kattints a

video képen a nagy lejátszás gombra. A lecke lejátszása a böngészőn belül történik. Megjegyzés: az Adobe Flash player alkalmazásnak telepítve kell lennie a rendszeren. A programot az Adobe webhelyről töltheted le: http://www.adobe.com/products/flashplayer/.

5. A video vezérlői a video alatt vannak. A Pause/Play (Szünet/Lejátszá) gomb a bal alsó sarokban található. Egy diavezérlő lehetővé teszi, hogy bármikor előre vagy visszatekerd a videot. A jobb alsó sarokban találhatók a Volume (hangerő), Table of Contents (tartalomjegyzék) és a Closed Captions (feliratozás) vezérlői.

A video átméretezéseMásik lehetőségként megnyitható a “lessonxx.swf” fájlt is a böngészővel. Windows rendszeren Internet Explorer használata esetén biztonsági figyelmeztetést kaphatsz, és rákattintva az “Allow blocked content” (Blokkolt tartalom engedélyezése) lehetőséget kell választani. Ha közvetlenül nyitod meg a lessonxx.swf fájlt (vagyis nem a lessonxx.html fájlon keresztül), akkor átméretezheted a videót bármilyen kívánt méretre (nagyíthatod vagy kicsinyítheted). Megjegyzés: a videó lejátszása a lessonxx.html fájlon keresztül a legtisztább megjelenítést biztosítja, de nem teszi lehetővé az átméretezést.Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 5/ 44

Page 6: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Feliratok és a lecke tartalomjegyzéke

Az egyes leckék hangfelvételét feliratok kísérhetik, amelyek a videó alsó részében jelennek meg. Kattints a jobb alsó sarokban található “CC” gombra a be- vagy kikapcsolásukhoz. Az egyes leckékhez tartoznak tartalomjegyzékek is, amelyek lehetővé teszik, hogy a videón belül egy megadott pontra ugorj. A tartalomjegyzék eléréséhez kattints videó jobb alsó sarkában található Tartalomjegyzék (Table of Contents) ikonra. A Tartalomjegyzék vezérlő mellett található a Hangerő szabályozó (Volume Control). A vezérlőket a fenti ábra mutatja.

A leckék vázlatai

1. lecke – Az első Java osztály létrehozása Java projekt létrehozása az Eclipse környezetben Java csomag létrehozása A Könyvtár alkalmazás ismertetése Osztályok és objektumok, elnevezési megállapodások Egy egyszerű Java osztály írása (Person)

2. lecke – Metódusok hozzáadása az osztályhoz Eclipse nézetek és perspektívák Az Eclipse felhasználói felület – “fogd és vidd”, előugró menük, súgó get (lekérdező) és set (beállító) metódusok hozzáadása a Person osztályhoz

3. lecke – Az Eclipse vázlatkönyv (Scrapbook) használata Az Eclipse vázlatkönyv Java kifejezések és utasítások Java csomagok ismertetése Person objektum létrehozása a vázlatkönyvben

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 6/ 44

Page 7: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

4. lecke - JUnit tesztelés az Eclipse környezetben, 1. rész Tesztelési forrásmappa (test) létrehozása A PersonTest osztály létrehozása Az első JUnit teszt futtatása

5. lecke - JUnit tesztelés folytatása A Person osztály tesztelése – 2. rész Tesztmetódusok létrehozása a konstruktorhoz, valamint a getName és a getMaximumBooks

metódusokhoz Statikus metódusok

6. lecke – “Először tesztelés” fejlesztési módszer használata az Eclipse környezetben

Az “először tesztelés” megközelítés használata a Person toString() metódus használatával Metódusok újradefiniálása Mezők elrejtése

7. lecke – A Book osztály létrehozása A BookTest létrehozása a Book osztály előtt A Book osztály konstruktorának tesztelése A get és set metódusok létrehozása

8. lecke – A Person osztály hozzáadása a Book osztályhoz Kapcsolat létrehozása a Book és a Person osztályok között A getPerson metódus tesztelése JUnit tesztkészlet létrehozása

9. lecke – A MyLibrary osztály és az ArrayList létrehozása Hogyan tároljuk a könyveket (vagy hasonlókat) egy gyűjteményben? A MyLibrary objektum a Person és Entry objektumok tárolásához Az ArrayList létrehozása a vázlatkönyvben A Java Generics bemutatása Metódusláncok

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 7/ 44

Page 8: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

10. lecke – A MyLibrary osztály létrehozása MyLibraryTest JUnit teszt létrehozása A testMyLibrary létrehozása a MyLibrary konstruktor teszteléséhez A MyLibrary konstruktor létrehozása Az instanceof operátor Az assertTrue metódus

11. lecke – A MyLibrary osztály első metódusainak létrehozása Tesztelő metódus létrehozása az addBook és removeBook metódusokhoz Az addBook és removeBook metódusok létrehozása és tesztelése Az addPerson és removePerson metódusok létrehozása Eclipse átdolgozás (refactoring) – lokális változó áthelyezése mezőbe

12. lecke – A checkOut, és checkIn metódusok létrehozása Teszt létrehozása a checkOut és checkIn metódusokhoz A checkout metódus megírása Az if / then / else szintaxis Logikai (boolean) metódusok A checkIn metódus megírása

13. lecke – A checkOut metódus folytatása A checkOut és checkIn metódusok tesztelése Fordítóhiba javítása– rossz helyen lévő {} Teszt hozzáadása a maximumBooks mezőhöz A getBooksForPerson() methódus tesztelése Átdolgozás – metódusok kinyerése

14. lecke – A checkOut metódus befejezése A getBooksForPerson metódus megírása A “for each” ciklus A “&&” logikai AND (és) operátor NullPointerException hibák A checkOut metódus befejezése

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 8/ 44

Page 9: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

15. lecke – A MyLibrary osztály metódusainak befejezése Teszt létrehozása a getAvailableBooks metódushoz A getAvailableBooks metódus létrehozása A getUnavailableBooks metódus létrehozása

16. lecke – A main metódus és a JAR fájl létrehozása A main metódus A main metódus megírása A MyLibrary futtatása Java alkalmazásként Exportálás JAR fájlba és futtatás a Windows rendszerből

Alfabetikus index leckék szerintTémakör Lecke addBook() metódus...................................................................................................................11

addPerson() metódus.........................................................................................................11agile szoftverfejlesztés................................................................................................................4alosztály .....................................................................................................................................4ArrayList<> osztály......................................................................................................................9assertEquals() metódus .............................................................................................................5assertTrue() metódus................................................................................................................10beállító (set) metódusok..............................................................................................................2Book osztály................................................................................................................................7boolean típus.............................................................................................................................10checkOut() metódus..................................................................................................................12Convert local variable to field, Eclipse varázsló........................................................................11CTRL+/, belső megjegyzések átkapcsolása...............................................................................8CTRL+Shift+P – kapcsos zárójel párjának keresése...............................................................13CTRL+Space – kódsegéd...........................................................................................................2csomag, létrehozása...................................................................................................................1csomagok, Java..........................................................................................................................3Eclipse böngésző osztály nézet..................................................................................................2Eclipse felhasználói felület..........................................................................................................2Eclipse kódsegéd (CTRL+Space)...............................................................................................2Eclipse vázlatkönyv (scrapbook).................................................................................................3egységteszt.................................................................................................................................4először-tesztelés fejlesztés.........................................................................................................6equals metódus karaktersorozatokhoz (vs. == operátor).........................................................14Export to (JAR) file, Eclipse varázsló........................................................................................16extends kulcsszó.........................................................................................................................4extrém programozás...................................................................................................................4Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 9/ 44

Page 10: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Feladat (Task) nézet, TODO megjegyzések...............................................................................7for each ciklus...........................................................................................................................14Forrás mappa, új létrehozása.....................................................................................................4Generate Getters and Setters varázsló......................................................................................2Generics, Java......................................................................................................................9, 10get() metódus, ArrayList.............................................................................................................9getAvailableBooks() metódus ..................................................................................................15getBooksForPerson() metódus.................................................................................................14getUnavailableBooks() metódus...............................................................................................15Gyorsjavítás (Quick fix, CTRL+1), “először tesztelés” fejlesztésben.........................................7Gyorsjavítás (Quick fix, CTRL+1)...............................................................................................4if then utasítás ..........................................................................................................................12indexOf() metódus, ArrayList......................................................................................................9instanceof operátor...................................................................................................................10JAR archívum fájl......................................................................................................................16java -jar parancs........................................................................................................................16JUnit nézet..................................................................................................................................5JUnit teszt függvénytár................................................................................................................4JUnit Test osztály, új létrehozása................................................................................................4JUnit teszt, futtatás......................................................................................................................5JUnit, aktuális összehasonlítása az elvárttal..............................................................................5kapcsos zárójel, kiemelés az Eclipse környezetben.................................................................13kifejezések...................................................................................................................................3kis- és nagybetűk a Java nyelvben.............................................................................................1kódsegéd (code assist, CTRL+Space).......................................................................................2kódsegéd sablon.........................................................................................................................2konstruktor (Java).......................................................................................................................1Könyvtár alkalmazás...................................................................................................................1lekérdező (get) metódusok ........................................................................................................2main() metódus.........................................................................................................................16megjegyzések: belső (//).............................................................................................................1metódusok (osztály)....................................................................................................................2mezők (osztály)...........................................................................................................................1munkaasztal (workbench), Eclipse.............................................................................................2munkaasztal területek.................................................................................................................2munkaterület (Eclipse)................................................................................................................1MyLibrary osztály......................................................................................................................10mylibrary.jar fájl.........................................................................................................................16new kulcsszó...............................................................................................................................3nézet (Eclipse).............................................................................................................................2NullPointerException.................................................................................................................14Object osztály, Java....................................................................................................................3objektumfüggőség.......................................................................................................................8objektumok egyenlősége, Java ..................................................................................................8osztály (Java)..............................................................................................................................1összeépítési útvonal....................................................................................................................4Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 10/ 44

Page 11: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Person osztály.............................................................................................................................1perspektíva (Eclipse)...................................................................................................................2printStatus() metódus................................................................................................................16private hozzáférési módosító......................................................................................................8projekt, létrehozása.....................................................................................................................1protected hozzáférési módosító................................................................................................10public hozzáférési módosító.......................................................................................................8Refactor menü, Eclipse.............................................................................................................11removeBook() metódus.............................................................................................................11removePerson() metódus..........................................................................................................11scrapbook, Eclipse......................................................................................................................3setup() metódus, JUnit teszt osztály.........................................................................................11statikus metódusok.....................................................................................................................5System.out.println() parancs.......................................................................................................3szülőosztály.................................................................................................................................4testBook() metódus.....................................................................................................................7testCheckOut() metódus ..........................................................................................................12testGetAvailableBooks() metódus.............................................................................................15testGetBooksForPerson() metódus .........................................................................................13testGetUnavailableBooks() metódus........................................................................................15tesztmetódus, létrehozás ...........................................................................................................5tesztmetódus, meghatározás .....................................................................................................6tesztkészlet, JUnit.......................................................................................................................8teszt-vezérelt fejlesztés (TDD)....................................................................................................6this kulcsszó............................................................................................................................2, 6TODO megjegyzés, feladatlista..................................................................................................7toString() metódus ......................................................................................................................6újradefiniálás, metódus ..............................................................................................................6utasítások....................................................................................................................................2üdvözlő képernyő (Eclipse).........................................................................................................1vázlatkönyv, Eclipse....................................................................................................................3vázlatkönyv, importálások beállítása gomb.................................................................................3végrehajtás gomb, Eclipse vázlatkönyv......................................................................................3végrehajtható JAR fájl...............................................................................................................16vizsgálat gomb, Eclipse vázlatkönyv...........................................................................................3!= operátor (nem egyenlő).........................................................................................................12&& operátor (AND operátor).....................................................................................................14( ) zárójel, Java............................................................................................................................2/* */ megjegyzések......................................................................................................................2; pontosvessző, Java...................................................................................................................2{ } kapcsos zárójel, Java.............................................................................................................2== operátor (egyenlő)................................................................................................................12

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 11/ 44

Page 12: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Szószedet

Kifejezés Rövid meghatározás

Agilis (vagy Extrém) fejlesztés

Szoftverfejlesztési módszertan, amely nagy hangsúlyt fektet többek között az egységtesztelésre, mint a fejlesztési folyamat részére.

API (Alkalmazás-programozási felület)

Annak módja, hogy egy program egy másik programot használ. A Java nyelvben az API egy osztály vagy csomag publikus metódusainak gyűjteményét jelenti.

Átdolgozás (refactor) Egy program javítása a működésének (például az API-jainak) megváltoztatása nélkül. Például mezők vagy változók átnevezése, a kód karcsúsítása, stb. Az agilis fejlesztésben igen fontos az öndokumentáló kód miatt.

Csomag A csomagokat azért importáljuk egy forrásfájlba, hogy ne kelljen beírni az osztály teljes nevét (például elég annyi, hogy “Person” az “org.eclipsetraining.librarytutorial.Person” helyett), valamint hogy elkerüljük a két azonos nevű osztály létezését.

Érték típusú változó A Javában azok a változók, amelyek egy Java primitív (int, char, stb.) értékét tartalmazzák. A memóriaveremben vannak tárolva. Ellentéte a referencia típusú változó.

Hozzáférési módosító A “public”, “private”, “protected” fenntartott szavak a Java nyelvben. Azt vezérlik, hogy az osztályok és tagok bármely osztályból, csak az adott osztályból, vagy az utód osztályokból legyenek elérhetők. Alapértelmezés: a csomag bármely osztályából.

IDE (Integrált fejlesztői környezet)

Egy program, mint például az Eclipse, amely különféle eszközöket biztosít szoftvercsomagok fejlesztéséhez.

JUnit Test Egy osztály egyes metódusainak teszteléséhez használt Java osztály. Tesztesetek felépítésére szolgál, például az agilis fejlesztési módszertan használata esetén.

JVM (Java virtuális gép), más néven Java futási környezet (JRE)

Az a program, amely a Java programokat futtatja egy adott platformon. A Java forráskódot .class fájlokra fordítja le. Ezek a JVM által használt utasításokat tartalmazzák, amely ténylegesen futtatja a programokat egy Windows, Linux vagy Mac számítógépen. A JVM a Java által támogatott minden platformra meg van írva.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 12/ 44

Page 13: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Kifejezés Rövid meghatározás

Konstruktor Egy speciális kódblokk, amely egy osztály egy példányának létrehozására szolgál (másképpen egy olyan objektum létrehozására, amelynek a típusa az osztály). A “new” kulcsszóval alkalmazható (például a Person p = new Person() utasítás meghívja a Person() konstruktort).

Metódus Az osztályban egy feldolgozást végző tag (mint például egy alrutin vagy egy függvény más nyelvekben).

Metódus argumentumok, metódus paraméterek

A metódus deklarációjában szereplő változók listáját nevezzük paramétereknek. Az argumentumok a metódus meghívásakor átadott aktuális értékek. Egy metódus meghívásakor a használt argumentumoknak meg kell felelniük a deklaráció paramétereinek típus és sorrend szerint. Például a

public setName(String name) {…}

metódusban a “name” a metódus paramétere. Ha ezt a metódust a következőképpen használjuk:

myObject.setName(“Fred”);

akkor a “Fred” karaktersorozat a metódus argumentuma, amelynek meg kell felelnie a metódus paraméter típusának.

Metódus szignatúra A metódus neve és paraméterlistája. Például ha egy metódus “setName (String name)” formában van meghatározva, akkor a metódus szignatúrája “setName(String)” lesz. A metódus szignatúrák azért fontosak, mert ez teszi lehetővé a metódusok túlterhelését (vagyis azt, hogy azonos nevű metódusok különböző szignatúrákkal rendelkezzenek). Például a “setName(String firstName, String lastName) metódus a “setName(String name)” metódus túlterhelésével jön létre, mivel annak szignatúrája más (“setName(String, String)”).

Mező Egy osztály azon tagja, amely adatokat tartalmaz (például név, kor, stb.) Általában a private módosítóval rendelkezik, hogy más programok ne érhessék el közvetlenül.

Munkaterület Felső szintű konténer az Eclipse környezetben végzett munkához. Egyetlen Eclipse munkamenetben csak egy munkaterület lehet aktív.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 13/ 44

Page 14: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Kifejezés Rövid meghatározás

Objektum Egy osztály egy példánya. Például, a Torta lehet az osztály, és egy torta (például ezaTorta) lehet az osztály használatával létrehozott objektum. Más szavakkal, az “ezaTorta” egy Torta típusú objektum, vagy pedig a Torta egy példánya.

Osztály A Java nyelv fő építőeleme. Tagokat tartalmaz, beleértve a mezőket és metódusokat. Az osztályok az objektumok létrehozásához használt “tervrajzok”.

Projekt Az Eclipse környezetben a munka szervezésének egyik módja. Egy Eclipse munkaterület több projektet is tartalmazhat. Minden projektben több csomag lehet. Minden csomag több osztályt tartalmazhat.

Referencia típusú változó

A Javában egy olyan változó, amely egy objektum referenciáját tartalmazza (például: p = new Person();). A “kupac” (heap) azon területére mutat, ahol az objektum található. Ellentéte az érték típusú változó.

Statikus metódus Egy olyan metódus, amely egy teljes osztályhoz tartozik, és nem csak az osztály egy példányához. Meghívása: <Osztály>.<Metódus> (például Person.getTotalCount()). Olyan metódusok esetén használandó, amelyek nem az osztály egy példányára támaszkodnak.

Swing Szabványos Java csomagok készlete, amely “natív” kód használata nélkül valósít meg egy grafikus felhasználói felületet.

SWT (Standard Widget Toolkit)

Java osztályok és natív programok készlete, amelyet az Eclipse fejlesztett ki, hogy lehetővé tegye a Java programok megjelenítését az egyes platformokon a natív programok stílusával. Az Eclipse IDE létrehozásához is ezt használták.

Típus A Javában egy változó egyik attribútuma, amely vagy egy primitív típust (int, boolean, stb), vagy az osztálytagságot jelöli. Objektumok esetében a típus az az osztály, amelyhez az objektum tartozik. A típusok közé tartoznak az interfészek és felsorolások (enumeration) is.

Túlterhelés (metódus) Több metódus meghatározása azonos névvel, de különböző paraméterekkel (vagyis azonos névvel, de különböző szignatúrákkal).

Újradefiniálás (metódus) Amikor egy utód osztály megvalósít egy szülőosztályból örökölt metódust, akkor ez a metódus újra lesz definiálva.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 14/ 44

Page 15: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Kifejezés Rövid meghatározás

Vázlatkönyv (Scrapbook) oldal

Egy terület az Eclipse környezetben, ahol Java kódrészleteket lehet végrehajtani, hogy lássuk, hogyan működnek. Kiváló lehetőség a kísérletezésre a Java utasításokkal.

További információforrásokHa többet szeretnél megtudni a Java nyelvről és az Eclipse környezetről, számos információforrás áll rendelkezésre. Néhány ezek közül, amelyeket én hasznosnak találtam.

Eclipse webhelyek www.eclipse.org/resources . Itt számos cikk, könyv, bemutató és egyéb forrás található az

Eclipse környezettel kapcsolatos változatos témákról. eclipse.newcomer hírcsoport. Ez egy barátságos, aktív hírcsoport, ahol az Eclipse környezettel

most ismerkedők tehetnek fel kérdéseket. A hírcsoport keresési szolgáltatása különösen értékes, mivel a előfordulhat, hogy a kérdést már feltették és megválaszolták.

Beginning Eclipse Tutorial (Kezdő Eclipse ismertető) az ArcTech Software LLC webhelyen. Írásos ismertető az Eclipse és a Java kezdeti lépéseihez. A letöltéshez bejelentkezés szükséges. Van egy nagyon jó rész a Java fejlesztői készlet (JDK) letöltéséről és telepítéséről. Az ismertető webcíme: https://www.arctechsoftware.com/tutorial/tutorial.do?subcatId=1. A weboldal címe: https://www.arctechsoftware.com/tutorial/welcomePage.do.

Java webhelyek A Sun Java ismertetői (http://java.sun.com/docs/books/tutorial/java/index.html). A Java tanulás

arany szabványa, és ingyenes. JavaRanch Big Moose Saloon weboldala (http://saloon.javaranch.com/cgi-

bin/ubb/ultimatebb.cgi?category=1). Számos fórumot tartalmaz, többek között Java általában (kezdő), Java általában (középhaladó), és számos más Java témakör. Rendkívül aktív és barátságos hely, nagytudású moderátorokkal.

Java Developers Almanac 1.4 (http://www.exampledepot.com/). Számos témakörben tartalmaz Java kódmintákat.

Java könyvek Head First Java (szerzők: Kathy Sierra és Bert Bates). Kiváló, humoros, kreatív könyv Java és

OOP kezdőknek. Thinking In Java (szerző: Bruce Eckel). Kiváló, átfogó referencia a Javához. Programozóknak

minden tudásszinten.

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 15/ 44

Page 16: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

Effective Java (szerző: Joshua Bloch). A Java követendő eljárásait összefoglaló tömör könyv. Középhaladó és haladó programozóknak.

KódrészletekA következő kódrészletek az egyes leckék végére elért kód állapotát tükrözik. Felhasználhatók összehasonlításra a saját kóddal, vagy segítenek javítani az esetleg felmerülő problémákat. Szükség esetén bemásolhatók az Eclipse Java forrásfájlokba. Ha a tanfolyamba a közepén kapcsolódnál be, akkor ezek segítségével felveheted a fonalat a megfelelő ponton.

1. lecke – Person osztály (mezők és konstruktor)

package org.totalbeginner.tutorial; public class Person { // mezők private String name; // a személy neve private int maximumBooks; // a személy által maximálisan kölcsönözhető könyvek száma

// konstruktor public Person() { name = "unknown name"; maximumBooks = 3; }}

2. lecke – Person osztály (get és set metódusokkal)Megjegyzés: a kiemelt sorok ebben a leckében kerültek a kódba.

package org.totalbeginner.tutorial; public class Person { // mezők private String name; // a személy neve private int maximumBooks; // a személy által maximláisan kölcsönözhető könyvek száma // konstruktor public Person() { name = "unknown name";

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 16/ 44

Page 17: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

maximumBooks = 3; } //metódusok public String getName() { return name; } public void setName(String anyName) { name = anyName; } public int getMaximumBooks() { return maximumBooks; } public void setMaximumBooks(int maximumBooks) { this.maximumBooks = maximumBooks; } }

3. lecke (scrapbook pillanatképek)

Expressions: 2 + 2 int a = 5;a = a * 10;a (after import of org.totalbeginner.tutorial.*) Person p = new Person();p.setName(“Fred”);P

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 17/ 44

Page 18: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

5. lecke – PersonTest osztály

package org.totalbeginner.tutorial; import junit.framework.TestCase; public class PersonTest extends TestCase { public void testPerson() { Person p1 = new Person(); assertEquals("unknown name", p1.getName()); assertEquals(3, p1.getMaximumBooks()); } public void testSetName() { Person p2 = new Person(); p2.setName("Fred"); assertEquals("Fred", p2.getName()); } public void testSetMaximumBooks() { Person p3 = new Person(); p3.setMaximumBooks(10); assertEquals(10, p3.getMaximumBooks()); } }

6. lecke – A Person osztályhoz hozzáadott toString() metódusMegjegyzés: ezen a ponton a Person és PersonTest osztályok készen vannak.

package org.totalbeginner.tutorial; public class Person { // mezők private String name; // a személy neve private int maximumBooks; // a személy által maximlisan kölcsönözhető könyvek száma // konsrtuktor public Person() { name = "unknown name"; maximumBooks = 3;

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 18/ 44

Page 19: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

} //metódusok public String getName() { return name; } public void setName(String anyName) { name = anyName; } public int getMaximumBooks() { return maximumBooks; } public void setMaximumBooks(int maximumBooks) { this.maximumBooks = maximumBooks; } public String toString() { return this.getName() + " (" + this.getMaximumBooks() + " books)"; } }

package org.totalbeginner.tutorial; import junit.framework.TestCase; public class PersonTest extends TestCase { public void testPerson() { Person p1 = new Person(); assertEquals("unknown name", p1.getName()); assertEquals(3, p1.getMaximumBooks()); } public void testSetName() { Person p2 = new Person(); p2.setName("Fred"); assertEquals("Fred", p2.getName()); }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 19/ 44

Page 20: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public void testSetMaximumBooks() { Person p3 = new Person(); p3.setMaximumBooks(10); assertEquals(10, p3.getMaximumBooks()); } public void testToString() { Person p4 = new Person(); p4.setName("Fred Flintstone"); p4.setMaximumBooks(7); String testString = "Fred Flintstone (7 books)"; assertEquals(testString, p4.toString()); } }

7. lecke – A TestBook és Book osztályok

package org.totalbeginner.tutorial; import junit.framework.TestCase; public class BookTest extends TestCase { public void testBook() { Book b1 = new Book("Great Expectations"); assertEquals("Great Expectations", b1.title); assertEquals("unknown author", b1.author); } }

package org.totalbeginner.tutorial; public class Book { String title; String author; public Book(String string) { this.title = string;

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 20/ 44

Page 21: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

this.author = "unknown author"; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getTitle() { return title; } }

package org.totalbeginner.tutorial; import junit.framework.Test;import junit.framework.TestSuite; public class AllTests { public static Test suite() { TestSuite suite = new TestSuite("Test for org.totalbeginner.tutorial"); //$JUnit-BEGIN$ suite.addTestSuite(BookTest.class); suite.addTestSuite(PersonTest.class); //$JUnit-END$ return suite; } }

8. lecke – A Person hozzáadása a Book osztályhozMegjegyzés: A BookTest és Book osztályok ezen a ponton kész vannak.

package org.totalbeginner.tutorial; public class Book {

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 21/ 44

Page 22: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

String title; String author; Person person; public Book(String string) { this.title = string; this.author = "unknown author"; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getTitle() { return title; } public void setPerson(Person p2) { this.person = p2; } public Person getPerson() { return this.person; } }

package org.totalbeginner.tutorial; import junit.framework.TestCase; public class BookTest extends TestCase { public void testBook() { Book b1 = new Book("Great Expectations"); assertEquals("Great Expectations", b1.title); assertEquals("unknown author", b1.author);

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 22/ 44

Page 23: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

} public void testGetPerson() { Book b2 = new Book("War And Peace"); Person p2 = new Person(); p2.setName("Elvis"); // metódus, amely megmondja, hogy a könyv ki lett kölcsönözve ennek a személynek b2.setPerson(p2); // a könyvet kölcsönző személy nevének lekérdezézése// Person testPerson = b2.getPerson();// String testName = testPerson.getName(); String testName = b2.getPerson().getName(); assertEquals("Elvis", testName); } }

9. lecke – A MyLibrary osztály és az ArrayList

Vázlatkönyv példa ArrayList<Book> list = new ArrayList<Book>(); Book b1 = new Book("Great Expectations");Book b2 = new Book("War and Peace");list.add(b1);list.add(b2); Person p1 = new Person();p1.setName("Fred");b1.setPerson(p1); list.remove(b1);list

10. lecke – A MyLibrary osztály létrehozása Megjegyzés: Innentől kezdve szükség esetén használhatók a 6. leckében szereplő Person és Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 23/ 44

Page 24: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

PersonTest osztályok, valamint a 8. leckében szereplő Book és BookTest osztályok.

package org.totalbeginner.tutorial; import java.util.ArrayList; import junit.framework.TestCase; public class MyLibraryTest extends TestCase { // test constructor public void testMyLibrary() { MyLibrary ml = new MyLibrary("Test"); assertEquals("Test", ml.name); assertTrue(ml.books instanceof ArrayList); assertTrue(ml.people instanceof ArrayList); } }

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 24/ 44

Page 25: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

11. lecke – A MyLibrary osztály első metódusainak létrehozása

package org.totalbeginner.tutorial; import java.util.ArrayList; import junit.framework.TestCase; public class MyLibraryTest extends TestCase { private Book b1; private Book b2; private Person p1; private Person p2; private MyLibrary ml; // test constructor public void testMyLibrary() { MyLibrary ml = new MyLibrary("Test"); assertEquals("Test", ml.name); assertTrue(ml.books instanceof ArrayList); assertTrue(ml.people instanceof ArrayList); } public void setup() { b1 = new Book("Book1"); b2 = new Book("Book2"); p1 = new Person(); p2 = new Person(); p1.setName("Fred"); p2.setName("Sue"); ml = new MyLibrary("Test"); } public void testAddBook() { //create test objects setup(); //test initial size is 0 assertEquals(0, ml.getBooks().size());

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 25/ 44

Page 26: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ml.addBook(b1); ml.addBook(b2); assertEquals(2, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b1)); assertEquals(1, ml.getBooks().indexOf(b2)); ml.removeBook(b1); assertEquals(1, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b2)); ml.removeBook(b2); assertEquals(0, ml.getBooks().size()); }}

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; } public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 26/ 44

Page 27: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); } public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); } }

12. lecke – A checkOut és checkIn metódusok létrehozása

package org.totalbeginner.tutorial; import java.util.ArrayList; import junit.framework.TestCase; public class MyLibraryTest extends TestCase { private Book b1; private Book b2; private Person p1; private Person p2; private MyLibrary ml; // test constructor public void testMyLibrary() { MyLibrary ml = new MyLibrary("Test"); assertEquals("Test", ml.name); assertTrue(ml.books instanceof ArrayList); assertTrue(ml.people instanceof ArrayList);

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 27/ 44

Page 28: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

} public void setup() { b1 = new Book("Book1"); b2 = new Book("Book2"); p1 = new Person(); p2 = new Person(); p1.setName("Fred"); p2.setName("Sue"); ml = new MyLibrary("Test"); } public void testAddBook() { //teszt objektumok létrehozása setup(); //a teszt kezdeti mérete 0 assertEquals(0, ml.getBooks().size()); ml.addBook(b1); ml.addBook(b2); assertEquals(2, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b1)); assertEquals(1, ml.getBooks().indexOf(b2)); ml.removeBook(b1); assertEquals(1, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b2)); ml.removeBook(b2); assertEquals(0, ml.getBooks().size()); } private void addItems() { ml.addBook(b1); ml.addBook(b2); ml.addPerson(p1); ml.addPerson(p2); }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 28/ 44

Page 29: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public void testCheckOut() { // objektumok beállítása setup(); addItems(); assertTrue("Book did not check out correctly", ml.checkOut(b1,p1)); assertEquals("Fred", b1.getPerson().getName()); assertFalse("Book was already checked out", ml.checkOut(b1,p2)); assertTrue("Book check in failed", ml.checkIn(b1)); assertFalse("Book was already checked in", ml.checkIn(b1)); assertFalse("Book was never checked out", ml.checkIn(b2)); } }

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 29/ 44

Page 30: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; } public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); } public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); } public boolean checkOut(Book b1, Person p1) { if ((b1.getPerson() == null) ){ b1.setPerson(p1); return true; } else { return false; } } public boolean checkIn(Book b1) { if (b1.getPerson() != null) { b1.setPerson(null); return true; } else { return false; } }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 30/ 44

Page 31: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

}

13. lecke – A checkOut Method folytatása

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; } public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; } public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 31/ 44

Page 32: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); } public boolean checkOut(Book b1, Person p1) { if ((b1.getPerson() == null) ){ b1.setPerson(p1); return true; } else { return false; } } public boolean checkIn(Book b1) { // TODO Auto-generated method stub return false; } public ArrayList<Book> getBooksForPerson(Person p1) { // TODO Auto-generated method stub return null; } }

14. lecke – A checkOut metódus befejezése

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name;

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 32/ 44

Page 33: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; } public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; } public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); } public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); }

public boolean checkOut(Book b1, Person p1) { int booksOut = this.getBooksForPerson(p1).size(); if ((b1.getPerson() == null) && booksOut < p1.getMaximumBooks()){ b1.setPerson(p1); return true; }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 33/ 44

Page 34: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

else { return false; } } public boolean checkIn(Book b1) { if (b1.getPerson() != null) { b1.setPerson(null); return true; } else { return false; } } public ArrayList<Book> getBooksForPerson(Person p1) { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if ((aBook.getPerson() != null) && (aBook.getPerson().getName() .equals(p1.getName()))) { result.add(aBook); } } return result; } }

15. lecke – A MyLibrary osztály metódusainak befejezése

package org.totalbeginner.tutorial; import java.util.ArrayList; import junit.framework.TestCase; public class MyLibraryTest extends TestCase { private Book b1;

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 34/ 44

Page 35: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

private Book b2; private Person p1; private Person p2; private MyLibrary ml; // konstruktor tesztelése public void testMyLibrary() { MyLibrary ml = new MyLibrary("Test"); assertEquals("Test", ml.name); assertTrue(ml.books instanceof ArrayList); assertTrue(ml.people instanceof ArrayList); } public void setup() { b1 = new Book("Book1"); b2 = new Book("Book2"); p1 = new Person(); p2 = new Person(); p1.setName("Fred"); p2.setName("Sue"); ml = new MyLibrary("Test"); } public void testAddBook() { //tesztobjektumok létrehozása setup(); //teszt kezdeti mérete 0 assertEquals(0, ml.getBooks().size()); ml.addBook(b1); ml.addBook(b2); assertEquals(2, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b1)); assertEquals(1, ml.getBooks().indexOf(b2)); ml.removeBook(b1); assertEquals(1, ml.getBooks().size()); assertEquals(0, ml.getBooks().indexOf(b2));

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 35/ 44

Page 36: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ml.removeBook(b2); assertEquals(0, ml.getBooks().size()); } public void testCheckOut() { // objektumok beállítása setup(); addItems(); assertTrue("Book did not check out correctly", ml.checkOut(b1,p1)); assertEquals("Fred", b1.getPerson().getName()); assertFalse("Book was already checked out", ml.checkOut(b1,p2)); assertTrue("Book check in failed", ml.checkIn(b1)); assertFalse("Book was already checked in", ml.checkIn(b1)); assertFalse("Book was never checked out", ml.checkIn(b2)); // további teszt a maximumBooks mezőhöz setup(); p1.setMaximumBooks(1); addItems(); assertTrue("First book did not check out", ml.checkOut(b2, p1)); assertFalse("Second book should not have checked out", ml.checkOut(b1, p1)); } private void addItems() { ml.addBook(b1); ml.addBook(b2); ml.addPerson(p1);

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 36/ 44

Page 37: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ml.addPerson(p2); } public void testGetBooksForPerson() { setup(); addItems(); assertEquals(0, ml.getBooksForPerson(p1).size()); ml.checkOut(b1, p1); ArrayList<Book> testBooks = ml.getBooksForPerson(p1); assertEquals(1, testBooks.size()); assertEquals(0, testBooks.indexOf(b1)); ml.checkOut(b2, p1); testBooks = ml.getBooksForPerson(p1); assertEquals(2, testBooks.size()); assertEquals(1, testBooks.indexOf(b2)); } public void testGetAvailableBooks() { setup(); addItems(); ArrayList<Book> testBooks = ml.getAvailableBooks(); assertEquals(2, testBooks.size()); assertEquals(1, testBooks.indexOf(b2)); ml.checkOut(b1, p1); testBooks = ml.getAvailableBooks(); assertEquals(1, testBooks.size()); assertEquals(0, testBooks.indexOf(b2)); ml.checkOut(b2, p1); testBooks = ml.getAvailableBooks(); assertEquals(0, testBooks.size()); } public void testGetUnavailableBooks() { setup(); addItems(); assertEquals(0, ml.getUnavailableBooks().size()); ml.checkOut(b1, p1);

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 37/ 44

Page 38: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ArrayList<Book> testBooks = ml.getUnavailableBooks(); assertEquals(1, testBooks.size()); assertEquals(0, testBooks.indexOf(b1)); ml.checkOut(b2, p2); testBooks = ml.getUnavailableBooks(); assertEquals(2, testBooks.size()); assertEquals(1, testBooks.indexOf(b2)); } public void testToString() { setup(); addItems(); assertEquals("Test: 2 books; 2 people.", ml.toString()); } }

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 38/ 44

Page 39: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; } public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); } public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); } public boolean checkOut(Book b1, Person p1) { int booksOut = this.getBooksForPerson(p1).size(); if ((b1.getPerson() == null) && booksOut < p1.getMaximumBooks()){ b1.setPerson(p1); return true; } else { return false; } } public boolean checkIn(Book b1) { if (b1.getPerson() != null) { b1.setPerson(null); return true; } else { return false;

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 39/ 44

Page 40: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

} } public ArrayList<Book> getBooksForPerson(Person p1) { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if ((aBook.getPerson() != null) && (aBook.getPerson().getName() .equals(p1.getName()))) { result.add(aBook); } } return result; } public ArrayList<Book> getAvailableBooks() { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() == null) { result.add(aBook); } } return result; } public ArrayList<Book> getUnavailableBooks() { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() != null) { result.add(aBook); } } return result; } public String toString() { return this.getName() + ": " + this.getBooks().size() + " books; " + this.getPeople().size() + " people."; }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 40/ 44

Page 41: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

}

16. lecke – A main metódus és a JAR fájl létrehozása

package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList<Book> books; ArrayList<Person> people; public MyLibrary(String name) { this.name = name; books = new ArrayList<Book>(); people = new ArrayList<Person>(); } public String getName() { return name; } public ArrayList<Book> getBooks() { return books; } public ArrayList<Person> getPeople() { return people; } public void addBook(Book b1) { this.books.add(b1); } public void removeBook(Book b1) { this.books.remove(b1); }

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 41/ 44

Page 42: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

public void addPerson(Person p1) { this.people.add(p1); } public void removePerson(Person p1) { this.people.remove(p1); } public boolean checkOut(Book b1, Person p1) { int booksOut = this.getBooksForPerson(p1).size(); if ((b1.getPerson() == null) && booksOut < p1.getMaximumBooks()){ b1.setPerson(p1); return true; } else { return false; } } public boolean checkIn(Book b1) { if (b1.getPerson() != null) { b1.setPerson(null); return true; } else { return false; } } public ArrayList<Book> getBooksForPerson(Person p1) { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if ((aBook.getPerson() != null) && (aBook.getPerson().getName() .equals(p1.getName()))) { result.add(aBook); } } return result; } public ArrayList<Book> getAvailableBooks() {

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 42/ 44

Page 43: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() == null) { result.add(aBook); } } return result; } public ArrayList<Book> getUnavailableBooks() { ArrayList<Book> result = new ArrayList<Book>(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() != null) { result.add(aBook); } } return result; } public String toString() { return this.getName() + ": " + this.getBooks().size() + " books; " + this.getPeople().size() + " people."; } public static void main(String[] args) { // create a new MyLibrary MyLibrary testLibrary = new MyLibrary("Test Drive Library"); Book b1 = new Book("War And Peace"); Book b2 = new Book("Great Expectations"); b1.setAuthor("Tolstoy"); b2.setAuthor("Dickens"); Person jim = new Person(); Person sue = new Person(); jim.setName("Jim"); sue.setName("Sue"); testLibrary.addBook(b1); testLibrary.addBook(b2); testLibrary.addPerson(jim); testLibrary.addPerson(sue); System.out.println("Just created new library");

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 43/ 44

Page 44: Total Beginner Companion Document Hu

Eclipse és Java teljesen kezdőknekSegédanyag

testLibrary.printStatus(); System.out.println("Check out War And Peace to Sue"); testLibrary.checkOut(b1, sue); testLibrary.printStatus(); System.out.println("Do some more stuff"); testLibrary.checkIn(b1); testLibrary.checkOut(b2, jim); testLibrary.printStatus(); } private void printStatus() { System.out .println("Status Report of MyLibrary \n" + this.toString()); for (Book thisBook : this.getBooks()) { System.out.println(thisBook); } for (Person p : this.getPeople()) { int count = this.getBooksForPerson(p).size(); System.out.println(p + " (has " + count + " of my books)"); } System.out.println("Books Available: " + this.getAvailableBooks().size()); System.out.println("--- End of Status Report ---"); }}

Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0. 44/ 44