Programowanie obiektowe

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

Programowanie obiektowe

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

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

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

Programowanie obiektowe

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

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

Wykład 7: Pakiety i Interfejsy

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

Programowanie obiektowe

Programowanie obiektowe

Programowane refleksyjne i serializacja

Wykład 4: Klasy i Metody

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

Dawid Gierszewski Adam Hanasko

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

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

Wywoływanie metod zdalnych

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

Remote Method Invocation 17 listopada 2010

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Programowanie w Internecie. Java

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

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

Programowanie obiektowe

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

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

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Programowanie obiektowe

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

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

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Kurs programowania. Wykład 9. Wojciech Macyna

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Dokumentacja do API Javy.

Podejście obiektowe do budowy systemów rozproszonych

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

Programowanie obiektowe

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

Programowanie obiektowe

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Programowanie i projektowanie obiektowe

Podstawy programowania obiektowego

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

1 Atrybuty i metody klasowe

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

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

Wywoływanie metod zdalnych

Klasy cd. Struktury Interfejsy Wyjątki

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

Programowanie obiektowe

Aplikacje RMI

Polimorfizm. dr Jarosław Skaruz

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Programowanie obiektowe

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

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

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

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

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

Multimedia JAVA. Historia

Pakiety i interfejsy. Tomasz Borzyszkowski

Programowanie obiektowe

Enkapsulacja, dziedziczenie, polimorfizm

Podstawy i języki programowania

Polimorfizm, metody wirtualne i klasy abstrakcyjne

KLASY, INTERFEJSY, ITP

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

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

Aplikacje w środowisku Java

Java: interfejsy i klasy wewnętrzne

Programowanie Obiektowe Ćwiczenie 4

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

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Systemy Rozproszone - Ćwiczenie 6

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Programowanie obiektowe

Programowanie obiektowe

Programowanie w Javie - wykład 3

Wykład 6: Dziedziczenie

TYPY GENERYCZNE (GENERICS)

Języki i metody programowania Java Lab2 podejście obiektowe

Dziedziczenie. Tomasz Borzyszkowski

Programowanie obiektowe

Wykład 5 Okna MDI i SDI, dziedziczenie

Klasy abstrakcyjne, interfejsy i polimorfizm

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Wykład 2: Podstawy Języka

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

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

Transkrypt:

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 domowymi Dodanie życia do internetu Marcin Młotkowski Programowanie obiektowe 3 / 50

Logo Marcin Młotkowski Programowanie obiektowe 4 / 50

Mały przykład import java.io.*; class Osoba private String Nazwisko; private int wzrost; Osoba (String Nazwisko, int wzrost)... public void drukuj()... Marcin Młotkowski Programowanie obiektowe 5 / 50

Implementacja konstruktora class Osoba Osoba (String Nazwisko, int wzrost) this.nazwisko = Nazwisko; this.wzrost = wzrost; Marcin Młotkowski Programowanie obiektowe 6 / 50

Implementacja metody class Osoba public void drukuj() System.out.println("Nazwisko: " + this.nazwisko); System.out.println("Wzrost: " + this.wzrost); Marcin Młotkowski Programowanie obiektowe 7 / 50

Deklaracja podklasy public class Student extends Osoba String kierunek; Student (String Nazwisko, int wzrost, String kierunek)... public void drukuj()... Marcin Młotkowski Programowanie obiektowe 8 / 50

Implementacja konstruktora Student (String Nazwisko, int wzrost, String kierunek) super(nazwisko, wzrost); this.kierunek = kierunek; Marcin Młotkowski Programowanie obiektowe 9 / 50

Implementacja metody public void drukuj() super.drukuj(); System.out.println("Kierunek: " + this.kierunek); Marcin Młotkowski Programowanie obiektowe 10 / 50

Początek programu public static void main(string [ ] args) Osoba obj = new Student("Kubuś Puchatek", 35, "inf"); obj.drukuj(); // koniec klasy Student Marcin Młotkowski Programowanie obiektowe 11 / 50

Schemat programu Student.java class Osoba... public class Student extends Osoba public static main ()... Marcin Młotkowski Programowanie obiektowe 12 / 50

Schemat programu Student.java class Osoba... public class Student extends Osoba public static main ()... Kompilacja i uruchomienie $ javac Student.java $ java Student $ java -cp. Student Marcin Młotkowski Programowanie obiektowe 12 / 50

