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
Eclipse és Java teljesen kezdőknek Segédanyag Java könyvek................................................................................................................................15 Kódrészletek.....................................................................................................................................16 1. lecke – Person osztály (mezők és konstruktor)........................................................................16 2. lecke – Person osztály (get és set metódusokkal)...................................................................16 3. lecke (scrapbook pillanatképek)...............................................................................................17 5. lecke – PersonTest osztály.......................................................................................................18 6. lecke – A Person osztályhoz hozzáadott toString() metódus...................................................18 7. lecke – A TestBook és Book osztályok....................................................................................20 8. lecke – A Person hozzáadása a Book osztályhoz....................................................................21 9. lecke – A MyLibrary osztály és az ArrayList.............................................................................23 10. lecke – A MyLibrary osztály létrehozása ...............................................................................23 11. lecke – A MyLibrary osztály első metódusainak létrehozása.................................................25 12. lecke – A checkOut és checkIn metódusok létrehozása........................................................27 13. lecke – A checkOut Method folytatása...................................................................................31 14. lecke – A checkOut metódus befejezése................................................................................32 15. lecke – A MyLibrary osztály metódusainak befejezése..........................................................34 16. lecke – A main metódus és a JAR fájl létrehozása................................................................41
Bevezetés Ez 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ége A 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élja A 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
Eclipse és Java teljesen kezdőknek Segé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ök Ez 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és A 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
Eclipse és Java teljesen kezdőknek Segédanyag
A tananyag elsajátításának legjobb módja A 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ár A 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ése Az 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
Eclipse és Java teljesen kezdőknek Segé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ása A 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ése Má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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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 szerint Témakör
Lecke
addBook() metódus...................................................................................................................11 addPerson() metódus.........................................................................................................11 agile szoftverfejlesztés................................................................................................................4 alosztály .....................................................................................................................................4 ArrayList<> osztály......................................................................................................................9 assertEquals() metódus .............................................................................................................5 assertTrue() metódus................................................................................................................10 beállító (set) metódusok..............................................................................................................2 Book osztály................................................................................................................................7 boolean típus.............................................................................................................................10 checkOut() metódus..................................................................................................................12 Convert local variable to field, Eclipse varázsló........................................................................11 CTRL+/, belső megjegyzések átkapcsolása...............................................................................8 CTRL+Shift+P – kapcsos zárójel párjának keresése...............................................................13 CTRL+Space – kódsegéd...........................................................................................................2 csomag, létrehozása...................................................................................................................1 csomagok, Java..........................................................................................................................3 Eclipse böngésző osztály nézet..................................................................................................2 Eclipse felhasználói felület..........................................................................................................2 Eclipse kódsegéd (CTRL+Space)...............................................................................................2 Eclipse vázlatkönyv (scrapbook).................................................................................................3 egységteszt.................................................................................................................................4 először-tesztelés fejlesztés.........................................................................................................6 equals metódus karaktersorozatokhoz (vs. == operátor).........................................................14 Export to (JAR) file, Eclipse varázsló........................................................................................16 extends kulcsszó.........................................................................................................................4 extrém programozás...................................................................................................................4 Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
9/ 44
Eclipse és Java teljesen kezdőknek Segédanyag Feladat (Task) nézet, TODO megjegyzések...............................................................................7 for each ciklus...........................................................................................................................14 Forrás mappa, új létrehozása.....................................................................................................4 Generate Getters and Setters varázsló......................................................................................2 Generics, Java......................................................................................................................9, 10 get() metódus, ArrayList.............................................................................................................9 getAvailableBooks() metódus ..................................................................................................15 getBooksForPerson() metódus.................................................................................................14 getUnavailableBooks() metódus...............................................................................................15 Gyorsjavítás (Quick fix, CTRL+1), “először tesztelés” fejlesztésben.........................................7 Gyorsjavítás (Quick fix, CTRL+1)...............................................................................................4 if then utasítás ..........................................................................................................................12 indexOf() metódus, ArrayList......................................................................................................9 instanceof operátor...................................................................................................................10 JAR archívum fájl......................................................................................................................16 java -jar parancs........................................................................................................................16 JUnit nézet..................................................................................................................................5 JUnit teszt függvénytár................................................................................................................4 JUnit Test osztály, új létrehozása................................................................................................4 JUnit teszt, futtatás......................................................................................................................5 JUnit, aktuális összehasonlítása az elvárttal..............................................................................5 kapcsos zárójel, kiemelés az Eclipse környezetben.................................................................13 kifejezések...................................................................................................................................3 kis- és nagybetűk a Java nyelvben.............................................................................................1 kódsegéd (code assist, CTRL+Space).......................................................................................2 kódsegéd sablon.........................................................................................................................2 konstruktor (Java).......................................................................................................................1 Könyvtár alkalmazás...................................................................................................................1 lekérdező (get) metódusok ........................................................................................................2 main() metódus.........................................................................................................................16 megjegyzések: belső (//).............................................................................................................1 metódusok (osztály)....................................................................................................................2 mezők (osztály)...........................................................................................................................1 munkaasztal (workbench), Eclipse.............................................................................................2 munkaasztal területek.................................................................................................................2 munkaterület (Eclipse)................................................................................................................1 MyLibrary osztály......................................................................................................................10 mylibrary.jar fájl.........................................................................................................................16 new kulcsszó...............................................................................................................................3 nézet (Eclipse).............................................................................................................................2 NullPointerException.................................................................................................................14 Object osztály, Java....................................................................................................................3 objektumfüggőség.......................................................................................................................8 objektumok egyenlősége, Java ..................................................................................................8 osztály (Java)..............................................................................................................................1 összeépítési útvonal....................................................................................................................4 Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
10/ 44
Eclipse és Java teljesen kezdőknek Segédanyag Person osztály.............................................................................................................................1 perspektíva (Eclipse)...................................................................................................................2 printStatus() metódus................................................................................................................16 private hozzáférési módosító......................................................................................................8 projekt, létrehozása.....................................................................................................................1 protected hozzáférési módosító................................................................................................10 public hozzáférési módosító.......................................................................................................8 Refactor menü, Eclipse.............................................................................................................11 removeBook() metódus.............................................................................................................11 removePerson() metódus..........................................................................................................11 scrapbook, Eclipse......................................................................................................................3 setup() metódus, JUnit teszt osztály.........................................................................................11 statikus metódusok.....................................................................................................................5 System.out.println() parancs.......................................................................................................3 szülőosztály.................................................................................................................................4 testBook() metódus.....................................................................................................................7 testCheckOut() metódus ..........................................................................................................12 testGetAvailableBooks() metódus.............................................................................................15 testGetBooksForPerson() metódus .........................................................................................13 testGetUnavailableBooks() metódus........................................................................................15 tesztmetódus, létrehozás ...........................................................................................................5 tesztmetódus, meghatározás .....................................................................................................6 tesztkészlet, JUnit.......................................................................................................................8 teszt-vezérelt fejlesztés (TDD)....................................................................................................6 this kulcsszó............................................................................................................................2, 6 TODO megjegyzés, feladatlista..................................................................................................7 toString() metódus ......................................................................................................................6 újradefiniálás, metódus ..............................................................................................................6 utasítások....................................................................................................................................2 üdvözlő képernyő (Eclipse).........................................................................................................1 vázlatkönyv, Eclipse....................................................................................................................3 vázlatkönyv, importálások beállítása gomb.................................................................................3 végrehajtás gomb, Eclipse vázlatkönyv......................................................................................3 végrehajtható JAR fájl...............................................................................................................16 vizsgá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
Eclipse és Java teljesen kezdőknek Segé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ásprogramozá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), Az a program, amely a Java programokat futtatja egy adott platformon. A más néven Java futási Java forráskódot .class fájlokra fordítja le. Ezek a JVM által használt környezet (JRE) 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
Eclipse és Java teljesen kezdőknek Segé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, A metódus deklarációjában szereplő változók listáját nevezzük metódus paraméterek 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
Eclipse és Java teljesen kezdőknek Segé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:
.<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 Java osztályok és natív programok készlete, amelyet az Eclipse Toolkit) 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
Eclipse és Java teljesen kezdőknek Segédanyag Kifejezés
Rövid meghatározás
Vázlatkönyv (Scrapbook) Egy terület az Eclipse környezetben, ahol Java kódrészleteket lehet oldal 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ások Ha 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/cgibin/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
Eclipse és Java teljesen kezdőknek Segé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észletek A 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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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ódus Megjegyzé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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ályhoz Megjegyzé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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 list = new ArrayList(); 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
Eclipse és Java teljesen kezdőknek Segé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 books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } }
Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
24/ 44
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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 books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; } public ArrayList getBooks() { return books; } public ArrayList getPeople() { return people; }
Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
26/ 44
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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 books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; } Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
29/ 44
Eclipse és Java teljesen kezdőknek Segédanyag
public ArrayList getBooks() { return books; } public ArrayList 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
Eclipse és Java teljesen kezdőknek Segédanyag
}
13. lecke – A checkOut Method folytatása package org.totalbeginner.tutorial; import java.util.ArrayList; public class MyLibrary { String name; ArrayList books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; } public ArrayList getBooks() { return books; } public ArrayList 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
Eclipse és Java teljesen kezdőknek Segé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 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
Eclipse és Java teljesen kezdőknek Segédanyag
ArrayList books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; } public ArrayList getBooks() { return books; } public ArrayList 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
Eclipse és Java teljesen kezdőknek Segédanyag
else { return false; } } public boolean checkIn(Book b1) { if (b1.getPerson() != null) { b1.setPerson(null); return true; } else { return false; } } public ArrayList getBooksForPerson(Person p1) { ArrayList result = new ArrayList(); 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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segé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
Eclipse és Java teljesen kezdőknek Segédanyag
ml.addPerson(p2); } public void testGetBooksForPerson() { setup(); addItems(); assertEquals(0, ml.getBooksForPerson(p1).size()); ml.checkOut(b1, p1); ArrayList 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 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
Eclipse és Java teljesen kezdőknek Segédanyag
ArrayList 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 books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; }
Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
38/ 44
Eclipse és Java teljesen kezdőknek Segédanyag
public ArrayList getBooks() { return books; } public ArrayList 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
Eclipse és Java teljesen kezdőknek Segédanyag
} } public ArrayList getBooksForPerson(Person p1) { ArrayList result = new ArrayList(); for (Book aBook : this.getBooks()) { if ((aBook.getPerson() != null) && (aBook.getPerson().getName() .equals(p1.getName()))) { result.add(aBook); } } return result; } public ArrayList getAvailableBooks() { ArrayList result = new ArrayList(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() == null) { result.add(aBook); } } return result; } public ArrayList getUnavailableBooks() { ArrayList result = new ArrayList(); 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
Eclipse és Java teljesen kezdőknek Segé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 books; ArrayList people; public MyLibrary(String name) { this.name = name; books = new ArrayList(); people = new ArrayList(); } public String getName() { return name; } public ArrayList getBooks() { return books; } public ArrayList 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
Eclipse és Java teljesen kezdőknek Segé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 getBooksForPerson(Person p1) { ArrayList result = new ArrayList(); for (Book aBook : this.getBooks()) { if ((aBook.getPerson() != null) && (aBook.getPerson().getName() .equals(p1.getName()))) { result.add(aBook); } } return result; } public ArrayList getAvailableBooks() { Copyright © 2007 Mark Dexter. Licensed under the Educational Community License version 1.0.
42/ 44
Eclipse és Java teljesen kezdőknek Segédanyag
ArrayList result = new ArrayList(); for (Book aBook : this.getBooks()) { if (aBook.getPerson() == null) { result.add(aBook); } } return result; } public ArrayList getUnavailableBooks() { ArrayList result = new ArrayList(); 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
Eclipse és Java teljesen kezdőknek Segé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