Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Język Java Paweł Rajba pawel@wsiz.wroc.pl http://www.wsiz.wroc.pl/strony/pawel_rajba/

Podobne prezentacje


Prezentacja na temat: "Język Java Paweł Rajba pawel@wsiz.wroc.pl http://www.wsiz.wroc.pl/strony/pawel_rajba/"— Zapis prezentacji:

1 Język Java Paweł Rajba pawel@wsiz.wroc.pl

2 O czym dzisiaj będzie Struktura programu Klasy Pola, metody
Zasięg identyfikatorów i specyfikatory dostępu Konstruktory i tworzenie obiektów Komunikacja z obiektami Statyczne składowe klasy Pakiety

3 Struktura programu package ... // deklaracja pakietu (niekoniecznie)
import // deklaracja importów (często przydatne) import ... public class A { ... } class B class C

4 Struktura programu Ograniczenia
w jednym pliku źródłowym może być tylko jedna klasa publiczna klasa publiczna musi dokładnie taką samą nazwę jak nazwa pliku (z dokładnością do małych i wielkich liter) Początek wykonywania programu metoda statyczna public static void main(String[] args) { } w jednej z klas (niekoniecznie publicznej)

5 Klasy Co to jest klasa? Składowe pola: zmienne i stałe, dane obiektu
metody: funkcje, operują na danych obiektu Przykład klasy class Samochod { String marka, model, nr_rej, kolor; int rocznik; rejestruj() {} wyrejestruj() {} jedz() {} stoj() {} wlacz_swiatla() {} wylacz_swiatla() {} }

6 Pola i metody Deklaracja metod typ_wyniku Nazwa(lista_parametrów) { treść metody... } int suma(int x, int y) { return x+y; } Zestaw metod klasy nazywamy interfejsem tej klasy

7 Pola i metody Przykazywanie argumentów
argumenty do metod przekazywane są tylko przez wartość Przykład: void dodajeden(int x) { x; } z=0; dodajeden(z); // i tutaj nadal z==0

