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

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

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

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

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

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

Programowanie obiektowe

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

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

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

Aplikacje w środowisku Java

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

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

Enkapsulacja, dziedziczenie, polimorfizm

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

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Dziedziczenie. dr Jarosław Skaruz

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

Kurs WWW. Paweł Rajba.

Platformy Programistyczne Wykład z Javy dla zaawansowanych

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

Dokumentacja do API Javy.

Java: interfejsy i klasy wewnętrzne

Programowanie obiektowe

dr Krzysztof Podlaski

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy abstrakcyjne, interfejsy i polimorfizm

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

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

Klasy abstrakcyjne i interfejsy

Dziedziczenie. Tomasz Borzyszkowski

Programowanie obiektowe

Klasy cd. Struktury Interfejsy Wyjątki

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

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

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

Programowanie obiektowe

Programowanie obiektowe

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

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

Technologie i usługi internetowe cz. 2

Programowanie Obiektowe Ćwiczenie 4

Dawid Gierszewski Adam Hanasko

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Wykład 6: Dziedziczenie

Podstawy programowania III

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

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

Wykład 7: Pakiety i Interfejsy

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

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

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

KLASY, INTERFEJSY, ITP

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

Polimorfizm. dr Jarosław Skaruz

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

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

Typy sparametryzowane

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

1 Atrybuty i metody klasowe

Wywoływanie metod zdalnych

Interfejsy i klasy wewnętrzne

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Podstawy i języki programowania

Java Język programowania

Wykład 5: Więcej o Klasach i Metodach

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Internecie. Java

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

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

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

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Aplikacje w Javie wykład 5 Klasy c.d. (przeciążanie metod, polimorfizm) Metody i klasy abstrakcyjne Interfejsy

Programowanie 2. Język C++. Wykład 3.

Wykład 8: klasy cz. 4

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Wykład 5 Okna MDI i SDI, dziedziczenie

Przypomnienie o klasach i obiektach

Języki i techniki programowania Ćwiczenia 2

Programowanie obiektowe. Wykład 03. Maciej Wołoszyn 17 marca Polimorfizm oraz wczesne i późne wiazanie

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Wykład 4: Klasy i Metody

TEMAT : KLASY DZIEDZICZENIE

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

Aplikacje w środowisku Java

Programowanie obiektowe

Wywoływanie metod zdalnych

10. Programowanie obiektowe w PHP5

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Język C++ wykład VIII

Transkrypt:

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 Łódź 1

Dziedziczenie ElemKomp nazwa cena iloscnastanie ilekosztuje() Dostepne(int i) tostring() KartaGraficzna KartaMuzyczna Pamiec Procesor 2

Dziedziczenie cd. Dziedziczenie Zachowanie struktury Przeładowanie metod» ostrożnie z metodami prywatnymi Klasa ma TYLKO jedną Klasę przodka 3

Przykład class Ksztalt { public rysuj(int x, int y){...} public skasuj(int x, int y){...} } class Kwadrat extends Ksztalt { public Kwadrat(int, int, int); public rysuj() {...} public skasuj() {...} } class Trojkat extends Ksztalt { public Trojkat(int, int, int); public rysuj() {...} public skasuj() {...} } class Kolo extends Ksztalt { public Kolo(int, int, int); public rysuj() {...} public skasuj() {...} } 4

Dziedziczenie cd. Występujące instrukcje extends super final pola typu prostego -> stała pola obiekty -> stała referencja metoda -> zakaz przeładowania» final <-> private klasa -> zakaz dziedziczenia 5

Dziedziczenie cd. Inicjowanie klasy potomnej pola i konstruktor klasy przodka Jeżeli przodek dziedziczy odpowiednio rekurencyjnie pola i konstruktor klasy potomnej Przykład 2_1 6

Abstrakcyjne klasy/metody Abstrakcyjna klasa» abstract class Nazwa Nie można zainicjować obiektu Tylko dziedziczenie Abstrakcyjna metoda» abstract public typ nazwa( argumenty) Sama definicja brak deklaracji Wymuszona deklaracja przy dziedziczeniu 7

