Előadásrészlet egy mentorral a Codegym University tanfolyam részeként. Jelentkezzen a teljes tanfolyamra.


"Már itt vagy, Amigo? Tudom, hogy már sok Java parancsot megtanultál. Már majdnem elérted az én szintemet!"

– Igaz ez, Diego?

"Természetesen nem, ha-ha. Még rengeteget kell tanulnod és tanulnod. Ennek ellenére már eléggé tudsz elég összetett programokat írni. 10, 20, 30 soros kód egy programban nem túl nagy program, jobb?"

– Azt hiszem, igazad van. Főleg, ha göndör fogszabályzót teszel külön vonalakra.

"De egy több mint 100 soros program, ami most nagy. Még nekünk, robotoknak is elég nehezen értjük meg az ilyen kódot. Mit gondolsz, lehet-e valamit tenni annak érdekében, hogy valahogy leegyszerűsítsd a sok kódot tartalmazó programok írását és olvasását?

– Őszintén remélem!

"A reményei nem hiábavalóak. Lehetőség van a programok egyszerűsítésére, és a módszerek segítenek ebben. Ezeket néha függvényeknek is nevezik .

– Funkciók, módszerek... Na, mik azok?

"Nagyon leegyszerűsítve a metódus olyan parancsok csoportja, amelyeknek egyedi neve van . Más szavakkal, több parancsot egyetlen csoportba helyezünk, és egyedi nevet adunk neki. És ennyi – bumm – van egy módszerünk. A legtöbb gyakran ezeket a parancsokat valamilyen indoklás szerint csoportosítják egy kis és konkrét feladat megoldása érdekében, például "egy módszer sorok nyomtatására fájlból" vagy "egy módszer egy szám kitevővé emelésére".

"Szóval metódusokra bontjuk a programot?"

"Igen, és leegyszerűsíti a kódot.

Példa:

Módszer nélkül Egy módszerrel
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

"A bal oldali oszlopban lévő programban háromszor ismételjük meg ugyanazt a kódot – ezt szándékosan tettük egy pont szemléltetésére. A jobb oldali programban azonban az ismétlődő kódot egy külön metódusba helyeztük át, és egyedi nevet adtunk neki – printWiFi.

És az áthelyezett kód helyett printWiFi()háromszor hívjuk meg a metódust.

"A jobb oldali oszlopban lévő program futtatásakor a printWiFi()metódus minden egyes végrehajtásakor a metóduson belüli összes parancs printWiFi()végrehajtásra kerül. Most hoztunk létre egy új parancsot (metódust), amely több parancsot egyetlen csoportba egyesít.

"Bármely kód felosztható különálló metódusokra. Ez azért van, hogy leegyszerűsítsék a dolgokat: az ötlet az, hogy jobb, ha sok kicsi metódus van, mint egy nagy.

„Nagyszerű ötlet egy programot metódusokra bontani.

"Hamarosan csodálkozva fog visszaemlékezni arra, hogyan írtál programokat anélkül, hogy elkészítetted volna a saját módszereidet."

"Kész vagyok hallgatni, és megpróbálok módszereket írni! Csak mondd meg, hogyan kell csinálni."

Metódus deklarálása Java nyelven

"Hogyan deklarálhatjuk a legegyszerűbb módszert? Így:

public static void name()
{
  method body
}

Hol nametalálható a metódus egyedi neve, és method bodya módszert alkotó parancsokat jelöli. publicA , staticés szavak jelentéséről voidkésőbb lesz szó.

"Miután létrehoztunk egy metódust, más metódusainkban is meghívhatjuk. A metódushívás így néz ki:

name();

"Hol namevan a meghívni kívánt metódus egyedi neve, vagyis annak a metódusnak, amelynek parancsait végre akarjuk hajtani, amikor a metódushíváshoz érünk.

"Amikor a program eléri a metódushívást, egyszerűen belép a metódusba, végrehajtja az összes parancsát, visszatér az eredeti metódushoz, és folytatja a végrehajtást.

"És most, Amigo, nézd új szemmel a már megtanult parancsokat. Például: . Eszedbe jut valami azzal kapcsolatban, hogy mi is ez valójában?"System.out.println()

– Azt akarod mondani, hogy ezek a parancsok csak más programozók által írt metódusok?

"Nem mindegyik, de sok közülük. Igen, pontosan! Mások azért írták őket, hogy megkönnyítsék az életünket."

– Így public static void main(String[] args)egy módszer is... Most már több értelme van!

"Természetesen! Ez programozás! Kiderült, hogy a fő metódus - a program alfája és omegája - tartalmazhat más metódusok hívását:

