Objektum Orientált Programozás 5. JAVA osztályok 21/1B IT MAN B IT v: 2016.03.09 MAN
Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja a nyugdíj korhatár tárolására, értéke kezdetben legyen 65. - legyen konstruktora, amelyben paraméterként kapott értékekkel inicializálja az adattagokat - legyen metódusa, amely visszaadja hány éve van még nyugdíjig - legyen metódusa, amely string-be összefűzve adja vissza az Alkalmazott adatait, hozzáfűzve a nyugdíjig hátralévő éveinek számát is - legyen metódusa, amely paraméterként kapott értékre állítja be a korhatárt - legyen metódusa, amely paraméterként kapott két Alkalmazott közül a nagyobb fizetésűt adja vissza. Készítsen egy futtatható osztályt, amely beolvas n számú alkalmazottat egy tömbbe. Kiírja az alkalmazottak adatait, majd megváltoztatja a nyugdíj korhatárt és újra kiírja az alkalmazottak adatait. Majd kiírja a legnagyobb fizetésű alkalmazott adatait. 21/2 B IT MAN
Alkalmazott osztály, adattagok: név, kor, fizetes Konstruktor: 3 értékkel inicializál Metódus: Hátra van nyugdíjig Alkalmazott.java public class Alkalmazott { private String nev; private int kor; private int fizetes; private static int Nyugdij= 65; public Alkalmazott(String nev, int kor, int fizetes) { this.nev = nev; this.kor = kor; this.fizetes = fizetes; public int HatraVan() { return Nyugdij-kor; 21/3 B IT MAN
Metódus: Adatok (név+kor+fizetés+hátra van nyugdíjig Metódus: nyugdíj beállítás Metódus: Nagyobb fizetésű alkalmazott (2 bemenő alkalmazott) Alkalmazott.java public String Adatok() { return "Név: "+nev+" Kor: "+kor+"fizetes: "+fizetes+ " Nyugdijig még "+HatraVan()+" év van hátra"; static void SetNyugdij(int NyugdijBe){ Nyugdij = NyugdijBe; static boolean NagyobbFizetes(Alkalmazott A1, Alkalmazott A2){ return A1.fizetes > A2.fizetes; 21/4 B IT MAN
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás Alkalmazottak.java import java.util.scanner; public class Alkalmazottak { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Alkalmazottak száma: "); String s1 = sc.nextline(); int N = Integer.parseInt(s1); Alkalmazott[] A = new Alkalmazott[N]; String nev, s2; int kor, fizetes; for (int i=0; i<n; i++) { System.out.println(i+". alkalmazott neve: "); nev = sc.nextline(); System.out.println(i+". alkalmazott kora: "); s1 = sc.nextline(); kor = Integer.parseInt(s1); 21/5 B IT MAN
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás Legnagyobb fizetésű alkalmazott kiírása Alkalmazottak.java System.out.println(i+". alkalmazott fizetése: "); s2 = sc.nextline(); fizetes = Integer.parseInt(s2); A[i] = new Alkalmazott(nev, kor, fizetes); for (int i=0; i<n; i++) System.out.println(A[i].Adatok()); Alkalmazott.SetNyugdij(80); for (int i=0; i<n; i++) System.out.println(A[i].Adatok()); int MaxFizIndex=0; for(int i=0; i<n; i++) if (Alkalmazott.NagyobbFizetes(A[i], A[MaxFizIndex])) MaxFizIndex=i; System.out.println("Legnagyobb fizetésű: "); System.out.println(A[MaxFizIndex].Adatok()); 21/6 B IT MAN
Alkalmazottak futtatható osztály: beolvas N alkalmazottat egy tömbbe Adatok kiírása, nyugdíjkorhatár váltás, újbóli adatkiírás Legnagyobb fizetésű alkalmazott kiírása Konzol Alkalmazottak száma: 3 0. alkalmazott neve: aaaa 0. alkalmazott kora: 51 0. alkalmazott fizetése: 210 1. alkalmazott neve: bbb 1. alkalmazott kora: 25 1. alkalmazott fizetése: 160 2. alkalmazott neve: ccc 2. alkalmazott kora: 37 2. alkalmazott fizetése: 340 Konzol Név: aaaa Kor: 51Fizetes: 210 Nyugdijig még 14 év van hátra Név: bbb Kor: 25Fizetes: 160 Nyugdijig még 40 év van hátra Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 28 év van hátra Név: aaaa Kor: 51Fizetes: 210 Nyugdijig még 29 év van hátra Név: bbb Kor: 25Fizetes: 160 Nyugdijig még 55 év van hátra Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 43 év van hátra Legnagyobb fizetésű: Név: ccc Kor: 37Fizetes: 340 Nyugdijig még 43 év van hátra 21/7 B IT MAN
Feladatok 2. Készítsen egy Szam nevű osztályt a sajat.elso nevű csomagba - legyen egy osztályszintű konstans adattagja egy 0.001 értékkel egy tűrés tárolására - legyen egy adattagja egy valós szám tárolására - legyen konstruktora, amely paraméterként kapott értékekkel inicializálja az adattagot. - legyen egy "egyezike" metódusa, amely igazat ad ha egy paraméterként kapott valós szám eltérése a tűrésen belül van. - legyen getter, setter metódusa a szám adattagra. Készítsen egy SzamProba nevű futtatható osztályt a "masik" nevű csomagba, amelyben létrehoz egy Szam-ot egy 0-1 közötti értéket megadva és eltárolja egy final lokális változóban. Generáljon ciklusban egészen addig 0-1 közötti valós számokat és írja ki, amig egyezőt nem talál a létrehozott Szam-al (tűrésen belülit). Írja ki hanyadik generált szám volt ez. Próbálja ki megtudja-e változtatni a Szam adattagjának értékét. Próbálja ki megtudja-e változtatni a referenciájának értékét. 21/8 B IT MAN
Szam osztály, sajat.elso csomagba, adattagok: Ertek Osztályszintű konstans adattag Tures 0.001 értékkel Alap konstruktor, Metódus: EgyezikE, setertek, getertek Szam.java package sajat.elso; public class Szam { private double Ertek; private static double Tures= 0.001; public Szam(double Ertek) { this.ertek = Ertek; public boolean EgyezikE(double S){ return Ertek < S+Tures && Ertek > S-Tures; public void SetErtek(double Ertek){ this.ertek = Ertek; public double getertek(){ return Ertek; 21/9 B IT MAN
SzamProba futtatható osztály a masik nevű csomagba, Létrehozni egy 0-1 közötti Szam-ot final változóba. Generálni 0-1 közötti számokat, míg tűrésen belüli egyezőt találunk. Hányadik? SzamProba.java package masik; public class Szamproba { public static void main(string[] args) { final sajat.elso.szam FS = new sajat.elso.szam(0.55); int N=0; double RndNum; do { RndNum = Math.random(); System.out.println(RndNum); N++; while (!FS.EgyezikE(RndNum)); System.out.println("Lépésszám: "+N); 21/10 B IT MAN
SzamProba futtatható osztály a masik nevű csomagba, Létrehozni egy 0-1 közötti Szam-ot final változóba. Generálni 0-1 közötti számokat, míg tűrésen belüli egyezőt találunk. Hányadik? Konzol 0.25435953310163084 0.49700661842458393 0.2195481714694223 0.9646464893642208 0.6921162469325784 0.44939819156750616 0.3912471734747871 0.4745622285079234 0.15628421552241034 0.7151303455305675 0.9653425473688079 0.4406471403971898 0.5503804666093234 Lépésszám: 145 21/11 B IT MAN
SzamProba futtatható osztály a masik nevű csomagba, Változtatni Szam adattag értékén. Változtatni Szam referencia értékén. SzamProba.java package masik; public class Szamproba { public static void main(string[] args) { final sajat.elso.szam FS = new sajat.elso.szam(0.55); System.out.println("Szam= "+FS.getErtek()); FS.SetErtek(0.23); System.out.println("Szam= "+FS.getErtek()); FS = new sajat.elso.szam(0.44); Hibás utasítás! sajat.elso.szam SE = new sajat.elso.szam(0.74); FS = SE; Hibás utasítás! 21/12 B IT MAN
Feladatok 3. Készítsen egy konyves.alap.konyv osztályt - legyen adattagja iro, cím, oldalszám és ár adatok tárolására - legyen konstruktora, amely paraméterként kapott értékekkel inicializálja az adattagokat. - legyen metódusa, amely String-ben összefüzve adja vissza a könyv adatait - legyen metódusa, amely igazat ad ha a könyv oldalankénti ára nagyobb, mint egy paraméterként kapott könyvvé. - legyen metódusa, amely két paraméterként kapott könyv közül a hosszabbat adja vissza. (!) Készítsen egy konyves.konyvproba futtatható osztályt, amelyben beolvas n darab könyvet egy tömbbe és meghatározza a legkisebb oldalárút, valamint a leghosszabbat. 21/13 B IT MAN
Konyv osztály, konyves.alap csomagba, adattagok: író, cím, oldalszám, ár Alap konstruktor Metódus: tostring könyv adatok Konyv.java package konyves.alap; public class Konyv { private String iro; private String cim; private int oldal; private int ar; public Konyv(String iro, String cim, int oldal, int ar) { this.iro = iro; this.cim = cim; this.oldal = oldal; this.ar = ar; @Override public String tostring() { return "Konyv [iro="+iro+", cim="+cim+", oldal="+ oldal+", ar="+ar+"]"; 21/14 B IT MAN
Metódus: dragabbe Metódus: oldalar Metódus: hosszabb Konyv.java public boolean dragabb(konyv masik) { return this.oldalar() > masik.oldalar(); private double oldalar() { return (double)this.ar/this.oldal; public static Konyv hosszabb(konyv a, Konyv b) { if (a.oldal > b.oldal) return a; return b; 21/15 B IT MAN
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java package konyves; import java.util.scanner; public class KonyvProba { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Könyvek száma: "); String s1 = sc.nextline(); int N = Integer.parseInt(s1); konyves.alap.konyv[] K = new konyves.alap.konyv[n]; 21/16 B IT MAN
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java String iro, cim, s2; int oldal, ar; for (int i=0; i<n; i++) { System.out.println(i+". könyv írójának neve: "); iro = sc.nextline(); System.out.println(i+". könyv címe: "); cim = sc.nextline(); System.out.println(i+". könyv oldalszáma: "); s1 = sc.nextline(); oldal = Integer.parseInt(s1); System.out.println(i+". könyv ára: "); s2 = sc.nextline(); ar = Integer.parseInt(s2); K[i] = new konyves.alap.konyv(iro, cim, oldal, ar); 21/17 B IT MAN
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat KonyvProba.java int MinOldalarIndex=0; for(int i=0; i<n; i++) if (!K[i].dragabb(K[MinOldalarIndex])) MinOldalarIndex=i; System.out.println("Legkisebb oldalárú könyv: "+ K[MinOldalarIndex].toString()); konyves.alap.konyv LeghosszabbKonyv = K[0]; for(int i=0; i<n; i++) LeghosszabbKonyv = konyves.alap.konyv.hosszabb(k[i], LeghosszabbKonyv); System.out.println("Leghosszabb könyv: "+LeghosszabbKonyv); 21/18 B IT MAN
KonyvProba futtatható osztály a konyves nevű csomagba, Beolvasni N darab könyvet egy tömbbe, Kiírni legkisebb oldalárút, és a leghosszabbat Konzol Konzol Könyvek száma: 3 0. könyv írójának neve: aaa 0. könyv címe: sdfdg 0. könyv oldalszáma: 230 0. könyv ára: 1500 1. könyv írójának neve: bbb 1. könyv címe: tzjtjtjutj 1. könyv oldalszáma: 342 1. könyv ára: 2835 2. könyv írójának neve: ccc 2. könyv címe: tgrgrgre 2. könyv oldalszáma: 76 2. könyv ára: 900 Legkisebb oldalárú könyv: Konyv [iro=aaa, cim=sdfdg, oldal=230, ar=1500] Leghosszabb könyv: Konyv [iro=bbb, cim=tzjtjtjutj, oldal=342, ar=2835] 21/19 B IT MAN
Feladatok Jövő héten órai egyéni feladat! (T: kb. 30 perc) Készítsen egy osztályt (Termek), melyben termékek nevét és árát tudja tárolni. Legyen konstruktora, legyenek az adattagokat kezelő metódusai. Definiálja felül a tostring() metódusát, mely így a termék nevét és árát adja vissza. Készítsen egy metódust (Elorebb), mely két Termek-et kap paraméterül, és visszaadja az ABC sorrendben előrébb lévő nevű Termek-et. Készítsen egy metódust (Nagyobb), mely kap két árat (számadatot), és ha az első nagyobb, igaz értéket ad vissza, egyébként hamisat. Készítsen egy futtatható osztályt (Termekek), melyben beolvassa N darab termék nevét és árát. - Írja ki a legdrágább termék nevét és árát. - Rendezze név szerint sorba a termékek adatait, és írja ki a sorba rendezett adatokat. 21/20 B IT MAN
VÉGE VÉGE 21/21 B IT MAN