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

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Klasy i obiekty.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Programowanie obiektowe w Javie
C++ wykład 2 ( ) Klasy i obiekty.
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Tworzenie aplikacji mobilnych
Programowanie obiektowe III rok EiT
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Kurs języka C++ – wykład 3 ( )
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
Wypadkowa sił.. Bardzo często się zdarza, że na ciało działa kilka sił. Okazuje się, że można działanie tych sił zastąpić jedną, o odpowiedniej wartości.
Dodawania i odejmowanie sum algebraicznych. Mnożenie sumy algebraicznej przez jednomian. Opracowanie Joanna Szymańska Konsultacja Bożena Hołownia.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Menu Jednomiany Wyrażenia algebraiczne -definicja Mnożenie i dzielenie sum algebraicznych przez jednomian Mnożenie sum algebraicznych Wzory skróconego.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Opracowanie Joanna Szymańska Konsultacja Bożena Hołownia.
Zapraszam na spotkanie z wyrażeniami algebraicznymi!
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Dziedziczenie, polimorfizm, Interfejsy
Programowanie Obiektowe – Wykład 6
Programowanie Obiektowe – Wykład 1
Schematy blokowe.
Kurs języka C++ – wykład 2 ( )
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
terminologia, skale pomiarowe, przykłady
Podstawowe polecenia systemu
Liczby pierwsze.
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Konsultacja Bożena Hołownia
(c) Krzysztof Barteczko 2014
Akademia C# lab. 9 Zdarzenia i delegaty.
Funkcja – definicja i przykłady
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe
Optymalizacja programów Open-Source
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
Programowanie obiektowe
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Kurs języka C++ – wykład 13 ( )
Programowanie obiektowe
Języki programowania.
Programowanie obiektowe
Koszyk danych.
Podstawy informatyki Zygfryd Głowacz.
Programowanie obiektowe Wykład 11
Pisemne dzielenie liczb naturalnych
Iteracyjno-rozwojowy cykl oprogramowania 2
Proste obliczenia w arkuszu kalkulacyjnym
Zdarzenia (eventy) Zdarzenia służą do powiadomienia użytkownika, gdy w używanej klasie dojdzie do pewnych wydarzeń zdefiniowanych przez twórcę klasy.
Implementacja rekurencji w języku Haskell
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Asynchroniczne operacje I/O za pomocą IOCP
Python 3 Wprowadzenie.
Zapis prezentacji:

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

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

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

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)

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() {} }

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

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

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 } }

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

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

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() { ... } .... }

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)

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

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)

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; } ... }

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; } }

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()); } }

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)); } }

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)); } }

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)); } }

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); } }

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ć)

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)); } }

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); } }

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)

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

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);

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);

Ć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.

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