1 java dr. yong uk song dept. of mis yonsei university wonju campus

Post on 26-Dec-2015

215 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Java

Dr. Yong Uk Song

Dept. of MIS

Yonsei University Wonju Campus

2

Session 1.Introduction

3

Programming Languages (1) First Generation

Machine Languages(e.g.) 01101011

Second Generation Assembly Languages(e.g.) ADD X Assembler

Third Generation High Level Languages(e.g.) a = a + x Compiler, Interpreter

4

Programming Languages (2) Fourth Generation

Non-Procedural Languages(cf.) Procedural Languages Do What?(cf.) Do How?(e.g.) SELECT id FROM customer WHERE id > 50

Fifth Generation Artificial Intelligence Voice Recognition + Natural Language Processing

+ …

5

Programming Languages (3) Categories of Third Generation

Languages Structured Programming Language Object-oriented Programming Language

Structured Programming Languages Objectives

Debugging Maintenance

Tools Readability

Methodology Divide and Conquer : Modulization Control : Sequence, Division, Repetition

6

7

Object-oriented Programming Languages Objectives

Productivity of SW Tools

Extensibility, Reusability Methodology

Data-driven approach : Classes and Instances Encapsulation(Data abstraction), Inheritance,

Polymorphism The importance of control (sequence, division,

repetition) in a module is still stressed.

8

Data Abstraction Separating of the representation of a

data object from the specification that are essential for its correct use.

Classes Data hiding Member functions Initialization Operator overloading

9

Inheritance Inheritance allows you to reuse data

and functions in the classes you have created by passing all or parts of them down to children classes (i.e. subclasses, derived classes).

Type hierarchy Single inheritance vs. Multiple

inheritance

10

Polymorphism With polymorphism, you can send a

message to an object without worrying about how the system will implement the action.

Operator overloading (C++) Function overloading Function overriding Virtual functions (default in Java)

11

Learning Java Is . . . Learning programming structures Learning classes Learning initialization

Constructors Learning derived classes Learning packages, interfaces,

exception handling, stream, networking, etc.

History of Java Green project (Sun Microsystems, 1991)

A compact programming language for electronic devices such as interactive TV, smart refrigerator, …

The target OS was called Star7 Oak (James Gosling)

Web Browser WebRunner (HotJava) (Patrick Naughton & Jonathan

Payne) (1994) JavaOne Conference (1996.5) JavaSoft (Marc Andreesen(Netscape)) Java 1.0.2 Java 1.1.5 Java 2 (Java 1.2)

12

13

Platform Independence Byte code Virtual Machine

= Java Interpreter / Java Runtime

What is programming? The purpose of programming is to make a SW which will

be executed later by another people to do a predefined job.

The SWs are in fact executable files. File name : *.exe E.g. MS-Office, Notepad, MS-Windows XP, …

The final goal of programming is to make an executable file.

Steps to make an executable file Coding Source code

Sometimes we call coding as programming in a narrow sense. Compiling Executable file

Compiling is included as an additional step of programming in a wider sense.

14

15

Programming in Java Source Codes

xxx.java Executable Files

xxx.class Execution

java xxx

Where are the Tools? http://java.sun.com/

Java SE JDK The core SW to develop and execute a Java

program. NetBeans

IDE (Integrated development environment) To support every steps while programming in

Java; coding(editing), compiling, execution, debugging.

Using NetBeans IDE Build a New Project Edit the Source Code Compile Execute (Run) Debug

18

Hello.java

class Hello

{

public static void main(String[ ] args)

{

System.out.println("Hello, world");

}

}

Exercise Build a NetBeans project called Hello. Make a program which prints out

"Hello".

19

20

Session 2.Variables and Expressions

21

Comments (1) /* ... */

C-language style comments Comments for multiple lines

(e.g.)/* This is a comment line 1.

This is a comment line 2. This is a comment line 3.

… */ // ...

C++-language style comments Comments for a single line (until end of line)

(e.g.)// This is a comment.

22

Comments (2) /** ... */

Comments for javadoc Javadoc is a documentation generator from Sun Microsystems for generating API

documentation in HTML format from Java source code.

(e.g.)/** * Validates a chess move. Use {@link #doMove(int, int, int, int)} to move a piece. * * @param theFromFile file from which a piece is being moved * @param theFromRank rank from which a piece is being moved * @param theToFile file to which a piece is being moved * @param theToRank rank to which a piece is being moved * @return true if the chess move is valid, otherwise false */boolean isValidMove(int theFromFile, int theFromRank, int theToFile, int theToRank){ ... }

Exercise Build a NetBeans project called Hello. Make a programs which prints out

"Hello". Add a comment as following:

This is a Java Hello World program.

This is my first Java program.

23

Variables and Literals Variables

Of which value may be changed To store some value

(e.g.) username = "song";(e.g.) i = 3;(e.g.) d = 1.2;

Declaration is required(e.g.) String username;(e.g.) int i;(e.g.) double d;

Literals Of which value can NOT be changed Used as they are

(e.g.) "song"(e.g.) 3(e.g.) 1.2

24

Variable Declarations Syntax

type variable1, variable2, … Types

8 Primitive types byte, short, int, long, float, double, char, boolean

Arrays [ ]

Class types Built-in Classes

Object, Class, String, Byte, Short, Int, Long, Float, Double, Char, Boolean, …

User-defined Classes

25

Naming of Variables, Classes, … Alphanumeric

A ~ Z, a ~ z, 0 ~ 9, _ Under bar(_) is regarded as an alphabet.

Case sensitive Upper and lower capital characters are regarded as different

characters. e.g.) Int / int

Can not use keywords as names e.g.) boolean, break, byte, case, catch, char, class, const, do,

double, else, extends, final, float, for, goto, if, int, long, new, package, private, protected, public, return, short, static, super, switch, this, throw, throws, try, void, while, …

e.g.) false, null, true The names of public classes should be same as their file

names.

26

27

Example of Variable Declarations

Correct int i; int i, aInteger, _i; char c; char c, aChar, _2; double d; double d, aDbl,

f100_;

Incorrect int 2a; int i; aInteger; _I; char 2_3; char c; aChar; _2; double a&b; double a Dbl, 100f_;

Exercise Build a NetBeans project called Test. Declare an integer variable "i" and a

double variable "d" in the "main" method.

28

Literals int

10 012 0xA, 0xa, 0XA, 0Xa

long 10L, 10l 012L, 012l 0xAL, 0xAl, 0xaL, 0xal

float 2.25F 2.25f

double 2.25 19E-95, 19e-95

boolean true, false

char 'A', '\n', '\r'

Escape Sequence '\n', '\t', … '\'', '\\' '\ooo', '\uhhhh'

(e.g. '\101', '\uC790') '\A', '\"', …

String Constants "Hello, world\n" "-- \n -- ' -- \" -- \\ -- A --" "-- \033 -- \uC790 --"

Please, note: 'A' "A"

29

Expressions Expressions

3 * 4 + 2 a * b + 2

Operators *, +, …

Operands Literals (e.g.) 123 + 1 Variables (e.g.) a + 1 function calls (e.g.) Math.sin(3.14) + 1 another expressions (e.g.) 1 + (3 * a)

30

Forms of Expressions Infix form

3 + 4 Prefix form

(+ 3 4) Lisp language

Postfix form 3 4 +

Java and many other third generation languages use infix form for their expressions.

31

32

Categories of Operators (by number of operators)

Unary operators +a, -a, ++a, a++, --a, a--, …

Binary operators a + b, a >= b, a && b, a = 3, …

Ternary operators a ? 0 : 1

Another Categories of Operators Arithmetic Operators

+, -, *, /, % Relational Operators

>, >=, <, <=, ==, != Logical Operators

&&, ||, ! Incremental/Decremental Operators

++, -- Assignment Operators

=, +=, -=, *=, /=, %= Conditional Operators

? :

33

34

Arithmetic Operators +, -, *, /, %(modulus) Be careful about the types of operands(e.g.)

int a = 3, d = 8, b = 1, c = 1;a + 3d / 4a * 4 + ba * b - c5 % 2 → 19 / 2 → 4 (It is NOT 4.5 !)

Exercise Build a NetBeans project called Test. Calculate and print out the result of "3 +

4.5".

35

String Concatenation Operator +(e.g.)

