[NHN NEXT] Java 강의 - Week2
-
Upload
youngho-cho -
Category
Software
-
view
944 -
download
6
description
Transcript of [NHN NEXT] Java 강의 - Week2
PL����������� ������������������ in����������� ������������������ Java����������� ������������������ ����������� ������������������ Week02����������� ������������������
Object & Class
조영호����������� ������������������ [email protected]����������� ������������������
G o a l ����������� ������������������
O O 패러다임 ����������� ������������������ 이해 ����������� ������������������
설 명 만 ����������� ������������������ 많 고 ����������� ������������������ 코 드 는 ����������� ������������������ 별 로 ����������� ������������������ 없 어 요 ����������� ������������������
Conceptual Perspective����������� ������������������
Implementation Perspective����������� ������������������
객체지향����������� ������������������ Object-Orientation����������� ������������������
개념����������� ������������������ 관점����������� ������������������
구현����������� ������������������ 관점����������� ������������������
Conceptual Perspective����������� ������������������
Implementation Perspective����������� ������������������
객체지향����������� ������������������ Object-Orientation����������� ������������������
개념����������� ������������������ 관점����������� ������������������
구현����������� ������������������ 관점����������� ������������������
Object & Collaboration����������� ������������������
Object-Oriented Programming
Language����������� ������������������
To p i c s ����������� ������������������
Conceptual Perspective
Implementation Perspective
Object & Class
OO == 실세계의����������� ������������������ 모방?����������� ������������������
실무����������� ������������������ 관점에서는����������� ������������������ 부적절하지만����������� ������������������
개념을����������� ������������������ 이해하는����������� ������������������ 데는����������� ������������������ 유용함����������� ������������������
Object-Orientation����������� ������������������
http://www.slideshare.net/baejjae93/roles-responsibilities-collaborations
Object
Object Object
협력����������� ������������������
message
Object Object
Object Object
협력에����������� ������������������ 참여하는����������� ������������������ 객체����������� ������������������
message
Object
메시지를����������� ������������������ 처리하기����������� ������������������ 위한����������� ������������������ 행동����������� ������������������
Behavior
Object
Object Object
message
Object
behavior
행동에����������� ������������������ 필요한����������� ������������������ 상태����������� ������������������
State
Object
Object Object
OO Design����������� ������������������
message? message
State����������� ������������������ Behavior����������� ������������������
state?
State?����������� ������������������
plusOne ?
State?����������� ������������������
plusOne
plusOne
minusOne
setZero
plusOne
setZero
2
State?����������� ������������������
plusOne 1
State?����������� ������������������
2
plusOne 1
2
5
plusOne
plusOne
Dynamic����������� ������������������
plusOne
plusOne
plusOne
Dynamic����������� ������������������
2
3
6
plusOne
plusOne
plusOne
Dynamic����������� ������������������
2
3
6
Complex!����������� ������������������
Static����������� ������������������
2 3
6
1 2
5
Number
Static(Behavior)����������� ������������������
2 3
6
1 2
5
Number
plusOne behavior����������� ������������������
Static(Behavior + State)����������� ������������������
2 3
6
1 2
5
Number
value
plusOne
state����������� ������������������
behavior����������� ������������������
Static(Behavior + State)����������� ������������������
2 3
6
1 2
5
Number
value
plusOne value = value + 1
state����������� ������������������
behavior����������� ������������������
Static(Behavior + State)����������� ������������������
Number
Simple!����������� ������������������
value
plusOne value = value + 1
state����������� ������������������
behavior����������� ������������������
Static(Behavior + State)����������� ������������������
Number
Type����������� ������������������ value
plusOne value = value + 1
state����������� ������������������
behavior����������� ������������������
Static(Behavior + State)����������� ������������������
2 3
6
1 2
5
Number
value
plusOne value = value + 1
Object����������� ������������������ Type����������� ������������������ instance of����������� ������������������
To p i c s ����������� ������������������
Conceptual Perspective
Implementation Perspective
Object & Class
in Class-Based OOPL����������� ������������������
Type����������� ������������������
Number
value
plusOne value = value + 1
Number
value
plusOne value = value + 1
member variable����������� ������������������
method����������� ������������������
Class����������� ������������������
state����������� ������������������
behavior����������� ������������������
Implemented By
Static(Behavior + State)����������� ������������������
2 3
6
1 2
5
Object����������� ������������������ Class����������� ������������������ instance of����������� ������������������ Number
value
plusOne value = value + 1
member variable����������� ������������������
method����������� ������������������
in Java OOPL����������� ������������������
Class����������� ������������������
Number
value
plusOne value = value + 1
public class Number { int number; void plusOne() { number = number + 1; } }
syntax
member variable����������� ������������������
method����������� ������������������
Object
Class
To p i c s ����������� ������������������
Conceptual Perspective
Implementation Perspective
Object & Class
Elevator Object����������� ������������������
Behavior����������� ������������������
moveUp(floor)����������� ������������������
Behavior����������� ������������������
moveDown(floor)����������� ������������������
Class와����������� ������������������ Method를����������� ������������������ 작성해����������� ������������������ 보세요����������� ������������������
public class Elevator { void moveUp(int floor) { } void moveDown(int floor) { } }
State����������� ������������������
moveUp(floor)����������� ������������������
moveDown(floor)����������� ������������������
State를����������� ������������������ 표현하기����������� ������������������ 위해����������� ������������������ Member Variable을����������� ������������������ 추가해����������� ������������������ 보세요����������� ������������������
public class Elevator { int floor; void moveUp(int floor) { } void moveDown(int floor) { } }
this����������� ������������������
this����������� ������������������
this����������� ������������������
public class Elevator { int floor; void moveUp(int floor) { this.floor = floor; } void moveDown(int floor) { this.floor = floor; } }
Constraint����������� ������������������
1층����������� ������������������
10층����������� ������������������
this����������� ������������������ public class Elevator { int floor; void moveUp(int floor) { if (floor > 10 || this.floor >= floor) { return; } this.floor = floor; } void moveDown(int floor) { if (floor <1 || this.floor <= floor) { return; } this.floor = floor; } }
diff C C#/Java����������� ������������������
Value Type(Primitive Type)����������� ������������������
Reference Type����������� ������������������
boolean, char, byte, short , int , long, float , double
String, Object, Array …
Pointer Type ?����������� ������������������
Stack Heap
Value Type����������� ������������������ ReferenceType����������� ������������������
Stack & Heap����������� ������������������
boolean, char, byte, short , int , long,
float , double String, Object, Array
diff C C#/Java����������� ������������������
new����������� ������������������
Heap
Object Instantiation����������� ������������������
Elevator elevator = new Elevator();
Class = Type����������� ������������������
ClassName()����������� ������������������
Memory Allocation����������� ������������������
Variable����������� ������������������
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator address
Elevator Object
public class Elevator { ... public static void main(String[] args) { Elevator elevator = new Elevator(); System.out.println(elevator.floor); elevator.moveUp(8); System.out.println(elevator.floor); elevator.moveDown(2); System.out.println(elevator.floor); } }
Method Call – object.method()����������� ������������������
new ����������� ������������������
1층����������� ������������������
public class Elevator { Elevator(int floor) { this.floor = floor; } public static void main(String[] args) { Elevator elevator = new Elevator(1); System.out.println(elevator.floor); elevator.moveUp(8); System.out.println(elevator.floor); elevator.moveDown(2); System.out.println(elevator.floor); } }
Constructor����������� ������������������
public class Elevator { }
Default Constructor����������� ������������������
public class Elevator { Elevator() { } }
Compiler����������� ������������������
public class Elevator { Elevator(int floor) { this.floor = floor; } }
Default Constructor����������� ������������������
public class Elevator { Elevator(int floor) { this.floor = floor; } }
Compiler����������� ������������������
public class Elevator { Elevator() { this.floor = 1; } Elevator(int floor) { this.floor = floor; } }
Default Constructor����������� ������������������
public class Elevator { Elevator() { this(1); } Elevator(int floor) { this.floor = floor; } }
this()����������� ������������������
Behavior����������� ������������������
moveUp()����������� ������������������
10층����������� ������������������
Behavior����������� ������������������
moveDown()����������� ������������������
1층����������� ������������������
Method Overloading����������� ������������������ public class Elevator { void moveUp() { moveUp(10); } void moveUp(int floor) { if (floor > 10 || this.floor >= floor) { return; } this.floor = floor; } void moveDown() { moveDown(1); } void moveDown(int floor) { if (floor <1 || this.floor <= floor) { return; } this.floor = floor; }
연습문제����������� ������������������
[6-1], [6-2], [6-3], [6-4], [6-5]����������� ������������������
p209����������� ������������������
static void moveUp(Elevator elevator) { elevator.moveUp(10); } public static void main(String[] args) { Elevator elevator1 = new Elevator(1); moveUp(elevator1); System.out.println("Elevator1 " + elevator1.floor); }
Call by Reference����������� ������������������
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
elevator
Stack Heap
Stack & Heap����������� ������������������
floor = 10 elevator1
Elevator Object
elevator
Stack Heap
Stack & Heap����������� ������������������
floor = 10 elevator1
Elevator Object
static void swap(Elevator elevator1, Elevator elevator2) { Elevator temp = elevator1; elevator1 = elevator2; elevator2 = temp; System.out.println("Elevator1 " + elevator1.floor); System.out.println("Elevator2 " + elevator2.floor); } public static void main(String[] args) { Elevator elevator1 = new Elevator(1); Elevator elevator2 = new Elevator(10); swap(elevator1, elevator2); System.out.println("Elevator1 " + elevator1.floor); System.out.println("Elevator1 " + elevator2.floor); }
Swap����������� ������������������
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
floor = 10 elevator2
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
floor = 10 elevator2
elevator1
elevator2
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
floor = 10 elevator2
elevator1
elevator2
Stack Heap
Stack & Heap����������� ������������������
floor = 1 elevator1
Elevator Object
floor = 10 elevator2