Java - metody dla początkujących - część 1
Dziś chciałbym wam pokazać co to jest metoda w javie i jak zacząć ich praktycznie używać.
Na 100% jeśli jesteś początkującym programistą masz takie pytania jak:
- Co to jest metoda?
- Po co są w ogóle metody w programowaniu?
- Jaki jest najprostszy przykład metody w javie dla początkującego programisty?
- Jak zapamiętać jak pisać metody?
- Jak decydować kiedy muszę napisać sobie metodę?
- Z jakich części składa się metoda w javie i dlaczego?
- Kiedy zwracamy jakiś typ, a kiedy jakiś typ przyjmujemy?
- Co to jest private, static, void i po nam to potrzebne?
- Czemu pierwsze jest main i wywołanie mojej metody, a dopiero później moja metoda?
Jeśli masz takie pytania to wszystko jest ok. Osobiście jestem fanem nauki na praktycznych przykładach, nie do końca lubię teorie. Dlatego jeśli jesteś początkującym programisą, chciałbym Cię przekonać, abyś mi zaufał i zaczął robić przykłady, a te pytania powyżej wyjaśnią się same, bez czytania tony teori i całych rozdziałów w książkach, obiecuję. To zaczynamy z przykładami. 🙂
Link do części drugiej: Java - metody dla początkujących - część 2
Przykład
public class MetodaPrzyklad1 {
public static void main(String[] args) {
System.out.println("Hejka");
}
}
Wynik:
Hejka
W tym przykładzie nie widzimy żadnych metod. Dlatego, że chciałem pokazać jak przenieść, tą podstawową operację jak wypisywanie "Hejka" do konosli, do osobnej metody.
public class MetodaPrzyklad2 {
public static void main(String[] args) {
wypiszHejka();
}
static void wypiszHejka() {
System.out.println("Hejka");
}
}
Wynik:
Hejka
W tym przykładzie widzimy, że mamy nową metodę o nazwie wypiszHejka(). Te 2 programy nie różnią się niczym pod względem funkcjonalnym, czyli działają tak samo - wypisują "Hejka" do konsoli. I teraz po co to w ogóle robić skoro nie ma różnicy w tym co program robi? Metodki są po to, aby projektować naszą aplikację tak aby kod, był re-używalny i aby programista nie gubił się w swoim kodzie :). Serio, serio to możliwe.
Analiza naszej metodki - wypiszHejka()
// wywołanie metody, czyli zawołanie tego co zakodziliśmy
wypiszHejka();
// definicja metody, czyli po prostu zakodzenie kawałka kodu i nazwanie go wypiszHejka()
// abyśmy później mogli ten kawałek kodu zawołać z main-a
static void wypiszHejka() {
System.out.println("Hejka");
}
Z czego składa się metoda:
static // na początku nie analizujmy tego co to static
void // tutaj dajemy typ który będziemy zwracać, wyjaśnienie niżej
wypiszHejka // nazwa naszej metody to wypiszHejka
() // te nawiasy na razie potraktuj jako coś obowiązkowego
{ // otwieramy ciało naszej metody
// ciało naszej metody, czyli kodzimy
System.out.println("Hejka");
} // zamykamy ciało naszej metody
Nie wchodźmy na początku w szczegóły co i jak z metodami, aby nie analizować tego zbyt szczegółowo. Idzie się naprawdę zniechęcić, mówię tutaj o początkujących programistach. Po prostu zacznijmy kodzić w metodach, a gwarantuję, że po kilku dniach, metody nabiorą super sensu. Najlepiej proste rzeczy, wypisywanie czegoś w konsoli tak jak było z "Hello World", dodawanie liczb i zwracanie wyniku, obliczanie średniej itp.
Metoda powinna się nazywać, tak aby nam mówiła co robi. Prosty przykład metody to next() wywyłany na obiekcie typu Scanner np scanner.nextInt()
i jak wiemy nextInt()
zwraca nam int-a, prawda?
Co do obiektów to też na razie przyjmijmy to jako pewnik i reszta nabierze sensu lekko później. Na obecną chwilę skupmy się przez kilka dni na metodach i programowaniu z użyciem metod.
Aaa i jeszcze jedno, na dzień dzisiejszy jesteś początkującym programistą i jeśli piszesz wszystko w 1 klasie tak jak ja w przykładach nie musisz dodawać private / public, do tego dojdziemy później i to już będzie bardzo łatwe. Piszę to dlatego, aby maksymalnie uprościć naukę programowania i aby nie komplikować tego niepotrzebnie. 🙂
Przykład
public class MetodaPrzyklad3 {
public static void main(String[] args) {
wypiszCosWiecejNizHejka();
}
static void wypiszCosWiecejNizHejka() {
System.out.println("Hejka");
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
}
}
Wynik:
Hejka
0
1
2
W tym przykładzie dodaliśmy pętle for i wypisanie liczb 0,1,2. W ten sposób możemy tworzyć kod w metodzie. Dodałem coś poza "Hejka", aby pokazać, że pisanie w naszej nowej metodzie niczym nie różni się od pisania kodu w metodzie main, tak jak przyzwyczailiśmy się do tej pory. Od dziś piszemy zawsze kod w metodach i wywołujemy nasze nowe metody z main-a. Ok? Tak jak pisałem wcześniej, zauwaj mi, a po kilku dniach zobaczysz prawdziwe korzyści z pisania w metodach. Poza tym prawdziwi programiści nie umieją pisać bez metod na tym opiera się programowanie, aby tworzyć kod, który jest bardzo czytelny i metody powinny być w miarę małe. Np metoda, która ma 100 lini kodu, jest na 99% zbyt długa i da się jej logikę rozbić na mniejsze metody. Metoda też powinna mieć dobrą nazwę, aby mówiła każdemu programiście co się w niej dzieje - dlatego też powinna być krótka i mieć jedną odpowiedzialność, wtedy bardzo łatwo nam będzie dać tej metodzie prostą nazwę.
Przykład
public class MetodaPrzyklad4 {
public static void main(String[] args) {
int mojaUlubionaLiczba = 7;
wypiszMojaUlubionaLiczbe(mojaUlubionaLiczba);
}
static void wypiszMojaUlubionaLiczbe(int mojaUlubionaLiczba) {
System.out.println("Twoja ulubiona liczba to: " + mojaUlubionaLiczba);
}
}
Wynik:
Twoja ulubiona liczba to: 7
W tym przykładzie zaczyna się dziać nieco więcej. Po raz pierwszy przyjmujemy parametr typu int o nazwie mojaUlubionaLiczba. Parametry do metody przekazujemy pomiędzy (), czyli
(int mojaUlubionaLiczba)
a we wcześniejszych przykładach nie przekazywaliśmy nic do metody, dlatego nasze nazwiasy były puste:
()
I teraz w metodzie możemy korzystać z naszej zmiennej, którą sobie przjeliśmy. Możemy ją wypisać, tak jak to zrobiliśmy w naszym przykładzie.
Przykład
public class MetodaPrzyklad5 {
public static void main(String[] args) {
int wiekUzytkownika = 25;
String imieUzytkownika = "Gertrud";
wypiszDaneUzytkownika(wiekUzytkownika, imieUzytkownika);
}
static void wypiszDaneUzytkownika(int wiekUzytkownika, String imieUzytkownika) {
System.out.println("Wiek użytkownika to: " + wiekUzytkownika);
System.out.println("Imie użytkownika to: " + imieUzytkownika);
}
}
Wynik:
Wiek użytkownika to: 25
Imie użytkownika to: Gertrud
W tym przykładzie przekazujemy 2 argumenty do metody. Ten przykład jest bardzo podobny do porzedniego, tylko zamiast 1 parametru, nasza metoda przyjmuje 2 parametry. Wcześniej był to tylko int, teraz jest to int i String.