"abc" + "def" → "abcdef""abc" + "123" → "abc123""abc" + 123 → "abc123""abc" + 12.3 → "abc12.3"

String a = "abc";a + "def" → "abcdef"

37

Relational Operators >, >=, <, <=, ==, != Return values

False : false (boolean) True : true (boolean)

(e.g.)int a = 3, b = 1;a > 3a == ba != 3

Exercise Build a NetBeans project called Test. Calculate and print out the result of "3

>= 4.5".

38

39

Logical Operators &&, ||, ! Return values

False : false (boolean) True : true (boolean)

(e.g.)int a = 3, b = 1, c = 1;(a > 3) && (a <= 7)(a > b) || (c == 1)!(a > b) ↔ a <= b

Exercise Build a NetBeans project called Test. Calculate and print out the result of "3

>= 4.5 and 2 < 5".

40

Incremental/Decremental Operators ++, -- Return values

The value after increment/decrement when it appears in the front of the variable The value before increment/decrement when it appears in the rear of the

variable Side effect

Increment/decrement of the value of the variable Hence, its operand must be a variable. Note: unary operators

(e.g.)int n = 1;n++ n--++n --n++n + 1 --n + 1n++ + 1 n-- + 1

41

42

Return Values and Side-effects

Return values(e.g.) 3 + 4 → Value 7 returns as a result.

(e.g.) a = 4 → Value 4 returns as a result.

Side-effects(e.g.) a = 4 → Variable "a" stores value 4.

Exercise Build a NetBeans project called Test. Declare an integer variable "i". Set the value of the variable "i" as 3. Calculate and print out the result of "i+

+" and "++i" sequentially.

43

Assignment Operators =, +=, -=, *=, /=, %= Return values

The value stored to the left-hand-side (LHS) operand (variable)

Side effect Change in the value of the variable Hence, its LHS operand must be a variable. Note: binary operator

(e.g.)int a, b;a = 3;a = b = 4;a += 3;

44

Exercise Build a NetBeans project called Test. Declare two integer variables "i" and "j". Calculate and print out the result of "i = j

= 3". Print out the value of "i". Print out the value of "j".

45

46

Conditional Operators ? : Return values

The return value of the second operand if the return value of the first operand is true

The return value of the third operand if the return value of the first operand is false

Remark The types of the second and third operands should be

same. If they are different, an implicit type conversion rule applies.

(e.g.)int a = 3, i = 1, j = 1;(a < 3) ? 4 : 5(a == 3) ? i : (j + 1)

Exercise Build a NetBeans project called Test. Declare three integer variables "i", "j" and "k". Calculate and print out the result of "i = j = k =

3". Calculate and print out the result of "(i <= j) ? +

+j : k++". Print out the value of "i". Print out the value of "j". Print out the value of "k".

47

48

Implicit Type Conversions Implicit rules

In case of binary or ternary operators, if the types of their (last) two operands are different, the type of one (more specific) operand is automatically converted to that of the other (more general) one.

Generality byte short int long float double

Exercise Build a NetBeans project called Test. Print out the result of "(2 < 3) ? 3 : 4.0".

49

Explicit Type Conversions Type casting operator (unary operator) Format

(type)expression Usage

To enhance readability To remove warnings by compilers

(e.g.) (int)a, (int)(9 / 2), i = (int)(9.0 / 2.0)

50

Exercise Build a NetBeans project called Test. Declare an integer variable "i". Declare two double variables "d" and "e". Set d as 9.0 and e as 2.0. Calculate and print out the result of "i = d /

e". If you have an error or a warning after

compiling, modify the expression to "i = (int)(d / e)".

51

52

Priority among OperatorsOperators Associativity Remarks

( ) [ ] . left to right

! ~ ++ -- + - instanceof right to left unary

new (type) right to left unary

* / % left to right

+ - left to right

<< >> >>> left to right

< <= > >= left to right

== != left to right

& left to right

^ left to right

| left to right

&& left to right

|| left to right

? : right to left ternary

= += -= *= /= %= &= ^= |= <<= >>= right to left

Exercise Build a NetBeans project called Test. Declare two integer variables "i" and "j". Try to calculate and print out the result

of "i = 2 * j = 3". If you have an error or a warning after

compiling, modify the expression to "i = 2 * (j = 3)".

53

54

Session 3.Standard Input and Output

55

Standard Output Syntax

void System.out.print(Object)void System.out.println(Object)

Remark The object can be of any type; primitive types,

arrays, or built-in or user-defined classes.(e.g.)

System.out.print("String");System.out.print(123);System.out.println("String");System.out.println(123);

56

Standard Input Syntax

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String BufferedReader.readLine( ) throws IOException(e.g.)

import java.io.*;try {

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String str = reader.readLine();System.out.println(str);

int i = Integer.parseInt(str);System.out.println(i * 23);

} catch (IOException e) { }

Exercise Build a NetBeans project called Test. Declare a String variable s and an integer

variable i. Read a string from the standard input and

set it as the value of s. Parse and convert s to an integer and set

it as the value of i. If i is less than 20, print out a string

"juvenile", otherwise print out a string "adult". (use conditional operator)

57

58

Session 4.Control Flow

Structured Programming Three Control Structures

Sequence Division

if, switch Repetition

for, while, do while

Readability, Maintenance Do not use "jump" control.

59

60

Statements and Blocks Statements

Expressions which are ended with a semi-colon(;).(e.g.)

x = 0;System.out.println("Hello");

Blocks Grouping several statements by open and closing braces. Treated as statements, too.(e.g.)

if (i != 0){

a = i + 3;b = i * 4;

}

61

if - else (1) Syntax

if (expression)statement

elsestatement

The "expression" must return a boolean value.

(e.g.)int n = 3, a;if (n > 0)

a = 1;else

a = 0;

Extended Syntaxif (expression)

statementelse if (expression)

statement…else

statement

(e.g.)if (x < 0) i = -1;else if (x < 100) i = 0;else i = 1;

if - else (2) A else is associated with the closest

previous else-less if.(e.g.)

if (n > 0) if (n > 0) if (a > b) if (a > b) z = a; z = a; else else z = b; z = b;

62

Exercise Build a NetBeans project called Test. Declare a String variable s and an integer

variable i. Read a string from the standard input and

set it as the value of s. Parse and convert s to an integer and set

it as the value of i. If i is less than 20, print out a string

"juvenile", otherwise print out a string "adult". (use if statement)

63

switch (1) Syntax

switch (expression){

case constant-expression: statementscase constant-expression: statements…default: statements

} The return type of the expression should be one of

byte, char, short, or int. break, return

64

65

switch (2)(e.g.)

switch (c){

case 'Y':case 'y':

answer = 1;break;

default:answer = 0;break;

}

Exercise Build a NetBeans project called Test. Declare a String variable s and an integer

variable i. Read a string from the standard input and set it

as the value of s. Parse and convert s to an integer and set it as

the value of i. If i is less than 3, print out a string "baby", if

less than 12, print out a string "kid", if less than 20, print out s a string "teenager", otherwise print out a string "adult". (use switch statement)

66

67

for Syntax

for (expression; expression; expression)statement

(e.g.)for (i = 0; i < 100; i++){

System.out.println(i);}

Exercise Build a NetBeans project called Test. Declare a String variable s and an integer

variable n. Read a string from the standard input and

set it as the value of s. Parse and convert s to an integer and set

it as the value of n. Calculate and print out the factorial value

of n. (use for statement)

68

69

while Syntax

while (expression)statement

(e.g.)i = 0;while (i < 100){

System.out.println(i);i++;

}

Exercise Build a NetBeans project called Test. Declare a String variable s and an integer

variable n. Read a string from the standard input and

set it as the value of s. Parse and convert s to an integer and set

it as the value of n. Calculate and print out the factorial value

of n. (use while statement)

70

71

do - while Syntax

dostatement

while (expression);(e.g.)

i = 0;do

System.out.println(i);while (i < 100);

break A "break" causes the innermost enclosing

loop (such as "for", "while", and "do") or "switch" to be exited immediately.

(e.g.)for (i = 0; ; i++)

if (i >= 100)break;

else System.out.println(i);

72

Exercise Build a NetBeans project called Guess. Program a guessing game. That is:

Select a random number between 0 and 100 by using (int)(Math.random() * 100.0).

Input a number from the user. If the number is less than the selected random number,

