Programozás I ZH, Név:... A. csoport EHA: pont Gyakorlatvezető:...

Hasonló dokumentumok
Programozási nyelvek II. JAVA

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozás 2. gyakorlat

RESIDENT EVIL CODENAME: NIK

Objektum elvu alkalmaza sok fejleszte se

3. Osztályok II. Programozás II

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Szoftvertechnolo gia gyakorlat

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

7. K: JAVA alapok Konzultáció

Programozási alapismeretek 4.

Levelezős Programozás beugró (Java) december 1.

BME MOGI Gépészeti informatika 8.

Tájékoztató. Használható segédeszköz: -

Osztályok. 4. gyakorlat

C++ programozási nyelv

Java gyakorlat feladatai e s megolda sai ( )

Tájékoztató. Használható segédeszköz: -

Globális operátor overloading

Programozási technológia I. 1. beadandó feladatsor

Bevezetés a Python programozási nyelvbe

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási nyelvek II. JAVA

OOP. Alapelvek Elek Tibor

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

C++ programozási nyelv Konstruktorok-destruktorok

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

A következő táblázat tartalmazza az egyes fajták jellemzőit.

és az instanceof operátor

Programozási nyelvek Java

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Gyakorlati vizsgatevékenység A

Programozási nyelvek Java

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

BME MOGI Gépészeti informatika 7.

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Dokumentáció. 1. Beadandó feladat

Programozási nyelvek Java

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

4. Gy: JAVA osztályok

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

BASH script programozás II. Vezérlési szerkezetek

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Programozás I. Első ZH segédlet

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Objektumorientált programozás C# nyelven

8. gyakorlat Pointerek, dinamikus memóriakezelés

Már megismert fogalmak áttekintése

INFORMATIKAI ALAPISMERETEK

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

OOP #14 (referencia-elv)

Java és web programozás

A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján.

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Kazsik Ádám Programozás Technológia 1.

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Smart Pointer koncepciója

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek Java

JAVA PROGRAMOZÁS 2.ELŐADÁS

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Gyakorló feladatok az 1. nagy zárthelyire

Web-technológia PHP-vel

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

Algoritmusok, adatszerkezetek, objektumok

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

ELTE SAP Excellence Center Oktatóanyag 1

Rendszerterv. Makoviczki András. Neptun: JJ26AR

AWK programozás, minták, vezérlési szerkezetek

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Informatika terméktervezőknek

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. Második ZH segédlet

Java programozási nyelv 5. rész Osztályok III.

500. AA Megoldó Alfréd AA 500.

Java és web programozás

Programozási nyelvek II.: JAVA

500. CC Megoldó Alfréd CC 500.

Hozd létre az atestat_2011 adatbázisban a diakok táblát a következő szerkezettel: 1. Töltsd fel az adattáblát legkevesebb 5 bejegyzéssel (rekorddal).

Objektumorientált programozás C# nyelven

Eseményvezérelt és objektumorientált programozás

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás I gyakorlat

II. labor Az alábbi osztálydiagram (2.10 ábra) alapján hozzuk létre a diagramban feltüntetett csomagokat, interfészt és osztályokat.

Programozás C++ -ban 2007/7

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Átírás:

