Įvadas į Java programavimo kalbą

Slides:



Advertisements
Similar presentations
1 Streams and Input/Output Files Part 2. 2 Files and Exceptions When creating files and performing I/O operations on them, the systems generates errors.
Advertisements

1 Streams and Input/Output Files Part I. 2 Introduction So far we have used variables and arrays for storing data inside the programs. This approach poses.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Introduction to Computer Science I Topic 20: Streams.
Jan Java I/O Yangjun Chen Dept. Business Computing University of Winnipeg.
Streams Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
Streams and Files The objectives of this chapter are: To understand the principles of I/O streams and where to use them To understand the options and limitations.
Java I/O and Java Networking (Client Side) Yoshi.
Java I/O – what does it include? Command line user interface –Initial arguments to main program –System.in and System.out GUI Hardware –Disk drives ->
7/2/2015CS2621 OO Design and Programming II I/O: Reading and Writing.
Exceptions and IO Dr. Andrew Wallace PhD BEng(hons) EurIng
פיתוח מונחה עצמים – שפת JAVA קבצים. References קורס "שיטות בהנדסת תוכנה", הפקולטה למדעי המחשב, הטכניון. קורס "מערכות מידע מבוזרות", הפקולטה להנדסת תעשייה.
Java I/O Input: information brought to program from an external source
Java Programming: I/O1 Java I/O Reference: java.sun.com/docs/books/tutorial/essential/io/
CS203 Programming with Data Structures Input and Output California State University, Los Angeles.
Streams and Files CMPS Overview Stream classes File objects File operations with streams Examples in C++ and Java 2.
Java How to Program, 9/e © Copyright by Pearson Education, Inc. All Rights Reserved.
5-Oct-15 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Design Topic : Streams and Files Maj Joel Young.
Java How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved.
Based on OOP with Java, by David J. Barnes Input-Output1 The java.io Package 4 Text files Reader and Writer classes 4 Byte stream files InputStream, FileInputStream,
Richiami di Java Input/Output. import java.io.*; public class Simple { public static void main(String a[]){ new Simple(); } public Simple() { byte buffer[]=new.
I / O in java. java.io BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter ByteArrayInputStream ByteArrayOutputStream CharArrayReader.
12-CRS-0106 REVISED 8 FEB 2013 Java Collection. 12-CRS-0106 REVISED 8 FEB 2013 Java Collection.
Java Input/Output CSE301 University of Sunderland Harry Erwin, PhD Half Lecture.
The Java I/O Classes and Interfaces cont’d
File IO Basics By Dan Fleck Coming up: Data Streams.
Input/output Input in java is stream based.A stream represents sequence of bytes or characters. Stream provides an abstract view of I/O. Stream can be.
L5: Input & Output COMP206, Geoff Holmes and Bernhard Pfahringer.
Two Ways to Store Data in a File  Text format  Binary format.
Java Input/Output. Reading standard input Surprisingly complicated (GUI focus) Old-fashioned way: BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
CS101 Lab “File input/Output”. File input, output File : binary file, text file READ/WRITE class of “text file” - File Reading class : FileReader, BufferedReader.
1 Software 1 Java I/O. 2 The java.io package The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating.
1 OOP Lecture 17 I/O and Graphics Signe Ellegård Borch Carsten Schuermann IT University Copenhagen.
Object-Oriented Design and Programming (Java). 2 Topics Covered Today 3.1 Input and Output Programming –3.1.0 Java I/O Stream –3.1.1 File I/O –3.1.2 Using.
CSI 3125, Preliminaries, page 1 Java I/O. CSI 3125, Preliminaries, page 2 Java I/O Java I/O (Input and Output) is used to process the input and produce.
Company Input/Output Stream –. Input/Output Stream Data Program Input Stream Output Stream.
Exception Handling, Reading and Writing in Files, Serialization, Exceptions, Files, Streams, File Readers and Writers, Serializable SoftUni Team Technical.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 13 Java Fundamentals File I/O Serializing an.
Java Programming Language (3) - Input/Output Stream –
CS202 Java Object Oriented Programming Input and Output Chengyu Sun California State University, Los Angeles.
Java IO Exploring the java.io package and living to talk about it.
java.io supports console and file I/O
The Java IO System Different kinds of IO Different kinds of operations
CSC1351 Class 6 Classes & Inheritance.
Keerthi Nelaturu Url: site.uottawa.ca/~knela006
Files and Streams The material in this chapter is not tested on the AP CS exams.
CSG2H3 Object Oriented Programming
Java Text I/O CS140 Dick Steflik. Reader Abstract super class for character based input Subclasses: – BufferedReader – CharArrayReader – FilterReader.
Exception Handling, Reading and Writing in Files, Serialization,
OO Design and Programming II I/O: Reading and Writing
Ch14 Files and Streams OBJECTIVES
Topic: File Input / Output
Lec 06 David Presentation on Advanced Spring
12: The Java I/O System stream model.
Java Methods ("Chapter %d", 14); Streams and Files A & AB
תרגול מס' 5: IO (קלט-פלט) זרמי קלט וזרמי פלט ((Input & Output Streams,
File I/O & collection frame work
Java’s Hierarchy Input/Output Classes and Their Purpose
Įvadas į Java programavimo kalbą
תרגול מס' 5: IO (קלט-פלט) זרמי קלט וזרמי פלט ((Input & Output Streams,
Exceptions Complicate Code
Exceptions Complicate Code
Windows Ribbon Framework
Stream Oriented I/O Computer Programming II Dr. Tim Margush
Exceptions Complicate Code
OBJECT ORIENTED PROGRAMMING II LECTURE 20 GEORGE KOUTSOGIANNAKIS
Files and Streams in Java
Web Design & Development Lecture 8
Java IO Packages Prepared by Mrs.S.Amudha AP/SWE
David Davenport Spring 2005
Presentation transcript:

Įvadas į Java programavimo kalbą 2 paskaita

Masyvai Saugesni nei C ar C++ kalbose, nes tikrina indekso išėjimą už masyvo ribų; tikrina ar masyvui išskirta vieta. Pirmasis masyvo narys yra indeksu 0, o ne indeksu 1 (kaip, pvz., Pascal’yje). Masyvas yra objektas, o ne vien tik atminties blokas. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ304.htm#Heading1433 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/04.HTM

Masyvų inicializavimas Masyvas yra vienodo tipo kintamųjų ar objektų seka. Jis aprašomas tokiu būdu: int[] masyvas = null; arba int masyvas[] = null; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ306.htm#Heading4560 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/04.HTM

Masyvo vietos išskyrimas Galima išskirti masyvui vietą iš anksto nepriskiriant masyvo elementų, o tik nurodant masyvo dydį: double[] values = new double[10]; Kitas būdas – iš karto priskirti masyvo narius: double[] values = {2.5, -3.4, 11, 0.65}; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ306.htm#Heading4560 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/04.HTM

Kelių dimensijų masyvai Java kalboje masyvo dimensijų kiekis nėra apribotas. Todėl galima kurti dvimačius, trimačius ir, reikalui esant, n-mačius masyvus. Reiktų paminėti, kad masyvo dydį galima nurodyti ne iš karto. int[][] matrix = new int[20][30]; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ306.htm#Heading4731 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/04.HTM

Masyvų pavyzdys Integer[][] ar; ar = new Integer[3][]; for(int i = 0; i < ar.length; i++) { ar[i] = new Integer[3]; for(int j = 0; j < ar[i].length; j++) { ar[i][j] = new Integer(i*j); } http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ306.htm#Heading4731 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading8847 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/04.HTM

Dinaminiai sąrašai Java kalboje yra daug klasių, skirtų darbui su sąrašais, aibėmis ir kitomis panašaus pobūdžio struktūromis. Mes aptarsime tik List tipo objektus. interface List class LinkedList class ArrayList http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading10807 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12008 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12375

List vs Array Sąrašų skirtumai nuo masyvų: sąrašams nereikia iš anksto išskirti vietos; jų narių kiekis gali nuolat kisti; sąrašai gali būti sudaryti tik iš objektų (t.y. negali būti sudaryti iš primityvių tipų, tokių kaip int, double, boolean ir kt.) http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading10807 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12008 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12375

List tipo objektų sukūrimas List eile = new LinkedList(); List saugykla = new ArrayList(); Galima rašyti ir kitu būdu, tačiau pirmasis būdas yra universalesnis: LinkedList eile = new LinkedList(); ArrayList saugykla = new ArrayList(); http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading10807 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12008 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12375

Pagrindiniai veiksmai (metodai) add() – įterpti elementą; contains() – patikrinti, ar sąraše yra elementas; get() – paimti elementą iš sąrašo; indexOf() – gauti elemento indeksą sąraše; remove() – pašalinti elementą; size() – sąrašo dydis; toArray() – surašyti elementus į masyvą. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading10807 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12008 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12375

Pavyzdys List names = new LinkedList(); String name = null; while ((name = Group.getNextName()) != null) { names.addLast(name); } if (names.contains(“Jonas”)) { System.out.println(“Suradom Joną!”); http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading10807 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12008 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ311.htm#Heading12375

Klasių paveldėjimas (1) Tai klasės sugebėjimas paveldėti tėvinės klasės kintamuosius ir metodus (subklasė / vaikas paveldi iš superklasės / tėvo). Java neturi daigialypio paveldėjimo. Tą netiesiogiai galima išspręsti per interfeisus. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Klasių paveldėjimas (2) Vaikas paveldi visus “matomus” (ne private) tėvo kintamuosius ir metodus. Tai vienos krypties paveldėjimas. final tipo klasės paveldėti negalima. Konstruktoriai nėra nei paveldimi, nei perdengiami. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Pavyzdys (1) class Plokste { protected double ilgis; // private negali būti! protected double plotis; Plokste() { this.ilgis = 0; this.plotis = 0; } Plokste(double a, double b) { this.ilgis = a; this.plotis = b; // ploto skaičiavimo metodas double plotas() { System.out.println(“Nežinomas algoritmas!”); return –1; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Pavyzdys (2) class Staciakampis extends Plokste { // konstruktorius Staciakampis(double a, double b) { super(a, b); // kreipinys į konstr. Plokste } // metodų perdengimo pavyzdys double plotas() { return ilgis * plotis; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Pavyzdys (3) class Trikampis extends Plokste { // konstruktorius Trikampis(double a, double b) { ilgis = a; plotis = b; } // metodų perdengimo pavyzdys double plotas() { return ilgis * plotis / 2; http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Pavyzdys (4) class Testas { public static void main(String args[]) { Plokste plo = new Plokste(2,3); Staciakampis sta = new Staciakampis(2,3); Trikampis tri = new Trikampis(2,3); Plokste plo2 = new Trikampis(2,3); // !!! System.out.println(plo.plotas()); System.out.println(sta.plotas()); System.out.println(tri.plotas()); System.out.println(plo2.plotas()); } http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Atributas super Naudojamas parodyti, jog vaikas kreipasi į tėvą. Naudojama: kreipiniui į tėvo klasės konstruktorių (jis turi būti pirmuoju vaiko konstruktoriaus sakiniu): super(parametrai); kreipiniui į tėvo klasės kintamąjį / metodą (kai sutampa vardai): super.kintamasis / super.metodas. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Pavyzdys class A { int x; } class B extends A{ class C extends B { // šioje klasėje galime pasiekti visų klasių kintamuosius x x = 5; // x iš C klasės this.x = 5; // x iš C klasės ((B) this).x = 5; // x iš B klasės super.x = 5; // x iš B klasės ((A) this).x = 5; // x iš A klasės super.super.x = 5; // klaida! http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ308.htm#Heading5555 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Metodų perdengimas (overriding) Tai polimorfizmo atvejis, kai tėvo ir vaiko klasė turi vienodus metodus. Būtinos sąlygos – sutampa ne tik metodų vardai, bet ir jų antraštės bei grąžinamų reikšmių tipai. Metodo pasirinkimą nusako tipas objekto, kuriam šis metodas kviečiamas. Nepersidengia: konstruktoriai, final tipo metodai, statiniai metodai. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ309.htm#Heading6720 http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/07.HTM

Situacijų (Exception) valdymas Exception – tai įvykis, nutraukiantis įprastą programos darbą. Tai gali būti klaida programoje arba speciali programuotojo numatyta situacija. Situacijų “pagavimui” ir apdorojimui Java kalboje naudojama: try-catch blokai, sakinys throw, žodelis throws, finally blokas. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

Pagrindinės situacijų klasės Object Trowable Exception Error ClassNotFoundException NotSuchMethodException IOException EOFException FileNotFoundException ... RunTimeException ArithmeticException ClassCastException NullPointerException ... StackOverflowError OutOfMemoryError UnknownError ... http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

Situacijų klasės Exception klasės situacijas programuotojas gali pats “sugauti” ir apdoroti. RunTimeException klasės situacijos įvyksta programos vykdymo metu. Programuotojas jas gali apdoroti, bet neprivalo. Error klasės situacijų programuotojas valdyti negali, kadangi tai dažniausiai susiję su JVM klaidomis. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

try-catch blokas Programos kodas, kuriame gali įvykti situacija, patalpinamas į bloką try, po kurio talpinami catch ir finally blokai. try { // veiksmai } catch (GaudomaSituacija ex) { // veiksmai jai įvykus } http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

Pavyzdys (1) /** Skaityti tekstinį failą po eilutę ir išvedinėti į ekraną. Failo vardas imamas iš komandinės eilutės.*/ import java.io.*; public class ExceptionDemo { public static void main(String args[]) throws IOException { // throws IOException reikalingas metodui close(), esančiame finally bloke // kitaip finally turi turėti try-catch bloką BufferedReader reader = null; try { if (args.lenght == 0) { throw (new Exception(“Įveskite failo vardą”); // programa įvykdys catch (Exception ex) ir baigs darbą } reader = new BufferedReader(new FileReader(args[0])); String line = null; // tęsinys kitoje skaidrėje http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

Pavyzdys (2) while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (FileNotFoundException ex) { System.out.println(“Duomenų failas ” + args[0] + “ nerastas.”); } catch (Exception ex) { System.err.println(ex.getMessage()); ex.printStackTrace(); } finally { if (reader != null) { reader.close(); } else { System.out.println(“Failas nebuvo atidarytas”); http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ303.htm#Heading1109 http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ312.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/10.HTM

Įvedimas / išvedimas Įvedimas / išvedimas (IO) Java kalboje organizuotas per strautus (stream). Standartiniai srautai operuoja su baitais. Dirbant su Unicode simboliais patogiau dirbti su simboliniais srautais (reader ir writer). Srautas Java kalboje atitinka klasę. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ313.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/13.HTM

Išvedimo klasių hierarchija OutputStream ByteArrayOutputStream FileOutputStream ObjectOutputStream PipedOutputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream Writer BufferedWriter CharArrayWriter StringWriter PrintWriter FilterWriter PipedWriter OutputStreamWriter FileWriter P.S. System.out yra aprašytas: public static final PrintStream out http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ313.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/13.HTM

Įvedimo klasių hierarchija InputStream ByteArrayInputStream FileIntputStream ObjectInputStream PipedInputStream FilterInputStream BufferedInputStream DataInputStream Reader BufferedReader LineNumberReader CharArrayReader StringReader FilterReader PipedReader InputStreamReader FileReader http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ313.htm http://www.ifko.ktu.lt/~ekaza/T120b111/Book2/13.HTM

Papildomos IO klasės File – klasė, leidžianti atsiriboti tolimesnėse IO klasėse nuo naudojamos platformos. Turi eilę metodų darbui su konkrečiu failu. RandomAccessFile – tiesioginio priėjimo prie failo klasė (gali skaityti ir rašyti iš to paties failo vienu metu). StreamTokenizer – simbolių srauto skaidymas į “žodžius”. http://www.ifko.ktu.lt/~ekaza/T120b111/3java/htmlbook/TIJ313.htm

Papildomam skaitymui: ArrayList ir LinkedList naudojimas: http://developer.java.sun.com/developer/JDCTechTips/2002/tt0910.html#1 Nulinio ilgio masyvų naudojimas: http://developer.java.sun.com/developer/JDCTechTips/2002/tt0910.html#2 Metodų perkrovimas: http://developer.java.sun.com/developer/JDCTechTips/2002/tt0806.html#tip2 Java IO: http://developer.java.sun.com/developer/JDCTechTips/2002/tt0305.html#tip2 Exceptions: http://developer.java.sun.com/developer/JDCTechTips/2002/tt0110.html#tip1