1 / 31

KLASY METODY POLA

KLASY METODY POLA. Andrzej Repak Nr albumu 132805. JAVY ciąg dalszy. Przypomnienie definicji klas Metody Pola. O klasach w kilku zdaniach. klasy są bytami programistycznymi (opisami obiektów) mogą przechowywać dane mogą wykonywać polecone zadania

rona
Download Presentation

KLASY METODY POLA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KLASY METODY POLA Andrzej Repak Nr albumu 132805

  2. JAVY ciąg dalszy.. • Przypomnienie definicji klas • Metody • Pola

  3. O klasach w kilku zdaniach.. • klasy są bytami programistycznymi (opisami obiektów) • mogą przechowywać dane • mogą wykonywać polecone zadania • każde pojęcie, które chcemy opisać w języku musi być zawarte w definicji klasy • klasa definiuje nowy typ danych których wartościami są obiekty • Klasa to szablon dla obiektów • Obiekt to egzemplarz klasy

  4. Definicja klasy Class nazwa{ //deklaracje pól typ pole1; ... typ poleN; //deklaracje metod typ metoda1(lista parametrów) { //treść metody } ... typ metodaM(lista parametrów) { treść metody } }

  5. Przykład klasy • Klasa która zawiera tylko 3 pola danych class pudelko{ double szerokosc; double wysokosc; double glebokosc;} • Utworzenie obiektu klasy i przypisanie wartości polu tego obiektu Pudelko mojePudelko = new Pudelko(); mojePudelko.szerokosc = 100;

  6. Operator new • Alokuje pamięć dla obiektu i zwraca jego adres. zmiennaKlasy = new nazwaKlasy(); nazwaKlasy(): konstruktor klasy • klasa może deklarować własny konstruktor, lub korzystać z domyślnego • alokacja dynamiczna pamięci: tyle obiektów ile potrzeba, ale pamięci może brakować • tworzenie zmiennych typów podstawowych nie wymaga new.

  7. Wykorzystanie klasy class PudelkoDemo{ public static void main(String args[]){ Pudelko mojePudelko = new Pudelko(); double objetosc; mojePudelko.szerokosc = 100; mojePudelko.wysokosc = 100; mojePudelko.glebokosc = 100 objetosc= mojePudelko.szerokosc* mojePudelko.wysokosc* mojePudelko.glebokosc; System.out.println(”Objętośc to: ”,objetosc); }

  8. Kompilacja i wykonanie • Należy umieścić obie klasy w pliku PudelkoDemo.java class Pudelko {...} class PudelkoDemo { public static void main(...){ ... } } • Kompilacja i wykonanie > cd demonstracje/PudelkoDemo > javac PudelkoDemo.java > java PudelkoDemo

  9. Metody? Pola? • Metody służą do wykonywania operacji • Pola przechowują dane

  10. Niezależność pól • Każdy obiekt ma własną kopię pól klasy – zmiana pola jednego nie ma wpływu na wartości pól drugiego Public static void main(String args[]){ Pudelko mojePudelko1 = new Pudelko(); Pudelko mojePudelko2 = new Pudelko(); double objetosc; mojePudelko1.szerokosc = 10; mojePudelko2.szerokosc = 3; objetosc = mojePudelko1.szerokosc*...; System.out.println(”Objętośc: ” + objetosc); objetosc = mojePudelko2.szerokosc*...; System.out.println(”Objętośc: ” + objetosc);}

  11. Kiedy już mamy klase to.. • Możemy zadeklarować zmienną typu klasa typ_zmiennej nazwa zmiennej; • Ponieważ domyślnie jest ona pusta musimy stworzyć obiekt klasy i przypisać go tej zmiennej • Obiekt tworzymy za pomocą operatora new new nazwa_klasy(); • Całą konstrukcja wygląda zatem następująco nazwa_klasy nazwa_zmiennej=new nazwa_klasy();

  12. Klasa „od kuchni”.. Czyli co w pamięci piszczy • Po wykonaniu ww. instrukcji w pamięci powstają dwie różne struktury • Pierwszą z nich jest zmienna referencyjna mojePudelko tworzona na stosie (ang. stack) • Drugą jest powstały na tak zwanej stercie (ang. heap) obiekt klasy Pudelko • Zmienna mojePudelko zawiera odniesienie do przypisanego jej obiektu klasy Pudelko tylko poprzez nią możemy się do tegoż obiektu odwoływać

  13. STOS zmienna1 mojePudelko zmienna2 STERTA obiekt klasy Klasa1 obiekt klasy Pudelko obiekt klasy Klasa2 obiekt Klasy Klasa3 Schemat pamięci..

  14. Użycie klasy Punkt w klasie Main class Main { public static void main(String args[]) { Punkt punkt – new Punkt(); punkt.x = 100; punkt.y = 100; System.out.println(”punkt.x= ” + punkt.x); System.out.println(”punkt.y= ” + punkt.y); } }

  15. Należny komentarz.. • Jeśli chcemy odwołać się do danego pola klasy używam operatora ‘.’ (kropka) czyli używamy konstrukcji • nazwa_zmiennej_obiektowej.nazwa_pola_obiektu • Przykładowo przypisanie polu x obiektu klasy Punkt reprezentowanego przez zmienną przykładowy_punkt wartości 100 wygląda następująco • przykładowy_punkt.x = 100

  16. Metody Schematyczna deklaracja metody w ciele klasy class nazwa_ metody{ typ_wyniku nazwa_metody(parametry_metody) { //instrukcje metody return wartosc; //dalsza treść }} • Klasy oprócz pól przechowujących dane, zawierają także metody, które wykonują zapisane przez programistę operacje • Definiujemy je w ciele klasy pomiędzy nawiasami klamrowymi • Każda metoda może przyjmować parametry oraz zwracać wynik • Słowo void oznacza że metoda nie zwraca żadnych parametrów bądź tez nie pobiera argumentów

  17. Przykład 1 • Klasy definiują metody by ukrywać wewnętrzną strukturę danych, jak też na własny użytek. class Pudelko { double szerokosc, wysokosc, glebokosc; //wyswietla objetosc pudelka void objetosc() { System.out.print(“Objetosc: “); System.out.println(szerokosc * wysokosc * glebokosc);} } • Odwołanie do pola w danej klasie można wykonać bezpośrednio.

  18. Przykład 2 class Punkt { int x; int y; void wyswietlWspolrzedne() { System.out.println(”współrzędna x= ” + x); System.out.println(”współrzędna y= ” + y) } } • Metodę tę umieszczamy w klasie Punkt • Ma ona za zadanie wyświetlenie wartości współrzędnych x i y

  19. Przykład 3 Class Main { public static void main(String args[]) { Punkt.punkt = new Punkt(); punkt.x=100; punkt.y=100; punkt.wyswietlWspolrzedne(); } }

  20. Wyjaśnienie • Nie musimy oddzielnie kompilować klas Main i Punkt • Ponieważ w klasie Main jest wykorzystywana klasa Punkt, wydanie polecenia javac Main.java spowoduje kompilację zarówno Main.java jak i Punkt.java

  21. Metoda która zwraca wartość • Typ wyrażenia które zwraca wartość metody musi być zgodny z typem wyniku tej metody: class Pudelko { double szerokosc, wysokosc, glebokosc; //oblicza objetosc pudelka double objetosc() { return szerokosc * wysokosc * glebokosc; } }

  22. Argumenty metod • Argumenty to inaczej mówiąc dane • Ich ilość może być dowolna • Poszczególne argumenty oddzielamy od siebie znakiem przecinka • typ_wyniku nazwa_metody(typ parametru1 nazwa_parametru1...) • W ciele każdej z metod następuje przypisanie przekazanego argumentu odpowiedniemu polu

  23. Metoda która posiada parametry • Parametry zwiększają stosowalność metod. • Metoda bez parametrów: int kwadrat() { return 10 * 10; } • Metoda z parametrem: int kwadrat(int i) { return i * i; } • Parametr: zmienna która otrzymuje wartość gdy metoda jest wykonywana. • Argument: wartość przekazywana metodzie.

  24. Obiekt jako parametr • Metoda może zarówno otrzymywać jak też i zwracać obiekt w wyniku swojego działania • W obu wymienionych wyżej sytuacjach postępowanie jest identyczne jak w przypadku typów prostych • W ciele metody następuje skopiowanie wartości pól z obiektu przekazanego jako parametr do obiektu bieżącego

  25. Metoda main • Metoda main jest punktem startowym programu czyli miejscem, od którego zaczyna się jego wykonywanie • Jej deklaracja wygląda następująco: class Main { public static void main(String[] args) { //tutaj instrukcje do wykonania } }

  26. Metoda main • Metoda main musi być typu void czyli nie zwracać żadnej wartości • Klasa Main jest klasa pomocniczą i służy do zagnieżdżenia w niej metody main (nazwa tej klasy jest dowolna) • Lokalizacja metody main decyduje o tym która klasa będzie klasa uruchomieniową • Argumentem tej metody jest tablica ciągów znaków zawierająca parametry wywołania programu (parametry przekazane z wiersza poleceń)

  27. Metoda main • Poniższy program wyświetla na ekranie zawartość wszystkich komórek tablicy args[] class Main { public static void main(String args[]) { System.out.println(”Parametry wywołania: ”); for (int i=0; i<args.lenght; i++) { System.out.println(args[i]) } } }

  28. Przeciążanie metod • O przeciążeniu mówimy wtedy, gdy w obrębie jednej klasy znajdują się metody o identycznej nazwie • Język JAVA dopuszcza tego typu sytuacje pod warunkiem że obie wspomniane wyżej metody będą różniły się argumentami • Mogą one również, ale nie muszą różnić się różnić się typem zwracanego wyniku

  29. Przeciążanie metod • Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. • Java używa liczby i typów argumentów by ustalić którą wersję metody należy wywołać. • Przeciążanie metod plus dziedziczenie to sposób na implementację polimorfizmu.

  30. Przeciążanie metod - przykład class Metody { void test() { System.out.println("Brak parametrow");} void test(int a) { System.out.println("a: " + a);} void test(int a, int b) { System.out.println("a i b: " + a + " " + b);} double test(double a) { System.out.println("double a: " + a); return a*a;} }

  31. Literatura • „Java po C++” Jan Bielecki • „Praktyczny kurs Java” Marcin Lis

More Related