Programowanie obiektowe

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

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

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

Wykład 10: Wejście i Wyjście

Rozdział 7 Strumienie, operacje wejścia-wyjścia

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O)

Inynieria oprogramowania Lecture XXX. Java TM cz IV: IO. Bartosz Walter

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Strumienie i serializacja

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

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

Przygotował: Jacek Sroka 1. Java SE. Strumienie

Programowanie obiektowe

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

Programowanie obiektowe

Programowanie Obiektowe (Java)

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

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

JAVA I SIECI. MATERIAŁY:

Programowanie obiektowe

Programowanie w języku Java

Wykład 2. Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni poprzez sieć - obiekty URL

MAS dr. Inż. Mariusz Trzaska. Wykład 3. Wybrane konstrukcje obiektowych języków programowania (2)

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Wykład 2: Podstawy Języka

Komunikacja z użyciem gniazd aplikacje klient-serwer

dr Krzysztof Podlaski

Java programowanie w sieci. java.net RMI

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

Podstawy i języki programowania

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

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Programowanie w języku Java WYKŁAD

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

Programowanie obiektowe

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

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

Java. Programowanie Obiektowe Mateusz Cicheński

Języki i Techniki Programowania II. Wykład 6. Wejście/Wyjście

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

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

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

Strumienie tekstowe (wprowadzanie danych z klawiatury) i bajtowe, otwieranie strumieni przez sieć - obiekty URL

Bezpieczne uruchamianie apletów wg

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

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

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

Kurs programowania. Wykład 9. Wojciech Macyna

Aplikacja wielowątkowa prosty komunikator

Programowanie sieciowe

Programowanie obiektowe

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

Programowanie obiektowe

Strumienie, pliki. Sortowanie. Wyjątki.

Materiały do laboratorium I

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

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

MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

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

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Tworzenie i wykorzystanie usług

Programowanie obiektowe

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

Programowanie rozproszone w języku Java

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

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Przykłady interfejsu TCP i UDP w Javie

Wstęp do ruby dla programistów javy

Programowanie współbieżne Laboratorium nr 11

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

Programowanie obiektowe

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Java programowanie sieciowe

Programowanie Obiektowe Java

Aplikacja wielow tkowa prosty komunikator

Zaawansowane aplikacje WWW - laboratorium

Programowanie obiektowe

SOAP. Autor: Piotr Sobczak

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

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

Systemy operacyjne na platformach mobilnych

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

Programowanie obiektowe

Java: Graficzne interfejsy użytkownika

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

KLASY, INTERFEJSY, ITP

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

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

WYJĄTKI, KOLEKCJE ZAGADNIENIA: 1. Wyjątki, 2. Kolekcje, vector, hashtable, properties, Klasy Arrays i Collections.

Platformy Programistyczne Podstawy języka Java

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

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 3

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Transkrypt:

Programowanie obiektowe Wykład 10: Strumienie we/wy 5/13/2013 S.Deniziak:Programowanie obiektowe 1 Zarządzanie systemem plików klasa File (pakiet java.io) np. File path=new File(. ); Metody: list(), getname(), delete(), exists(), isdirectory(), isfile(), mkdir(), renameto(), length(), lastmodified(), canread(), canwrite(), 5/13/2013 S.Deniziak:Programowanie obiektowe 2 1

Klasy podstawowe InputStream ByteArrayInputStream(tablica bajtów) StringBufferInputStream(String) FileInputStream(String lub File) PipedInputStream(PipedOutput Stream) SequenceInputStream(kontener strumieni wejściowych lub 2 strumienie wejściowe) OutputStream ByteArrayOutputStream(początko wa wielkosć bufora) FileOutputStream(String lub File) PipedOutputStream(PipedInputStr eam) 5/13/2013 S.Deniziak:Programowanie obiektowe 3 Klasy podstawowe Unicode Reader CharArrayReader(tablica bajtów) StringReader(String) FileReader(String lub File) PipedReader(PipedOutputStrea m) Writer CharArrayWriter(początkowa wielkosć bufora) StringWriter(String) FileWriter(String lub File) PipedWriter(PipedInputStream) Klasy konwertujące: InputStreamReader InputStream OutputStreamWriter OutputStream Reader Writer 5/13/2013 S.Deniziak:Programowanie obiektowe 4 2

