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



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

Java. Programowanie Obiektowe Mateusz Cicheński

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

Programowanie obiektowe

Strumienie i serializacja

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

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Programowanie obiektowe

Aplikacje w środowisku Java

Aplikacja wielow tkowa prosty komunikator

Programowane refleksyjne i serializacja

Materiały do laboratorium I

Programowanie obiektowe

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

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Programowanie w języku Java

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

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

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

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

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

Bezpieczne uruchamianie apletów wg

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

Aplikacja wielowątkowa prosty komunikator

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

akademia androida Składowanie danych część VI

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

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

Remote Method Invocation 17 listopada 2010

Przykład -

Java: interfejsy i klasy wewnętrzne

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Podejście obiektowe do budowy systemów rozproszonych

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

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

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

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

Bezpieczeństwo w aplikacjach Java

Wywoływanie metod zdalnych

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Enkapsulacja, dziedziczenie, polimorfizm

Aplikacje w środowisku Java

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

Programowanie obiektowe

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

Systemy Rozproszone - Ćwiczenie 6

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

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Sun Certified Java Programmer. Harmonogram szkolenia

Decorator (dekorator)

Multimedia JAVA. Historia

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Aplikacje RMI Lab4

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

Programowanie Obiektowe Ćwiczenie 4

Kompozycja i dziedziczenie klas

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

Programowanie współbieżne Laboratorium nr 11

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

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

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

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Wykład 6 Dziedziczenie cd., pliki

Od wymagań do Javy w mgnieniu oka

Stanowe komponenty sesyjne

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

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

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

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

Wywoływanie metod zdalnych

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

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

Programowanie obiektowe

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Wykład 7: Pakiety i Interfejsy

Zaawansowane Aplikacje Internetowe

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

Programowanie obiektowe

1 Atrybuty i metody klasowe

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

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

Kurs programowania. Wykład 9. Wojciech Macyna

Interfejsy w Javie. Przykład zastosowania interfejsów:

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Tworzenie i wykorzystanie usług

Katalog książek cz. 2

Aplikacje internetowe i rozproszone - laboratorium

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

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Transkrypt:

WSNHiD, Programowanie 2, Lab. 3 Trwałość danych Wyjątki Nietypowe sytuacje, które podczas normalnego wykonywania programu nie powinny się wydarzyć obsługiwane są w języku Java za pomocą wyjątków. Przyjrzyjmy się implementacji poniższej klasy: public class ExceptionsHandling int[] array = new int[3]; array[1] = 1; System.out.println(array[1]); Teraz wprowadźmy niewielką zmianę do implementacji: public class ExceptionsHandling int[] array = new int[3]; array[10] = 1; System.out.println(array[10]); java.lang.arrayindexoutofboundsexception: 10 at ExceptionsHandling.main(ExceptionsHandling.java:6) Exception in thread "main" Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 1

public class ExceptionsHandling int[] array = new int[3]; array[10] = 1; System.out.println(array[10]); catch (ArrayIndexOutOfBoundsException e) System.out.println("Indeks poza zakresem!"); Indeks poza zakresem! Zapis i odczyt danych do/z pliku W języku Java istnieje kilka sposobów zapisu danych do pliku. Sposoby te są realizowane przez dostarczone klasy z pakietu java.io. Oto przykład: import java.io.filewriter; import java.io.ioexception; public class WriteTest FileWriter fw = new FileWriter ("c:/nazwa_pliku.txt"); fw.write("jakis tekst"); fw.close(); System.out.println("Zapis nieudany"); Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 2

A tu odczyt danych z pliku: import java.io.bufferedreader; import java.io.filereader; import java.io.ioexception; public class ReadTest FileReader fr = new FileReader ("c:/nazwa_pliku.txt"); BufferedReader bf = new BufferedReader(fr); System.out.println(bf.readLine()); fr.close(); System.out.println("Odczyt nieudany"); Zadanie 1 Proszę napisać klasę Money (pieniądze) implementującą interfejs IMoney. public interface IMoney int getmoney(); void save(); Metoda save() powinna zapisać w pliku dyskowym kwotę przechowywaną przez klasę Money. Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 3

Serializacja Język Java umożliwia również zapis na dysk w postaci binarnej całych obiektów, które istnieją w pamięci. Aby skorzystać z mechanizmu serializacji klasa musi implementować interfejs Serializable. public class Person implements Serializable private String name; private String surname; public Person(String name, String surname) this.name = name; this.surname = surname; public String getname() return name; public String getsurname() return surname; Proszę utworzyć nową klasę o nazwie MySerializer i dodać do niej metody serialize() oraz deserialize(). private void serialize(object object, String filename) FileOutputStream fos; ObjectOutputStream oos; fos = new FileOutputStream (filename); oos = new ObjectOutputStream (fos); oos.writeobject(object); oos.close(); catch (FileNotFoundException e) Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 4

private Object deserialize(string filename) FileInputStream fis; ObjectInputStream ois; Object object = null; fis = new FileInputStream (filename); ois = new ObjectInputStream (fis); object = ois.readobject(); ois.close(); catch (FileNotFoundException e) catch (ClassNotFoundException e) return object; Spójrzmy teraz na proste wykorzystanie klasy MySerializer: Person a = new Person("Bartek", "Bogacki"); Person b = new Person("Wojtek", "Complak"); Person x; Person y; MySerializer ms = new MySerializer(); ms.writeobject(a, "c:/temp/person1"); ms.writeobject(b, "c:/temp/person2"); x = (Person)ms.readObject("c:/temp/person1"); y = (Person)ms.readObject("c:/temp/person2"); System.out.println(x.getName() + " " + x.getsurname()); System.out.println(y.getName() + " " + y.getsurname()); Zadanie 2 Proszę napisać klasę Marriage (małżeństwo). Klasa ta powinna implementować interfejs IMarriage: Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 5

public interface IMarriage Person getwife(); Person gethusband(); Proszę zserializować obiekt Marriage do pliku c:/temp/marriage.serialized a następnie ponownie wczytać dane i utworzyć obiekt za pomocą deserializacji. UWAGA: Aby uniknąć zapisania wartości pewnych pól klasy na dysk podczas serializacji, należy poprzedzić te pola specyfikatorem transient. import java.io.serializable; public class Person implements Serializable private String name; private transient String surname; public Person(String name, String surname) this.name = name; this.surname = surname; public String getname() return name; public String getsurname() return surname; Literatura http://java.sun.com/developer/technicalarticles/programming/serialization/ Thinking in Java. Wydanie 3. Edycja polska - Bruce Eckel Zastosowania informatyki, Trwałość danych, 2007 Bartosz Bogacki 6