68
PL in Java Week02 Object & Class 조영호 [email protected]

[NHN NEXT] Java 강의 - Week2

Embed Size (px)

DESCRIPTION

Java 강의 2주차

Citation preview

Page 1: [NHN NEXT] Java 강의 - Week2

PL����������� ������������������  in����������� ������������������  Java����������� ������������������  ����������� ������������������  Week02����������� ������������������  

Object & Class

조영호����������� ������������������  [email protected]����������� ������������������  

Page 2: [NHN NEXT] Java 강의 - Week2

G o a l ����������� ������������������  

O O 패러다임 ����������� ������������������   이해 ����������� ������������������  

설 명 만 ����������� ������������������   많 고 ����������� ������������������   코 드 는 ����������� ������������������   별 로 ����������� ������������������   없 어 요 ����������� ������������������  

Page 3: [NHN NEXT] Java 강의 - Week2

Conceptual Perspective����������� ������������������  

Implementation Perspective����������� ������������������  

객체지향����������� ������������������  Object-Orientation����������� ������������������  

개념����������� ������������������  관점����������� ������������������  

구현����������� ������������������  관점����������� ������������������  

Page 4: [NHN NEXT] Java 강의 - Week2

Conceptual Perspective����������� ������������������  

Implementation Perspective����������� ������������������  

객체지향����������� ������������������  Object-Orientation����������� ������������������  

개념����������� ������������������  관점����������� ������������������  

구현����������� ������������������  관점����������� ������������������  

Object & Collaboration����������� ������������������  

Object-Oriented Programming

Language����������� ������������������  

Page 5: [NHN NEXT] Java 강의 - Week2

To p i c s ����������� ������������������  

Conceptual Perspective

Implementation Perspective

Object & Class

Page 6: [NHN NEXT] Java 강의 - Week2

OO == 실세계의����������� ������������������  모방?����������� ������������������  

실무����������� ������������������  관점에서는����������� ������������������  부적절하지만����������� ������������������  

개념을����������� ������������������  이해하는����������� ������������������  데는����������� ������������������  유용함����������� ������������������  

Page 7: [NHN NEXT] Java 강의 - Week2

Object-Orientation����������� ������������������  

http://www.slideshare.net/baejjae93/roles-responsibilities-collaborations

Page 8: [NHN NEXT] Java 강의 - Week2

Object

Object Object

협력����������� ������������������  

Page 9: [NHN NEXT] Java 강의 - Week2

message

Object Object

Object Object

협력에����������� ������������������  참여하는����������� ������������������  객체����������� ������������������  

Page 10: [NHN NEXT] Java 강의 - Week2

message

Object

메시지를����������� ������������������  처리하기����������� ������������������  위한����������� ������������������  행동����������� ������������������  

Behavior

Object

Object Object

Page 11: [NHN NEXT] Java 강의 - Week2

message

Object

behavior

행동에����������� ������������������  필요한����������� ������������������  상태����������� ������������������  

State

Object

Object Object

Page 12: [NHN NEXT] Java 강의 - Week2

OO Design����������� ������������������  

message? message

State����������� ������������������  Behavior����������� ������������������  

state?

Page 13: [NHN NEXT] Java 강의 - Week2

State?����������� ������������������  

plusOne ?

Page 14: [NHN NEXT] Java 강의 - Week2

State?����������� ������������������  

plusOne

plusOne

minusOne

setZero

plusOne

setZero

2

Page 15: [NHN NEXT] Java 강의 - Week2

State?����������� ������������������  

plusOne 1

Page 16: [NHN NEXT] Java 강의 - Week2

State?����������� ������������������  

2

Page 17: [NHN NEXT] Java 강의 - Week2

plusOne 1

2

5

plusOne

plusOne

Dynamic����������� ������������������  

Page 18: [NHN NEXT] Java 강의 - Week2

plusOne

plusOne

plusOne

Dynamic����������� ������������������  

2

3

6

