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