Schemat Student.java Osoba.class javac Student.java class Osoba... Student.class class Student extends Osoba... java Student Maszyna wirtualna Marcin Młotkowski Programowanie obiektowe 13 / 50

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 14 / 50

Javy Elementy języka Klasy i obiekty Klasa Object, wszystkie klasy po niej dziedziczą Dziedziczenie pojedyncze Wszystkie metody są wirtualne Interfejsy Klasy i interfejsy generyczne Marcin Młotkowski Programowanie obiektowe 15 / 50

Klasa Object class Object Object Clone() bool equals(object obj) String tostring() Class getclass() Marcin Młotkowski Programowanie obiektowe 16 / 50

Dynamiczna kontrola typów if (obj instanceof Klasa) var = (Klasa)obj; Marcin Młotkowski Programowanie obiektowe 17 / 50

Typy proste i złożone Typy proste: int, float, boolean Typy referencyjne: Integer, Float, Boolean, interfejsy, tablice Marcin Młotkowski Programowanie obiektowe 18 / 50

Typy proste i złożone Typy proste: int, float, boolean Typy referencyjne: Integer, Float, Boolean, interfejsy, tablice Autoboxing: automatyczna konwersja między typami prostymi i referencyjnymi. Marcin Młotkowski Programowanie obiektowe 18 / 50

Różnice między językami C Int32.MaxValue Java Integer.MAX_VALUE Marcin Młotkowski Programowanie obiektowe 19 / 50

Interfejsy public class Application implements Runnable... Marcin Młotkowski Programowanie obiektowe 20 / 50

Programowanie rodzajowe public interface List<E> void add(e x); Iterator<E> iterator(); Marcin Młotkowski Programowanie obiektowe 21 / 50

Klasy Klasy to też obiekty, należące do klasy Class class Class String getname() Constructor[] getconstructors() Field[] getfields() Marcin Młotkowski Programowanie obiektowe 22 / 50

Refleksje (introspekcje) Mechanizm umożliwiający zbadanie obiektu: jego klasy, metod i pól. Marcin Młotkowski Programowanie obiektowe 23 / 50

Refleksje (introspekcje) Mechanizm umożliwiający zbadanie obiektu: jego klasy, metod i pól. Class cl = obj.getclass() Marcin Młotkowski Programowanie obiektowe 23 / 50

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 24 / 50

Motywacje Reakcja na błędy Błąd dzielenia przez zero Błąd operacji I/O Błąd przepełnienia Marcin Młotkowski Programowanie obiektowe 25 / 50

Obsługa wyjątków Turbo Pascalu write(fh, "abcdxyz"); if IOResult <> 0 then... Marcin Młotkowski Programowanie obiektowe 26 / 50

Obsługa wyjątków Turbo Pascalu write(fh, "abcdxyz"); if IOResult <> 0 then... int podziel(int arg1, int arg2, ref int wynik); Marcin Młotkowski Programowanie obiektowe 26 / 50

to są obiekty klasy Exception; z wyjątkami skojarzony jest mechanizm zgłaszania i obsługi wyjątków. Marcin Młotkowski Programowanie obiektowe 27 / 50

Przykład public int podziel(int dzielna, int dzielnik) if (dzielnik == 0) throw new Exception(); return dzielna/dzielnik; Marcin Młotkowski Programowanie obiektowe 28 / 50

throw return return try-catch return return System operacyjny Marcin Młotkowski Programowanie obiektowe 29 / 50

Instrukcja try try... // krytyczna instrukcja catch (Exception e)... finally... Marcin Młotkowski Programowanie obiektowe 30 / 50

Większy przykład Klasa implementująca stos Implementowane metody void push(int elem) może zgłosić wyjątek StackOverflowException int pop() może zgłosić wyjątek EmptyStackException Marcin Młotkowski Programowanie obiektowe 31 / 50

Deklaracja wyjątku przepełnienia class StackOverflowException extends Exception StackOverflowException() super(); Marcin Młotkowski Programowanie obiektowe 32 / 50

Wyjątek pustego stosu class EmptyStackException extends Exception EmptyStackException() super(); public void info() printstacktrace(); Marcin Młotkowski Programowanie obiektowe 33 / 50