print out "Guess bigger!". If the number is greater than the selected random

number, print out "Guess smaller!". If the number is equal to the selected random number,

print out "You got it!" and then finish the program.

73

Labeled break Designate the point where the control should

go after break(e.g.)

out:for (int i = 0; i < 10; i++){

while (x < 50){

if (i * x++ > 400) break out;}

}

74

Homework Summation from 1 to n 20th element of Fibonacci series Prime numbers which are greater than 0

and less than 10,000 Minimum and maximum values among

integer values from standard input Generate Check digit for Social Security

Number.

75

76

Session 5.Arrays

What is Array? An array is a data structure consisting

of a group of elements that are accessed by indexing.

Each element has the same data type and the array occupies a contiguous area of storage.

77

78

Steps using an Array Declare an array variable Create an array object Use each element in the array

79

Declaring an Array Syntax

type variable[ ], … ; type[ ] variable;

"type" is the type of each element.

(e.g.)int a[ ], b[ ];

double[ ] d;

80

Creating an Array Use "new" operator

variable = new type[size]; "size" may be an expression. Initial value of each element

byte, short, int, long, float, double : 0 boolean : false char : ‘\0’ Objects : null

(e.g.)playerName = new String[10];int[ ] temp = new int[100];

Initialization (only for primitive types and String) String[ ] variable = { str1, str2, … };(e.g.)

String[ ] playerName = { "Kim", "Park", "Song" };

81

Using an Array Each element is referred by

"variable[index]" index = 0 ~ size-1

"length" attribute

(e.g.)a[0] = 10;i = 3 * a[1] + 1;n = a.length;

Exercise Build a NetBeans project called Array. Declare an array "a" of type int. Create the "a" with the size of 10. Set each element of "a" as 1. Print out all elements of "a".

82

83

Multi-dimensional Arrays

(e.g.)int[ ][ ] coords = new int[12][12];

coords[0][0] = 1;

coords[0][1] = 1;

84

Exercise Store ten int values to an array, which

are input from the standard input. Summate all elements of an int-type

array. Sort an int-type array using Bubble sort

algorithm, of which elements are input from the standard input.

85

Session 6.Classes

Classes: Introduction A class is a programming language construct

that is used as a blueprint to create objects. This blueprint includes attributes and methods that

the created objects all share. Classes, when used properly, can accelerate

development by reducing redundant code entry, testing and bug fixing.

Built-in classes vs. User-defined classes String, Object, Math

86

Classes: Main Concepts Encapsulation(Data abstraction)

The term encapsulation is often used interchangeably with information hiding. The principle of information hiding is the hiding of design decisions in a

computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed.

Supported by keywords like class or interface Inheritance

Inheritance is a way to form new classes using classes that have already been defined.

The new classes, known as derived classes, take over (or inherit) attributes and behavior of the pre-existing classes, which are referred to as base classes (or ancestor classes).

It is intended to help reuse existing code with little or no modification. Supported by keywords like extends or implements

Polymorphism Polymorphism is a programming language feature that allows values of different

data types to be handled using a uniform interface. Supported by method overriding

87

Homework Report on polymorphism

List and explain types of polymorphism.

88

89

Classes: Steps using a Class Declare a class (only for user-defined

classes) Declare an instance variable (object) for

a class Create an object Use the object

90

Classes : Declaring a Class

class class-name

{

members

private-members

protected-members

public-members

} // note - ;

(e.g.)class MyDate{

private int year, month;private int day;public void set(int y, int m, int d){

year = y;month = m;day = d;

}}

91

Classes : Declaring a Class Private members

Only internal party can use them. Internal party = Member functions

(methods)

Public members Both internal and external parties can use

them.

92

Classes: Declaring an Object type variable, … ;

(e.g.)String str;

MyDate d;

93

Classes: Creating an Object Operator new

variable = new type(args); The args are defined in constructors.(e.g.)

str = new String( );d = new MyDate( );MyDate a = new MyDate(2000, 11, 23);str = "aaa"; // special treatment for StringString s = "abc"; // special treatment for String

94

Classes: Using an Object variable.member

(e.g.)b = str.length();

d.set(2000, 12, 1);

Exercise Build a NetBeans project called Test. Declare MyDate class, which has members

like: Three int member variables; year, month, day. Method set(int y, int m, int d), which sets values of

year, month, and day. Method print( ), which prints out like "2008/9/12".

In main method, declare and create an object for MyDate class.

In main method, set the date as Sep. 12, 2008. In main method, print out the date.

95

96

Classes : Members Constants Variables Methods

97

Classes : Constants Named literal Keyword: final Must be initialized(e.g.)

class MyCircle{ final double pi = 3.141592;

final int CENTER = 0;}

Exercise Build a NetBeans project called Test. Declare MyCircle class, which has members

like: Method set(double r), which sets the radius of the

circle. Method getArea( ), which returns the area of the

circle. Test the MyCircle class in main method.

Declare a circle. Set the radius of the circle as 3. Print out the area of the circle.

98

99

Classes : Variables Instance variables(e.g.)

class date{ String s;}

Class variables(e.g.)

class date{ static String s; static final int pi = 3.141592;}…date.s = "ddd";r = 2 * date.pi;

100

Classes : Methods (1) Instance Methods

return-type function-name(args){

...return(…);

} Class Methods

static return-type function-name(args){

...return(…);

}…class-name.function-name(…);

101

Classes : Methods (2)(e.g.)

class MyDate{

void set(int y, int m, int d){

year = y;month = m;day = d;

}

int[ ] get(int n){

int r = new int[100];…return(r);

}}

102

Classes : Method main Starting(Entry) point of a program public static void main(String[ ] args)(e.g.)

class Hello{ public static void main(String[ ] args) { System.out.println("Hello, world"); }}

Exercise Build a NetBeans project called Test. Declare MyPoint class, representing a coordinate, which has members

like: double variables m_x and m_y Methods set(double, double), getX( ), and getY( ) Method multiplyTo(MyPoint)

U * V = (xu * xv, yu * yv) Method compareTo(MyPoint) Method print( )

Format: (x, y) Method String toString( )

Format: (x, y) Test the MyPoint class in main method.

Declare two points a and b. Set a as (2, 3) and b as (4, 5). Multiply a and b and print out the result. Compare a and b and print out the result.

103

Exercise Merge the two classes, Main and

MyPoint from the previous exercise, into the Main class.

104

Homework Build a program to find prime numbers

from 1 through 10,000. Have to declare and use a method boolean

isPrime(int n) in the Main class.

105

106

Classes : this To refer the object itself Class methods(static) can not use

"this".

(e.g.)t = this.x;

this.resetData(this);

return(this);

Classes: this Reasons why using this

To override scope this.year = year

To enhance readability this.set(2008, 9, 12);

To refer the object again set(2.3).print( );

107

108

Classes : Scope Scope is an enclosing context where

values and expressions are associated. Local variables

Only in the function Instance or class variables

Only in the class Local variables have priority over the

instance or class variables.

Classes: thisclass MyCircle {

int radius;

MyCircle set(int r) {radius = r;return(this);

}

void print( ) {System.out.println(radius);

}}

109

110

Classes : Argument passing Call by value

Primitive types Call by reference

Arrays Objects

111

An Object is a Pointer!

(e.g.)MyDate d = new MyDate( );

MyDate t;

t = d;

t.set(1999, 11, 23);

d.set(2000, 11, 12);

112

Classes : Class Methods Class methods can not use instance members

(constants, variables, methods). It is better to declare methods, which have

nothing to do with instances, as class methods.(e.g.)

Math.sqrt(4.0);Integer.parseInt("42");

cf.) Math m = new Math( ); m.sqrt(4.0);

113

Command-line Arguments public static void main(String[ ] args) args[0], args[1], …(e.g.)

class EchoArgs{

public static void main(String[ ] args){

for (int i = 0; i < args.length; i++){ System.out.println("Arg " + i + " : " + args[i]);}

}}

Exercise Build a NetBeans project called Test. Input an integer, which represents a

radius of a circle, from a command-line argument.

Calculate and print out the area of the circle.

114

115

Homework Complete the MyDate class, so that it

can be provided as a library.

116

Session 7.Methods

117

Methods : Overloading Overloading allows the creation of several

functions with the same name which differ from each other in terms of the type of the input and the type of the output of the function.

