R4ylb6CrSFd84
Zdjęcie przedstawia szufladę z narzędziami.

I_P_W13_M06_JAVA Czym są metody?

Źródło: Pixabay, domena publiczna.

Czym jest funkcja?

Wspomnieliśmy już, że funkcja jest wydzieloną częścią kodu, odpowiedzialną za wykonanie określonych zadań. Jeżeli piszemy rozbudowany program, stanie się on bardziej przejrzysty po rozbiciu całości na funkcje.

Co istotne, funkcje ułatwiają użycie tej samej sekwencji poleceń w różnych częściach programu. Zamiast powielać za każdym razem identyczne wycinki kodu, wywołujemy zawierającą je funkcję.

Gdybyśmy wreszcie chcieli edytować powtarzające się fragmenty kodu, dzięki zastosowaniu funkcji robimy to tylko raz. Poprawiamy wówczas samą funkcję, nie musząc zmieniać programu w wielu miejscach.

Czym jest metoda w języku Java?

W języku Java pojęcie metody odpowiada temu, co w innych językach programowania często nazywa się funkcją. Metoda jest wydzielonym fragmentem kodu, który wykonuje określone zadanie i może zwracać rezultat. Różnica polega na tym, że w Javie metody są zawsze związane z klasami — należą do nich i są na nich wywoływane. Oznacza to, że każda metoda jest częścią jakiegoś obiektu (lub klasy, jeśli jest statyczna). Pomaga to organizować kod w spójne struktury, ułatwia jego ponowne wykorzystanie oraz poprawia czytelność programów.

Pierwsza funkcja w języku Java

Oto deklaracja przykładowej funkcji w Javie:

Linia 1. public static int dodajLiczby otwórz nawias okrągły int argumentFunkcji przecinek int drugiArgumentFunkcji zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. int wynikDoZwrocenia znak równości argumentFunkcji plus drugiArgumentFunkcji średnik. Linia 3. return wynikDoZwrocenia średnik. Linia 4. otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline zamknij nawias ostrokątny System kropka out kropka println otwórz nawias okrągły cudzysłów Ta linijka nie zostanie wykonana cudzysłów zamknij nawias okrągły średnik otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny. Linia 6. zamknij nawias klamrowy.

Słowa kluczowe public oraz static omówimy w innym e‑materiale. Na razie musisz pamiętać, aby zawsze używać ich podczas deklarowania funkcji.

Przejdziemy do określenia typu danych zwracanego przez funkcję. Przede wszystkim trzeba podkreślić, że każda zmienna zdefiniowana wewnątrz funkcji jest zmienną lokalną. Oznacza to, że nie można odwołać się do niej spoza funkcji, a sama zmienna jest usuwana, gdy tylko funkcja zakończy działanie.

Co jednak zrobić w sytuacji, gdy funkcja ma wykonać jakieś obliczenia? Zapewne chcielibyśmy poznać ich wyniki, więc zależy nam na tym, aby nie zniknęły one z pamięci.

Otóż można sprawić, że funkcja przed zakończeniem działania zwróci jakąś wartość – na przykład przekaże programowi głównemu rezultat wykonanych operacji matematycznych. Musimy jednak poinformować kompilator, jakich danych powinien się spodziewać.

Wróćmy zatem do definicji funkcji. Tuż po słowach publicstatic musimy podać typ zwracanych wartości. Rezultatem działania przykładowej funkcji będzie liczba całkowita (int).

Jeżeli nie chcemy, aby funkcja zwracała jakąkolwiek wartość, jako typ danych wpisujemy void (czyli „pusty”). Robimy tak choćby w przypadku definiowania funkcji, której zadaniem jest wyświetlanie komunikatów; nie zwraca ona nic programowi głównemu.

Ważne!

Funkcja, dla której określimy typ zwracanych danych, musi takie właśnie dane zwrócić. W przeciwnym przypadku pojawią się błędy kompilacji.