Page 19: [NHN NEXT] Java 강의 - Week2

plusOne

plusOne

plusOne

Dynamic����������� ������������������  

2

3

6

Complex!����������� ������������������  

Page 20: [NHN NEXT] Java 강의 - Week2

Static����������� ������������������  

2 3

6

1 2

5

Number

Page 21: [NHN NEXT] Java 강의 - Week2

Static(Behavior)����������� ������������������  

2 3

6

1 2

5

Number

plusOne behavior����������� ������������������  

Page 22: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

2 3

6

1 2

5

Number

value

plusOne

state����������� ������������������  

behavior����������� ������������������  

Page 23: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

2 3

6

1 2

5

Number

value

plusOne value = value + 1

state����������� ������������������  

behavior����������� ������������������  

Page 24: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

Number

Simple!����������� ������������������  

value

plusOne value = value + 1

state����������� ������������������  

behavior����������� ������������������  

Page 25: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

Number

Type����������� ������������������  value

plusOne value = value + 1

state����������� ������������������  

behavior����������� ������������������  

Page 26: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

2 3

6

1 2

5

Number

value

plusOne value = value + 1

Object����������� ������������������   Type����������� ������������������  instance of����������� ������������������  

Page 27: [NHN NEXT] Java 강의 - Week2

To p i c s ����������� ������������������  

Conceptual Perspective

Implementation Perspective

Object & Class

Page 28: [NHN NEXT] Java 강의 - Week2

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

Page 29: [NHN NEXT] Java 강의 - Week2

Static(Behavior + State)����������� ������������������  

2 3

6

1 2

5

Object����������� ������������������   Class����������� ������������������  instance of����������� ������������������  Number

value

plusOne value = value + 1

member variable����������� ������������������  

method����������� ������������������  

Page 30: [NHN NEXT] Java 강의 - Week2

in Java OOPL����������� ������������������  

Class����������� ������������������  

Number

value

plusOne value = value + 1

public  class  Number  {      int  number;      void  plusOne()  {          number  =  number  +  1;      }  }  

syntax

member variable����������� ������������������  

method����������� ������������������  

Page 31: [NHN NEXT] Java 강의 - Week2

Object

Class

Page 32: [NHN NEXT] Java 강의 - Week2

To p i c s ����������� ������������������  

Conceptual Perspective

Implementation Perspective

Object & Class

Page 33: [NHN NEXT] Java 강의 - Week2

Elevator Object����������� ������������������  

Page 34: [NHN NEXT] Java 강의 - Week2

Behavior����������� ������������������  

moveUp(floor)����������� ������������������  

Page 35: [NHN NEXT] Java 강의 - Week2

Behavior����������� ������������������  

moveDown(floor)����������� ������������������  

Page 36: [NHN NEXT] Java 강의 - Week2

Class와����������� ������������������  Method를����������� ������������������  작성해����������� ������������������  보세요����������� ������������������  

public  class  Elevator  {      void  moveUp(int  floor)  {      }      void  moveDown(int  floor)  {      }  }  

Page 37: [NHN NEXT] Java 강의 - Week2

State����������� ������������������  

moveUp(floor)����������� ������������������  

moveDown(floor)����������� ������������������  

Page 38: [NHN NEXT] Java 강의 - Week2

State를����������� ������������������  표현하기����������� ������������������  위해����������� ������������������   Member Variable을����������� ������������������  추가해����������� ������������������  보세요����������� ������������������  

public  class  Elevator  {      int  floor;        void  moveUp(int  floor)  {      }      void  moveDown(int  floor)  {      }  }  

Page 39: [NHN NEXT] Java 강의 - Week2

this����������� ������������������  

this����������� ������������������  

Page 40: [NHN NEXT] Java 강의 - Week2

this����������� ������������������  

public  class  Elevator  {      int  floor;        void  moveUp(int  floor)  {          this.floor  =  floor;      }      void  moveDown(int  floor)  {          this.floor  =  floor;      }  }  