Kód jegyzet
class Solution
{
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




Meghívjuk a print10TimesWiFi()metódust


Deklaráljuk a print10TimesWiFimetódust


Meghívjuk a printWiFi() 10-es metódust ciklusban


Deklaráljuk a printWiFimetódust

Megjelenítjük Wi-Fia képernyőn " "

Tények a módszerekről

"Félre tettem néhány hasznos tényt a módszerekről.

1. tény. A metódus mindig egy osztály része.

Metódus csak osztályban deklarálható. Egy metódus nem deklarálható másik metóduson belül. Metódus nem deklarálható osztályon kívül.

2. tény. Egy módszer nevének nincs szent jelentése

Nem számít, milyen módszereket hívnak – ez semmit nem befolyásol. A fő módszer egy olyan módszer, mint az összes többi. Csak ezt a nevet választották annak a metódusnak, amelytől a Java gép elindítja a program végrehajtását. Nincs benne semmi varázslatos. Mindazonáltal jobb olyan metódusneveket választani, amelyekből legalább egy kicsit világossá válik, hogy mire valók. Erről egy kicsit később beszélek.

3. tény. A metódusok sorrendje egy osztályban nem számít

A metódusokat bármilyen sorrendben beírhatja egy osztályba – ez semmilyen módon nem befolyásolja a program végrehajtását. Példa:

Kód
class Solution
{
   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     printWiFi10Times();
   }
}

4. tény. Az egyik metóduson belüli változók semmilyen módon nem kapcsolódnak más módszerek változóihoz

Ami Vegasban történik, az Vegasban marad. A metóduson belül deklarált változók pedig a metóduson belül maradnak.

Az azonos nevű változók két szomszédos metódusban deklarálhatók, és ezek a változók semmilyen módon nem kapcsolódnak egymáshoz.

A módszerek nevei

"Szóval... megígértem, hogy mesélek a metódusnevekről. Régóta ismert, hogy a programozás két legnehezebb problémája a metódusok megfelelő nevének kiválasztása és a változók neveinek kiválasztása."

– Soha nem gondoltam volna, hogy ilyen nehéz!

"Csak nem sokat tudtál mások homályos kódjáról, ahol a változóknak és metódusoknak tetszőleges neveik vannak. Csak próbáld meg kitalálni ezt a kódot. Valójában szinte egy egész tudomány jelent meg a módszerek helyes elnevezésével kapcsolatban. És minden programozási nyelvnek van saját szabványait.

"A Java-ban a következő elveket szokás követni:

Alapelv 1. A metódusnévnek röviden le kell írnia a metódus működését.

Ezután egy másik programozó, aki olvassa a kódot, a módszer nevére támaszkodhat, hogy kitalálja, mit csinál a kód. Nem kell minden alkalommal megnéznie a hívott metódusok kódját. A módszerek célja pedig könnyebben megjegyezhető.

Például a „program alvó állapotba helyezésére” és „a következő egész szám beolvasására” használatos. Kényelmes, mi?Thread.sleep()Scanner.nextInt()

2. alapelv. Egy metódusnév több szóból állhat.

Ennek végrehajtására azonban számos korlátozás vonatkozik:

  • A metódus nevében nem lehet szóköz: minden szó egybe van írva.
  • Minden szó nagybetűvel van írva, kivéve az elsőt.
  • A metódus neve mindig kisbetűvel kezdődik

Emlékezzen a print10TimesWiFimódszerre. Mit jelent ez a név? „A „WiFi” szó megjelenítése 10-szer. Nem szabad sok szót beletenni egy metódus elnevezésébe: a névnek tükröznie kell a módszer lényegét.

Az elnevezési módszereknek ezt a szabványát CamelCase-nek hívják (A nagybetűk olyanok, mint a teve púpjai).

3. alapelv. A metódus neve igével kezdődik.

A metódus mindig csinál valamit, így a metódusnév első szava mindig cselekvés.

Íme néhány rossz név a metódusoknak: home, cat, car, train, ...;

Néhány jó név: run, execute, print, read, write, ...

4. alapelv. A metódusnév csak latin betűket és számokat tartalmaz.

A Java kiválóan támogatja a különböző nyelveket. A változók, metódusok és osztályok nevét oroszul és kínaiul is beírhatja – minden működni fog!

De! Képzeld el, mennyi ideig kellene tanulnod a Java-t, ha a System.out.println()módszert kínaiul írták volna?

Sokkal tovább, mint most, igaz? Ez az első pont.

Másodszor, sok szoftverfejlesztő csapat nemzetközi. Nagyon sok Java könyvtárat használnak a programozók a világ minden tájáról.

Ezért ajánlatos csak latin betűket és számokat használni a metódusnevekben.

Fontos:

A módszer nevének betűvel kell kezdődnie (nem kezdődhet számmal).

"Ezek mind az alapelvek, amelyek a Java metóduselnevezését szabályozzák. A lecke véget ért. Menj, oldj meg feladatokat!"

– Már futok, Diego!


Előadásrészlet egy mentorral a Codegym University tanfolyam részeként. Jelentkezzen a teljes tanfolyamra.