Methods are distinguished by: Number of arguments Types of arguments

(e.g.)class aClass { int sum(int a, int b) { … } double sum(double a, double b) { … }}

Exercise Build a NetBeans project called Test. Declare MyPoint class, representing a coordinate, which has members

like: double variables x and y Overloaded Methods set

set(int x, int y) Not necessary thanks to implicit type conversion

set(double x, double y) set(String x, String y) Use Double.parseDouble

Method getX( ) and getY( ) Method multiplyTo(MyPoint V)

U * V = (xu * xv, yu * yv) Method toString( )

"(x, y)" Test the MyPoint class in main method.

Declare two points a and b. Set a as (2, 3) and b as (4, 5). Multiply a and b and print out the result.

118

Methods : Constructors A member function (method) Have the same names as the classes Have no return type Called automatically just after the object is constructed Constructor is also a method, so it can be overloaded.

To call another overloaded constructor, use keyword this. this(args);

To call a constructor: MyDate today = new MyDate(1996, 3, 21);

119

Exercise Build a NetBeans project called Test. Declare MyPoint class, representing a coordinate, which has members like:

double variables x and y Overloaded constructors

MyPoint( ) MyPoint(double x, double y) MyPoint(String x, String y)

Overloaded Methods set set(double x, double y) set(String x, String y) Use Double.parseDouble

Method getX( ) and getY( ) Method multiplyTo(MyPoint V)

U * V = (xu * xv, yu * yv) Method toString( )

"(x, y)" Test the MyPoint class in main method.

Declare two points a(2, 3) and b(4, 5). Multiply a and b and print out the result.

120

121

Interface and Implementation The operation (methods) should be

defined clearly and simply. The class details should be hided from

users and be accessible only by the pre-intended operations (methods). Black Box The operations (methods) defined in a

class should be able to be used without change, even after the internal implementation has been changed.

122

Homework Provide a class for Bubble Sorting.

class BubbleSorting{

private int a[ ];public BubbleSorting( ) { … }public BubbleSorting(int b[ ]) { … }public void sort( ) { … }public void print( ) { … }

}

123

Session 8.Inheritance

124

Inheritance : Subclasses Syntax

class subclass extends superclass Single inheritance

Multiple inheritance is not allowed. In other word, only one class name is allowed after the

extends keyword.(e.g.)

class Date{ … }class MyDate extends Date{ … }

Exercise Build a NetBeans project called Test. Declare MyDate class, representing a date, which has members like:

int variables m_year, m_month, m_day Overloaded constructors

MyDate( ) MyDate(int year, int month, int day)

Method getYear( ), getMonth( ) and getDay( ) Method toString( )

"YYYY/MM/DD" Declare MyTime class, representing a time, which is a subclass of MyDate and has members like:

int variables m_hour, m_minute, m_second Overloaded constructors

MyTime( ) MyTime(int year, int month, int day, int hour, int minute, int second)

Method getHour( ), getMinute( ), getSecond( ) Method toString( )

"YYYY/MM/DD:HH:MM:SS" Test the MyTime class in main method.

Declare a time t(2008, 10, 23, 11, 45, 50). Print out t.

125

126

Inheritance : Overriding Two kinds of overriding

Variable overriding Method overriding

Variable overriding Declaring a variable member having the same

name (but may have different type) with another variable member in its superclass.

To refer the superclass variable member super.VariableName

127

Inheritance : Overridingclass A{

int a;}class B extends A{

double a;void f( ){ System.out.println(a); System.out.println(super.a);}

}

public class Test{

public static void main(String args[ ]){ B b = new B( ); b.f( ); System.out.println(b.a);}

}

128

Inheritance : Overriding Method overriding

Declaring a method having the same prototype with another method in its superclass.

When their prototypes are different, they are regarded as different methods to each other.

To refer the superclass method super.MethodName(args)

Method overriding is an important feature that facilitates polymorphism in the design of object-oriented programs.

129

Inheritance : Overridingclass Super{

int aMethod(int a){ … }

}class Sub extends Super{

int aMethod(int a){ … n = super.aMethod(12); …}

}

Exercise Build a NetBeans project called Test. Declare MyDate class, representing a date, which has members like:

int variables m_year, m_month, m_day Overloaded constructors

MyDate( ) MyDate(int year, int month, int day)

Method getYear( ), getMonth( ) and getDay( ) Method toString( )

"YYYY/MM/DD" Declare MyTime class, representing a time, which is a subclass of MyDate and has members like:

int variables m_hour, m_minute, m_second Overloaded constructors

MyTime( ) MyTime(int year, int month, int day, int hour, int minute, int second)

Method getHour( ), getMinute( ), getSecond( ) Method toString( )

"YYYY/MM/DD:HH:MM:SS" Method test( ), which calls toString( ) and super.toString( ) consecutively and then prints out the two results.

Test the MyTime class in main method. Declare a time t(2008, 10, 23, 11, 45, 50). Call t.test( ). Call t.toString( ) and print out its result.

130

131

Inheritance : Overriding To call a constructor of super class

super(args) Constructor overriding must be at the

first line of a constructor.

132

Inheritance : Overridingclass Super{

int x;Super(int a){

x = a;}

}class Sub extends Super{

int y;Sub(int a, int b){

x = a;y = b;

}}

class Super{

int x;Super(int a){

x = a;}

}class Sub extends Super{

int y;Sub(int a, int b){

super(a);y = b;

}}

Exercise Build a NetBeans project called Test. Declare MyDate class, representing a date, which has members like:

int variables m_year, m_month, m_day Overloaded constructors

MyDate( ) MyDate(int year, int month, int day)

Method getYear( ), getMonth( ) and getDay( ) Method toString( )

"YYYY/MM/DD" Declare MyTime class, representing a time, which is a subclass of MyDate and has members like:

int variables m_hour, m_minute, m_second Overloaded constructors

MyTime( ) MyTime(int year, int month, int day, int hour, int minute, int second) Use super constructor here.

Method getHour( ), getMinute( ), getSecond( ) Method toString( )

"YYYY/MM/DD:HH:MM:SS" Method test( ), which calls toString( ) and super.toString( ) consecutively and then prints out the two results.

Test the MyTime class in main method. Declare a time t(2008, 10, 23, 11, 45, 50). Call t.test( ). Call t.toString( ) and print out its result.

133

134

Inheritance : Virtual Functionclass Super{

void vf(int a){ … }void cf( ){ … vf(3); … }

}class Sub extends Super{

void vf(int a){ … }

}

void call( …){

Sub x = new Sub( );x.cf( );Super y = x;y.cf( );

}

Exercise Build a NetBeans project called Test. Declare MyDate class, representing a date, which has members like:

int variables m_year, m_month, m_day Overloaded constructors

MyDate( ) MyDate(int year, int month, int day)

Method getYear( ), getMonth( ) and getDay( ) Method toString( )

"YYYY/MM/DD" Declare MyTime class, representing a time, which is a subclass of MyDate and has members like:

int variables m_hour, m_minute, m_second Overloaded constructors

MyTime( ) MyTime(int year, int month, int day, int hour, int minute, int second)

Method getHour( ), getMinute( ), getSecond( ) Method toString( )

"YYYY/MM/DD:HH:MM:SS" Test the MyDate and MyTime class in main method.

Declare and create an array of MyDate, A, which has 10 elements. Declare and create five MyDate objects and store them to A. Declare and create five MyTime objects and store them to A. For each element of A, call toString( ) and print out the result.

135

136

Exercise: YData (1) Declare a class YDataInteger, which

has an int variable named value. Declare a constructur YDataInteger(int

value), which sets the member value as the argument value.

137

Answer: YData (1)

class YDataInteger{ int value; YDataInteger(int value) { this.value = value; }}

138

Exercise: YData (2) Override two methods void set( ) and void

set(int value) in YDataInteger class, where void set( ) sets value as zero and void set(int value) sets value as argument value.

Avoiding redundancy is essential in this exercise.

139

Answer: YData (2)class YDataInteger{ int value; YDataInteger(int value) { set(value); } void set(int value) { this.value = value; } void set( ) { set(0); }}

140

Exercise: YData (3) Declare a constructor YDataInteger( ),

which sets value as zero. Again, avoiding redundancy is essential

in this exercise, so the constructor YDataInteger( ) must call the constructor YDataInteger(int value).

