Gyakorlati alapok III.

Az üzenet (metódushívás)

 

Amint már fentebb részletezésre került, egy objektumorientált program egy funkcionálisan szétosztott és rendszerezett, valamint jól összehangolt objektumok működésének eredménye, amelyben minden objektum:

Az összehangolt működés alapja mind emberi párkapcsolatok, mind objektumok esetében a kommunikáció.

 

www.informatika-programozas.hu - Kommunikáció

Forrás - Source: www.forbes.com

 

A kommunikáció objektumok között csakis úgy jöhet létre:

Ezek hiányában nem lesz semmiféle kommunikáció az objektumok között. Tehát akár algoritmusvezérelt, akár eseményvezérelt a program alapstruktúrája (Algoritmusvezéreltség - eseményvezéreltség című fejezet), az osztályok és metódusaik közti kommunikáció fogja működtetni a kódot. Képszerű hasonlattal élve, ha az emberi test belső szerveit képzeljük el az osztályok és metódusaikként, a véráram lesz a szervek közti kapcsolatok, azaz a kommunikáció közvetítője. Egy másik, szintén képszerű hasonlattal élve –amelyik egyébként már jóval közelebb áll a mainstream informatikai meghatározáshoz:

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

egy objektumorientált program osztályai és metódusai közti kommunikációt üzenetnek nevezzük. Az üzenet egy kívülről elérhető metódus hívása, amelyet a Java-nyelvben az osztálynév.metódusnév formában, vagy ha a metódusnak van bemeneti paramétere, akkor az osztálynév.metódusnév(paraméter) deklarációval tehetjük meg.

 

Nagyon hétköznapi nyelven fogalmazva a metódushívás azt jelenti, hogy a kódban a fenti hivatkozási formátumban meghívjuk a metódust, hogy végezze el a rá kirótt feladatot.

 

Az objektumorientált szemlélet a metódusok közti üzenetáramlás jellege szerint további kategóriákat is felállított. Eszerint vannak tipikus kliens (üzenetküldő) és szerver (üzenetvevő és végrehajtó) objektumok, illetve ezek ötvözetei, amelyek tehát egyszerre kliensek és szerverek. Mivel egy objektumorientált programban az üzenetáramlás tipikus, ezért már csak az a kérdés, hogy az objektum melyik csoportba tartozik. Például egy vezérlő objektum legtöbbször csakis kliens feladatokat lát el, míg egy adatbázis-objektum szerver funkciókat.

 

Nézzünk meg a metódushívásra egy egyszerű, de jellemző példát!

A java.lang.Math osztály metódusait már sokszor felhasználtuk. Az osztály a leggyakoribb matematikai és hozzá köthető műveletek metódusait tartalmazza (https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html). A Math osztályt használatához először importálni kell (import java.math.*;) az aktuális osztályba, publikus metódusai csak ezután lesznek elérhetők, amely során persze további követelményeket is figyelembe kell venni, talán a legtipikusabb a típusegyezések figyelése.

 

Az alábbi futtatható Java-kódban a Math osztály egyik hatványozó metódusát hívjuk meg (pow(a, b)), amelyik a következő műveletnek felel meg:

 

23 = 8

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    System.out.println(Math.pow(2, 3));
    }
}

 

Végeredmény:

8.0

 

További, nem oly fontos, de mindenképpen említésre érdemes érdekesség, hogy metódushívást beadhatunk bemeneti paraméterként is, azaz mintegy "halmozzuk" a metódushívást. Az alábbi kód mögöttes matematikája a következő:

 

24 = 16

√16 = 4

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    System.out.println(Math.sqrt(Math.pow(2, 4)));
    }
}

 

Végeredmény:

4.0