A. csoport EHA:... 1. Készíts egy Hallgato osztályt! Tárold egy hallgató nevét, EHA kódját, valamint egy valós értékben a hallgató szorgosságát (ez 0-1 közötti érték lehet, beállításkor ellenőrizd le, ha 0-nál kisebbet adnak meg 0 legyen az értéke, ha 1-nél nagyobbat akkor pedig 1). Ezen felül egy String halmazban tárold le a hallgató kedvenc tantárgyait. Egy darab paraméteres konstruktora legyen, mely minden adattagot paraméterként megkap. Minden adattag privát láthatóságú, ezek megfelelő publikus metódusok segítségével legyenek lekérdezhetőek és beállíthatóak. Legyen egy iskedvenctantargy metódusa, mely egy tantárgy nevét várja paraméterül, és logikai értékkel tér vissza annak megfelelően, hogy a hallgató kedvencei között van-e az adott tantárgy. Készíts el egy ErdektelensegbeFulladt nevű kivétel osztályt, mely rendelkezzen paraméter nélküli és paraméteres konstruktorral is! 2. Készíts egy Kurzus nevű absztrakt osztályt! Privát adattagokban tárold le a kurzus nevét, maximális létszámát, valamint egy valós értékben az oktató előadóképességét (0-1 közötti érték, ezt is ellenőrizd le beállításkor). Emellett tárold le egy listában a jelentkezett hallgatókat. Készíts paraméteres konstruktort és getter/setter metódusokat az osztályhoz! A fentiek mellett az osztály rendelkezzen egy absztrakt kurzustartas metódussal is, mely ErdektelensegbeFulladt típusú kivételt dobhat. (4 pont) 3. Örököltess a fenti osztályból egy Eloadas és egy Gyakorlat osztályt! Készíts paraméteres konstruktort hozzájuk, mely az adattagokat várja paraméterül. Előadásra nem kötelező járni, ezért csak a hallgató szorgosságán múlik, részt vesz-e rajta. Ezért az előadás esetében az alábbi módon valósítsd meg a kurzustartas metódust: végig kell vizsgálni az egyes hallgatókat. Amennyiben egy hallgató egyik kedvenc tantárgyáról van szó, részt vesz a kurzuson (marad a listában). Ellenkező esetben a hallgató szorgosságának és a kurzust tartó oktató előadóképességének az átlagát kell venned. Generálj egy véletlen számot 1-10 között. Amennyiben ez nagyobb-egyenlő mint a kapott átlag tízszerese, a hallgató marad a kurzuson. Ellenkező esetben ki kell törölnöd a listából a hallgatót. Amennyiben a művelet végén a hallgatók létszáma kevesebb, mint a kurzust felvett hallgatók számának 10%-a, dobj ErdektelensegbeFulladt típusú kivételt. Gyakorlatokra kötelező járni, ezért a metódus kicsit másképp működik. Ha a hallgató egyik kedvenc tantárgyáról van szó, továbbra is részt vesz a kurzuson. Ellenkező esetben, a gyakorlat kötelezősége miatt, a hallgató szorgossága minimum 0.6 lesz (ha kevesebb a szorgossága, ennyivel kell számolnod). Itt is vedd a szorgosság és az előadóképesség átlagát. Generálj egy véletlen számot 1-10 között. Amennyiben ez nagyobb-egyenlő mint a kapott átlag tízszerese, a hallgató marad a kurzuson. Ellenkező esetben ki kell törölnöd a listából a hallgatót. Ha a bent maradt hallgatók száma kevesebb, mint a kurzust felvett hallgatók 20%-a, dobj ErdektelensegbeFulladt típusú kivételt. Ellenkező esetben vizsgáld meg a bent maradt hallgatók valódi szorgosságát. Menj végig az egyes hallgatókon, és ha a szorgosságuk valamint az oktató előadóképességének átlaga kisebb, mint 0.5, az adott hallgató nem fog figyelni a gyakorlaton. Amennyiben a bent maradt hallgatók legalább fele nem figyel, szintén dobj ErdektelensegbeFulladt típusú kivételt. 4. Hozz létre egy futtatható osztályt! Olvasd be a hallgatok.csv fájlból az egyes hallgatók adatait. A fájlban lévő adatok pontosvesszővel vannak elválasztva, pl: Kiss Eugén;KIEXXXX.SZE;Kalkulus 1;Programozás 1 A sorok végén bármennyi kedvenc tantárgy szerepelhet. Hozz létre hallgatókat a fájl sorai alapján, és tárold őket egy listában. Hozz létre egy tetszőleges gyakorlat (20 fős) és előadás (300 fős) objektumot. Add át nekik a hallgatók listáját, és hívd meg mindkettő kurzustartas metódusát! Figyelj a kivételkezelésre! A véletlen szám generálásához használhatod a java.util.random osztályt, és annak nextint metódusát! Az összes osztályt helyezzük a kurzusok csomagba!