141

Answer: YData (3)class YDataInteger{ int value; YDataInteger(int value) { set(value); } YDataInteger( ) { this(0); } void set(int value) { this.value = value; } void set( ) { set(0); }}

142

Exercise: YData (4) Declare a class YDataDouble, which has a double variable named

value. Declare a constructur YDataDouble(double value), which sets the

member value as the argument value. Override two methods void set( ) and void set(double value) in

YDataDouble class, where void set( ) sets value as 0.0 and void set(double value) sets value as argument value. Avoiding redundancy is essential in this exercise.

Declare a constructor YDataDouble( ), which sets value as 0.0. Again, avoiding redundancy is essential in this exercise, so the constructor YDataDouble( ) must call the constructor YDataDouble(double value).

143

Answer: YData (4)class YDataDouble{ double value; YDataDouble(double value) { set(value); } YDataDouble( ) { this(0.0); } void set(double value) { this.value = value; } void set( ) { set(0.0); }}

Exercise: YData (5) Declare a class YData which is the super

class of YDataInteger and YDataDouble. Update the programs for YDataInteger and

YDataDouble. Declare a virtual function void print( ) for

YDataInteger, YDataDouble and YData, where void print( ) standard-outputs int value and double value at YDataInteger and YDataDouble respectively.

144

145

Answer: YData (5)class YData{ void print( ) { }}

class YDataInteger extends YData{ int value; YDataInteger(int value) { set(value); } YDataInteger( ) { this(0); } void set(int value) { this.value = value; } void set( ) { set(0); } void print( ) { System.out.println(value); }}

class YDataDouble extends YData{ double value; YDataDouble(double value) { set(value); } YDataDouble( ) { this(0.0); } void set(double value) { this.value = value; } void set( ) { set(0.0); } void print( ) { System.out.println(value); }}

146

Exercise: YData (6) Declare public String toString( ).

147

Answer: YData (6)class YData{}

class YDataInteger extends YData{ int value; YDataInteger(int value) { set(value); } YDataInteger( ) { this(0); } void set(int value) { this.value = value; } void set( ) { set(0); } public String toString( ) { return(Integer.toString(value)); }}

class YDataDouble extends YData{ double value; YDataDouble(double value) { set(value); } YDataDouble( ) { this(0.0); } void set(double value) { this.value = value; } void set( ) { set(0.0); } public String toString( ) { return(Double.toString(value)); }}

148

Example Regression

class YRegression class YLogisticRegression

class YMatrix class YMatrixM class YTransposedMatrix class YXMatrix class YLogisticXViMatrix

149

Session 9.Inner Classes

150

Inner Classes : Categories Nested Classes Inner Classes Local Classes Anonymous Classes

151

Nested Classespublic class NestedClass{

static int i = 100;static class Nested1{

public int getInt( ){ return(i); }

}public static void main(String args[ ]){

Nested1 nested1 = new Nested1( );System.out.print(nested1.getClass( ));System.out.print("'s class method getInt( ) : ");System.out.println(nested1.getInt( ));

}}

152

Inner Classespublic class InnerClass{

int i;public InnerClass(int i){ this.i = i; }public class Inner1{

public int getInt( ){ return(i); }

}public static void main(String args[ ]){

InnerClass inner = new InnerClass(100);InnerClass.Inner1 inner1 = inner.new Inner1( );System.out.print(inner1.getClass( ));System.out.print("'s class method getInt( ) : ");System.out.println(inner1.getInt( ));

}}

153

Local Classespublic class LocalClass{

public void testLocalClass(final int i){

class Test{

public void callMe( ){

System.out.println("Variable i : " + i);System.out.println(getClass( ));

}}Test test = new Test( );test.callMe( );

}public static void main(String args[ ]){

LocalClass local = new LocalClass( );local.testLocalClass(100);

}}

154

Anonymous Classespublic class AnonymousClass{

public void testAnonymousClass(final int i){

Object obj = new Object( ){

public String toString( ){

System.out.println(getClass( ));System.out.println(AnonymousClass.this.getClass( ));return(super.toString( ));

}};System.out.println(obj);

}public static void main(String args[ ]){

AnonymousClass anonymous = new AnonymousClass( );anonymous.testAnonymousClass(100);

}}

155

Session 10.Packages

156

Packages A Java package is a mechanism for

organizing Java classes into namespaces. Merits

Modularize several classes into a unit Identify class names without ambiguity

A package provides a unique namespace for the types it contains.

Enhance access control Classes in the same package can access each

other's protected members.

157

Packages: Declarations Syntax

package dir1.dir2…package-name; A package statement must be at the top of a

Java source file except comments. The directory name in a package statement

must be consistent with the path of the Java source file.

(e.g.)Source code of D.java

package a.b.c;…

Path of D.javaa/b/c/D.java

158

Packages: Usage import

import package.Class-name; import package.*;

(e.g.)import java.util.Vector;Vector v = new Vector( );

Full Class Name package.Class-name

(e.g.)Vector v = new Vector( );java.util.Vector v = new java.util.Vector( );

Exercise Build a NetBeans project called Test. Declare MyDate class in mylib/date package, representing a date, which has members like:

int variables m_year, m_month, m_day Overloaded constructors

MyDate( ) MyDate(int year, int month, int day)

Method getYear( ), getMonth( ) and getDay( ) Method toString( )

"YYYY/MM/DD" Declare MyTime class in mylib/time package, representing a time, which is a subclass of MyDate

and has members like: int variables m_hour, m_minute, m_second Overloaded constructors

MyTime( ) MyTime(int year, int month, int day, int hour, int minute, int second)

Method getHour( ), getMinute( ), getSecond( ) Method toString( )

"YYYY/MM/DD:HH:MM:SS" Test the MyDate and MyTime class in main method.

Declare and create an array of MyDate, A, which has 10 elements. Declare and create five MyDate objects and store them to A. Declare and create five MyTime objects and store them to A. For each element of A, call toString( ) and print out the result.

159

Exercise Build a NetBeans project called Use. Add the JAR file from the above exercise to its library. Test the MyDate and MyTime class in main method.

Declare and create an array of MyDate, A, which has 10 elements.

Declare and create five MyDate objects and store them to A. Declare and create five MyTime objects and store them to A. For each element of A, call toString( ) and print out the

result.

160

161

Packages Where can we find the location of packages?

CLASSPATH Full class names import statements

Avoiding duplication of class names in different packages If class names are different, use their class names only. If class names are same, use their full class names.

Naming convention for packages Reverse the Internet domain name (e.g.)

Domain name: yonsei.ac.kr Package name: kr.ac.yonsei.dir1.dir2.…package-name

162

Session 11.Modifiers

163

Modifiers public, protected, private

Access control for classes, methods and variables static

Declaring classes, methods and variables final

Suppress inheritance of classes, methods and variables

abstract Declaring abstract classes and abstract methods

synchronized, volatile Used for multi-thread

transient Exclude a object from serialization

Access Control of Members

164

public protected Default private

Same class Yes Yes Yes Yes

Different class in same package Yes Yes Yes No

Different class in different package Yes No No No

Subclass in same package Yes Yes Yes No

Subclass in different package Yes Yes No No

Exercise The previous table about access control

is incorrect. Correct the table by trial and error.

165

166

Access Control of Classes

public protected Default private

Same file Yes Yes Yes Yes

Same package Yes Yes Yes No

Different package Yes No No No

Abstract Classes and Methods Abstract Methods

Declarations public abstract return-type method-name(args);

Methods without body (implementation) Role of defining shared activities or attributes among subclasses(e.g.)

public abstract int sum(int[ ] a); Abstract Classes

Declarations public abstract class class-name { … }

(e.g.)public abstract class ALib{ public abstract int sum(int[ ] a); …}

All classes which have one or more abstract methods must be abstract classes. It is better to use interface if all methods in a class are abstract methods.

167

Exercise For the previous exercise about YData,

declare the method print( ) as an abstract method.

168

169

Answer: YDatapublic abstract class YData{ public abstract void print( );}

public class YDataInteger extends YData{ private int value; public YDataInteger(int value) { set(value); } public YDataInteger( ) { this(0); } public void set(int value) { this.value = value; } public void set( ) { set(0); } public void print( ) { System.out.println(value); }}