Interfejsy Tworzenie standardu Same deklaracje brak definicji Nie można zainicjować obiektu tego typu Wszystkie pola static i final (niejawnie) Dziedziczenie interfejsów -> interfejs Implementacja -> definicja metod Klasa może implementować wiele interfejsów Dodatkowe zastosowanie Zbiór stałych np. public interface Miesiace { int STYCZEŃ=1, LUTY=2, MARZEC=3, GRUDZIEŃ=12; } 8

interface Pracownik { class Techniczny implements Pracownik public String tostring(); public String stanowisko(); public int pensja(); { private String imie;... public String tostring(){...} public String stanowisko(){...} } public int pensja() {...} } class wykładowca implements Pracownik { private String imie;... public String tostring(){...} public String stanowisko(){...} public int pensja() {...} public int ilosczajec() {...} }... danepracownika (Pracownik osoba) { System.out.print(osoba); System.out.println(osoba.stanowisko() ); ); System.out.println(osoba. ilosczajec() ); }... 9

Polimorfizm Obiekt klasy potomnej Jest typu klasy przodka Posiada wszystkie jej metody Można ograniczyć w górę Zapominanie typu podstawowego» Można odzyskać tę informację Przykład 2_2 10

Polimorfizm Tablica o elementach dowolnych Object[ ] tab = new Object[3]; tab[0]= Traktor ; //Klasa String tab[1]=new Integer(13); //Klasa Integer tab[2]=new Punkt(); //Klasa Punkt.. class Punkt { public int x,y;} Niestety ograniczenie typu do Object niemożna wykonać operacji tab[2].x=12; 11

Klasy wewnętrzne Klasa definiowana wewnątrz innej Grupowanie logiczne typów Zwiększenie bezpieczeństwa klasa zewnętrzna» public» package access klasa wewnętrzna dowolny Wiedza o klasie otaczającej Możliwość kontaktu z nią 12

Klasy wewnętrzne cd. Przykład2_3 Można wykonać bez klas wewnętrznych Przykład2_4 Typowe zastosowanie klas wewnętrznych» Metody zwracają referencje obiektów klas wewnętrznych» Wielokrotne dziedziczenie» Dostęp do klasy wewnętrznej poprzez NazwaKlasyZewnetrznej.NazwaKlasyWewnętrznej Przykład2_5 Dostęp do pól/metod klasy zewnętrznej 13

Klasy wewnętrzne cd. Wewnętrzne klasy lokalne Ograniczenie widoczności klasy klasa lokalna public class A { void metoda(){ if ( ) { class lokalna{ } } }} 14

Anonimowe klasy wewnętrzne Czy zawsze potrzebujemy nazw klas? Nie jeżeli: Klasa tylko tymczasowa niedostępna zewnątrz Klasa lokalna potrzebna wewnątrz metody Następuje rzutowanie na inną klasę Przyklad2_6 Klasa anonimowa może zawierać konstruktor przeładowanie pól/metod 15

Anonimowe klasy wew. cd. Klasa anonimowa ograniczenia Może korzystać Tylko ze zmiennych final Tylko jeden konstruktor Mogą implementować TYLKO jeden interfejs Przykład2_7 16

Dziedziczenie klas wewnętrznych Przykład2_8 Klasa wewnętrzna oddzielny byt Przykład2_9 Inna przestrzeń nazw Dziedziczenie Tylko jawne wywołanie przy dziedziczeniu 17

Własności klas wewnętrznych Referencja do obiektu klasy nadrzędnej NazwaKlasyZewnętrznej.this Inicjalizacja obiektu klasy wewnętrznej Musi istnieć obiekt klasy zewnętrznej Dostęp do pól/metod klasy zewnętrznej Nie może posiadać metod/pól statycznych Można bez referencji Statyczna klasa wewnętrzna zwana klasą zagnieżdżoną (nessted class) 18

Klasy zagnieżdżone Brak referencji do obiektu klasy zewnętrznej Nie potrzeba obiektu klasy zewnętrznej Brak dostępu do elementów klasy zewnętrznej Może posiadać pola/metody statyczne 19