B. csoport EHA:... Az ősi japán legenda szerint a rókatündér egy elátkozott lény, akibe ha beleszeret egy férfi, az elhalálozik. De az átok megtörhető, ha a rókatündér és választottja között a szerelem igaz. 1. Készíts egy Ember interfészt, melynek 1 metódusa van: igazszerelme(), amely egy Ember típusú paramétert vár, és logikai értékkel tér vissza. Hozd létre a NemIgazSzerelemException kivétel osztályt, amely az Exception osztályból származik, és van egy paraméteres konstruktora (Stringet vár). (4 pont) 2. Készítsd el a Férfi osztályt, amely implementálja az Ember interfészt. Egy férfiról tároljuk a nevét, illetve a "szerelemkódját", amely egy pozitív egész szám. Ezekhez legyenek getter/setter metódusok. Továbbá legyen megvalósítva az igazszerelme() metódus, az alábbiak szerint: amennyiben a paraméterben kapott Ember objektumnak ugyanaz a "szerelemkódja", mint a sajátja, akkor térjen vissza igazzal, különben hamissal. Valósítsd meg a tostring() metódust is! Készítsd el a Rókatündér osztályt, amely szintén implementálja az Ember interfészt. Egy rókatündérről tároljuk el a "szerelemkódját", áldozatai számát (kezdetben 0), valamint hogy elkeseredett-e (logikai). Az igazszerelme függvény adjon vissza igaz értéket, amennyiben a rókatündér elkeseredett, vagy pedig ha a szerelemkódja megegyezik a paraméterben kapott Ember szerelemkódjával. Legyen egy metódusa, amely eggyel növeli az áldozatok számát (aldozatnovel()), valamint, ha az áldozatok száma meghaladja a 10-et, állítsa igazra az elkeseredettséget jelző változót. Készíts egy paraméter nélküli konstruktort, továbbá az osztály legyen String-gé alakítható, valamint készíts getter metódust a szerelemkódhoz. 3. Keltsd életre az ősi japán legendát. Készíts egy Legenda osztályt, amelyben tárolj egy Rókatündér objektumot, valamint egy listát, amelyben az udvarló férfiakat tárolod. Ezeket az adatokat a konstruktorból inicializáld. Ezeken kívül legyen még egy igazszerelem nevet viselő Férfi objektum, amelyet null-ra inicializálj! Készíts egy tortenet() metódust, amely végighalad az udvarlók listáján, és 70% eséllyel meghívja a udvarol() metódust, amelynek egy paramétere van, a férfi, aki udvarolni próbál a rókatündérnek. Ez a metódus NemIgazSzerelemException-t dobhat! Az udvarol metódus vizsgálja meg, hogy a rókatündérnek az udvarló igaz szerelme-e, illetve, hogy az udvarlónak igaz szerelme-e a rókatündér. Amennyiben mindkét állítás teljesül, úgy állítsd be a jelenlegi férfira az igazszerelme változó, és lépj ki a függvényből. Amennyiben az udvarlónak nem igaz szerelme a rókatündér, dobj egy NemIgazSzerelemException kivételt. A kivételt kezelő kódrészben töröld az adott Férfi objektumot a listából, valamint hívd meg a rókatündér aldozatnovel() metódusát is. Miután vége a ciklusnak, írd ki a "tortenet.txt" fájlba a rókatündér igaz szerelmét, amennyiben van igaz szerelme. Amennyiben nincs, írd ki, hogy "A rókatündér nem talált igaz szerelemre." 4. Hozz létre egy main metódust a Legenda osztályban, amely az "udvarlok.txt" fájlból olvassa be az udvarlók adatait egy listába. Az udvarlók kettőspont karakterrel vannak elválasztva, pl.: Kiss Eugén:2847278 Ady Endre:202020 M. Tóth Károly:101516 Ezen kívül hozz létre egy Rókatündér objektumot is, majd keltsd életre a legendát (egy Legenda objektum létrehozásával, amelynek paraméterben átadod a rókatündért, valamint az udvarlókat tartalmazó listát) a tortenet() metódus meghívásával. Figyelj a kivételkezelésre! A véletlen szám generálásához használhatod a java.util.random osztályt, és annak nextint metódusát! Az összes osztályt helyezzük a japanlegendak.rokatunder csomagba!