public class YDataDouble extends YData{ private double value; public YDataDouble(double value) { set(value); } public YDataDouble( ) { this(0.0); } public void set(double value) { this.value = value; } public void set( ) { set(0.0); } public void print( ) { System.out.println(value); }}

170

Session 12.Interface

Multiple/Single Inheritance Limit of single inheritance

Poor expressiveness Limit of multiple inheritance

Complexity Ambiguity

Java Single inheritance

For simplicity Interface

For expressiveness

171

172

Interface: Declarations Syntax

public interface interface-name{ constants methods}

All methods in interfaces are automatically declared as public and abstract.

So, the methods can not be declared as private or protected. All variables in interfaces are automatically declared as public,

static, and final.(e.g.)

public interface Growable{ void growIt( ); void growItBigger( );}

173

Interface: Implementation Syntax

public class class-name implements interface1, interface2, …{ …}

The implementation class must implement all the methods declared in its interfaces.

Java classes can implement multiple interfaces, which results in multiple inheritance.

(e.g.)public class Aclass implments Growable{ int age; void growIt( ) { … } void growItBigger( ) { … } int getAge( ) { … } …}

174

Interface: Usage The effect of interfaces is that it forces

implementation of abstract methods. Interfaces are treated like classes when

they are used as: Variables Arguments(e.g.)

Growable aGrowable = new Aclass( );public int setGrowable(Growable g) { … }

175

Interface: Inheritance Syntax

public interface sub-interface extends super-interface1, super-interface2, …

Multiple inheritance are allowed for interfaces.

(e.g.)public interface SubGrowable extends Growable

{

}

176

Session 13.Exception Handling

Steps for Exception Handling Define an exception class Throw [Pass] (optional) Catch [& pass & catch …]

177

Exception: Classes

Exception

IOException RuntimeException

FileNotFoundException ArithmeticException NullPointerException

178

179

Exception: Exception Class Every exception class should be a subclass

of the Exception class.

(e.g.)public class AnException extends IOException

{

AnException( ) { … }

AnException(String msg) { super(msg); }

}

Exercise Build a NetBeans project called Test. Declare InvalidValueException which is

a subclass of RuntimeException.

180

181

Exception: Throwing Syntax

public type method(args) throws AnException

{

AnException e = new AnException(args);

throw e;

}

Exercise (Continue from the previous exercise.) Declare MyDate class which has:

int members m_year, m_month, and m_day

Method set(int year, int month, int day), which throws InvalidValueException when month or day are invalid: that is, month < 1, month > 12, day < 1, or day > 31.

182

183

Exception: Catching Syntax

try{ … }catch (AnException e1){ … }catch (AnOtherException e2){ … }…catch (Exception e){ … }finally{ … }

The catches should be in order of which exceptions are listed from specific exceptions to more general exceptions.

Exercise (Continue from the previous exercise.) Declare MyTime class, which is a

subclass of MyDate, and which has: int members m_hour, m_minute, and

m_second Method set(int year, int month, int day, int

hour, int minute, int second), which calls set method in MyDate and catches the InvalidValueException.

184

185

Exception: Passing Syntax

public type method(args) throws AnException

{ … Methods which throw AnException …}

Exercise (Continue from the previous exercise.) Declare MyTime class, which is a subclass of

MyDate, and which has: int members m_hour, m_minute, and m_second Method set(int year, int month, int day, int hour, int

minute, int second), which calls set method in MyDate and passes the InvalidValueException.

Program public static void main(String args[]) which creates an instance t of MyTime class, calls t.set(…), and catches the InvalidValueException.

186

187

Exception: Catching & Passing Syntax

public type method(args) throws AnException{ … try { … } catch (AnException e) { …

e.printStackTrace();…

throw e; }}

Exercise (Continue from the previous exercise.) Declare MyTime class, which is a subclass of

MyDate, and which has: int members m_hour, m_minute, and m_second Method set(int year, int month, int day, int hour, int

minute, int second), which calls set method in MyDate and catches and passes the InvalidValueException.

Program public static void main(String args[]) which creates an instance t of MyTime class, calls t.set(…), and catches the InvalidValueException.

188

Exception: Catching or Passing Unchecked exception

RuntimeException and its subclasses do NOT need to be caught or passed.

Checked exception Other exceptions including IOException

and their subclasses MUST be caught or passed.

189

Exception: Methods String getMessage( ) void printStackTrace( )

190

Exercise (Continue from the previous exercise.) Declare MyTime class, which is a subclass of

MyDate, and which has: int members m_hour, m_minute, and m_second Method set(int year, int month, int day, int hour, int

minute, int second), which calls set method in MyDate, catches the InvalidValueException, calls printStackTrace( ) for the InvalidValueException, and then throws the InvalidValueException.

Program public static void main(String args[]) which creates an instance t of MyTime class, calls t.set(…), and catches the InvalidValueException.

191

Exception: Inheritance Overriding methods of a class must throw less

exceptions than its superclasses.(e.g.)

public class RadioPlay{ public void start( ) throws Aexception { … }}Public class StereoPlay extends RadioPlay{ public void start( ) { … }}

192

193

Session 14.Stream

Stream A passage of data between a program and other data sources

or sinks. Input stream sends data from a data source to the program,

while output stream sends data from the program to a data sink. Stream is a concept to unify reading from and writing to storage

devices like main memory, discs, CD-ROM, networks, etc. Java Streams

Byte Stream InputStream, OutputStream

Character Stream (supports Unicode) Reader, Writer

Bridge from byte streams to character streams InputStreamReader, OutputStreamWriter

import java.io.*

194

Byte Stream Input

InputStream( ) FileInputStream(File file) / FileInputStream(String fileName) BufferedInputStream(InputStream in) DataInputStream(InputStream in) ObjectInputStream(InputStream in)

Output OutputStream( ) FileOutputStream(File file, [boolean append]) / FileOutputStream(String

fileName, [boolean append]) BufferedOutputStream(OutputStream out) DataOutputStream(OutputStream out) ObjectOutputStream(OutputStream out)

Input & Output RandomAccessFile(File file, String mode) / RandomAccessFile(String fileName,

String mode)

195

Character Stream Input

Reader( ) FileReader(File file) / FileReader(String fileName) BufferedReader(Reader in) LineNumberReader(Reader in) StreamTokenizer(Reader r) StringReader(String s)

Output Writer( ) FileWriter(File file, [boolean append]) / FileWriter(String fileName) BufferedWriter(Writer out) PrintWriter(File file) / PrintWriter(OutputStream out) /

PrintWriter(Writer out) / PrintWriter(String fileName) PrintStream

StringWriter(String s)

196

Bridge from Byte Streams to Character Streams Input

InputStreamReader(InputStream in) Output

OutputStreamWriter(OutputStream out)

(e.g.)try {

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String str = reader.readLine();System.out.println(str);

int i = Integer.parseInt(str);System.out.println(i * 23);

} catch (IOException e) { }

197

File Class File(String filename) boolean exists( ) int length( ) long lastModified( ) boolean isDirectory( ) booealn isFile() void mkdir( ) void renameTo(File) void delete( ) String getAbsolutePath( ) String getCanonicalPath( )

String getName( ) String getParent( ) File getParentFile( ) String getPath( ) String[] list( ) File[ ] listFiles( ) static File[ ] listRoots( ) static File

createTempFile(String head, String ext)

void deleteOnExit( ) String toURI( )

198

199

Byte Stream abstract class InputStream

int read( ) throws IOException Return – input byte / -1(End of stream)

int read(byte buf[ ]) throws IOException read(buf, 0, buf.length)

int read(byte buf[ ], int start, int len) throws IOException close( )

abstract class OutputStream void write(int data) throws IOException int write(byte buf[ ]) throws IOException

write(buf, 0, buf.length) int write(byte buf[ ], int start, int len) throws IOException close( ) flush( )

200

Buffered Stream BufferedInputStream extends FilterInputStream

BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int buffersize) int read( ) throws IOException

Return – input byte / -1(End of stream) int read(byte buf[ ]) throws IOException

read(buf, 0, buf.length) int read(byte buf[ ], int start, int len) throws IOException close( ) mark(int limit) reset( )

BufferedOutputStream extends FilterOutputStream BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out, int buffersize) void write(int data) throws IOException int write(byte buf[ ]) throws IOException

