Kasza Róbert informatika oldala



Tananyag

Java

Java királynők mintafeladat

Java kéktúra mintafeladat

Java szakképző mintafeladat 2.

Java szakképző mintafeladat 2. megoldása

Java open dialog ablak

Java egyszerű feladatok

Java Timer használata

Java képnéző

Java Game 2019

Java Adatbázis elérése

Programozás tanmenet

Linux

Linux szerver dolgozat 1.

Linux szerver és kliens beállítása VirtualBox-on

Linux DHCP

Linux DNS szerver beállítása

Linux szerver proftp

PPTP VPN telepítése

Linux SAMBA telepítése és beállítása

Linux WEBMIN telepítése és beállítása

Windows szerver

Rendszerfelügyelet rendszergazdáknak

Windows szerver dolgozat 1.

Windows szerver dolgozat 3.

Active directory videók

Webszerkesztés

Webszerkesztés dolgozat

Webszerkesztés gyakorlati feladat

Webszerkesztés Érettségi Mintafeladat (homoktövis)

OKJ Webszerkesztés Mintafeladat (Pitagorasz)

Juhos László Javascript animációja

Az animáció működése

Java szakképző mintafeladat2 megoldása

Létrehozunk egy új Java projektet, de nem pipáljuk be a main metódust. A projekt Haromszogek névre hallgat. (a képeken néha eltérnek a jelölések)
A létrehozott projekthez új jFrameForm osztályt adunk jobb egérgombbal, majd futtatjuk. Futtatásnál az IDE megkérdezi mi legyen a main metódus. Válasszuk a main metódusnak a jFormot. (nem is nagyon tudunk mást...)
Így már lett egy üres Formunk (programablakunk). A Formon a feladat mintájának megfelelő elrendezésben, el kell helyezned 4 Labelt, 1 gombot, 2 TextArea-t, és egy Listát az AWT komponensek közül. Majd a Labellek text mezőjét szerkesztve feliratozod őket. A dizájnnal tulajdonképpen kész is vagy. (Az eredeti kép szerintem C #-os fejlesztő környezetben készült, a te kinézeted egy picit más lesz, ha Java-ban dolgozol.)

Létrehozzuk a DHaromszög osztályt, mint ahogyan azt a feladat kéri. A legegyszerűbb a projekt default csomagja felett jobb egérgombbal kattintani, hasonlóképpen mint a jFrameFormnál, és új osztályt hozni létre.

Létrehozzuk a "private" változókat, a háromszög oldalainak:

public class DHaromszog {
private double aOldal;
private double bOldal;
private double cOldal;
}

Létrehozzuk a gettereket settereket: Egy üres programkódsor felett bal egérgombot nyomunk. Kiválasztjuk az Insert Code menüpontot, azon belül a Getter-t, illetve később a Setter-t, és létrehozzuk ezeket az a, b és c oldalak értékeinek lekérdezéséhez, illetve felülírásához, mivel a private típusú változókat nem tudnánk az osztálypéldányunkban elérni, viszont a getterekkel és setterekkel értéküket változtatni tudjuk.

A konstruktort is érdemes hasonlóképpen létrehozni, itt arra ügyeljünk, hogy van két bemenő paramétere: egy String, és egy szám. A Szövegben ugye a háromszög három oldala van benne vesszővel elválasztva, a szám meg a háromszög sorszámát mondja meg a beolvasott fájlban. (ezzel most még nem foglalkozunk.) Létrehozunk egy ideiglenes változót amiben már kicseréltük a vesszőket pontokra, majd szétvágjuk a szöveget a split sztringfüggvénnyel a szóközöknél. A split tömbnek annyi eleme lesz, ahány vágás történt. Mivel megbízhatóak szerkezet szempontjából a bemeneti adatok, így kettő szóköznél, három elem kerül a split nevű tömbünkbe. pl: "1,2 2,3 3,2" ---> "1.2 2.3 3.2"---->1.2->2.3->3.2
Ez után már át is adhatjuk az oldalak értékeit a privat változóinknak, ügyelve arra, hogy a Double osztály parseDouble metódusával a típusa is átalakuljon szöveg típusból tört számmá! (ez hasonlóan működik mint az Integer osztály parseInt metódusa) A konstruktorunk egyenlőre kész, de későbbiekben még visszatérünk hozzá!

A feladat kéri, hogy vizsgáljuk meg az adatokat a saját osztályfüggvényeinkkel. Ehhez hozunk létre hármat: EllNovekvosorrend, EllMegszerkeszthető, EllDerekszogu. Az első azt vizsgálja, hogy az oldalak növekvő sorrendben vannak-e, tehát egyszerre kell fennállni az a<b és a b<c tulajdonságnak. Ezt vizsgálja az if feltétele: (a<b && b<c)
A visszatérési érték igaz vagy hamis a tulajdonság meglététől függően. Hasonló szerkezetű a másik két függvény is, a feladatnak megfelelően.

Visszatérünk a konstruktorra. A hibát abban az esetben dobjuk, ha valamelyik oldalakat vizsgáló függvény nem igaz. Ezért tettem mindegyik elé egy felkiáltójelet, ami a tagadást jelöli. Ebben az esetben saját kivételt kell dobnunk. Ezt a throw parancscsal érhetjük el. Az egyszerűség miatt az általános Error lett a hiba típusa. A hibaüzenetünk szövege fontos, mert ez fog a későbbiekben megjelenni a hibaüzeneteknél a szövegdobozban. (TextArea1)

A kivételt dobó osztályunkat a főprogramból a következő kóddal tesztelhetjük. a tesztelést érdemes a jButton eseményével vezérelni, mivel a későbbiekben is ezt használjuk majd az adatok betöltésére a fájlból.

folyt. köv.

A folytatásban egy kicsit átírjuk az eddigieket: A gomb eseményéből kivesszük a teszteléshez használt kódot, helyette itt csak egy opendialogot dobunk fel. Erre tesszük rá a Fájlválasztó komponenst. Az eltűntetésért, a fájlbeolvasásért, illetve a példányosításokért már a FileChooser1ActionsPerformed eseménye lesz a felelős. Beolvassuk a sorokat a fájlunkból a FileReader és a Scanner osztály használatával. Segítségül vesszük a Scanner osztály hasnext(), illetve nextline() metódusát is. Az aktuális sort amit a sorszam változó értéke tartalmaz, átadom a DHaromszog példányomnak amit dh-nak nevezek a programban. DHaromszog dh=new DHaromszog(be.nextLine(),i) Az i értéke az aktuális sor számát mutatja, minden beolvasás után léptetjük. A haromszögpéldányunkat hozzáadjuk a haromszoglistához melynek névköre osztályszintű, így más eseményeknél is hivatkozhatunk rá. A feladat kéri a hibakezelést, egyrészt IOException a fájlunk beolvasásához kell, másrészt az Error hibával az osztálypéldányom hibás oldalait kezelem le, így én kettős try-catch metódussal oldottam meg az érthetőség kedvéért. Természetesen másféleképpen is megoldható!

Ez után szintén még a FileChooser1ActionsPerformed eseményénél hozzáadjuk a Listához a "hibátlan" háromszögek adatait. Egy for ciklussal végigjárjuk a listát, haromszoglista.get(i).-vel kivesszük a háromszög adatait, és üres szóközök segítségével összerakjuk a megjeleníteni kívánt adatokat. Az awt-ből választott lista komponsenshez adjuk hozzá a háromszögeink adatait tartalmazó sorokat.

for (int i = 0; i < haromszoglista.size(); i++) {
list1.add((i + 1)+". sor: "+haromszoglista.get(i).getA()+" "+haromszoglista.get(i).getB()+" "+ haromszoglista.get(i).getC()+"\n");
}

Az utolsó lépésben létrehozunk a Listához egy egér kattintás eseményt. Ha ez megtörténik, lekérjük a kattintott listaelem indexét, és az azonos sorszámú haromszoglista elem kerulet() illetve terulet() függvényét meghívva a jTextArea3-ra kiírjuk a kiválasztott háromszög kerületét és területét, megfelelően megformázva.

Természetesen megírjuk hozzá a DHaromszog osztályba a kerület és terület függvényeket is.

A haromszog.txt


Az utolsó módosítás: 2023 September 19 13:49:18.