C. csoport EHA:... 1. Készíts egy Jatek osztályt! Tárold egy a játék nevét, nehézségi szintjét (0-10 közötti egész szám, beállításkor ezt ellenőrizd le. Ha 0-nál kisebb értéket kap, 0 legyen, ha 10-nél nagyobbat, 10 legyen) Továbbá tárold le azt, hogy a játék milyen típusú eszközön játszható (szövegként)! Hozz létre az adattagoknak megfelelően egy paraméteres konstruktort! Az adattagok privát láthatóságúak legyenek, getter/setter metódusokkal. Hozz létre egy EltortKontroller és egy NemTamogatottJatek nevű kivétel osztályt, melyek rendelkezzenek egy default és egy paraméteres konstruktorral is! (4 pont) 2. Hozz létre egy Konzol nevű, absztrakt osztályt! Tárold le a konzol nevét, valamint legyen egy absztrakt jatek metódusa, mely egy Jatek, valamint egy egész szám (skill) típusú paramétert vár, EltortKontroller és nemtamogatottjatek típusú kivételeket dobhat. Az adattag privát legyen, megfelelő publikus metódusok segítségével azonban legyen lekérdezhető és módosítható! Készíts egy, az adattagnak megfelelő paraméteres konstruktort is! Készíts egy Jatekos nevű osztályt is! Tárold el a játékos nevét, skilljét (0-10 közötti egész szám, beállításkor ezt is ellenőrizd le). Tárolj továbbá egy darab Konzolt és egy Jatek listát is a játékosnál! Készíts megfelelő paraméteres konstruktort, valamint getter/setter metódusokat. Legyen egy jatszik metódusa, amely végigmegy a játékos által birtokolt játékokon és mindegyikkel megpróbál játszani (mindegyikre meghívja a birtokolt Konzol jatek metódusát). Amennyiben sikeres a játék (nem dobott kivételt), a játékos skill-je növekedjen eggyel. Ellenkező esetben írd ki az alapértelmezett hibakimenetre, hogy melyik játékos mely játékot nem tudta végigjátszani. 3. Származtass a Konzol osztályból egy XBOX és egy Nintendo osztályt is! Mindkettő egy default konstruktorral rendelkezzen, melyek beállítják a konzol nevét ( XBOX One vagy Nintendo Wii )! XBOX esetében a jatek metódus megvalósítása a következő. Megkapja paraméterben a játékot, valamint a játékos skilljét. Azonban csak azokkal a játékokkal lehet játszani, melyek az adott konzolhoz valóak. Ha egy játék nem ehhez a konzolhoz való, dobj NemTamogatottJatek típusú kivételt! Ellenkező esetben vizsgáld le, hogy a játékos skillje hogy alakul az aktuális játék nehézségéhez. XBOX esetén hardcore játékosokról van szó, olyan játékot képes végigjátszani melynek nehézsége maximum 2-vel nehezebb, mint a játékos aktuális skillje. Amennyiben nem tudja végigjátszani a játékot, dobj EltortKontroller típusú kivételt! Nintendo esetében alkalmi játékosokról van szó. A játszik metódus az XBOX-hoz hasonlóan működjön, azonban a játékos csak olyan játékokat tud végigjátszani, melyek nehézségi szintje maximum a játékos skilljével egyezik meg. 4. Hozz létre egy futtatható osztályt! Olvasd be a jatekok.csv fájlból az egyes játékok adatait! A játékok adatai pontosvesszővel vannak elválasztva, pl: Grand Theft Auto V;6;XBOX One Super Monkey Ball: Banana Blitz;2;Nintendo Wii Hozz létre játékokat az egyes sorok alapján, és tárold őket egy listában. Ezek után hozz létre két tetszőleges játékos objektumot, az egyiknek Nintendo, a másiknak XBOX konzolja legyen. Mindkettőnek hívd meg a jatszik metódusát! Figyelj a kivételkezelésre! Az összes osztályt helyezzük a konzolok csomagba!