write(buf, 0, buf.length) int write(byte buf[ ], int start, int len) throws IOException close( ) flush( )

201

Buffered Streamtry{

FileInputStream fis = new FileInputStream("test.dat");BufferedInputStream bis = new BufferedInputStream(fis);…bis.read( );bis.read(buf);…bis.close( );

}catch (IOException e) { }

202

Data Stream DataInputStream extends FilterInputStream

DataInputStream(InputStream in) boolean readBoolean( ) byte readByte( ) double readDouble( ) float readFloat( ) int readInt( ) long readLong( ) short readShort( ) int readUnsignedByte( ) int readUnsignedShort( )

DataOutputStream extends FilterOutputStream DataOutputStream(OutputStream out) void writeBoolean(boolean) void writeByte(byte) void writeDouble(double) void writeFloat(float) void writeInt(int) void writeLong(long) void writeShort(short)

End of stream EOFException

203

Data Streamtry{

FileOutputStream fos = new FileOutputStream("test.dat");DataOutputStream dos = new DataOutputStream(fos);…dos.writeInt(20);dos.writeDouble(1.2);…dos.close( );

}catch (EOFException eof) { dos.close( ); }catch (IOException e) { }

204

Buffered & Data Streamtry {

FileInputStream fis = new FileInputStream("test.dat");BufferedInputStream bis = new BufferedInputStream(fis);DataInputStream dis = new DataInputStream(bis);…try {

…int i = dis.readInt( );…

}catch (EOFException eof){ dis.close( ); }…

}catch (IOException e) { }

205

Character Stream abstract class Reader

int read( ) throws IOException Return – input byte / -1(End of stream)

int read(char buf[ ]) throws IOException read(buf, 0, buf.length)

int read(char buf[ ], int start, int len) throws IOException close( )

abstract class Writer void write(char buf[ ]) throws IOException

write(buf, 0, buf.length) void write(char buf[ ], int start, int len) throws IOException void write(int c) throws IOException void write(String str) throws IOException void write(String str, int start, int len) throws IOException close( ) flush( )

Buffered Reader/Writer BufferedReader extends Reader

BufferedReader(Reader in) BufferedReader(Reader in, int buffersize) String readLine( ) throws IOException long skip(long n) throws IOException

BufferedWriter extends Writer BufferedWriter(Writer out) BufferedWriter(Writer out, int buffersize) void newLine( ) throws IOException

206

Buffered Reader/Writertry{

String s;FileReader fr = new FileReader("test.dat");BufferedReader br = new BufferedReader(fr);while ((s = br.readLine()) != null){

System.out.println(s);}br.close( );

}catch (Exception e) { }

207

PrintWriter PrintWriter extends Writer

PrintWriter(File file) PrintWriter(String fileName) PrintWriter(OutputStream out) PrintWriter(Writer out, [boolean autoFlush]) PrintWriter printf(String format, Object...

args) (Note) \n, \r\n

208

PrintWritertry{

int i,s;PrintWriter w = new PrintWriter("test.txt");for (i = 0, s = 0; i < 100; i++){

s += i;w.printf("%d - %d\r\n", i, s);

}w.close();

}catch (IOException e) { }

209

Exercise Build a NetBeans project called Test. Copy a text file "a.txt" to another text file

"b.txt".

210

211

Session 15.API

API Specification

212

Class String char charAt(int index) int compareTo(String anotherString) int compareToIgnoreCase(String str) boolean equals(Object anObject) boolean equalsIgnoreCase(String anotherString) static String format(String format, Object... args) boolean isEmpty() int length() String substring(int beginIndex, int endIndex) String trim()

213

Exercise Build a NetBeans project called Test. Print out a date in the format of

"MM/DD/YYYY".

214

Class Integer Integer(int value) int compareTo(Integer anotherInteger) boolean equals(Object obj) int intValue() long longValue() short shortValue() double doubleValue() static int parseInt(String s) static int parseInt(String s, int radix)

215

Exercise Build a NetBeans project called Test. Parse a string "123" to get int 123.

216

Class Double Double(double value) int compareTo(Double anotherDouble) boolean equals(Object obj) double doubleValue() float floatValue() int intValue() long longValue() short shortValue() static double parseDouble(String s)

217

Exercise Build a NetBeans project called Test. Parse a string "12.3" to get double 12.3.

218

Class Long Long(long value) int compareTo(Long anotherLong) boolean equals(Object obj) long longValue() int intValue() short shortValue() double doubleValue() float floatValue() static long parseLong(String s) static long parseLong(String s, int radix)

219

Exercise Build a NetBeans project called Test. Parse a string "123" to get long 123L.

220

Class Vector<E> boolean add(E e) void add(int index, E element) E set(int index, E element) E get(int index) int size() boolean contains(Object o) boolean isEmpty() void clear()

221

Exercise Build a NetBeans project called Test. Declare and create an object aString

which is a vector of strings. Add strings "a", "b", "c", and "d" to

aString. Print out the elements of aString.

222

Class Stack<E> extends Vector<E>

E peek() E pop() E push(E item)

223

Exercise Build a NetBeans project called Test. Declare and create an object kString

which is a stack of strings. Push strings "a", "b", "c", and "d" to

aString. Print out each element of aString by

popping.

224

Class Hashtable<K,V> V get(Object key) V put(K key, V value) int size() boolean isEmpty() void clear() Enumeration<K> keys()

225

Exercise Build a NetBeans project called Test. Declare and create an object hName

which is a hashtable of String key and String value.

Add key-value pairs of (A, a), (B, b), (C, c), and (D, d)

Get and print out the value for key B.

226

Class Calendar Calendar Calendar.getInstance() current time void set(int year, int month, int date, int hourOfDay, int minute, int

second) int get(int field)

YEAR MONTH DAY_OF_MONTH DAY_OF_WEEK DAY_OF_YEAR AM_PM HOUR MINUTE SECOND MILLISECOND

Date getTime() void setTime(Date date)

227

Class GregorianCalendar extends Calendar

GregorianCalendar() current time GregorianCalendar(int year, int month,

int dayOfMonth, int hourOfDay, int minute, int second)

boolean isLeapYear(int year) void add(int field, int amount)

228

Formatting Calendar

import java.util.*;import java.text.*;

Calendar c = Calendar.getInstance();DateFormat df = new

SimpleDateFormat("yyyy/MM/dd:HH:mm:ss");

System.out.println(df.format(c.getTime()));

229

Parsing Calendarimport java.util.*;import java.text.*;