8 Zasięg identyfikatorów
Zasięg identyfikatora (zmiennej, stałej, metody) jest blok, którym jest on dostępny W konstruktorach i metodach można przesłaniać pola klasy class A { int x=10; void zrobcos() { int x=0; // dotyczy zmiennej lokalnej x+=1; // dotyczy zmiennej lokalnej this.x; // dotyczy pola klasy } }

9 Zasięg identyfikatorów
Nie wolno przesłaniać zmiennych lokalnych w blokach wewnętrznych int x=0; if (x==0) { int x=5; // tak nie wolno } int i=0; for (int i; i<10; i++) { ... } // tak też nie wolno

10 Specyfikatory dostępu
Regulują dostęp do pól i metod jednej klasy z innej klasy prywatna – dostępna tylko w danej klasie; specyfikator private zaprzyjaźniona – dostępna ze wszytkich klas danego pakietu; domyślna, bez specyfikatora chroniona lub zabezpieczona – dostępna z danej klasy i wszystkich jej klas potomnych; specyfikator protected publiczna – dostępna ze wszystkich klas; specyfikator public

11 Konstruktory Konstruktor uruchamiany raz przy tworzeniu obiektu
nie zwraca żadnej wartości jego nazwa jest taka jak nazwa klasy Przykład class LZespolona { double re, im; LZespolona(double x, double y) { re=x; im=y; } void Pokaz() { ... } }

12 Tworzenie obiektów Obiekt tworzymy za pomocą operatora new
Pierwsze użycie: NazwaKlasy nazwaobiektu = new NazwaKlasy(argumentu); Drugie użycie: NazwaKlasy nazwaobiektu; nazwaobiektu = new NazwaKlasy(argumentu)

13 Tworzenie obiektów Inicjalizacja pól Zasady Domyślne inicjalizacje
każde odwołanie do klasy inicjuje najpierw pola statyczne tworzenie obiektu inicjuje pola niestatyczne, a następnie wykonywany jest konstruktor najpierw inicjowane są pola statyczne, a potem niestatyczne; wg kolejności deklaracji Domyślne inicjalizacje pola klasy mają zagwarantowane na wartości 0 zmienne lokalne nie mają zagwarantowanej domyślnej inicjalizacji pól

14 Tworzenie obiektów Przykład class LZespolona { double re, im; LZespolona(double x, double y) { re=x; im=y; } } LZespolona z1 = new LZespolona(1,2); LZespolona z2 = new LZespolona(3,4); Dostępne są dwie liczby: (1,2) i (3,4)

15 Komunikacja z obiektami
Operowanie na obiektach dostęp do pól i metod jest przez operator . przykłady z1.re, z1.pokaz() Słowo kluczowe this znaczenie przyklad class LZespolona { double re, im; LZespolona(double re, double im) { this.re=re; this.im=im; } }

16 Klasy i obiekty Przykład 1 class ParaLiczb { int x, y; ParaLiczb(int x, int y) { this.x=x; this.y=y; } void Pokaz() { System.out.println(this.x+", "+this.y); } int Suma() { return x+y; } int Iloczyn() { return x*y; } }

17 Klasy i obiekty Przykład 1 c.d. public class Przyklad1 { public static void main(String[] args) { ParaLiczb p1 = new ParaLiczb(1,2); ParaLiczb p2 = new ParaLiczb(4,5); System.out.print("Dana jest para: "); p1.Pokaz(); System.out.println("Suma: "+p1.Suma()); System.out.println("Iloczyn: "+p1.Iloczyn()); System.out.print("Dana jest druga para: "); p2.Pokaz(); System.out.println("Suma: "+p2.Suma()); System.out.println("Iloczyn: "+p2.Iloczyn()); } }

18 Klasy i obiekty Przykład 2 class Punkt { double x, y; Punkt(double x, double y) { this.x=x; this.y=y; } double Odleglosc(Punkt p) { return Math.sqrt((this.x-p.x)*(this.x-p.x) (this.y-p.y)*(this.y-p.y)); } }

19 Klasy i obiekty Przykład 2 c.d. public class Przyklad2 { public static void main(String[] args) { Punkt p1 = new Punkt(1,2); Punkt p2 = new Punkt(5,5); System.out.println("Odleglosc p1 od p2: " p1.Odleglosc(p2)); System.out.println("Odleglosc p2 od p1: " p2.Odleglosc(p1)); } }

20 Klasy i obiekty Przykład 3 class Punkt { double x, y; Punkt(double x, double y) { this.x=x; this.y=y; } double odleglosc(Punkt p) { return Math.sqrt((this.x-p.x)*(this.x-p.x) (this.y-p.y)*(this.y-p.y)); } }

21 Klasy i obiekty Przykład 3 c.d. public class Przyklad3 { public static void main(String[] args) { Punkt[] t = new Punkt[3]; Punkt p = new Punkt(3,5); double odl = 0.0; t[0] = new Punkt(2,7); t[1] = new Punkt(4,5); t[2] = new Punkt(2,6); for (int i=0; i<t.length; i++) { if (p.odleglosc(t[i])>odl) { odl=p.odleglosc(t[i]); } } System.out.println(odl); } }

22 Statyczne składowe klasy
Co to znaczy, że coś w klasie jest statyczne? Deklaracja dodanie specyfikatora static Użycie dwa przypadki gdy obiekt nie istnieje: NazwaKlasy.NazwaSkładowej gdy obiekt istnieje, tak samo jak dla niestatycznych ze statycznych metod nie wolno odwoływać się do składowych niestatycznych (mogą nie istnieć)

23 Statyczne składowe klasy
Typowy przykład class Punkt { static int ilosc=0; // pole statyczne double x, y; Punkt(double x, double y) { ilosc++; this.x=x; this.y=y; } double odleglosc(Punkt p) { return Math.sqrt((this.x-p.x)*(this.x-p.x) (this.y-p.y)*(this.y-p.y)); } }

24 Statyczne składowe klasy
Typowy przykład c.d. public class Przyklad4 { public static void main(String[] args) { Punkt[] t = new Punkt[10]; for (int i=0; i<5; i++) { t[i] = new Punkt(i,i); } System.out.println(Punkt.ilosc); System.out.println(t[0].ilosc); } }

25 Pakiety Kilka uwag pakiety możemy rozpatrywać jako biblioteki klas
każda klasa należy do jakiegoś pakietu (nazwanego lub nienazwanego) pakiety są zorganizowane hierarchicznie co daje możliwość organizowania klas w pakiety możemy grupować klasy unikamy konfliktów nazw (np. może być kilka klas Button, List, itp.) nazwy kwalifikowane nazwa_pakietu.nazwa_klasy polecenie import (np. import java.awt.Button)

26 Pakiety Przykład 1 tworzymy plik przyklad1.java katalog tools
plik tools/LZespolona.java

27 Pakiety Przyklad 1 c.d. zawartość pliku tools/LZespolona.java
package tools; public class LZespolona { public double re, im; public LZespolona(double x, double y) { re=x; im=y; } public LZespolona add(LZespolona z) { return new LZespolona(this.re+z.re, this.im+z.im);

28 Pakiety Przykład 1 c.d. zawartość pliku Przyklad1.java
import tools.LZespolona; public class Program01 { static void wypisz(LZespolona z) { System.out.println(z.re+"+"+z.im+"i"); } public static void main(String[] args) { LZespolona z1 = new LZespolona(1,1); LZespolona z2 = new LZespolona(2,3); LZespolona z3 = z1.add(z2); wypisz(z1); wypisz(z2); wypisz(z3);

29 Ćwiczenie 1 Rozszerzyć klasę ParaLiczb o następujące metody Roznica()
Iloraz() Należy przy tym pamiętać, aby nie dopuścić do dzielenia przez 0.

30 Ćwiczenie 2 Rozszerzyć klasę LZespolona z pakietu tools o operację
odejmowania mnożenia liczb zespolonych


Pobierz ppt "Język Java Paweł Rajba pawel@wsiz.wroc.pl http://www.wsiz.wroc.pl/strony/pawel_rajba/"

Podobne prezentacje


Reklamy Google