Tuż za typem zwracanych wartości podajemy nazwę funkcji. W naszym przypadku brzmi ona: dodajLiczby. Będziemy się nią posługiwali podczas wywoływania funkcji.

Gdy funkcja nie będzie przyjmować żadnych parametrów, za nazwą stawiamy parę okrągłych nawiasów: () – i deklaracja jest gotowa. Kiedy jednak chcemy przekazać funkcji jakieś parametry, musimy je opisać.

Argument jest wartością przekazaną do parametru funkcji. Parametry deklarujemy wewnątrz nawiasów okrągłych, wskazując ich typy i nazwy. Nie ma ograniczeń co do liczby przekazanych parametrów; musimy tylko oddzielić je przecinkami. W zaprezentowanym przykładzie mamy dwa parametry typu całkowitego (int) o nazwach argumentFunkcji oraz drugiArgumentFunkcji.

Ważne!

Kiedy jako argument przekazujemy zmienną, funkcja tworzy lokalną kopię jej wartości. Oznacza to, że jeżeli wewnątrz funkcji zmienna zostanie zmodyfikowana, nie będzie miało to wpływu na jej oryginalną wartość.

Po deklaracji zapisujemy ciało funkcji, czyli instrukcje, które zostaną wykonane po jej wywołaniu. Polecenia te umieszczamy w parze nawiasów klamrowych. W przykładowej funkcji definiujemy zmienną lokalną wynikDoZwrocenia i przypisujemy jej sumę podanych argumentów.

Dalej pojawia słowo kluczowe return. Jest to polecenie zatrzymania działania funkcji i zwrócenia programowi głównemu wskazanej wartości (w tym przypadku jest nią wynikDoZwrocenia). Podkreślmy to wyraźnie: polecenie return oznacza natychmiastowe opuszczenie funkcji. Ostatnia komenda w przykładzie – System.out.println... – jest więc przewrotna, bo nigdy nie zostanie wykonana, choć z punktu widzenia składni języka Java najzupełniej poprawna.

Ciekawostka

Jeżeli chcemy przerwać działanie funkcji, która nie zwraca żadnej wartości (czyli przed jej nazwą pojawiło się słowo void),  możemy zrobić to w dowolnym momencie, wydając polecenie return (i pamiętając aby nie podawać żadnej wartości do zwrócenia).

Wywołanie funkcji

Gdy chcemy użyć funkcji w którymkolwiek miejscu programu, po prostu podajemy jej nazwę (oraz argumenty, o ile są one niezbędne):

Linia 1. int wynikDzialaniaFunkcji znak równości dodajLiczby otwórz nawias okrągły 2 przecinek 4 zamknij nawias okrągły średnik.

Zdefiniowana wcześniej funkcja dodajLiczby zwraca wartość typu int. Przypisaliśmy ją zmiennej wynikDzialaniaFunkcji. Jeżeli funkcja nie oczekuje argumentów, za jej nazwą umieszczamy pustą parę okrągłych nawiasów.

Ważne!

Gdy funkcja wymaga podania argumentów, ale ich nie otrzyma (bądź przekażemy jej złą liczbę argumentów), mogą pojawić się błędy kompilacji.

Kolejną część lekcji poświęcimy przykładom wykorzystania funkcji.

Słownik

return
return

polecenie przerywające wykonywanie funkcji i zwracające wskazaną za nim wartość programowi nadrzędnemu

parametr funkcji
parametr funkcji

element składni języka, który jest definiowany przy deklaracji metody lub funkcji; deklarujemy go w nagłówku podprogramu; umożliwia komunikację pomiędzy podprogramem (funkcją/metodą), a programem go wywołującym

argument funkcji
argument funkcji

element składni w określonym języku programowania, który w wyniku wywołania podprogramu zostaje utożsamiony (skojarzony) z określonym parametrem podprogramu

prototyp funkcji
prototyp funkcji

zwany również deklaracją; funkcja która nie posiada ciała, a jedynie informuje kompilator o postaci parametrów oraz zwracanej wartości