BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Aktualności


metody

16-12-2013 21:23 Konrad Tomczyk
metody

Już powracamy do naszych klas. Teraz zajmiemy się kolejnym ich składnikiem, czyli metodami. Metoda na ogólniej mówiąc to część lub blok kodu (bo jest zawarty między { }) który jest wykonywany gdy metoda jest wywoływana. Temat metod jest bardzo szeroki, postaramy się omówić jak najwięcej aspektów z nimi związanymi. Metody występują też w innych językach, tylko oczywiście różnią się deklaracją i nazwą, np. w Pascal-u są to procedury a w C i C++ są to funkcje. My będziemy w C# nazywać je metodami bo tak jest poprawnie. Zacznijmy może tradycyjnie, czyli jak wygląda ogólna deklaracja metody:

specyfikator_dostępu typ_zwracany nazwa_metody( typ_parametru1 nazwa_parametru1,…)

{

ciało metody….

}

Specyfikator dostępu został wyjaśniony w poprzedniej lekcji, typ zwracany informuje jaki typ wartości zwraca metoda, może być to jeden z typów wbudowanych, lub obiekt jakiejś klasy np. Pojazd. Nazwa metody, to jest po prostu jej nazwa. Tuż za nazwą pomiędzy ( ) zawarte są parametry, czasem będziemy potrzebować, aby wysłać jakąś wartość (zmienną) do metody, wtedy deklarujemy to w parametrach, metodę która pobiera jakąś wartość (parametr) nazywamy metodą sparametryzowaną. Spróbujemy teraz dodać metodę do naszego projektu klasy Pojazd, jak pamiętasz za każdym razem licząc zasięg Pojazdu, robiliśmy poprzez powtarzanie zapisu mnożenia i dzielenia dla każdego obiektu oddzielnie, proces ten można usprawnić, poprzez dodanie metody. Poniżej znajduje się kod programu z dodaną metodą:

Początek kodu:
using System;

class Pojazd
{
public int liczba_pasazerow ;
public int pojemnosc ;
public double spalanie ;


public void Zasieg()
{
Console.WriteLine(„Zasięg wynosi: ” + pojemnosc * 100 / spalanie );
}
}


class Pokaz
{
public static void Main()
{

Pojazd maluch = new Pojazd() ;

maluch.liczba_pasazerow =  5 ;
maluch.pojemnosc = 25 ;
maluch.spalanie = 3.5 ;

Pojazd polonez = new Pojazd() ;

polonez.liczba_pasazerow =  5 ;
polonez.pojemnosc = 47 ;
polonez.spalanie = 9.7 ;


Console.WriteLine(„Maluch pomieści ” + maluch.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg:”);
maluch.Zasieg() ;


Console.WriteLine(„\n\n”);

Console.WriteLine(„Polonez pomieści ” + polonez.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg: „);
polonez.Zasieg() ;
}
}

 

Koniec kodu:

Nasza deklaracja metody wygląda następująco:
public void Zasieg()
{
Console.WriteLine(„Zasięg wynosi: ” + pojemnosc * 100 / spalanie );

}

Znaczenie słowa public rozumiesz bo zostało ono wyjaśnione mniej więcej w poprzedniej lekcji. Słowo void oznacza, że nasza metoda nie zwraca żadnej wartości. Zasieg – to nazwa naszej metody, należy dawać nazwy zazwyczaj zależne od wykonywanej funkcji przez metodę, nasza metoda liczy zasięg więc nazwa Zasieg jest trafiona w 100% krótka i zwięzła. Spróbujemy teraz zmienić naszą metodę Zasieg aby zwracała wartość zasięgu a go nie wyświetlała, przez co będziemy mieli większe pole do wykorzystania metody. Nasza zmieniona wersja metody wygląda następująco:
public double Zasieg()
{
double wartosc = pojemnosc * 100 / spalanie ;
return wartosc ;

}

Zamiast void piszemy double czyli typ jaki zwraca nasza metoda, w ciele metody deklarujemy zmienną wartosc typu double. Słowo return ; służy do wychodzenia z metody, porostu ją zakańcza, jeżeli kod wykonujący się w naszej metodzie natrafi na słowo return ; od razu metoda się zakończy, my napisaliśmy return wartosc ; oznacza to że nasza metoda się zakończy ale zwróci wartość zmiennej wartosc. Jeżeli byśmy jako typ zwracany napisali void to wtedy musimy użyć samego return ; bez zwracania jakiejkolwiek wartości. Natomiast analogicznie jeżeli deklarujemy że zwracamy jakiś typ przez metodę to nie możemy użyć samego return ; ponieważ samo ono nie zwraca żadnej wartości, a deklarując w tym wypadku typ double musimy go zwrócić. Poniżej znajduje się kod programu gdzie użyliśmy metody która zwraca wartość:

