Java Programozas

Java Programozás – Osztályok, Objektumok

A Java Programozás bevezető után, nézzük most meg, hogy hogyan néz ki az objektum orientált programozás a gyakorlatban.

 

 

Mint ahogy az előző írásban már bemutattam a Java világban minden elem egy objektum, egy osztály (Class) aminek lehetnek tulajdonságai és műveletei. Két szint létezik, van az osztályoknak a leírása, tulajdonságainak megnevezése (definíció) és van az osztályoknak a példányosítása amikor már pontosan  megmondod, hogy melyik elemnek mik a konkrét tulajdonságai.

Nézzünk egy egyszerű példát: Definiáljuk az Ember osztályt és definiáljuk a Név tulajdonságot. Majd példányosítok két elemet az Ember osztályból, az egyiknek a neve legyen Ádám, míg a másiké legyen István.

Tehát az Osztály egy általános leírás, míg az Elem az adott Osztály egy konkrét példánya.

 

Calculator Program

Nézzük végig egy konkrét példán keresztül, hogy hogyan néz ki a fenti elmélet Java nyelven. A feladat, hogy készítsünk egy Calculatort ami tud összeadni és osztani, majd számoltassuk ki vele, hogy mennyi 7+10, illetve 7/10 és a tároljuk is el ezeket az eredményeket.

Az első lépés mindig a feladat, a probléma megértése. Ahhoz, hogy a feladatot meg tudjuk oldani, szükségem van egy Calculator osztályra, ami két műveletet fog tudni elvégezni majd ezeknek az eredményeit tárolni. Most még nem mondom meg, hogy konkrétan, hogy kell összeadni illetve osztani, az már egy következő lépés.

 

A megoldás a következő képpen néz ki:

Hozzunk létre egy új Projektet, a neve legyen Calculator (hogyan?), majd hozzunk létre benne egy külön Package-t a Calculator implementációnak, ezt nevezzük calculator-nak.

Most hozzuk létre a Calculator osztályt, majd definiáljuk benne a két metódust valamint a két tároló attribútumot.

 

 

 

A metódusok publikus láthatóságúak (public), van visszatérési értékük (int és double), van nevük és van két paraméterük (number1, number2):

  • public int sum(int number1, int number2)
  • public double div(double number1, double number2)

 

A metódusoknak azért kell publikus láthatóságúaknak lennie, hogy bárki számára elérhetőek legyenek. Tehát ha tetszőleges helyen létrehozunk egy példányt a Calculator osztályból, akkor a metódusok szabadon felhasználhatóak, meghívhatóak.

 

Valamint van két tároló attribútumom, az egyik egész számok tárolására szolgáló (int), míg a másik tört számok tárolására alkalmas (double)

  • int calculatedIntResult
  • double calculatedDoubleResult

Az attribútumokhoz nem írtam láthatóságot. Ha nincs definiálva, akkor az mindig azt jelenti, hogy package-private típusúak, tehát alapból más Package-ből nem láthatóak. Ebben az esetben hiába hozunk létre egy példányt a Calculator osztályból, ezeket az attribútumokat sem írni, sem olvasni nem fogjuk tudni.

Ahogy látjátok kétfajta típusú értéket használtam fel int és double. Van még rengeteg fajta alaptípus a Java-ban, most inkább azt szeretném, hogy megértsétek, hogy hogyan kell őket használni. A lényegi különbség a kettő alaptípus között, hogy az int csak egész értéket vehet fel, míg a double tört értéket is.

 

Az utolsó hiányzó lépés, hogy leimplementáljuk az összeadás valamint az osztás műveleteket.

Az implementáció úgy néz ki, hogy a beépített nyelvi műveleteket használva, kiszámoljuk az eredményt, majd azt rögtön a tároló attribútumba le is mentjük. Ezután visszaadjuk a tárolt attribútum értékét.

Amit kiemelnék az az osztás művelet implementációjában van. Található benne egy ellenőrzés, hogy az osztó egyenlő-e 0-val. A 0-val való osztás nincs értelmezve, ezért ha ilyen történne, akkor üzenünk a felhasználónak, hogy a 0-val való osztás nem megengedett.

 

 

Példányosítás és végrehajtás

Mint minden klasszikus Java programnak, ennek is lesz egy belépő pontja, egy main() függvénye, amiben majd felhasználjuk a Calculator osztályunkat az eredmények meghatározásához.

Csináljunk tehát egy külön Package-t, ahol csak és kizárólag a main() függvény lesz megtalálható. Ebben a Package-ben egyetlen osztály lesz, ami csak a main() függvényt fogja tartalmazni. A feladat, hogy példányosítsuk a Calculator osztályunkat, majd végeztessük el vele az összeadást és az osztást.

 

Íme:

 

Az első lépés a Calculator osztályunk példányosítása, ami a new kulcsszóval történik:

  • Calculator myCalc = new Calculator()

Majd a saját példányunkon keresztül meghívjuk az összeadás és az osztás műveleteket a megfelelő paraméterekkel, majd az eredményt rögtön ki is íratjuk:

  • System.out.println("7 + 10 = " + myCalc.sum(7, 10));
  • System.out.println("7 / 10 = " + myCalc.div(7, 10));

 

Gratulálok, túl vagyunk tehát az első lépéseken. Megnéztük, az objektum orientált működés alapelveit Java nyelven és leimplementáltuk az első metódusainkat.

 

 

Ha szeretnétek tovább dolgozni a Calculator osztályon akkor várom az alábbi két feladatra a megoldásaitokat. Ha elkülditek nekem akkor szívesen megnézem, kijavítom és visszaküldöm az észrevételeimet. A kiindulóprogramot innen tölthetitek le, a megoldásaitokat pedig itt tudjátok nekem elküldeni.

  1. Bővítsétek tovább a Calculator osztályt, legyen képes kivonni és szorozni is.
  2. Készítsetek el egy Hitelkalkulátort az előbbiekben elkészített Calculator osztály segítségével. Legyen képes a Hitelkalkulator kiszámolni, hogy ha X összegű hitelt veszek fel Y évre Z kamat mellett, akkor mekkora összeget fizetek vissza a banknak és az mennyivel több, mintha nem vettem volna fel hitelt.

 

Várom a megoldásaitokat, mert úgy gondolom, hogy programozni csak úgy lehet megtanulni, ha az ember folyamatosan gyakorol, csinálja a feladatokat!

Bajor Tamás - Programozz Te Is!

Hello, Bajor Tamás vagyok, a Programozz Te Is oldal alapítója és oktatója. Kösz, hogy itt vagy és éppen az én cikkem olvasására fordítod a drága idődet! Azért dolgozom minden nap, hogy neked segítsek a programozás világában minél profibban elmélyülni. A cikkek egyetlen írójaként rengeteg munkát és energiát fektetek mind az oldalba, mind pedig az oktatásba!

 

Arra kérlek, ha tetszett cikk amit olvastál vagy szívesen veszed az ingyenes anyagokat akkor dobj egy Like-ot a Facebook-on, ezzel is támogatva a munkámat. Ez egy apró kattintás neked, de hatalmas segítség nekem!