try { Calendar c = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("yyyy/MM/dd:HH:mm:ss"); Date d = df.parse("2010/03/23:11:23:25"); c.setTime(d); DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss"); System.out.println(df1.format(c.getTime()));} catch (Exception e) { e.printStackTrace();}

230

Exercise Build a NetBeans project called Test. Print out the current time. Print out the time after 13 hours and 55

minutes.

231

232

Session 16.Serialization

233

Serializtion 이란 ? 객체 직렬화 이전까지 파일이나 다른 스트림으로

객체를 기록하기 위해 단순 노동을 했어야 했던 것을 손쉽게 저장할 수 있도록 Java 에 추가된 도구

234

Default Serialization (1)public class A implements Serializable{

int stat;transient int temp;public A( … ) { … }…

}

• java.io.Serializable 인터페이스는 메소드나 필드를 갖고 있지 않으며 , 단지 이 객체가 Serialize 해도 괜찮은지 아닌지만 판단하도록 표시

• transient 한정사는 Serialization 에 포함하지 말 것을 표시

235

Default Serialization (2)import java.io.*;…A a = new A( … );…try{

FileOutputStream fout = new FileOutputStream("filename");ObjectOutputStream objout = new ObjectOutputStream(fout);objout.writeObject(a);objout.close( );

}catch (Exception e) { }

236

Default Serialization (3)import java.io.*;

A a;

try

{

FileInputStream fin = new FileInputStream("filename");

ObjectInputStream objin = new ObjectInputStream(fin);

a = (A)objin.readObject( );

objin.close( );

}

catch (Exception e) { }

237

Overriding Serialization (1) private void writeObject(java.io.ObjectOutputStream

out) throws IOException; private void readObject(java.io.ObjectInputStream in)

throws IOException, ClassNotFoundException; out.defaultWriteObject( );

자동 Serialization 의 대상인 멤버들을 Serialize한다 .

in.defaultReadObject( ); 자동 Serialization 의 대상인 멤버들을 Serialize

한다 .

238

Overriding Serialization (2)import java.io.*;public class A implements Serializable{

int year;public A(int y){

year = y;}private void writeObject(ObjectOutputStream out) throws IOException{

//out.defaultWriteObject( );out.writeInt(year);

}private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{

//in.defaultReadObject( );year = in.readInt( );

}}

239

Session 17.Multi-threading

240

Process & Thread Process

운영체제가 관리하는 작업의 단위 프로그램 실행이란 프로세스를 만들어서

사용하는 것 Thread

하나의 프로세스에 속하면서 프로세스가 가지고 있는 자원들을 다른 Thread 와 공유

241

Multi-threading (1) Thread 클래스 확장

public class A extends Thread Runnable 인터페이스 구현

public class A implements Runnable public void run( )

(Note) class Thread implements Runnable

242

Multi-threading (2)class ThreadRun implements Runnable{

public void run( ){

…}

}public class A{

transient Thread m_threadRun = null;…public void MultiThreading( ){

…if (m_threadRun == null || !m_threadRun.isAlive( )){

m_threadRun = new Thread(new ThreadRun( ));m_threadRun.start( );

}…

}}

243

Priority void setPriority(int priority)

priority 의 값이 클 수록 높은 우선순위를 가짐 priority 의 값은 MAX_PRIORITY 보다 클 수 없음 public static final int MAX_PRIORITY = 10; public static final int MIN_PRIORITY = 1; public static final int NORM_PRIORITY = 5;

(e.g.)m_threadRun.setPriority(Thread.MIN_PRIORITY + 3);

int getPriority( )

244

Synchronization (1) 같은 자원에 서로 다른 Thread 가

동시에 접근할 때의 문제점 해결 synchronized 한정사 사용

한 Thread 만이 synchronized Block 을 수행할 수 있음

형식 synchronized type method(…) { … } … synchronized (object) { … }

245

Synchronization (2)public class ThreadTest implements Runnable{

static int count;public void run( ){

for (int i = 0; i < 5; i++){

synchronized(ThreadTest.class){

counter( );}try{

Thread.sleep(500);}catch (InterruptedException e) { }

}}public void counter( ){

System.out.println(Thread.currentThread( ).getName( ) + " : " + count);count++;

}public static void main(String args[ ]){

Thread t1 = new Thread(new ThreadTest( ));Thread t2 = new Thread(new ThreadTest( ));t1.start( );t2.start( );

}}

246

Thread Status Useful methods

start( ), sleep(long milisec), sleep(long milisec, int nanosec)

Do NOT use yield( ), destroy( ), stop( ), resume( ), suspend( )

sleep( ) throws InterruptedException 다른 Thread 들이 작업할 수 있도록 이 Thread 를

잠시 쉬게 하는 메소드 m_thread.sleep(100); m_thread.sleep(100, 250);

247

Session 18.Networking

248

TCP/IP

Server Client

Packageimport java.io.*;import java.net.*;

import java.io.*;import java.net.*;

Class & Methods

ServerSocket(int port)

Socket accept( );

Socket(String host, int port) InputStream getInputStream( ); OutputStream getOutputStream( ); void close( );

ExceptionsUnknownHostException

249

Example of Serverimport java.io.*;import java.net.*;

try{ ServerSocket serverSocket = new ServerSocket(80); Socket clientConn = serverSocket.accept(); BufferedReader input = new BufferedReader(new InputStreamReader(clientConn.getInputStream())); PrintWriter output = new PrintWriter(clientConn.getOutputStream(), true); String request; request = input.readLine(); System.out.println(request); output.println("HTTP/1.1 200 OK\n\n<HTML><BODY>a</BODY></HTML>"); output.close(); input.close(); clientConn.close(); serverSocket.close();}catch (IOException e){ System.err.println("Failed I/O: " + e); System.exit(1);}

250

Example of Clientimport java.io.*;import java.net.*;

try{ Socket socket = new Socket("dragon.yonsei.ac.kr", 80); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter output = new PrintWriter(socket.getOutputStream(), true); output.println("GET /~yusong/index.html HTTP/1.1\n"); String response; response = input.readLine(); System.out.println(response); output.close(); input.close(); socket.close();}catch (UnknownHostException e){ System.err.println("Unknown host: " + e); System.exit(1);}catch (IOException e){ System.err.println("Failed I/O: " + e); System.exit(1);}

251

HTTPimport java.net.*;Import java.io.*;

public URL(String fullURL) throws MalformedURLExceptionpublic InputStream openStream( ) throws IOExceptionpublic URLConnection openConnection( ) throws IOException

public abstract HttpURLConnection(URL url)public void setDoOutput(boolean dooutput)public OutputStream getOutputStream( ) throws IOExceptionpublic String getHeaderField(String name)public InputStream getInputStream( ) throws IOException

252

Example of Web Browserimport java.io.*;import java.net.*;

try{ URL url = new URL("http://dragon.yonsei.ac.kr/~yusong/"); BufferedReader input = new BufferedReader(new InputStreamReader(url.openStream())); String l; while ((l = input.readLine()) != null) {

System.out.println(l); }}catch (IOException e){ System.err.println("Failed I/O: " + e); System.exit(1);}

253

Example of Web Browsertry{ URL url = new URL("http://localhost/default.asp"); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); // Request urlConnection.setRequestMethod("POST"); urlConnection.setFollowRedirects(true); urlConnection.setDoOutput(true); PrintWriter output = new PrintWriter(urlConnection.getOutputStream(), true); output.println("a=b&c=d"); // Response String res = urlConnection.getResponseMessage(); System.out.println(res); String enc = urlConnection.getContentType(); System.out.println(enc); BufferedReader input = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); String l; while ((l = input.readLine()) != null) {

System.out.println(l); } urlConnection.disconnect();}catch (IOException e){ System.err.println("Failed I/O: " + e); System.exit(1);}

254

Session 19.JDBC

JDBC Java Database Connectivity DB 프로그래밍 순서

데이터베이스 생성 데이터베이스 테이블 생성 ( 필요에 따라 ) 데이터베이스 연결 설정

e.g. ODBC JDBC 프로그래밍

255

데이터베이스 및 테이블 생성 데이터베이스 생성

MS Access *.mdb

데이터베이스 테이블 생성 Table design Data 입력

256

데이터베이스 연결 설정

데이터베이스 연결 설정

데이터베이스 연결 설정

데이터베이스 연결 설정

데이터베이스 연결 설정

데이터베이스 연결 설정

데이터베이스 연결 설정

JDBC 프로그래밍Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection

("jdbc:odbc:ydsn", "user", "password");Statement stmt = conn.createStatement();stmt.execute(query);ResultSet rs = stmt.getResultSet();…rs.close();stmt.close();conn.close();

JDBC 프로그래밍 예제 (1)String DB_URL = "jdbc:odbc:ydsn";String DB_USER = "";String DB_PASSWORD= "";Connection conn;Statement stmt;ResultSet rs;String query = "SELECT * FROM customer";try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);stmt = conn.createStatement();stmt.execute(query);rs = stmt.getResultSet();

JDBC 프로그래밍 예제 (2)while (rs.next()){ System.out.print(rs.getString("name") + " / "); System.out.print(rs.getString("username") + " / "); System.out.print(rs.getString("password") + "\n");}rs.close();stmt.close();conn.close();

}catch(Exception e){

e.printStackTrace();}

Appendix

267

Names for SymbolsName Name

~ Tilde ' Single quotation mark, Apostrophe

` Grave " Double quotation mark

! Exclamation mark / Slash, Virgule

@ At sign, Commercial at \ Back slash

# Number sign, Crosshatch, Pound sign | Vertical bar

$ Dollar sign , Comma

% Percent sign . Dot, Period, Full stop

^ Hat sign, Circumflex ? Question mark

& Ampersand ( ) (Left / Right) parenthesis

* Asterisk, Star sign { } (Left / Right) braces, curved parenthesis

– Dash, Hyphen, Minus sign [ ] (Left / Right) bracket, squared parenthesis

_ Underscore, Underline < > (Left / Right) angle bracket, pointed brackets

+ Plus sign (Left / Right) [unidirectional] arrows

= Equal sign Bidirectional arrow

: Colon

; Semicolon

268

top related