Język Java
Transkrypt
Język Java
Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Język programowania Java Wojciech Rząsa [email protected] Katedra Informatyki i Automatyki, Politechnika Rzeszowska 16 kwietnia 2015 Wojciech Rząsa, KIiA PRz Java 1/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 2/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 3/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania James Gosling, Sun Microsystems Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania James Gosling, Sun Microsystems Powstał na wzór języków C++ i Smalltalk Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania James Gosling, Sun Microsystems Powstał na wzór języków C++ i Smalltalk Maszyna wirtualna Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania James Gosling, Sun Microsystems Powstał na wzór języków C++ i Smalltalk Maszyna wirtualna Maszyna wirtualna, przenośność Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp Obiektowy język programowania James Gosling, Sun Microsystems Powstał na wzór języków C++ i Smalltalk Maszyna wirtualna Maszyna wirtualna, przenośność Silne typowanie (brak automatycznego rzutowania) Wojciech Rząsa, KIiA PRz Java 4/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Tworzenie każdego obiektu „dynamicznie”, za pomocą new Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Tworzenie każdego obiektu „dynamicznie”, za pomocą new Automatyczne zarządzanie pamięcią Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Tworzenie każdego obiektu „dynamicznie”, za pomocą new Automatyczne zarządzanie pamięcią Jednokrotne dziedziczenie Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Tworzenie każdego obiektu „dynamicznie”, za pomocą new Automatyczne zarządzanie pamięcią Jednokrotne dziedziczenie Interfejsy Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Java a C++ Brak automatycznej konwersji typów Brak wskaźników Zmienne są referencjami Tworzenie każdego obiektu „dynamicznie”, za pomocą new Automatyczne zarządzanie pamięcią Jednokrotne dziedziczenie Interfejsy Pakiety zamiast namespace Wojciech Rząsa, KIiA PRz Java 5/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Hello world 1 2 3 4 5 public class Hello { public static void main ( String [] args ) { System . out . println ( " Hello world " ); } } Hello world w Javie, plik Hello.java Nazwa klasy: Hello, nazwa pliku: Hello.java Wojciech Rząsa, KIiA PRz Java 6/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Hello world 1 2 3 4 5 public class Hello { public static void main ( String [] args ) { System . out . println ( " Hello world " ); } } Hello world w Javie, plik Hello.java Nazwa klasy: Hello, nazwa pliku: Hello.java main, jak w C/C++ Wojciech Rząsa, KIiA PRz Java 6/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Hello world 1 2 3 4 5 public class Hello { public static void main ( String [] args ) { System . out . println ( " Hello world " ); } } Hello world w Javie, plik Hello.java Nazwa klasy: Hello, nazwa pliku: Hello.java main, jak w C/C++ System.out.println do wypisywania. . . Wojciech Rząsa, KIiA PRz Java 6/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Hello world 1 2 3 4 5 public class Hello { public static void main ( String [] args ) { System . out . println ( " Hello world " ); } } Hello world w Javie, plik Hello.java Nazwa klasy: Hello, nazwa pliku: Hello.java main, jak w C/C++ System.out.println do wypisywania. . . Kompilacja: javac Hello.java (utworzy plik Hello.class) Wojciech Rząsa, KIiA PRz Java 6/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Hello world 1 2 3 4 5 public class Hello { public static void main ( String [] args ) { System . out . println ( " Hello world " ); } } Hello world w Javie, plik Hello.java Nazwa klasy: Hello, nazwa pliku: Hello.java main, jak w C/C++ System.out.println do wypisywania. . . Kompilacja: javac Hello.java (utworzy plik Hello.class) Uruchomienie java Hello Wojciech Rząsa, KIiA PRz Java 6/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Środowisko programistyczne (IDE) Kolorowanie składni Podpowiadanie Zarządzane projektem (tworzenie plików, usuwanie itp) Kompilacja Uruchomienie Debugowanie ... Wojciech Rząsa, KIiA PRz Java 7/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 8/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Zmienne 1 typ nazwa ; Składnia deklaracji zmiennej Wojciech Rząsa, KIiA PRz Java 9/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Zmienne 1 typ nazwa ; Składnia deklaracji zmiennej 1 int i ; Przykład deklaracji zmiennej Wojciech Rząsa, KIiA PRz Java 9/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Zmienne 1 typ nazwa ; Składnia deklaracji zmiennej 1 int i ; Przykład deklaracji zmiennej 1 typ nazwa = wartosc ; Składnia inicjalizacji zmiennej Wojciech Rząsa, KIiA PRz Java 9/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Zmienne 1 typ nazwa ; Składnia deklaracji zmiennej 1 int i ; Przykład deklaracji zmiennej 1 typ nazwa = wartosc ; Składnia inicjalizacji zmiennej 1 int i = 10; Przykład inicjalizacji zmiennej Wojciech Rząsa, KIiA PRz Java 9/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) long 64 bity, ze znakiem (−263 do 263 − 1) Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) long 64 bity, ze znakiem (−263 do 263 − 1) float pojedynczej precyzji wg. IEEE 754, 32 bity Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) long 64 bity, ze znakiem (−263 do 263 − 1) float pojedynczej precyzji wg. IEEE 754, 32 bity double podwójnej precyzji wg. IEEE 754, 64 bity Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) long 64 bity, ze znakiem (−263 do 263 − 1) float pojedynczej precyzji wg. IEEE 754, 32 bity double podwójnej precyzji wg. IEEE 754, 64 bity boolean true/false Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typy byte 8 bitów, ze znakiem (-128 do 127) short 16 bitów, ze znakiem (-32768 do 32767) int 32 bitów, ze znakiem (−231 do 231 + 1) long 64 bity, ze znakiem (−263 do 263 − 1) float pojedynczej precyzji wg. IEEE 754, 32 bity double podwójnej precyzji wg. IEEE 754, 64 bity boolean true/false char znak, 16-bit Unicode Wojciech Rząsa, KIiA PRz Java 10/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typ String Nie jest wbudowany w język Wojciech Rząsa, KIiA PRz Java 11/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typ String Nie jest wbudowany w język Elementy ułatwiające korzystanie są wbudowane w język Wojciech Rząsa, KIiA PRz Java 11/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typ String Nie jest wbudowany w język Elementy ułatwiające korzystanie są wbudowane w język 1 2 3 4 5 6 7 String imie = " Jan " ; String nazwisko = " Kowalski " ; int wiek = 34; String intro = imie + " " + nazwisko + " " + wiek ; System . out . println ( intro ); Przykład użycia String Wojciech Rząsa, KIiA PRz Java 11/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Typ String Nie jest wbudowany w język Elementy ułatwiające korzystanie są wbudowane w język 1 2 3 4 5 6 7 8 String imie = " Jan " ; String nazwisko = " Kowalski " ; float srednia = 4.5567678 f ; String intro = imie + " " + nazwisko ; intro = String . format ( " % s ś rednia : %.3 f " , intro , srednia ); System . out . println ( intro ); Przykład użycia String.format Wojciech Rząsa, KIiA PRz Java 11/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 12/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Składnia Oparta na C/C++ Wojciech Rząsa, KIiA PRz Java 13/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Instrukcja warunkowa 1 2 3 4 5 6 int i = 4; if ( i % 2 == 0) { System . out . println ( " Parzyste " ); } else { System . out . println ( " Nieparzyste " ); } Instrukcja if Składnia jak w C/C++ Warunek musi być typu logicznego, nie może być: if (i % 2) Wojciech Rząsa, KIiA PRz Java 14/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Instrukcja wyboru 1 2 3 4 5 6 7 8 9 10 11 12 13 int dzien = 4; String nazwa ; switch ( dzien ) { case 1: nazwa = " niedziela " ; break ; case 2: nazwa = " poniedzia ł ek " ; break ; case 3: nazwa = " wtorek " ; break ; /* ... i tak dalej */ default : nazwa = " ?? " ; break ; } Instrukcja switch Wojciech Rząsa, KIiA PRz Java 15/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Pętla for 1 2 3 for ( int i = 0; i < 10; i ++) { System . out . println ( i ); } Instrukcja for Składnia jak w C/C++ Warunek musi być typu logicznego Wojciech Rząsa, KIiA PRz Java 16/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Pętla while 1 2 3 4 5 int i = 10; while ( i > 0) { System . out . println ( i ); i - -; } Instrukcja while Składnia jak w C/C++ Warunek musi być typu logicznego Wojciech Rząsa, KIiA PRz Java 17/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Pętla do while 1 2 3 4 5 int i = 10; do { System . out . println ( i ); i - -; } while ( i > 0); Instrukcja do while Składnia jak w C/C++ Warunek musi być typu logicznego Wojciech Rząsa, KIiA PRz Java 18/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 19/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Tablice Mogą przechowywać wiele wartości Wszystkie wartości muszą być tego samego typu Do poszczególnych wartości odwołujemy się poprzez jej numer w tablicy Numeracja wartości zaczyna się od zera Mogą być wielowymiarowe Wojciech Rząsa, KIiA PRz Java 20/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Tablice 1 float [] oceny ; Deklaracja zmiennej tablicowej Wojciech Rząsa, KIiA PRz Java 21/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Tablice 1 float [] oceny ; Deklaracja zmiennej tablicowej 1 oceny = new float [30]; Utworzenie zmiennej tablicowej Wojciech Rząsa, KIiA PRz Java 21/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Tablice 1 float [] oceny ; Deklaracja zmiennej tablicowej 1 oceny = new float [30]; Utworzenie zmiennej tablicowej 1 float [] oceny = new float [30]; Deklaracja i utworzenie zmiennej tablicowej Wojciech Rząsa, KIiA PRz Java 21/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Tablice – przykład użycia 1 2 3 4 5 6 7 8 9 float [] oceny = new float [30]; for ( int i = 0; i < oceny . length ; i ++) { oceny [ i ] = i % 4 + 2; } for ( int i = 0; i < oceny . length ; i ++) { System . out . println ( " Ocena : " + oceny [ i ]); } Przykład użycia tablicy Można sprawdzić długość tablicy: tab.length Przekroczenie rozmiaru: ArrayIndexOutOfBoundsException Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 30 at Template.main(Template.java:10) Wojciech Rząsa, KIiA PRz Java 22/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 23/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wypisywanie System.out.println Wypisywanie ze znakiem nowej linii System.out.print Wypisywanie System.out.printf Wypisywanie z formatowaniem System.out.write Wypisywanie kolejnych bajtów z tablicy Wojciech Rząsa, KIiA PRz Java 24/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wczytywanie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import java . util . Scanner ; public class ScannerDemo { public static void main ( String [] args ) { Scanner in = new Scanner ( System . in ); int i = in . nextInt (); // wczytaj inta String slowo = in . next (); // wczytaj s ł owo String linia = in . nextLine (); // wczytaj ca ł ą lini ę System . out . println ( " int : " + i ); System . out . println ( " slowo : " + slowo ); System . out . println ( " linia : " + linia ); } } Wczytywanie z klawiatury za pomocą Scanner Wojciech Rząsa, KIiA PRz Java 25/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wczytywanie za pomocą konsoli 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import java . io . Console ; public class R e a d P a s s w o r d D e m o { public static void main ( String [] args ) { Console console = System . console (); // wczytaj nazw ę uzytkownika , normalnie String login = console . readLine ( " Login : " ); // wczytaj has ło , nie pokazuj ą c go String haslo = new String ( console . readPassword ( " Haslo : " )); System . out . println ( login + " : " + haslo ); } } Wczytywanie z klawiatury za pomocą Console Obiekt Console nie jest dostępny jeśli uruchomimy program z IDE! Trzeba uruchomić z wiersza poleceń systemu operacyjnego! Wojciech Rząsa, KIiA PRz Java 26/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe Wstęp Obiekty i klasy w Javie Dziedziczenie Wojciech Rząsa,Interfejsy KIiA PRz Java 27/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe W jednym programie: wiele operacji o tej samej nazwie, polegających na czymś innym A w życiu? otwórz drzwi otwórz plik otwórz konto bankowe Operacja otwórz oznacza różne rzeczy, zależnie od tego na czym ją wykonujemy! Jak uporządkować operacje i dane, zwłaszcza w dużym programie? Wojciech Rząsa, KIiA PRz Java 28/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Obiekty mogą wysyłać między sobą komunikaty (współpracować) Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Obiekty mogą wysyłać między sobą komunikaty (współpracować) Obiekt po odebraniu komunikatu wykonuje odpowiednią operację (reaguje) Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Obiekty mogą wysyłać między sobą komunikaty (współpracować) Obiekt po odebraniu komunikatu wykonuje odpowiednią operację (reaguje) Na przykład: Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Obiekty mogą wysyłać między sobą komunikaty (współpracować) Obiekt po odebraniu komunikatu wykonuje odpowiednią operację (reaguje) Na przykład: Obiekt przełożony → mów wykład → wykładowca Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Programowanie obiektowe Świat składa się z obiektów Każdy obiekt potrafi wykonywać pewne operacje Operacje mogą zmieniać stan obiektów Obiekty mogą wysyłać między sobą komunikaty (współpracować) Obiekt po odebraniu komunikatu wykonuje odpowiednią operację (reaguje) Na przykład: Obiekt przełożony → mów wykład → wykładowca Obiekt wykładowca → zdałeś na 5.0 → student Wojciech Rząsa, KIiA PRz Java 29/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych operacje są zapisywane jako. . . Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych operacje są zapisywane jako. . . funkcje Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych operacje są zapisywane jako. . . funkcje W programowaniu obiektowym, wewnątrz obiektu umieszczamy: Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych operacje są zapisywane jako. . . funkcje W programowaniu obiektowym, wewnątrz obiektu umieszczamy: zmienne i nazywamy je polami Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) wykładowca – mów wykład student – zdałeś na Mają swój stan (który może się zmieniać) student – lista ocen student – humor W programach: stan jest zapamiętywany w. . . zmiennych operacje są zapisywane jako. . . funkcje W programowaniu obiektowym, wewnątrz obiektu umieszczamy: zmienne i nazywamy je polami funkcje i nazywamy je metodami Wojciech Rząsa, KIiA PRz Java 30/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) Wojciech Rząsa, KIiA PRz Java 31/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) metody (funkcje) Wojciech Rząsa, KIiA PRz Java 31/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) metody (funkcje) Mają swój stan (który może się zmieniać) Wojciech Rząsa, KIiA PRz Java 31/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty Mają swój zestaw operacji (które potrafią wykonać) metody (funkcje) Mają swój stan (który może się zmieniać) pola (zmienne) Wojciech Rząsa, KIiA PRz Java 31/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Odpowiadają na te same komunikaty (przedstaw sie) Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Odpowiadają na te same komunikaty (przedstaw sie) Mają takie same cechy (imie) Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Odpowiadają na te same komunikaty (przedstaw sie) Mają takie same cechy (imie) Jak wygodnie tworzyć takie „podobne” obiekty? Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Odpowiadają na te same komunikaty (przedstaw sie) Mają takie same cechy (imie) Jak wygodnie tworzyć takie „podobne” obiekty? Grupy „podobnych” obiektów nazywamy klasami Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Grupy „podobnych” obiektów Można wyróżnić grupy obiektów, które są do siebie podobne Potrafią wykonywać te same operacje (przedstaw sie) Odpowiadają na te same komunikaty (przedstaw sie) Mają takie same cechy (imie) Jak wygodnie tworzyć takie „podobne” obiekty? Grupy „podobnych” obiektów nazywamy klasami Klasy służą do wygodnego tworzenia „podobnych” obiektów Wojciech Rząsa, KIiA PRz Java 32/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól każdy obiekt klasy Osoba ma pole imie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól każdy obiekt klasy Osoba ma pole imie każdy obiekt klasy Osoba ma takie same metody: Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól każdy obiekt klasy Osoba ma pole imie każdy obiekt klasy Osoba ma takie same metody: przywitaj sie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól każdy obiekt klasy Osoba ma pole imie każdy obiekt klasy Osoba ma takie same metody: przywitaj sie nazywasz sie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Klasa pozwala wygodnie tworzyć obiekty Mówimy, że są to obiekty danej klasy: jozek to obiekt klasy Osoba franek to obiekt klasy Osoba Każdy z obiektów ma swoje własne pola i może je dowolnie ustawiać jozek ma swoje własne pole imie niezależnie od tego franek na swoje pole imie Obiekty danej klasy mają taką samą listę metod i pól każdy obiekt klasy Osoba ma pole imie każdy obiekt klasy Osoba ma takie same metody: przywitaj sie nazywasz sie przedstaw sie Wojciech Rząsa, KIiA PRz Java 33/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Obiekty danej klasy mają: Wojciech Rząsa, KIiA PRz Java 34/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Obiekty danej klasy mają: Taki sam zestaw cech Wojciech Rząsa, KIiA PRz Java 34/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Obiekty danej klasy mają: Taki sam zestaw cech Reagują na taki sam zestaw komunikatów Wojciech Rząsa, KIiA PRz Java 34/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa Obiekty danej klasy mają: Taki sam zestaw cech Reagują na taki sam zestaw komunikatów Potrafią podejmować takie same działania Wojciech Rząsa, KIiA PRz Java 34/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa w Javie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class Osoba { // pola , czyli zmienne wewn ą trz klasy private String imie ; private String nazwisko ; // metody , czyli funkcje wewn ą trz klasy public void nazywasz_sie ( String imie , String nazwisko ) { this . imie = imie ; // this . imie -- pole imie this . nazwisko = nazwisko ; // this . nazwisko -- pole nazwisko } public void przywitaj_sie () { System . out . println ( " Cze ś ć " ); } public void przedstaw_sie () { System . out . println ( " Jestem " + imie + " " + nazwisko ); } } Wojciech Rząsa, KIiA PRz Definicja klasy Osoba Java 35/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Obiekty w Javie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class OsobaDemo { public static void main ( String [] args ) { Osoba jozek ; // referencja do obiektu osoba jozek = new Osoba (); // utworzenie i zapamietanie // nowego obiektu jozek . nazywasz_sie ( " J ó zef " , " Nowak " ); // wywo ł anie metody // na obiekcie Osoba franek = new Osoba (); franek . nazywasz_sie ( " Franciszek " , " Kowalski " ); jozek . przywitaj_sie (); jozek . przedstaw_sie (); franek . przywitaj_sie (); franek . przedstaw_sie (); } } Wojciech Rząsa, KIiA PRz Użycie obiektów klasy Osoba Java 36/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasy i obiekty Nazwy klas z wielkiej litery Wojciech Rząsa, KIiA PRz Java 37/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasy i obiekty Nazwy klas z wielkiej litery Nazwy zmiennych z małej litery Wojciech Rząsa, KIiA PRz Java 37/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasy i obiekty Nazwy klas z wielkiej litery Nazwy zmiennych z małej litery Nazwy pól z małej litery Wojciech Rząsa, KIiA PRz Java 37/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasy i obiekty Nazwy klas z wielkiej litery Nazwy zmiennych z małej litery Nazwy pól z małej litery Nazwy metod z małej litery Wojciech Rząsa, KIiA PRz Java 37/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Konstruktor (Prawie) zwyczajna metoda Wywoływana w momencie tworzenia obiektu Pozwala ustawić początkowe wartości pól Musi się nazywać tak samo jak klasa Nie zwraca wartości Wojciech Rząsa, KIiA PRz Java 38/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa z konstruktorem 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class Osoba { // pola , czyli zmienne wewn ą trz klasy private String imie ; private String nazwisko ; public Osoba ( String imie , String nazwisko ) { this . imie = imie ; this . nazwisko = nazwisko ; } // metody , czyli funkcje wewn ą trz klasy public void nazywasz_sie ( String imie , String nazwisko ) { this . imie = imie ; // this . imie -- pole imie this . nazwisko = nazwisko ; // this . nazwisko -- pole nazwisko } public void przywitaj_sie () { System . out . println ( " Cze ś ć " ); } public void przedstaw_sie () { System . out . println ( " Jestem " + imie + " " + nazwisko ); } } Wojciech Rząsa, KIiA PRz Java 39/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Użycie klasy z konstruktorem 1 2 3 4 5 6 7 8 9 10 11 12 public class OsobaDemo { public static void main ( String [] args ) { Osoba jozek = new Osoba ( " J ó zef " , " Nowak " ); Osoba franek = new Osoba ( " Franciszek " , " Kowalski " ); jozek . przywitaj_sie (); jozek . przedstaw_sie (); franek . przywitaj_sie (); franek . przedstaw_sie (); } } Użycie klasy Osoba z konstruktorem Wojciech Rząsa, KIiA PRz Java 40/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Można utworzyć osobne klasy: Student Pracownik Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Można utworzyć osobne klasy: Student Pracownik Każdej z tych klas dodać wszystkie cechy, które ma Osoba Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Można utworzyć osobne klasy: Student Pracownik Każdej z tych klas dodać wszystkie cechy, które ma Osoba Mówimy, że Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Można utworzyć osobne klasy: Student Pracownik Każdej z tych klas dodać wszystkie cechy, które ma Osoba Mówimy, że klasa Student dziedziczy po klasie Osoba Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Różne klasy mogą mieć wspólne cechy Osoba Student Pracownik uczelni Ale mają też cechy, ktore je różnią Student – lista ocen Pracownik – tytuł! ;-) Można utworzyć osobne klasy: Student Pracownik Każdej z tych klas dodać wszystkie cechy, które ma Osoba Mówimy, że klasa Student dziedziczy po klasie Osoba klasa Pracownik dziedziczy po klasie Osoba Wojciech Rząsa, KIiA PRz Java 41/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Student i Pracownik 1 2 3 4 public class Student extends Osoba { private float oceny []; private int ile_ocen ; } Klasa Student dziedzicząca po klasie Osoba 1 2 3 public class Pracownik extends Osoba { private String tytul ; } Klasa Pracownik dziedzicząca po klasie Osoba Wojciech Rząsa, KIiA PRz Java 42/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa dziedzicząca Dziedziczy pola i metody klasy nadrzędnej (W Javie) nie dziedziczy konstruktorów Może dodać swoje pola i metody Może nadpisać odziedziczone pola i metody Wojciech Rząsa, KIiA PRz Java 43/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Kompletna klasa Student 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class Student extends Osoba { private float oceny []; private int ile_ocen ; public Student ( String imie , String nazwisko ) { super ( imie , nazwisko ); oceny = new float [50]; ile_ocen = 0; } public void zdales_na ( float ocena ) { oceny [ ile_ocen ] = ocena ; ile_ocen ++; } } Klasa Student z własnymi polami i metodami Wojciech Rząsa, KIiA PRz Java 44/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Kompletna klasa Pracownik 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Pracownik extends Osoba { private String tytul ; public Pracownik ( String imie , String nazwisko ) { super ( imie , nazwisko ); tytul = " " ; } public Pracownik ( String tytul , String imie , String nazwisko ) { super ( imie , nazwisko ); this . tytul = tytul ; } } Klasa Pracownik z własnymi polami i metodami Wojciech Rząsa, KIiA PRz Java 45/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Kompletna klasa Pracownik 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Pracownik extends Osoba { private String tytul ; public Pracownik ( String imie , String nazwisko ) { super ( imie , nazwisko ); tytul = " " ; } public Pracownik ( String tytul , String imie , String nazwisko ) { super ( imie , nazwisko ); this . tytul = tytul ; } // To nie zadzia ł a : imie i nazwisko s ą prywatne ! public void przedstaw_sie () { System . out . println ( " Jestem " + tytul + " " + imie + " " + nazwisko ); } } Klasa Pracownik nie ma dostępu do prywatnych pól klasy Osoba Wojciech Rząsa, KIiA PRz Java 46/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dostęp do pól i metod private dostęp tylko dla tej klasy public dostep dla wszystkich protected dostęp tylko dla tej klasy i tych, które z niej dziedziczą (brak modyfikatora) – o tym kiedy indziej ;) Wojciech Rząsa, KIiA PRz Java 47/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Klasa z polami protected 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class Osoba { // pola , czyli zmienne wewn ą trz klasy protected String imie ; protected String nazwisko ; public Osoba ( String imie , String nazwisko ) { this . imie = imie ; this . nazwisko = nazwisko ; } // metody , czyli funkcje wewn ą trz klasy public void nazywasz_sie ( String imie , String nazwisko ) { this . imie = imie ; // this . imie -- pole imie this . nazwisko = nazwisko ; // this . nazwisko -- pole nazwisko } public void przywitaj_sie () { System . out . println ( " Cze ś ć " ); } public void przedstaw_sie () { System . out . println ( " Jestem " + imie + " " + nazwisko ); } } Wojciech Rząsa, KIiA PRz Java 48/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Użycie klas dziedziczących i dziedziczonych – zmienne 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class OsobaDemo { public static void main ( String [] args ) { Osoba pan_jozek = new Osoba ( " J ó zef " , " Nowak " ); Pracownik prof = new Pracownik ( " prof . dr hab . " , " Krzysztof " , " Kowalski " ); Student tomek = new Student ( " Tomasz " , " Kwiatkowski " ); Osoba [] ludzie = new Osoba [3]; ludzie [0] = tomek ; ludzie [1] = prof ; ludzie [2] = pan_jozek ; for ( int i = 0; i < ludzie . length ; i ++) { ludzie [ i ]. przedstaw_sie (); } } } Wojciech Rząsa, KIiA PRz Użycie klas dziedziczących po klasie Osoba Java 49/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Użycie klas dziedziczących i dziedziczonych – metody 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class OsobaDemo { static void p r z e d s t a w _ c z l o w i e k a ( Osoba o ) { o . przedstaw_sie (); } public static void main ( String [] args ) { Osoba pan_jozek = new Osoba ( " J ó zef " , " Nowak " ); Pracownik prof = new Pracownik ( " prof . dr hab . " , " Krzysztof " , " Kowalski " ); Student tomek = new Student ( " Tomasz " , " Kwiatkowski " ); p r z e d s t a w _ c z l o w i e k a ( pan_jozek ); p r z e d s t a w _ c z l o w i e k a ( prof ); } } Użycie klas dziedziczących po klasie Osoba Wojciech Rząsa, KIiA PRz Java 50/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Dziedziczenie Pozwala napisać kod raz, używać wiele razy W Javie dziedziczyć można tylko po jednej klasie bazowej Po danej klasie może dziedziczyć wiele klas. . . . . . z których znowu dziedziczyć mogą kolejne klasy Wojciech Rząsa, KIiA PRz Java 51/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Interfejsy Niezależnie od dziedziczenia Klasa może implementować wiele interfejsów Interfejs deklaruje metody, ale ich nie implementuje Nie da się utworzyć obiektu z interfejsu Wojciech Rząsa, KIiA PRz Java 52/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Interfejsy Niezależnie od dziedziczenia Klasa może implementować wiele interfejsów Interfejs deklaruje metody, ale ich nie implementuje Nie da się utworzyć obiektu z interfejsu 1 2 3 4 interface Mieszkaniec { public void wypiszAdres (); public String podajAdres (); } Definicja interfejsu Mieszkaniec Wojciech Rząsa, KIiA PRz Java 52/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Implementacja interfejsu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class Student extends Osoba implements Mieszkaniec { private float oceny []; private int ile_ocen ; public Student ( String imie , String nazwisko ) { super ( imie , nazwisko ); oceny = new float [50]; ile_ocen = 0; } public void zdales_na ( float ocena ) { oceny [ ile_ocen ] = ocena ; ile_ocen ++; } public String podajAdres () { return " Akademik " ; } public void wypiszAdres () { System . out . println ( podajAdres ()); } } Wojciech Rząsa, KIiA PRz Java 53/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Implementacja interfejsu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class Pracownik extends Osoba implements Mieszkaniec { private String tytul ; /* * (...) * tu si ę nic nie zmienia * (...) */ public String podajAdres () { return " Moja Willa ! " ; } public void wypiszAdres () { System . out . println ( podajAdres ()); } } Klasa Pracownik implementująca interfejs Mieszkaniec Wojciech Rząsa, KIiA PRz Java 54/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wstęp W Javie Dziedziczenie Interfejsy Wykorzystanie interfejsu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class M ie sz ka n ie cD em o { public static void main ( String [] args ) { Osoba pan_jozek = new Osoba ( " J ó zef " , " Nowak " ); Pracownik prof = new Pracownik ( " prof . dr hab . " , " Krzysztof " , " Kowalski " ); Student tomek = new Student ( " Tomasz " , " Kwiatkowski " ); Mieszkaniec [] ludzie = new Mieszkaniec [3]; ludzie [0] = tomek ; ludzie [1] = prof ; // ludzie [2] = pan_jozek ; tego nie mo ż na zrobi ć ! for ( int i = 0; i < ludzie . length ; i ++) { ludzie [ i ]. wypiszAdres (); // b ł ą d dla i == 2 } } } Użycie klas implementujących interfejs Mieszkaniec Wojciech Rząsa, KIiA PRz Java 55/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Plan 1 Wstęp 2 Zmienne i typy 3 Instrukcje sterujące 4 Tablice 5 Wypisywanie i wczytywanie 6 Programowanie obiektowe 7 Wyjątki – obsługa błędów Wojciech Rząsa, KIiA PRz Java 56/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wyjątek jest obiektem Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wyjątek jest obiektem Wyjątek może być przechwycony Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wyjątek jest obiektem Wyjątek może być przechwycony Nieprzechwycony wyjątek powoduje zakończenie programu Exception in thread "main" java.lang.NullPointerException at MieszkaniecDemo.main(mainMieszkaniecDemo.java:15) Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wyjątek jest obiektem Wyjątek może być przechwycony Nieprzechwycony wyjątek powoduje zakończenie programu Exception in thread "main" java.lang.NullPointerException at MieszkaniecDemo.main(mainMieszkaniecDemo.java:15) Dokumentacja do klas i metod mówi jakie wyjątki mogą one generować Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Wyjątki Służą do obsługi błędów Program generuje wyjątek w przypadku błędu Wyjątek jest obiektem Wyjątek może być przechwycony Nieprzechwycony wyjątek powoduje zakończenie programu Exception in thread "main" java.lang.NullPointerException at MieszkaniecDemo.main(mainMieszkaniecDemo.java:15) Dokumentacja do klas i metod mówi jakie wyjątki mogą one generować Java może zażądać przechwycenia wyjątku w programie Wojciech Rząsa, KIiA PRz Java 57/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątku 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class M ie sz ka n ie cD em o { public static void main ( String [] args ) { Osoba pan_jozek = new Osoba ( " J ó zef " , " Nowak " ); Pracownik prof = new Pracownik ( " prof . dr hab . " , " Krzysztof " , " Kowalski " ); Student tomek = new Student ( " Tomasz " , " Kwiatkowski " ); Mieszkaniec [] ludzie = new Mieszkaniec [3]; ludzie [0] = tomek ; ludzie [1] = prof ; // ludzie [2] = pan_jozek ; tego nie mo ż na zrobi ć ! try { for ( int i = 0; i < ludzie . length ; i ++) { ludzie [ i ]. wypiszAdres (); } } catch ( N u l l P o i n t e r E x c e p t i o n e ) { System . out . println ( " Z ł apa ł em : " + e + " tablica nie jest wype ł niona !? " ); } } } Wojciech Rząsa, KIiA PRz Java 58/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątku – stack trace 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class M ie sz ka n ie cD em o { public static void main ( String [] args ) { Osoba pan_jozek = new Osoba ( " J ó zef " , " Nowak " ); Pracownik prof = new Pracownik ( " prof . dr hab . " , " Krzysztof " , " Kowalski " ); Student tomek = new Student ( " Tomasz " , " Kwiatkowski " ); Mieszkaniec [] ludzie = new Mieszkaniec [3]; ludzie [0] = tomek ; ludzie [1] = prof ; // ludzie [2] = pan_jozek ; tego nie mo ż na zrobi ć ! try { for ( int i = 0; i < ludzie . length ; i ++) { ludzie [ i ]. wypiszAdres (); } } catch ( N u l l P o i n t e r E x c e p t i o n e ) { e . p ri nt St a ck Tr ac e (); } } } Wojciech Rząsa, KIiA PRz Java 59/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątku – stack trace java.lang.NullPointerException at MieszkaniecDemo.main(MieszkaniecDemo.java:16) Wojciech Rząsa, KIiA PRz Java 60/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątków – uwagi catch przechwyci tylko wyjątek odpowiedniej klasy Wojciech Rząsa, KIiA PRz Java 61/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątków – uwagi catch przechwyci tylko wyjątek odpowiedniej klasy Po jednym try może być wiele catch dla różnych klas wyjątków Wojciech Rząsa, KIiA PRz Java 61/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątków – uwagi catch przechwyci tylko wyjątek odpowiedniej klasy Po jednym try może być wiele catch dla różnych klas wyjątków Można użyć bloku finally, który wykona się zawsze, niezależnie od wyjątków Wojciech Rząsa, KIiA PRz Java 61/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Obsługa wyjątków – uwagi catch przechwyci tylko wyjątek odpowiedniej klasy Po jednym try może być wiele catch dla różnych klas wyjątków Można użyć bloku finally, który wykona się zawsze, niezależnie od wyjątków Metoda może deklarować, że generuje wyjątek pewnej klasy (nawet jeśli w rzeczywistości tego nie robi) 1 2 3 public void przedstaw_sie () throws N a m e N o t S e t E x c e p t i o n { System . out . println ( " Jestem " + imie + " " + nazwisko ); } Metoda może wygenerować wyjątek Wojciech Rząsa, KIiA PRz Java 61/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Generowanie wyjątku 1 2 3 4 5 6 public void przedstaw_sie () { if ( imie == null || nazwisko == null ) { throw new R u n t i m e E x c e p t i o n ( " name not known ! " ); } System . out . println ( " Jestem " + imie + " " + nazwisko ); } Generowanie wyjątku Własny wyjątek: klasa dziedzicząca po Exception lub RuntimeException Wojciech Rząsa, KIiA PRz Java 62/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Generowanie wyjątku 1 2 3 4 5 6 public void przedstaw_sie () { if ( imie == null || nazwisko == null ) { throw new R u n t i m e E x c e p t i o n ( " name not known ! " ); } System . out . println ( " Jestem " + imie + " " + nazwisko ); } Generowanie wyjątku Własny wyjątek: klasa dziedzicząca po Exception lub RuntimeException Metoda generująca RuntimeException lub pochodny nie musi go deklarować Wojciech Rząsa, KIiA PRz Java 62/62 Wstęp Zmienne Sterowanie Tablice IO OOP Wyjątki Generowanie wyjątku 1 2 3 4 5 6 public void przedstaw_sie () { if ( imie == null || nazwisko == null ) { throw new R u n t i m e E x c e p t i o n ( " name not known ! " ); } System . out . println ( " Jestem " + imie + " " + nazwisko ); } Generowanie wyjątku Własny wyjątek: klasa dziedzicząca po Exception lub RuntimeException Metoda generująca RuntimeException lub pochodny nie musi go deklarować Metoda generująca Exception lub pochodny musi go deklarować w nagłówku Wojciech Rząsa, KIiA PRz Java 62/62