Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Strumienie i serializacja

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja

Java. Programowanie Obiektowe Mateusz Cicheński

Programowane refleksyjne i serializacja

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Programowanie obiektowe

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl

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

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

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

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

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

Wykład 4: Wejście/wyjście: strumienie Java

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Aplikacja wielowątkowa prosty komunikator

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

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

MAS dr. Inż. Mariusz Trzaska. Wykorzystanie klas w obiektowych językach

Enkapsulacja, dziedziczenie, polimorfizm

Wywoływanie metod zdalnych

Języki i metody programowania Java INF302W Wykład 4

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

Bezpieczeństwo w aplikacjach Java

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

Wykład 6 Dziedziczenie cd., pliki

Platformy Programistyczne Zagadnienia sieciowe i wątki

Aplikacja wielow tkowa prosty komunikator

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Remote Method Invocation 17 listopada 2010

Wywoływanie metod zdalnych

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Podejście obiektowe do budowy systemów rozproszonych

Programowanie w języku Java WYKŁAD

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Programowanie w Internecie. Java

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

I/O (STRUMIENIE, PLIKI,...)

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

Projektowanie obiektowe. dr Jarosław Skaruz

Programowanie obiektowe

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

Programowanie Obiektowe (Java)

Programowanie obiektowe i zdarzeniowe

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

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ć

Klasy abstrakcyjne, interfejsy i polimorfizm

Dokumentacja do API Javy.

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

1 Atrybuty i metody klasowe

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

Programowanie obiektowe i zdarzeniowe

Przygotował: Jacek Sroka 1. Java SE. Strumienie

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

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie obiektowe

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

Programowanie i projektowanie obiektowe

10. Programowanie obiektowe w PHP5

Programowanie obiektowe

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

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

JAVA I SIECI. MATERIAŁY:

KLASY, INTERFEJSY, ITP

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

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

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

Programowanie obiektowe

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

Programowanie w języku Java

Programowanie obiektowe

Programowanie obiektowe

Programowanie w Javie - wykład 3

Multimedia JAVA. Historia

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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

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

Programowanie obiektowe

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

Java: interfejsy i klasy wewnętrzne

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

Programowanie rozproszone w języku Java

Podstawy obiektowości

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

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Aplikacje RMI Lab4

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Aplikacje RMI

Transkrypt:

Programowanie obiektowe Wykład 11: Serializacja obiektów 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Problem składowania/przesyłania danych Strumienie Tylko typy proste Konieczność ręcznego odtwarzania obiektów Serializacja Zapis/odczyt całych obiektów Konwersja do postaci binarnej lub tekstowej(xml) Automatycza deserializacja 5/19/2013 S.Deniziak:Programowanie obiektowe 2 1