Błędy w programach Rodzaje błędów Wykrywane na etapie kompilacji Brak zaimportowanych bibliotek Błędy składni Wykrywane w trakcie wykonywania Przekroczenie rozmiaru tablicy Brak prawa do zapisu pliku Utrata łączności (sieć) 20

Wyjątki zarys zastosowania W trakcie wykonania programu Jeżeli nastąpi błąd Program zwraca obiekt (wyjątek) Decyzja co zrobić» Poprawić działanie, uniknąć konfliktu» Utworzyć kopię danych» Bezpiecznie zakończyć program Wyjątki jedyny oficjalny sposób na takie błędy w Javie 21

Tradycyjna obsługa błędów Tradycyjne programowanie Zgłaszanie błędów poprzez flagi Obowiązek sprawdzania flag Nagminne zapominanie o błędach Nieczytelność kodu Wymieszanie programu i obsługi błędów 22

Obsługa błędów w Javie Wyjątki w Javie Wyrzucanie wyjątków przy błędach Przerwanie na chwilkę wykonywania programu Obsługa sytuacji wyjątkowej Wymuszenie obsługi błedów Podział kodu Część normalna programu Obsługa błędów 23

Standardowe Wyjątki Klasa Thrownable Dziedziczą po Thrownable Error Dla nas błędy pomijalne Błędy kompilacji Błędy systemu Exception Dla nas błędy znaczące 24

Standardowe Wyjątki cd. Exception Wyjątki java.io.ioexception Sprawdzane podczas wykonywania Wyjątki niesprawdzalne (unchecked) RuntimeException NullPonterException, ArrayIndexOutOfBoundsException Nie sprawdzane podczas wykonywania Przeważnie błąd programisty 25

Wyjątki obsługa Podejrzane kawałki kodu blok try{ } Co jeżeli wyrzuci wyjątek catch (NazwaWyjatku e) { } Dla każdego typu wyjątku z osobna finally { } Przywrócenie systemu do stanu przed try» Zamknięcie plików itp.. Wykonywane zawsze Przykład 2_10 26

Definiowanie wyjątków Własne wyjątki Dziedziczą po Exception class MojWyjatek extends Exception {} Najczęściej ważna jest tylko nazwa Można przeładować metody klasy Exception Informowanie o możliwych wyjątkach Metody określają listę możliwych wyjątków public void metoda() throws Wyjatek1, Wyjatek2 { } Przykład 2_11 27

Informacje zawarte w wyjątkach Kolejność wyłapywania wyjątków Pamiętajmy o polimorfizmie Przykład 2_12 Standardowe metody wyjątków konstruktory Exception (), Exception (String) Osiągalne informacje getmessage(), tostring(), printstacktrace() Przykład 2_13 28

Rethrowing przekazywanie wyjątków Nie wiemy co zrobić z wyjątkiem Ignorujemy??» Naganne zachowanie Przekazujemy dalej (rethrowing)» Może później będzie nam łatwiej Jako ten sam wyjątek Jako inny lub RuntimeException Przykład 2_14 Przykład 2_15 Przykład 2_16 29

Przypadki szczególne Ostrożnie z konstruktorami Pamięć wyczyści JVM Co z otwartymi plikami, połączeniami sieciowymi?? finally jest wykonywane ZAWSZE Przykład: Otwieramy plik i próbujemy zapisać:» Możliwe wyjątki: FileNotFoundException i inne: Plik należy zamknąć» Ale przy FileNotFoundException niema co zamykać Nie zamykamy pliku w finally 30

Rozwiązywanie problemów 1. Wyłapuj wyjątki w odpowiednich miejscach Staraj się go nie przechwytywać jak nie wiesz co zrobić 2. Popraw błąd i wróć z powrotem 3. Załataj co się da i idź dalej 4. Spróbuj zrobić to inaczej 5. Przekaż wyjątek dalej 6. Zakończ program 7. Przemyśl logikę programu 31