Początek programu:
using System;

 


class Pojazd
{
public int liczba_pasazerow ;
public int pojemnosc ;
public double spalanie ;


public double Zasieg()
{
double wartosc = pojemnosc * 100 / spalanie ;
return wartosc ;
}
}


class Pokaz
{
public static void Main()
{

Pojazd maluch = new Pojazd() ;

maluch.liczba_pasazerow =  5 ;
maluch.pojemnosc = 25 ;
maluch.spalanie = 3.5 ;

Pojazd polonez = new Pojazd() ;

polonez.liczba_pasazerow =  5 ;
polonez.pojemnosc = 47 ;
polonez.spalanie = 9.7 ;


Console.WriteLine(„Maluch pomieści ” + maluch.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg: ” + maluch.Zasieg() );


Console.WriteLine(„\n\n”);

Console.WriteLine(„Polonez pomieści ” + polonez.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg: ” + polonez.Zasieg() );
}

}

Koniec programu:

Oczywiście zamiast zapisu: Console.WriteLine(„Zasięg: ” + maluch.Zasieg() );
Można użyć: double a = maluch.Zasieg() ;

W tym momencie do zmiennej ‘a’ typu double przypisujemy wartość jaką zwraca metoda Zasieg(); Teraz spróbujemy dodać jakąś metodę z parametrem do naszej klasy Pojazd. Która to sprawdzi nam czy podana liczba pasażerów zmieści się do pojazdu.

Początek kodu:
using System;

 


class Pojazd
{
public int liczba_pasazerow ;
public int pojemnosc ;
public double spalanie ;


public double Zasieg()
{
double wartosc = pojemnosc * 100 / spalanie ;
return wartosc ;
}


public void Czy_zmiesci(int pasazerowie)
{
if( liczba_pasazerow >= pasazerowie)
{
Console.WriteLine(„Tak zmieści się liczba ” + pasazerowie +” pasażerów”);
}
else
{
Console.WriteLine(„Za mało miejsca dla ” + pasazerowie + ” psażerów”);
}
}
}


class Pokaz
{
public static void Main()
{

Pojazd maluch = new Pojazd() ;

maluch.liczba_pasazerow =  5 ;
maluch.pojemnosc = 25 ;
maluch.spalanie = 3.5 ;

Pojazd polonez = new Pojazd() ;

polonez.liczba_pasazerow =  5 ;
polonez.pojemnosc = 47 ;
polonez.spalanie = 9.7 ;


Console.WriteLine(„Maluch pomieści ” + maluch.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg: ” + maluch.Zasieg() );


Console.WriteLine(„\n\n”);

Console.WriteLine(„Polonez pomieści ” + polonez.liczba_pasazerow + ” pasażerów”);
Console.WriteLine(„Zasięg: ” + polonez.Zasieg() );


Console.WriteLine(„\n\n”);
maluch.Czy_zmiesci(12);
maluch.Czy_zmiesci(2);
}
}

Koniec kodu:

Już mniej więcej rozumiesz o co w tym wszystkim chodzi. Najlepiej będzie jak teraz sam siądziesz i wymyślisz sporo metod i innych pól wartości dla naszej klasy, jest to ważne bo czym bardziej ją rozbudujesz tym lepiej, bo nasze kolejne lekcje na klasach będą się głównie opierać na tym przykładzie. Programiści posiadający jakąś styczność z klasami czy to w Java czy C++ wszystko rozumieją po przeczytaniu przykładów, tym którzy pierwszy raz do tego podchodzą radzę, rozwijanie na własną rękę klasy Pojazd, usiądźcie pomyślcie, jakie by tu dodać pola oraz metody zwracające wartość lub sparametryzowane, pamiętajcie że metoda może jednocześnie pobierać jakiś parametr oraz zwracać jakąś wartość. Napiszcie może własną klasę matematyczną, a w niej metody które liczą silnię, średnią arytmetyczną, potęgę i inne…

Ah… zapomniał bym o najważniejszym, kolejne parametry w metodzie oddzielamy przecinkiem np.:
public void Sumuj(int a, int b, int c, int d)
{

}

Komentarze 0

pkt.

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.