Page 41: [NHN NEXT] Java 강의 - Week2

Constraint����������� ������������������  

1층����������� ������������������  

10층����������� ������������������  

Page 42: [NHN NEXT] Java 강의 - Week2

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;      }  }  

Page 43: [NHN NEXT] Java 강의 - Week2

diff C C#/Java����������� ������������������  

Value Type(Primitive Type)����������� ������������������  

Reference Type����������� ������������������  

boolean, char, byte, short , int , long, float , double 

String, Object, Array …

Pointer Type ?����������� ������������������  

Page 44: [NHN NEXT] Java 강의 - Week2

Stack Heap

Value Type����������� ������������������   ReferenceType����������� ������������������  

Stack & Heap����������� ������������������  

boolean, char, byte, short , int , long,

float , double  String, Object, Array

Page 45: [NHN NEXT] Java 강의 - Week2

diff C C#/Java����������� ������������������  

new����������� ������������������  

Heap

Page 46: [NHN NEXT] Java 강의 - Week2

Object Instantiation����������� ������������������  

Elevator  elevator  =  new  Elevator();  

Class = Type����������� ������������������  

ClassName()����������� ������������������  

Memory Allocation����������� ������������������  

Variable����������� ������������������  

Page 47: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator address

Elevator    Object

Page 48: [NHN NEXT] Java 강의 - Week2

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()����������� ������������������  

Page 49: [NHN NEXT] Java 강의 - Week2

new ����������� ������������������  

1층����������� ������������������  

Page 50: [NHN NEXT] Java 강의 - Week2

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����������� ������������������  

Page 51: [NHN NEXT] Java 강의 - Week2

public  class  Elevator  {  }  

Default Constructor����������� ������������������  

public  class  Elevator  {          Elevator()  {          }  }  

Compiler����������� ������������������  

Page 52: [NHN NEXT] Java 강의 - Week2

public  class  Elevator  {          Elevator(int  floor)  {                  this.floor  =  floor;          }  }  

Default Constructor����������� ������������������  

public  class  Elevator  {          Elevator(int  floor)  {                  this.floor  =  floor;          }  }  

Compiler����������� ������������������  

Page 53: [NHN NEXT] Java 강의 - Week2

public  class  Elevator  {        Elevator()  {          this.floor  =  1;      }      Elevator(int  floor)  {          this.floor  =  floor;      }  }  

Default Constructor����������� ������������������  

Page 54: [NHN NEXT] Java 강의 - Week2

public  class  Elevator  {        Elevator()  {          this(1);      }      Elevator(int  floor)  {          this.floor  =  floor;      }  }  

this()����������� ������������������  

Page 55: [NHN NEXT] Java 강의 - Week2

Behavior����������� ������������������  

moveUp()����������� ������������������  

10층����������� ������������������  

Page 56: [NHN NEXT] Java 강의 - Week2

Behavior����������� ������������������  

moveDown()����������� ������������������  

1층����������� ������������������  

Page 57: [NHN NEXT] Java 강의 - Week2

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;      }  

Page 58: [NHN NEXT] Java 강의 - Week2

연습문제����������� ������������������  

[6-1], [6-2], [6-3], [6-4], [6-5]����������� ������������������  

p209����������� ������������������  

Page 59: [NHN NEXT] Java 강의 - Week2

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����������� ������������������  

Page 60: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

Page 61: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

elevator

Page 62: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 10 elevator1

Elevator    Object

elevator

Page 63: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 10 elevator1

Elevator    Object

Page 64: [NHN NEXT] Java 강의 - Week2

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����������� ������������������  

Page 65: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

floor = 10 elevator2

Page 66: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

floor = 10 elevator2

elevator1

elevator2

Page 67: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

floor = 10 elevator2

elevator1

elevator2

Page 68: [NHN NEXT] Java 강의 - Week2

Stack Heap

Stack & Heap����������� ������������������  

floor = 1 elevator1

Elevator    Object

floor = 10 elevator2