Strumienie do serializacji ObjectOutputStream(OutputStream) writeobject(object o) ObjectInputStream(InputStream) Object readobject() Klasy muszą implementować interfejs Serializable (pakiet Java.io) 5/19/2013 S.Deniziak:Programowanie obiektowe 3 Przykład 1 (1) import java.io.*; class Osoba implements Serializable { String nazwisko; String imie; Adres adreszameldowania; Osoba(String nazwisko, String imie, Adres adreszameldowania) { this.nazwisko = nazwisko; this.imie = imie; this.adreszameldowania = adreszameldowania; System.out.println("wywołanie konstruktora klasy Osoba"); public String tostring() { String adrpamiec = super.tostring(); return adrpamiec+"(" + nazwisko + ", " + imie + ", " + adreszameldowania + ")"; class Adres implements Serializable { String miasto; String ulica; String nrdomu; String nrlokalu; Adres(String miasto, String ulica, String nrdomu, String nrlokalu) { this.miasto = miasto; this.ulica = ulica; this.nrdomu = nrdomu; this.nrlokalu = nrlokalu; System.out.println("wywołanie konstruktora klasy Adres"); public String tostring() { String adrpamiec = super.tostring(); return adrpamiec + "(" + miasto + ", " + ulica + ", " + nrdomu + ", " + nrlokalu + ")"; 5/19/2013 S.Deniziak:Programowanie obiektowe 4 2

Przykład 1 (2) public class TestSerializacji { public static void main(string[] args) throws Exception { Adres alternatywy4 = new Adres("Warszawa", "Alternatywy", "4", "9"); Osoba kotek = new Osoba("Kotek", "Zygmunt", alternatywy4); System.out.println(kotek); // wersja dla Linuxa //String nazwapliku = "/tmp/lista.ser"; // wersja dla Windows String nazwapliku = "c:\\lista.ser"; ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream(nazwaPliku))); out.writeobject("lista lokatorów"); out.writeobject(kotek); out.close(); ObjectInputStream in = new ObjectInputStream( new BufferedInputStream( new FileInputStream(nazwaPliku))); String nagłówek = (String) in.readobject(); kotek = (Osoba) in.readobject(); in.close(); System.out.println(kotek); 5/19/2013 S.Deniziak:Programowanie obiektowe 5 Przykład 1 (3) Wynik: wywołanie konstruktora klasy Adres wywołanie konstruktora klasy Osoba Osoba@1372a1a(Kotek, Zygmunt, Adres@ad3ba4(Warszawa, Alternatywy, 4, 9)) Osoba@1c39a2d(Kotek, Zygmunt, Adres@bf2d5e(Warszawa, Alternatywy, 4, 9)) 5/19/2013 S.Deniziak:Programowanie obiektowe 6 3

Kontrola serializacji (1) Serializacja poufnych danych Pominięcie serializacji obiektów dla których serializacja nie ma sensu (np. wątki, strumienie) Serializacja obiektów nie implementujących interfejs Serializable 5/19/2013 S.Deniziak:Programowanie obiektowe 7 Kontrola serializacji (2) interfejs Externalizable writeexternal(objectoutput) readexternal(objectinput) transient np. private transient String password; przesłanianie metod serializujących: private void writeobject(objectoutputstream stream) throws IOException; private void readobject(objectinputstream stream) throws IOException, ClassNotFoundException; defaultwriteobject(), defaultreadobject() 5/19/2013 S.Deniziak:Programowanie obiektowe 8 4

Przykład 2 class Osoba implements Serializable { String nazwisko; String imie; transient Adres adreszameldowania; Osoba(String nazwisko, String imie, Adres adreszameldowania) { this.nazwisko = nazwisko; this.imie = imie; this.adreszameldowania = adreszameldowania; System.out.println("wywołanie konstruktora klasy Osoba"); public String tostring() { String adrpamiec = super.tostring(); return adrpamiec+"(" + nazwisko + ", " + imie + ", " + adreszameldowania + ")"; wywołanie konstruktora klasy Adres wywołanie konstruktora klasy Osoba Osoba1@1372a1a(Kotek, Zygmunt, Adres@ad3ba4(Warszawa, Alternatywy, 4, 9)) Osoba1@750159(Kotek, Zygmunt, null) 5/19/2013 S.Deniziak:Programowanie obiektowe 9 Wersja klasy A co gdy będzie deserializacja do nowszej wersji klasy? static final long serialversionuid serialver Obliczony na podstawie treści definicji klasy class KlasaOZmieniajacejSieDefinicji implements Serializable { static final long serialversionuid = 2L; String staryatrybut = "jakas wartosc"; 5/19/2013 S.Deniziak:Programowanie obiektowe 10 5

Serializacja do XMLa Pakiet java.beans: XMLEncoder zamiast ObjectOutputStream XMLDecoder zamiast ObjectInputStream Klasa zgodna z wymaganiami Java Beans (metody getxxx, setxxx, itp.) 5/19/2013 S.Deniziak:Programowanie obiektowe 11 Podsumowanie Serializacja całej struktury powiązań obiektów Deserializacja nie wywołuje konstruktorów! Klasa deserializowana musi być dostępna 5/19/2013 S.Deniziak:Programowanie obiektowe 12 6

Pytania 1. Na czym polega serializacja i deserializacja obiektów? 2. Jakie warunki musi spełniać klasa aby możliwa była jej serializacja? 3. Dla jakich obiektów serializacja nie ma sensu? 5/19/2013 S.Deniziak:Programowanie obiektowe 13 Koniec 5/19/2013 S.Deniziak:Programowanie obiektowe 14 7