Definiowanie i wywoływanie metod. Zmienne lokalne w metodach

Transkrypt

Definiowanie i wywoływanie metod. Zmienne lokalne w metodach
Temat: Definiowanie i wywoływanie metod.
Zmienne lokalne w metodach.
Sposoby przekazywania parametrów w metodach.
Poj cia klasy i obiektu – wprowadzenie.
1.
Definiowanie i wywoływanie metod
W dotychczas omawianych przykładach program składał si tylko z jednej klasy, a
klasa zawierała tylko jedn metod – metod Main. Wszystkie deklaracje zmiennych i
instrukcje programu były zapisywane wył cznie w funkcji Main.
Najwy szy czas to zmieni !!!
W klasie mo na zdefiniowa równie inne metody ni Main.
• Metoda to logiczna cz
• Metoda mo e by
(fragment) programu, która realizuje okre lone zadanie.
wykorzystana (wywołana) dopiero wtedy, kiedy zostanie
zdefiniowana.
• Definicja metody składa si z nagłówka i ciała.
• Definicja metody musi by zawarta w zakresie jakiej klasy.
Ogólna posta definicji metody
modyfikatory
typ_wyniku_metody
nazwa_metody(parametry) // nagłówek metody
{
// ciało metody
}
.............
}
1
modyfikatory to słowa: public, private, protected i static. Ich znaczenie i rol
•
poznamy wtedy, gdy w programie pojawi si wi cej ni jedna klasa (ju wkrótce !).
Na razie b dziemy u ywali wył cznie metod z modyfikatorem static.
• typ_wyniku_metody to typ wyniku zwracanego przez metod . Je eli metoda nie
zwraca wyniku to jest typu void. Je eli metoda zwraca wynik, to zamiast void
wpisujemy typ zwracanego wyniku. Je eli funkcja nie jest typu void, to w jej ciele
powinien by u yty co najmniej raz rozkaz return, który kopiuje wynik metody pod
jej nazw .
• nazwa_metody to identyfikator metody podawany podczas jej wywołania.
• parametry okre laj
sposób komunikowania si
programu. Metoda mo e nie mie
metody z innymi elementami
adnych parametrów i w takim przypadku
wpisujemy puste okr głe nawiasy w jej nagłówku.
ciało metody zawiera deklaracje lokalne i instrukcje realizowane przez metod .
•
Przykład 1
Definicja metody
class Program
{
static void PrzykladowaMetoda( ) // nagłówek metody
{
Console.WriteLine("Przykladowa metoda"); // ciało metody
}
2
static void Main()
{
Console.WriteLine(„Pracuje metoda Main”);
Console.ReadLine();
}
}
Po zdefiniowaniu metody mo na j wywoła (wykorzysta ). Po to si j zreszt
definiuje.
Aby wywoła metod w innej metodzie tej samej klasy nale y:
• u y jej nazwy,
• wymieni po przecinku, w nawiasach okr głych parametry metody.
Przykład 2
Wywołanie metody w innej metodzie tej samej klasy
class Program
{
static void PrzykladowaMetoda( ) // definicja metody
{
Console.WriteLine("Przykladowa metoda");
}
static void Main( )
{
Console.WriteLine(“metoda Main”);
PrzykladowaMetoda(); // wywołanie metody PrzykladowaMetoda
Console.ReadLine();
}
}
3
2.
Zmienne lokalne w metodach
•
Wewn trz metod mo na deklarowa zmienne. Zmienne lokalne metod alokuj si
w pami ci w momencie wywołania metody, a dealokuj w chwili zako czenia
wywołania metody.
Przykład 3
Metoda ze zmiennymi lokalnymi zwracaj ca wynik.
class Program
{
static int Suma( ) // definicja metody
{
int s=0,i=1,x;
// zmienne lokalne metody
Console.WriteLine("Podaj ci g liczb zako czony zerem");
do
{
Console.Write("{0}:", i);
x = int.Parse(Console.ReadLine());
s += x;
} while (x != 0);
return s; // warto
zmiennej s jest kopiowana pod nazw metody
}
static void Main( )
{
Console.WriteLine("Wynik {0}",Suma()); // wywołanie metody Suma
Console.ReadLine();
}
4
3.
Sposoby przekazywania parametrów w metodach
Deklaracja parametrów:
•
Parametry metody deklarujemy w jej nagłówku, w nawiasach okr głych,
po nazwie metody.
•
Ka dy parametr ma okre lony sposób przekazywania, typ oraz nazw .
Deklaracja kolejnego parametru jest oddzielona przecinkiem od
deklaracji parametru poprzedniego.
Wywoływanie metod z parametrami:
•
Je eli metoda ma parametry, to musz by one okre lone w trakcie
wywołania metody. Kolejne parametry s
oddzielane w wywołaniu
metody przecinkiem.
Przykład 4
Przykład definicji wywołania metody z parametrami
static void MetodazParametrami(int x, string n)
{
for (int i=1 ;i<=x; i++) Console.WriteLine(n);
}
MetodazParamertrami (2, "Hello, world");
int p = 7;
string s = "Próbny komunikat";
MetodazParametrami(p, s);
5
W j zyku C# mo emy przekazywa parametr przez warto
(in), przez referencj (ref)
lub jako parametr wyj ciowy (out).
•
Przekazujemy parametr przez warto , gdy warto
tego parametru jest
niezb dna do realizacji metody.
•
Przekazujemy parametr przez referencj , gdy chcemy, aby metoda si gała do
tego miejsca w pami ci, w którym znajduje si reprezentowana referencj
zmienna.
•
Przekazujemy parametr jako parametr wyj ciowy, gdy chcemy w tym
parametrze zapami ta wynik realizacji metody.
a) Przekazywanie parametru przez warto
•
Warto
parametru okre lona przy wywołaniu metody jest kopiowana pod
nazw parametru.
•
Je eli warto
parametru jest zmieniana w metodzie, to po zako czeniu
wywołania nie b dzie to miało adnego efektu.
•
Parametr przekazywany przez warto
musi mie ten sam lub kompatybilny
typ co parametr okre lony w definicji metody.
•
Przez warto
przekazywanych jest wi kszo
parametrów. Jest to domy lny
sposób przekazywania parametru, tzn. je eli w nagłówku metody mi dzy
typem parametru a jego nazw nie jest wstawione ani słowo ref ani out, to
jest to parametr przekazywany przez warto .
6
Przykład 5
Metoda z parametrem przekazywanym przez warto
static void Inc(int x)
{
x++;
}
static void Main( )
{
int k = 6;
Inc(k);
Console.WriteLine(k);
}
b) Parametr przekazywany przez referencj
Co to jest parametr przekazywany przez referencj ?
• Jest to odwołanie do miejsca pami ci, w którym znajduje si
zmienna
wstawiana w taki parametr w wywołaniu metody.
Deklaracja parametru przekazywanego przez referencj :
• Nale y wpisa słowo ref w definicji metody oraz w jej wywołaniu przed
parametrem przekazywanym przez referencj .
• Typ parametru przekazywanego przez referencj i typ zmiennej wstawianej w
miejsce tego parametru w wywołaniu metody musz by zgodne.
• Zmiany warto ci
zmiennej wstawionej w wywołaniu metody w miejsce
parametru przekazywanego przez referencj
s
widoczne w programie po
zako czeniu wywołania.
• Parametr przekazywany przez referencj powinien mie ustalon warto
przed
wywołaniem metody.
7
Przykład 6
Metoda z parametrem przekazywanym przez referencj
static void PrzezReferencje (ref int n, long v)
{
n++;
v++;
}
static void Main()
{
int a=3;
long b,c;
PrzezReferencje(ref a,b);
Console.WriteLine("{0} {1}",a,b);
PrzezReferencje(a,b); // bł d !!!
PrzezReferencje(ref b,3); // bł d !!!
PrzezReferencje(3,3); // bł d !!!
PrzezReferencje(a,ref b); // bł d !!!
PrzezReferencje(ref c,a); // bł d !!!
}
c) Parametry wyj ciowe
Co to jest parametr wyj ciowy?
• Jest to parametr, który ma nieustalon warto
metody, a ustalon warto
w momencie wywołania
po zako czeniu wywołania metody.
Deklaracja parametru wyj ciowego
• Nale y wpisa
słowo out przed parametrem wyj ciowym zarówno w
deklaracji metody jak i w jej wywołaniu.
8
• W kodzie metody z parametrem wyj ciowym musi doj
do ustalenia
warto ci tego parametru.
Przykład 7
Metoda z parametrem wyj ciowym
static void PrzykladOut(int n,out int p)
{
p=0;
for (int i=1;i<=n;i++) p+=i;
}
int r,k=20;
PrzykladOut(100,out r);
PrzykladOut(10,out k);
Przykład 8
Metoda z parametrem wyj ciowym
static void Wynik(out int p)
{
p++; // bł d !!!
}
int k=10;
Wynik(k);
9
4.
Poj cie klasy i obiektu – wprowadzenie
Klasa to typ b d cy wspóln kapsuła dla danych oraz metod (operacji),
które realizuj przetwarzanie tych e danych.
Ogólna deklaracja klasy
class NazwaKlasy {
// definicje danych i metod nale
cych do klasy
}
Przykład 9
class Konto{
// definicja danej okre laj cej StanKonta oraz metod Wyplata i Wplata,
// które realizuj odpowiednio proces zmniejszania i zwi kszania danej StanKonta
}
class Pralka{
// definicja danych Temperatura, Obroty
// oraz metod Pierz i Wiruj,
}
Obiekt to zmienna, której typem jest klasa.
10
Ogólna deklaracja obiektu
NazwaKlasy NazwaObiektu;
Przykład 10
class Konto{
// definicja danej okre laj cej StanKonta oraz metod Wyplata i Wplata,
// które realizuj odpowiednio proces zmniejszania i zwi kszania danej
// StanKonta
}
Konto Konto_Ani;
// deklaracja obiektu o nazwie Konto_Ani klasy Konto
Konto Konto_Adama; // deklaracja obiektu o nazwie Konto_Adama klasy Konto
Obiekt klasy
Naczynie
Obiekt klasy
Naczynie
Obiekt klasy Owoc
Obiekt klasy Owoc
Program to kolekcja klas, a klasa to zestaw danych (pól) i metod
realizuj cych przetwarzanie tych danych.
11