Czytanie, pisanie i rysowanie (czyli klasa I szkoły podstawowej)

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Klasy abstrakcyjne i interfejsy
Mgr inż.Marcin Borkowski Podstawy Java Część II
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Klasy i obiekty.
Wzorce.
Programowanie Obiektowe w Javie (c.d.)
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
Podstawy Programowania sieciowego w Javie
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Model – View - Controler
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Gniazda komunikacji sieciowej w języku Java
Plan Prezentacji Wczytywanie grafiki Wyświetlanie obrazów
Język ANSI C Operacje we/wy
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Obsługa systemu wejścia-wyjścia
Projektowanie warstwy serwera Programowanie aspektowe.
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Podstawy C# Grupa .NET PO.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie obiektowe III rok EiT
Programowanie urządzeń mobilnych – wykład IV
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
W większości języków programowania biblioteki wejścia/wyjścia ukrywają szczegóły obsługi poszczególnych mediów pod abstrakcją strumienia (ang. stream).
Tworzenie aplikacji mobilnych
Programowanie obiektowe III rok EiT
Obsługa systemu wejścia-wyjścia
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Seminarium problemowe
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
OCPJP Inner classes.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Podstawy programowania (4)
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Wzorce Projektowe w JAVA
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
do programowania obiektowego w języku Groovy
1 Pliki i katalogi K. Barteczko Pojęcie pliku Plik - to ciąg bajtów zapisanych na dysku lub w innej fizycznie trwałej formie. po co są pliki.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Strumienie w języku Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji:
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Programowanie Obiektowe – Wykład 6
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
(według:
(c) Krzysztof Barteczko 2014
(c) Krzysztof Barteczko 2014
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Programowanie obiektowe – zastosowanie języka Java SE
PGO Interfejsy Michail Mokkas.
Założenia projektowe Javy
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Czytanie, pisanie i rysowanie (czyli klasa I szkoły podstawowej)

Java IO, czyli strumienie, readery, writery i bajery Ideologia: Na początku jest strumień (InputStream lub OutputStream) Pochodzący z pliku (File...Stream) lub z tablicy bajtów (ByteArray...Stream) i jeszcze z paru innych źródeł Przyozdabiany (Buffered...Stream, Data...Stream, GZIP...Stream) Ale zawsze jest to strumień BAJTÓW Do IO binarnego!

Nauka czytania i pisania binarnego, czyli strumienie InputStream ma tylko: byte read() read(byte[] in <, int off, int len>) skip(int n) close() I można go spytać, czy ma mark() i reset() (markSupported()) DataInputStream ma ponadto: readBoolean(),...,readDouble() A np. ObjectInputStream potrafi czytać obiekty (zserializowane)

Strumienie – cd. Łatwo się domyśleć, co potrafi np. DataOutputStream write (byte b, int off, int len), writeInt(int n),..., flush(), size() etc. Uwaga: java czyta i pisze binarnie Big endian!!! (od najstarszego bajtu) Intel (czyli pecety) czytają i piszą Little endian!!! Konwersja: via byte buffer[] i ByteArray...Stream lub "manualna" W necie są gotowe klasy/pakiety

Słów parę o abstrakcji Klasa abstrakcyjna czyli Poszukiwane Ogniwo Pośrednie między klasą i interfejsem – prefiksowane abstract deklaracje metod (bez implementacji). Po co to? Planowo: zbiorczy interfejs dla grupy podobnych klas zawierający implementację wspólnych metod "Tak wyszło": mamy kilka różnych klas z niepustą częścią wspólną, którą wyrzucamy do klasy abstrakcyjnej i dziedziczymy po niej – oszczędzamy na objętości kodu i jego modyfikacjach

Słów parę o abstrakcji Przykład dziedziczenia abstract public class DataReader{ protected static String name = "New Reader"; protected static String shortName = "New"; protected DataReader() { jakieś inicjalizacje... } public final String getName() {return name;} abstract public boolean readMol(Molecule mol); } public class XXXReader extends DataReader{ protected static String name = "XXX Reader"; protected static String shortName = "XXX"; public XXXReader() {super(); inicjalizacja specyficzna ...} public boolean readMol(Molecule mol){ ...} }

Słów parę o abstrakcji – deklaracja i tworzenie obiektu ... Molecule mol = new Molecule(); DataReader reader; switch (readerType) { case TYPE_XXX: reader = new XXXReader(); break; } reader.readMol(mol); Jak widać, wybór konkretnej implementacji DataReadera może być dokonany dopiero w trakcie wykonywania programu.

Nauka czytania i pisania znakowego czyli readery i writery Java wierzy w UNICODE Dlatego char to są 2 bajty! String to łańcuch znaków, więc do czytania i pisania znakowego musimy używać klas Reader/Writer o odpowiednim smaku

Co potrafi reader/writer BufferedReader: readLine(); BufferedWriter: print(String), println(String); printf(String,...) (formatowanie podobne do C : printf("%3d %6f.2 %n",i,x);

Sztuka pakowania (aka. Dekorowania) Jeżeli chcemy czytać lub pisać znakowo używając binariów musimy użyć Readera/Writera zrobionego ze strumienia przez odpowiednią dekorację: BufferedReader r = new BufferedReader( new InputStreamReader( new FileInputStream(fName))); BufferedWriter w = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(fName))); Dekoracja – wzorzec polegający na zamknięciu klasy prostszej w bardziej skomplikowanej i "eksport" metod klasy dekorowanej z "opakowującym" konstruktorem

Sztuka pakowania – cd. Z pakowania możemy skorzystać implementując wielokrotne dziedziczenie: public class A{ public void aqq(...) {...} } public class B{ public void bqq(...) public void setI(int t){ this.t = t; ... interface IntA{ public void aqq(...); interface IntB{ public void bqq(...); public void setI(int t); public class AB extends A implements IntB{ B b = new b(); ... (np. konstruktory z parametrami dla A i B) public void bqq(...){ b.bqq(); public void setT(int t){ b.setT(t); } lub public class BA extends B implements IntA ... lub public class C implements IntA,IntB

A teraz czytanie ze zrozumieniem Reader pozwala na przeczytanie wiersza String line = reader.readLine(); Musimy teraz przeczytać line: String[] tokens = line.split(" +|, *|; *"); (np.: line="1 2, 3.45; aaa" da tokens={"1","2","3.45","aaa"}) i rozszyfrować każdy token z osobna: int i = Integer.parseInt(token[0]); int j = Integer.parseInt(token[1]); float t = Float.parseFloat(token[2]); String txt = new String(token[3]);

Łapanie pcheł i wyjątków Próba skompilowania kodu zawierającego takie czytanie/pisanie da błędy!!! Metody klas ...Stream, ...Reader, ...Writer oraz parse... mogą zgłosić wyjątek, który trzeba przechwycić lub wyrzucić wyżej

Spróbuj i złap lub odrzuć dalej try{ instrukcje "podejrzane" } catch ...Exception e{ obsługa e (typowo: e.printStackTrace();) lub public void readSomething(...) throws ...Exception e{ ... i niech inni się martwią, co z tym zrobić