D. csoport EHA:... 1. Írj egy interfészt KiralyiTanacsTag néven. Minden királyi tanács tagnak legalább két dolgot kell tudnia: tanácsot adni, és összeesküdni. Ezeket kösd ki az interfészben. A tanacsotad metódus egy Tanacsado objektumot adjon vissza, és ne várjon paramétert. Az osszeeskuves metódus ne adjon vissza semmit, egy Tanacsado objektumot várjon paraméterül, és dobhasson TulBecsuletes kivételt. Hozd létre az említett saját TulBecsuletes kivételt egy új osztályban, ez mindig a Az egyik tanácstag túl becsületes üzenetet adja. (5 pont) 2. Írd meg a Tanacsado osztályt, amely megvalósítja az imént megírt interfészt. Minden tanácsadó rendelkezzen a következőkkel: egy privát igaz/hamis alattomos érték, és egy privát osszeeskuvesek lista, ami Tanacsado objektumokat tárol, megmondja, kik ellen esküdött össze a tanácsadó. Legyen egy konstruktora is, amely az alattomosságot paramterben várja, a listát pedig egyszerűen üres listára inicializálja. Az osszeeskuvesek listának írj getter/setter metódust is. Valósítsd meg az interfész metódusait is a következőképpen: Az osszeeskuves metódus ellenőrizze le, hogy az aktuális tanácsadó alattomos-e. Ha nem az, akkor dobjon TulBecsuletes kivételt, ezt kapja el, és írja ki az üzenetét a default hibakimenetre. Ha alattomos, akkor adja hozzá az osszeeskuvesek a saját osszeeskuvesek listájához a paraméterül kapott másik tanácsadót. A tanacsotad metódusban a tanácsadó 30% eséllyel úgy dönthet, hogy véletlenszerűen választ egy tanácsadót a saját osszeeskuvesek listájából, és átáll az ő oldalára. Tehát ilyenkor törli őt a saját listájából, és visszaadja őt eredményként (Ezzel feladva a többi tanácsadót, aki ugyanúgy összeesküdött ellene.). A maradék 70%-ban, vagy ha a listája eleve üres, akkor egy új, eddig nem létező Tanacsado objektumot ad vissza, amely alattomosra van beállítva. (Ilyenkor tehát csak kitalál valakit, aki nem is létezik.) 3. Készíts egy Kiraly osztályt is, aki egy privát KiralyiTanacs listával rendelkezik, ebben is Tanacsado objektumok tárolódnak. Ennek a listának is legyen getter/settere. Legyen egy ules metódusa, ami nem vár paramétert, és nem is ad vissza semmit. Itt a király az összes tanácsadójától sorban tanácsot kér azok tanacsotad metódusát meghívva. Minden ilyen tanács után a király ellenőrzi, hogy van-e az ebből visszakapott objektumnak megfelelő tanácstagja. Ha van, akkor az összes tanácstagnak végig kell nézni az osszeeskuvesek listáját, és akiké ezt a tanácstagot (tehát a tanács által visszaadottat) tartalmazza, azt rögtön kiteszi a tanácsából (azaz törli a király KiralyiTanacs listájából). Ezután, még szintén az ules metódusban a tanács összes maradék tagjára hívjuk meg az osszeeskuves metódust, egy másik, véletlenszerűen választott tagra a KiralyiTanacs listában maradtakból. Ha már csak egyetlen tagja van a tanácsnak, akkor ne is próbáljon összeesküdni. 4. Írj egy futtatható osztályt is, amely a main függvényében hozzon létre két új királyt, legyen két új Tanácsadót tartalmazó listája, és olvasson be egy input.txt fájlt. Az input.txt felépítése a következő: az első sor tartalmazza, hogy összesen hány tanácsadót ad meg a fájl, az összes további sor pedig tartalmazza először is a tanácsadóhoz tartozó király sorszámát (1 vagy 2), ez fogja eldönteni, hogy melyik király tanácsába tartozik, utána egy szóközzel elválasztva pedig az alattomos vagy nem alattomos szavakat. Tehát ezek nincsenek idézőjelek között, pontosan így szerepelnek. Ez fogja eldönteni, hogy a tanácsadó alattomos-e. Olvasd be ezeket, és hozz létre ennek megfelelően új tanácsadókat, és add hozzá a megfelelő királyhoz tartozó listához.

A listát ne felejtsd el átadni a királynak, amikor elkészült. Hívd meg az első király ülés metódusát háromszor. (5 pont) Példa input.txt: 4 1 alattomos 2 nem alattomos 1 alattomos 1 nem alattomos