Implementacja Stos class Stos private int stos[]; private int top; Stos(int rozm) stos = new int [rozm]; this.top = 0; Marcin Młotkowski Programowanie obiektowe 34 / 50

Implementacja metod public void push(int elem) throws StackOverflowException if (top == stos.length) throw new StackOverflowException(); stos[top] = elem; top++; Marcin Młotkowski Programowanie obiektowe 35 / 50

Implementacja, cd public int pop() throws EmptyStackException if (top == 0) throw new EmptyStackException(); top- -; return stos[top]; // class Stos Marcin Młotkowski Programowanie obiektowe 36 / 50

Jak korzystać Stos s = new Stos(2); try... catch (EmptyStackException e)... catch (StackOverflowException e)... finally... Marcin Młotkowski Programowanie obiektowe 37 / 50

Jak korzystać Stos s = new Stos(2); try s.push(4); s.push(2); s.push(7); System.out.println(s.pop()); catch (EmptyStackException e)... catch (StackOverflowException e)... finally... Marcin Młotkowski Programowanie obiektowe 37 / 50

Jak korzystać Stos s = new Stos(2); try... catch (EmptyStackException e) e.info(); catch (StackOverflowException e)... finally... Marcin Młotkowski Programowanie obiektowe 37 / 50

Jak korzystać Stos s = new Stos(2); try... catch (EmptyStackException e)... catch (StackOverflowException e) e.printstacktrace(); throw e; finally... Marcin Młotkowski Programowanie obiektowe 37 / 50

Jak korzystać Stos s = new Stos(2); try... catch (EmptyStackException e)... catch (StackOverflowException e)... finally System.out.println("Zawsze się wykona"); Marcin Młotkowski Programowanie obiektowe 37 / 50

Deklaracja wyjątków jest częścią specyfikacji! Specyfkacja metody public void push(int elem) throws StackOverflowException Marcin Młotkowski Programowanie obiektowe 38 / 50

Deklaracja wyjątków jest częścią specyfikacji! Specyfkacja metody public void push(int elem) throws StackOverflowException Interfejsy interface Serializable private void writeobject(java.io.objectoutputstream out) throws IOException private void readobject(java.io.objectinputstream in) throws IOException, ClassNotFoundException; Marcin Młotkowski Programowanie obiektowe 38 / 50

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 39 / 50

Przykładowy program test.java public class test... class B... Po kompilacji powstają dwa pliki: test.class B.class Marcin Młotkowski Programowanie obiektowe 40 / 50

Deklaracja pakietu pakiet.java package wyklad.java; public class test... Pakiet powinien znajdować się w katalogu wyklad/java/ wyklad\java\ Odwołanie do klasy w module wyklad.java.test Marcin Młotkowski Programowanie obiektowe 41 / 50

Widzialność pól i metod public protected (domyślny): widoczny w ramach pakietu private Marcin Młotkowski Programowanie obiektowe 42 / 50

Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 43 / 50

Klasy i metody powinne być otwarte na rozbudowę, ale zamknięte dla modyfikacji. Marcin Młotkowski Programowanie obiektowe 44 / 50

Przykład złamania reguły Figura narysuj() Punkt narysuj() Kwadrat narysuj() Marcin Młotkowski Programowanie obiektowe 45 / 50

Rysowanie obrazków Figura[ ] obrazek; for(figura f: obrazek) f.narysuj() Marcin Młotkowski Programowanie obiektowe 46 / 50

Komplikacja Najpierw należy narysować obiekty klasy Punkt, potem Prostokąt. Marcin Młotkowski Programowanie obiektowe 47 / 50

Definicja porządku public interface Comparable<T> int compareto(t o); Marcin Młotkowski Programowanie obiektowe 48 / 50

Implementacja interfejsu public class Figura implements Comparable<T> int compareto(t o)... public class Point extends Figura int compareto(t o) if (o instanceof Prostokąt) return 1; return -1; Marcin Młotkowski Programowanie obiektowe 49 / 50

Dalsza komplikacja Dodajemy klasę Okrąg Marcin Młotkowski Programowanie obiektowe 50 / 50

Dalsza komplikacja Dodajemy klasę Okrąg Konsekwencje Musimy zmienić implementację compareto() we wszystkich już zaimplementowanych klasach. Marcin Młotkowski Programowanie obiektowe 50 / 50