Klasy dekoratorów FilterInputStream(InputSt ream) DataInputStream typy proste BufferInputStream buforowanie strumienia LineNumberInputStream z numerowaniem linii FilterOutputStream(Output Stream) DataOutputStream BufferedOutputStream PrintStream 5/13/2013 S.Deniziak:Programowanie obiektowe 5 Klasy dekoratorów Unicode FilterReader(Reader) BufferReader buforowanie strumienia LineNumberReader z numerowaniem linii FilterWriter(Writer) BufferedWriter PrintWriter 5/13/2013 S.Deniziak:Programowanie obiektowe 6 3

Przykłady BufferedReader in = new BufferedReader(new FileReader("IOStreamDemo.java")); String s, s2 = new String(); while((s = in.readline())!= null) s2 += s + "\n"; in.close(); try { BufferedReader in4 = new BufferedReader( new StringReader(s2)); PrintWriter out1=new PrintWriter( new BufferedWriter( new FileWriter("IODemo.out"))); int linecount = 1; while((s = in4.readline())!= null ) out1.println(linecount++ + ": " + s); out1.close(); catch(eofexception e) { System.err.println("End of stream"); 5/13/2013 S.Deniziak:Programowanie obiektowe 7 Klasa RandomAccessFile Metody: seek(), length(), read(), getfilepointer(), write(), close(), Korzystanie: rf = new RandomAccessFile( plik.dat, rw ); rf.seek(40); rf.writedouble(23.34); rf.close(); 5/13/2013 S.Deniziak:Programowanie obiektowe 8 4

Standardowe strumienie we/wy System.in InputStream System.out PrintStream System.err PrintStream System.setIn(strin) System.setOut(strout) System.setErr(strerr) 5/13/2013 S.Deniziak:Programowanie obiektowe 9 Kompresja danych ZipOutputStream GZIPOutputStream CheckedOutputStream ZipInputStream GZIPInputStream CheckedInputStream ZIP JARs 5/13/2013 S.Deniziak:Programowanie obiektowe 10 5

Atomizacja wejścia StreamTokenizer (InputStream) ordinarychar(char), nexttoken(), ttype, nval, sval, TT_EOF,TT_EOL,TT_NUMBER,TT_WORD StringTokenizer (String) Przykład: hasmoretokens(), nexttoken() Program sprawdzający czy wszystkie nazwy klas i interfejsów są pisane od dużej litery. Wywołanie z parametrem: -a tworzy repozytorium klas. 5/13/2013 S.Deniziak:Programowanie obiektowe 11 ClassScanner (1) import java.io.*; import java.util.*; class MultiStringMap extends HashMap { public void add(string key, String value) { if(!containskey(key)) put(key, new ArrayList()); ((ArrayList)get(key)).add(value); public ArrayList getarraylist(string key) { if(!containskey(key)) { System.err.println( "ERROR: can't find key: " + key); System.exit(1); return (ArrayList)get(key); public void printvalues(printstream p) { Iterator k = keyset().iterator(); while(k.hasnext()) { String onekey = (String)k.next(); ArrayList val = getarraylist(onekey); for(int i = 0; i < val.size(); i++) p.println((string)val.get(i)); 5/13/2013 S.Deniziak:Programowanie obiektowe 12 6

ClassScanner (2) public class ClassScanner { private File path; private String[] filelist; private Properties classes = new Properties(); private MultiStringMap classmap = new MultiStringMap(), identmap = new MultiStringMap(); private StreamTokenizer in; public ClassScanner() throws IOException { path = new File("."); filelist = path.list(new JavaFilter()); for(int i = 0; i < filelist.length; i++) { System.out.println(fileList[i]); try { scanlisting(filelist[i]); catch(filenotfoundexception e) { System.err.println("Could not open " + filelist[i]); 5/13/2013 S.Deniziak:Programowanie obiektowe 13 ClassScanner (3) void scanlisting(string fname) throws IOException { in = new StreamTokenizer( new BufferedReader( new FileReader(fname))); in.ordinarychar('/'); in.ordinarychar('.'); in.wordchars('_', '_'); in.eolissignificant(true); while(in.nexttoken()!= StreamTokenizer.TT_EOF) { if(in.ttype == '/') eatcomments(); else if(in.ttype == StreamTokenizer.TT_WORD) { if(in.sval.equals("class") in.sval.equals("interface")) { // Get class name: while(in.nexttoken()!= StreamTokenizer.TT_EOF && in.ttype!= StreamTokenizer.TT_WORD) ; classes.put(in.sval, in.sval); classmap.add(fname, in.sval); if(in.sval.equals("import") in.sval.equals("package")) discardline(); else // It's an identifier or keyword identmap.add(fname, in.sval); 5/13/2013 S.Deniziak:Programowanie obiektowe 14 7

ClassScanner (4) void discardline() throws IOException { while(in.nexttoken()!= StreamTokenizer.TT_EOF && in.ttype!= StreamTokenizer.TT_EOL) ; // Throw away tokens to end of line // StreamTokenizer's comment removal seemed // to be broken. This extracts them: void eatcomments() throws IOException { if(in.nexttoken()!= StreamTokenizer.TT_EOF) { if(in.ttype == '/') discardline(); else if(in.ttype!= '*') in.pushback(); else while(true) { if(in.nexttoken() == StreamTokenizer.TT_EOF) break; if(in.ttype == '*') if(in.nexttoken()!= StreamTokenizer.TT_EOF && in.ttype == '/') break; 5/13/2013 S.Deniziak:Programowanie obiektowe 15 ClassScanner (5) public String[] classnames() { String[] result = new String[classes.size()]; Iterator e = classes.keyset().iterator(); int i = 0; while(e.hasnext()) result[i++] = (String)e.next(); return result; public void checkclassnames() { Iterator files = classmap.keyset().iterator(); while(files.hasnext()) { String file = (String)files.next(); ArrayList cls = classmap.getarraylist(file); for(int i = 0; i < cls.size(); i++) { String classname = (String)cls.get(i); if(character.islowercase(classname.charat(0))) System.out.println( "class capitalization error, file: " + file + ", class: " + classname); 5/13/2013 S.Deniziak:Programowanie obiektowe 16 8

ClassScanner (6) public void checkidentnames() { Iterator files = identmap.keyset().iterator(); ArrayList reportset = new ArrayList(); while(files.hasnext()) { String file = (String)files.next(); ArrayList ids = identmap.getarraylist(file); for(int i = 0; i < ids.size(); i++) { String id = (String)ids.get(i); if(!classes.contains(id)) { // Ignore identifiers of length 3 or // longer that are all uppercase // (probably static final values): if(id.length() >= 3 && id.equals( id.touppercase())) continue; // Check to see if first char is upper: if(character.isuppercase(id.charat(0))){ if(reportset.indexof(file + id) == -1){ // Not reported yet reportset.add(file + id); System.out.println( "Ident capitalization error in:" + file + ", ident: " + id); 5/13/2013 S.Deniziak:Programowanie obiektowe 17 ClassScanner (7) static final String usage = "Usage: \n" + "ClassScanner classnames -a\n" + "\tadds all the class names in this \n" + "\tdirectory to the repository file \n" + "\tcalled 'classnames'\n" + "ClassScanner classnames\n" + "\tchecks all the java files in this \n" + "\tdirectory for capitalization errors, \n" + "\tusing the repository file 'classnames'"; private static void usage() { System.err.println(usage); System.exit(1); 5/13/2013 S.Deniziak:Programowanie obiektowe 18 9

ClassScanner (8) public static void main(string[] args) if(args.length == 2) { throws IOException { if(!args[1].equals("-a")) usage(); if(args.length < 1 args.length > 2) try { usage(); BufferedOutputStream out = ClassScanner c = new ClassScanner(); new BufferedOutputStream( File old = new File(args[0]); new FileOutputStream(args[0])); if(old.exists()) { c.classes.store(out, try { "Classes found by ClassScanner.java"); InputStream oldlist = out.close(); new BufferedInputStream( catch(ioexception e) { new FileInputStream(old)); System.err.println("Could not write "+args[0]); c.classes.load(oldlist); System.exit(1); oldlist.close(); catch(ioexception e) { System.err.println("Could not open " + old + " for reading"); System.exit(1); class JavaFilter implements FilenameFilter { public boolean accept(file dir, String name) { String f = new File(name).getName(); if(args.length == 1) { return f.trim().endswith(".java"); c.checkclassnames(); c.checkidentnames(); 5/13/2013 S.Deniziak:Programowanie obiektowe 19 Pytania 1. Zasady organizacji wejścia/wyjścia w języku Java. 2. Zastosowania polimorfizmu w strumieniach we/wy. 5/13/2013 S.Deniziak:Programowanie obiektowe 20 10

Koniec 5/13/2013 S.Deniziak:Programowanie obiektowe 21 11