Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści"

Transkrypt

1 Programowanie obiektowe Wykład 04 Maciej Wołoszyn 17 marca 2009 Spis treści 1 Wyjatki i obsługa błędów Rzucanie wyjątków Argumenty konstruktorów Przechwytywanie wyjątków Tworzenie własnych wyjątków Specyfikacja rzucanych wyjątków Przechwytywanie dowolnego wyjątku Ponowne rzucanie wyjątków Wyjątki typu RuntimeException Blok finally Wyjątki i dziedziczenie Dopasowywanie wyjątków Wyjątki sprawdzane Podsumowanie Wykrywanie typów Obiekt Class Refleksje (Odzwierciedlenia) Podsumowanie Proszę o przesyłanie na ten adres informacji o znalezionych błędach, literówkach oraz propozycji zmian i uzupełnień. Dokument przygotowano za pomocą systemu LATEX. Wszelkie prawa zastrzeżone. 1

2 Programowanie obiektowe. Wykład Wyjatki i obsługa błędów Java zaleca (a w przypadku wykorzystania klas bibliotecznych praktycznie wymusza) obsługę błędów za pomocą mechanizmu wyjatków (exceptions) czyli rezygnację z funkcji zwracających kody błędów i ich każdorazowego sprawdzania dotyczy to oczywiście tylko błędów, które mogą się pojawić dopiero na etapie uruchomienia programu, a nie jego kompilacji zalety mechanizmu obsługi wyjątków: możliwość przekazania informacji o błędzie w inne miejsce programu nie zawsze od razu mamy dość informacji, aby coś zaradzić (w przeciwnym wypadku nie potrzebujemy wcale rzucać wyjątku) uporządkowanie obsługi błędów często wystarczy obsługiwać dany błąd w jednym miejscu, dzięki czemu oddzielamy rozwiązanie zasadniczego zagadnienia od obsługi możliwych problemów 1.1 Rzucanie wyjatków instrukcja throw nowy wyjątek (obiekt odpowiedniej klasy! np. bibliotecznej) jest tworzony w zwykły sposób operatorem new wykonanie programu w aktualnym miejscu (metodzie, bloku instrukcji) zostaje przerwane dalszym przebiegiem steruje już procedura obsługi danego wyjątku, tzw. exception handler (o ile jest przygotowana) class Mat { static final double EPSILON = 1e-12; static double div(double x, double y) { return x/y; static double divexc(double x, double y) { if( Math.abs(y) < EPSILON) throw new ArithmeticException(); return x/y; System.out.println("1)"+Mat.div(0,0)); System.out.println("2)"+Mat.divExc(0,0));

3 Programowanie obiektowe. Wykład )NaN Exception in thread main java.lang.arithmeticexception at Mat.divExc(P01.java:8) at P01.main(P01.java:38) System.out.println("3)"+5/0); Exception in thread main java.lang.arithmeticexception: at P01.main(P01.java:38) nie zawsze rzucanie wyjatku ma sens, np.: / by zero static void pokazrozw(int Wx,int Wy,int W){ if(w!=0){ System.out.print("Wyniki: "); System.out.println(Wx/W+" "+Wy/W); else{ // rozwiazanie na miejscu zamiast wyjatku: System.out.println("W=0!"); 1.2 Argumenty konstruktorów standardowe, biblioteczne klasy wyjątków posiadają dwa rodzaje konstruktorów: domyślne, np. ArithmeticException() przyjmujące opis w postaci String-a, np. ArithmeticException(String s) static double divexc(double x, double y) { if( Math.abs(y) < EPSILON) throw new ArithmeticException("div/0"); return x/y; System.out.println("2)"+Mat.divExc(0,0)); Exception in thread main java.lang.arithmeticexception: div/0 at Mat.divExc(P01.java:8) at P01.main(P01.java:38)

4 Programowanie obiektowe. Wykład 04 4 jako wyjątki mogą być użyte dowolne obiekty klas dziedziczących po klasie Throwable najczęściej do obsługi każdego typu błędu stosuje się osobną klasę informacja o błędzie jest przechowywana wewnątrz obiektu; czasem jedyną potrzebną informacją jest typ wyjątku i żadne dodatkowe dane nie są w takiej klasie przechowywane 1.3 Przechwytywanie wyjatków rzucając wyjątek zakładamy, że zostanie on gdzieś odebrany i obsłużony aby nie spowodować natychmiastowego opuszczenia bieżącej metody, użycie kodu, który może wyprodukować wyjątek musi być zrealizowane w bloku instrukcje po try następują bloki catch (handlers) po jednym dla każdego typu wyjątku, który chcemy przechwycić kod mogacy generować wyjatki catch( A e ) { obsługa wyjatku typu A catch( B e ) { obsługa wyjatku typu B catch( C e ) { obsługa wyjatku typu C... każdy blok catch zachowuje się podobnie do funkcji, która pobiera dokładnie jeden argument (identyfikator musi być podany nawet jeśli nie jest wykorzystywany i do obsługi wyjątku wystarcza nam znajomość jego typu) bloki catch muszą się znaleźć bezpośrednio za try po wystąpieniu wyjątku uruchamiany jest pierwszy handler z pasującym typem jeśli w bloku try jest kilka metod mogących powodować ten sam wyjątek, to do jego obsługi potrzeba tylko jednego catch int m = 1/0; System.out.println("dalej?"); catch(arithmeticexception e){

5 Programowanie obiektowe. Wykład 04 5 System.out.println("tak nie mozna..."); System.out.println("teraz dalej!"); tak nie mozna... teraz dalej! 1.4 Tworzenie własnych wyjatków często biblioteczne klasy wyjątków nie opisują dobrze rodzaju błędu, który może mieć miejsce w naszym programie można utworzyć własną klasę reprezentującą wyjątek dziedzicząc po istniejącej już klasie, jeśli to możliwe o podobnym znaczeniu class AaaException extends Exception { class DivByZeroException extends ArithmeticException { class ZeroByZeroException extends ArithmeticException { class Mat { static final double EPSILON = 1e-12; static double divexc(double x, double y) { if( Math.abs(y) < EPSILON) if(math.abs(x) < EPSILON) throw new ZeroByZeroException(); else throw new DivByZeroException(); return x/y; for(int k=0;k<2;k++) double w = Mat.divExc(k,0); catch(divbyzeroexception e) { System.err.println("! x/0!");

6 Programowanie obiektowe. Wykład 04 6 catch(zerobyzeroexception e) { System.err.println("! 0/0!");! 0/0!! x/0! można oczywiście dodać do klasy dodatkowe informacje, np. o wartościach, które spowodowały wygenerowanie wyjątku class Mat { static final double EPSILON = 1e-12; static double divexc(double x, double y) { if( Math.abs(y) < EPSILON) throw new DivByZeroException(y); return x/y; class DivByZeroException extends ArithmeticException { private double x; public DivByZeroException(double x) { this.x = x; public double x() { return x; double w = Mat.divExc(2,1e-13); catch(divbyzeroexception e) { System.err.print("! x/0!"); System.err.println(" : M="+e.x()); e.printstacktrace();! x/0! : M=1.0E-13 DivByZeroException at Mat.divExc(P03.java:5) at P03.main(P03.java:27)

7 Programowanie obiektowe. Wykład Specyfikacja rzucanych wyjatków nazwy wszystkich wyjątków, które nie pochodza od klasy RuntimeException muszą być wyszczególnione w deklaracji metody, która może je spowodować służy do tego słowo kluczowe throws void f() throws AaaException { /*... */ metoda nie musi rzucać wyjątku, który deklaruje (przydatne np. dla metod abstrakcyjnych) przykłady wyjątków niesprawdzanych na etapie kompilacji (dziedziczacych po klasie RuntimeException): ArithmeticException IndexOutOfBoundsException NegativeArraySizeException NullPointerException (pełna lista dostępna w dokumentacji) 1.6 Przechwytywanie dowolnego wyjatku ponieważ używane w programach klasy wyjątków dziedziczą po klasie Exception, więc w prosty sposób można spowodować przechwycenie dowolnego z nich: catch(exception e) { System.err.println("JAKIS wyjatek"); jeśli potrzeba przechwytywać dowolny wyjątek, to handler catch(exception e) umieszcza się jako ostatni z bloków catch inaczej zablokujemy możliwość obsługi bardziej szczegółowych typów wyjątków użycie typu Exception powoduje, że nie mamy informacji o konkretnym rodzaju wyjątku; możemy jedynie posłużyć się odziedziczonymi metodami throw new ArithmeticException("BLAD"); catch(exception e) { System.err.println(e.getMessage()); System.err.println(e);

8 Programowanie obiektowe. Wykład 04 8 Object Throwable Exception Error RuntimeException... DataFormatException ArithmeticException... NullPointerException Rysunek 1: Relacje dziedziczenia pomiędzy niektórymi klasami obsługującymi mechanizm wyjątków. BLAD java.lang.arithmeticexception: BLAD 1.7 Ponowne rzucanie wyjatków może się zdarzyć, że wskazane będzie rzucenie na wyższy poziom przechwyconego już wyjątku (np. przekazanie do dalszej obsługi dowolnego obiektu złapanego przez catch(exception e)) wystarczy w tym celu użyć instrukcji throw podając referencję do przechwyconego wyjątku catch(exception e) { System.err.println("przekazuje dalej.."); throw e; dalsze bloki catch w aktualnym miejscu nie są już sprawdzane wyrzucana jest kompletna informacja o wyjątku nawet jeśli przechwycony został jako Exception, to nie traci się informacji o dokładnym typie 1.8 Wyjatki typu RuntimeException dostępna jest pewna ilość automatycznie rzucanych wyjątków, potomków klasy RuntimeException

9 Programowanie obiektowe. Wykład 04 9 nie wymagają podania na liście rzucanych przez metodę wyjątków są to tzw. wyjatki niesprawdzane najczęściej się ich nie przechwytuje (sygnalizują błędy w programie, które powinny być usunięte na etapie debuggowania i testowania) przykład: ArrayIndexOutOfBoundsException tak samo jak inne typy wyjątków mogą być rzucane z dowolnego miejsca zbędne są instrukcje w rodzaju: if(x == null) throw new NullPointerException(); ponieważ użycie nie pokazującej na nic referencji x i tak spowoduje wyjątek NullPointerException 1.9 Blok finally pozwala wykonać jakieś instrukcje niezależnie od tego, czy wewnątrz bloku try wyjątek został rzucony, czy też nie gwarantuje wykonanie kodu, do którego mogłoby nie być powrotu jeśli nastąpiłby wyjątek (nawet jeśli brak odpowiedniego dla danego wyjątku bloku catch, to blok finally zostanie wykonany przed przekazaniem wyjątku dalej!) można np. zamknąć otwarte pliki albo połączenia sieciowe pełna postać obsługi wyjątków: instrukcje pod specjalnym nadzorem (mogace rzucać wyjatki typu E1, E2,...) catch(e1 e) { obsługa wyjatku E1 catch(e2 e) { obsługa wyjatku E2 finally { instrukcje wykonywane zawsze throw new ArithmeticException("BLAD"); catch(nullpointerexception e) { System.err.println("NullPointer"); finally { System.err.println("finally...");

10 Programowanie obiektowe. Wykład System.err.println("za pozno..."); finally... Exception in thread "main" java.lang.arithmeticexception: BLAD at P05.main(P05.java:9) należy uważać, aby przypadkiem rzucając wyjątek wewnątrz bloku finally nie spowodować utraty informacji o pierwszym zaistniałym wyjątku, jeśli nie był on dotąd obsłużony wyjątek rzucony wewnątrz finally pojawi się zanim dojdzie do przekazania dalej pierwotnego wyjątku 1.10 Wyjatki i dziedziczenie przy redefiniowaniu odziedziczonej po klasie podstawowej metody można rzucać tylko te wyjątki, na które pozwala deklaracja throws umieszczona w klasie podstawowej zapewnia to prawidłowe działanie m.in. polimorfizmu zastrzeżenie to nie dotyczy wyjątków potomnych od zadeklarowanych w klasie podstawowej ewentualnie można w redefiniowanej wersji metody zrezygnować z rzucania wyjątków class XException extends Exception { class YException extends Exception { class A { void f() throws Exception { void g() throws XException { class B extends A { void f() throws YException { //void g() throws YException { /* ZLE */ ograniczenie wyłącznie do wyjątków zadeklarowanych w klasie bazowej nie dotyczy również konstruktorów konstruktor klasy potomnej musi deklarować wyjątki rzucane przez konstruktor klasy bazowej konstruktor klasy potomnej nie może przechwytywać wyjątków rzucanych przez konstruktor klasy bazowej

11 Programowanie obiektowe. Wykład Dopasowywanie wyjatków po rzuceniu wyjątku system ich obsługi sprawdza dostępne handler-y w kolejności w jakiej są zapisane; po znalezieniu pasującego do typu wyjątku uznaje się wyjątek za obsłużony i nie jest prowadzone dalsze poszukiwanie handler-ów nie jest wymagane dokładne dopasowanie: obiekt klasy potomnej zostanie obsłużony przez blok catch napisany dla klasy bazowej class AException extends Exception { class BException extends AException { throw new BException(); catch (AException e) { System.out.println("AException"); AException nie można próbować obsługiwać wyjątku klasy potomnej po wcześniejszym obsłużeniu typu podstawowego throw new BException(); catch (AException e) { System.out.println("AException"); // catch (BException e) { // System.out.println("BException"); // /* spowodowaloby blad kompilacji */ 1.12 Wyjatki sprawdzane muszą być obsługiwane albo zadeklarowane jako rzucane (przekazywane dalej) przez metodę jeśli nie chcemy lub nie możemy obsłużyć na miejscu ani zadeklarować jako rzucane przez metodę, to można je opakować wewnątrz wyjątku niesprawdzanego (np. typu RuntimeException)

12 Programowanie obiektowe. Wykład static void f() throws Exception { throw new Exception(); static void g() { f(); catch (Exception e) { throw new RuntimeException(e); public static void main(string[] args) { g(); Exception in thread "main" java.lang.runtimeexception: java.lang.exception at P10.g(P10.java:16) at P10.main(P10.java:9) Caused by: java.lang.exception at P10.f(P10.java:5) at P10.g(P10.java:14) // static void h() { // f(); // /* ZLE - blad kompilacji: P10.java:21: unreported exception java.lang.exception; must be caught or declared to be thrown */ 1.13 Podsumowanie Nie należy przechwytywać wyjątków, z którymi nie wiadomo co zrobić! spójna organizacja obsługi błędów jest szczególnie ważna przy pisaniu komponentów (bibliotek), które mają być używane przez inne programy Wyjątków używa się aby np.:

13 Programowanie obiektowe. Wykład naprawiać przyczynę kłopotów, a potem ponownie wywoływać metodę skąd rzucony został wyjątek 2. zaproponować rozwiązanie zastępcze zamiast wywoływać ponownie kłopotliwą metodę 3. zrobić co się da w aktualnym miejscu i przekazać wyjątek (ten sam lub inny) dalej 4. bezpiecznie zakończyć działanie programu 2 Wykrywanie typów wykrywanie dokładnego typu obiektu, jeśli dysponujemy tylko referencją typu bazowego RTTI = Run-Time Type Identification odpowiada za sprawdzanie typu przed rzutowaniem i ew. ClassCastException rzucenie wyjątku class Dane { String opis(){ return "Dane"; void f(object obj) { System.out.println( // obj.opis() /* ZLE (blad komp.) */ // (String)obj /* ZLE (wyjatek) */ ((Dane)obj).opis() ); Dane d = new Dane(); f(d); Dane za pomocą zwracającego wartość logiczną operatora instanceof można sprawdzić, czy obiekt należy do danej klasy void f(object obj) { String s; if(obj instanceof Dane) { s=((dane)obj).opis();

14 Programowanie obiektowe. Wykład else s="cos innego"; System.out.println(s); Dane d = new Dane(); String s = "Napis"; f(d); f(s); Dane Cos innego Uwaga: nie ma to służyć zastępowaniu polimorfizmu, ale ułatwieniu np. wywołania metody specyficznej dla konkretnego typu (a nie dla bazowego)! 2.1 Obiekt Class zawiera informacje o klasie/interfejsie wykorzystywany do tworzenia obiektów danej klasy w wyniku kompilacji umieszczany jest w pliku NazwaKlasy.class i ładowany przez JVM przy pierwszym użyciu danego typu (a nie zaraz przy uruchamianiu programu!) można się do niego odnieść np. poprzez: metodę getclass() zdefiniowaną w klasie Object i zwracającą referencję do odpodwiedniego obiektu Class tzw. literał klasy: NazwaKlasy.class dostępny również dla interfejsów, tablic i typów prostych, np. Dane.class; int.class; dodatkowo dla klas obudowujących typy proste dostępne są pola TYPE takie, że np. int.class Integer.TYPE dostępne są m.in. metody: String getname() nazwa klasy, interfejsu, typu prostego... boolean isinterface() sprawdza, czy klasa jest interfejsem boolean isarray() sprawdza, czy klasa jest tablicą

15 Programowanie obiektowe. Wykład boolean isinstance(object obj) dynamiczny odpowiednik operatora instanceof (wynik=true jeśli obj nie jest null i może być zrzutowane do typu reprezentowanego przez Class) void wypisznazweklasy(object obj) { System.out.println(obj + " jest klasy " + obj.getclass().getname()); Dane d = new Dane(); String s = "Napis"; wypisznazweklasy(d); wypisznazweklasy(s); Dane@11b86e7 jest klasy Dane Napis jest klasy java.lang.string 2.2 Refleksje (Odzwierciedlenia) nie zawsze podczas kompilacji dostępne są informacje o klasach (np. gdy używamy komponentów, klas ładowanych przez sieć itp.) mechanizm refleksji pozwala na uzyskanie informacji o typie obiektu oraz jego polach i metodach analizuje obiekty dopiero podczas wykonywania programu, podczas gdy zwykłe RTTI robi to na etapie kompilacji klasa Class zawiera m.in. metody: Method[] getmethods() zwracająca tablicę publicznych metod Constructor[] getconstructors() zwracająca tablicę publicznych konstruktorów Field[] getfields() zwracająca tablicę publicznych pól potrzebne klasy (Method, Field, Constructor) są dostępne w bibliotece java.lang.reflect import java.lang.reflect.*; class Dane { public String opis() { return "Dane";

16 Programowanie obiektowe. Wykład Method[] m = Dane.class.getMethods(); for(int i = 0; i < m.length; i++) System.out.println(m[i]); public java.lang.string Dane.opis() public native int java.lang.object.hashcode() public final native java.lang.class java.lang.object.getclass() public final native void java.lang.object.wait(long) throws java.lang.interruptedex public final void java.lang.object.wait(long,int) throws java.lang.interruptedexcep public final void java.lang.object.wait() throws java.lang.interruptedexception public boolean java.lang.object.equals(java.lang.object) public final native void java.lang.object.notify() public final native void java.lang.object.notifyall() public java.lang.string java.lang.object.tostring() 2.3 Podsumowanie tam gdzie się tylko da, należy wykorzystywać polimorfizm mechanizm RTTI powinien być używany tylko gdy nie da się użyć polimorfizmu

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746) Obsługa błędów za pomocą wyjątków Paweł Motofa (140746) Co zrobić, gdy wystąpi błąd Przykład Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Co zrobić, gdy wystąpi błąd Jak wyglądałaby funkcja

Bardziej szczegółowo

Wykład 8: Obsługa Wyjątków

Wykład 8: Obsługa Wyjątków Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez

Bardziej szczegółowo

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Języki i metody programowania Java INF302W Wykład 3 (część 1) Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1 STRUKTURA WYKŁADU 1. Wyjątki,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu. WYJĄTKI Klasa Throwable Exception Error Klasy dziedziczące po klasie Exception są typami wyjątków, które automatycznie obsługuje Java lub program przy jawnym przechwytywaniu i obsłudze wyjątków w blokach

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 9: Wyjątki 5/5/2013 S.Deniziak:Programowanie obiektowe - Java 1 Co to jest wyjątek? błąd wykonania: InputFile.java:8: Warning: Exception java.io.filenotfoundexception must

Bardziej szczegółowo

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x() Wykład 3. Wyjątki 1) Obsługa wyjątków system czasu przebiegu Javy przerwanie programu class Wyjatek_1 //plik Proba_1.java int x; Wyjatek_1(int x_) x = x_; int iloraz() int p = 45/x; //generowanie wyjątku

Bardziej szczegółowo

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196 Wyjątki 180 / 196 Wyjątki W Javie istnieje mechanizm tzw. wyjątków (ang. exception), który pozwala na przechwytywanie błędów pojawiających się w programie. Kompilacja tab [ 1 0 ] = 100; spowoduje powstanie

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Programowanie Obiektowe Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

Bardziej szczegółowo

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Java podstawy jęyka Wykład 2 Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Wyjątki: obsługa błędów Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 12.03.2015

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13: RTTI 6/2/2013 S.Deniziak: Programowanie obiektowe - Java 1 Po co informacja o typie obiektu? Polimorfizm Kolekcje Deserializacja 6/2/2013 S.Deniziak: Programowanie obiektowe

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Java SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń

Java SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń Java SE Laboratorium nr 4 Temat: Obsługa wyjątków i zdarzeń 1 1. Definicja i idea I. Obsługa wyjątków Praktycznie w każdym większym programie powstają jakieś błędy. Powodów jest bardzo wiele, może być

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Wyjątki mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Spis treści Wyjątki... 3 2 Wyjątki Podczas pracy programu

Bardziej szczegółowo

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy? Zad.28. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( ) ; public void pisz ( ) ; Zad.29. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( int l i c z b a ) ; public

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Platformy Programistyczne Wykład z Javy dla zaawansowanych Platformy Programistyczne Wykład z Javy dla zaawansowanych Agata Migalska 20 maja 2014 Plan wykładu 1 Polimorfizm i dziedziczenie 2 Życie i śmierć obiektu 3 Poziomy oraz modyfikatory dostępu 4 Obsługa

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. 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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń: Klasy Metody [ModyfikatorMetody] TypZwrotny Nazwa (Typ arg1, ) { // implementacja metody ModyfikatorMetody może być kombinacją wyrażeń: modyfikator widzialności public dostępna dla metod spoza klasy protected

Bardziej szczegółowo

Klasy cd. Struktury Interfejsy Wyjątki

Klasy cd. Struktury Interfejsy Wyjątki Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7: Typy uogólnione. Stringi. 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 1 Jak operować na danych różnych typów? Wymagana zgodność typów Rzutowanie w górę Tylko

Bardziej szczegółowo

Przypomnienie o klasach i obiektach

Przypomnienie o klasach i obiektach Wykład 14 Programowanie obiektowe ciąg dalszy, str 1 Przypomnienie o klasach i obiektach -5 należydo int 314 należy do double false należy do boolean {27, 314,-15 należy do double[] wartość należy do typ

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Obsługa wyjątków. Język C++ WW12

Obsługa wyjątków. Język C++ WW12 Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try

Bardziej szczegółowo

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody W bloku inicjalizacji nie można wywołać konstruktora klasy nadrzędnej (poprzez super). class Klasa{

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Programowane refleksyjne i serializacja

Programowane refleksyjne i serializacja 1 Programowane refleksyjne i serializacja 1. Programowanie refleksyjne: przegląd wybranych klas z pakietu java.lang i java.lang.reflect, dynamiczne obiekty proxy. 2. Serializacja interfejs Serializable,

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Obsługa wyjątków. Rysunek 2-4 Hierarchia dziedziczenia klas wyjątków

Obsługa wyjątków. Rysunek 2-4 Hierarchia dziedziczenia klas wyjątków Obsługa wyjątków Podczas działania programu mogą wystąpić róŝne sytuacje specjalne, do których naleŝą m.in. wystąpienia błędu polegającego na próbie otwarcia pliku, który nie istnieje. Java posiada zapoŝyczony

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Języki i metody programowania Java. Wykład 2 (część 2)

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); 1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 3: Tworzenie i usuwanie obiektów 3/10/2013 S.Deniziak: Programowanie obiektowe - Java 1 Deklaracje pól klasy class Klasa1 { int i; Klasa2 k = new Klasa2(); char c= x ; byte

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo

Bardziej szczegółowo

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

Szablony. Szablony funkcji

Szablony. Szablony funkcji Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd. -1-1. Wyjątki 2. Przykładowe zadania Wyjątki Wyjątek w Java jest obiektem, który opisuje sytuację błędną powstałą w kodzie. Zaistnienie sytuacji błędnej w metodzie powoduje utworzenie obiektu reprezentującego

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne

Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne 1 Programowanie w Javie wykład 7 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Bloki inicjalizacyjne Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo