31
PL in C++ 박박박 박박박박 박박박박박

[Pl in c++] 5. 객체지향 프로그래밍

  • Upload
    -

  • View
    392

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: [Pl in c++] 5. 객체지향 프로그래밍

PL in C++

박민근

객체지향 프로그래밍

Page 2: [Pl in c++] 5. 객체지향 프로그래밍
Page 3: [Pl in c++] 5. 객체지향 프로그래밍

객체지향 프로그래밍

Page 4: [Pl in c++] 5. 객체지향 프로그래밍
Page 5: [Pl in c++] 5. 객체지향 프로그래밍

객체지향 프로그래밍의 비유 (1)

객체지향 프로그래밍은 부품을 모아서 조립하는 과정이 비유할 수 있다 . 여기서 객체를 부품이라고 볼 수 있다 .

[20-1]

Page 6: [Pl in c++] 5. 객체지향 프로그래밍

객체지향 프로그래밍의 비유 (2)

부품별로 분업할 수 있는 것처럼 , 객체를 만들 때도 자신의 객체에 대해서만 노력을 집중할 수 있다 .

제가 발생한 경우에 해당 부품만 교체하면 되듯이 , 객체에 문제가 있는 경우에는 해당 객체만 고치면 된다 .

[20-2]

[20-3]

Page 7: [Pl in c++] 5. 객체지향 프로그래밍

객체지향 프로그래밍의 비유 (3)

하나의 부품을 여러 제품에 사용할 수 있는 것처럼 , 잘 만들어 놓은 객체는 다음 번 프로젝트에도 재사용할 수 있다 .

부품들의 규격이 정해져 있어야 조립이 가능한 것처럼 , 객체간의 연결 부분도 잘 약속되어 있어야 한다 .

[20-4]

[20-5]

Page 8: [Pl in c++] 5. 객체지향 프로그래밍

클래스 객체 ( 오브젝트 )

붕어빵 틀 ( 생성된 ) 붕어빵들

Page 9: [Pl in c++] 5. 객체지향 프로그래밍

클래스객체 ( 오브젝트 )

건담 설계도( 생성된 ) 건담

Page 10: [Pl in c++] 5. 객체지향 프로그래밍

Battleship Game 에 필요한 객체들

Page 11: [Pl in c++] 5. 객체지향 프로그래밍

Battleship Game 에 필요한 객체들

Map Pla

yer

Air-craft De-stroyer

Submari

n

Page 12: [Pl in c++] 5. 객체지향 프로그래밍

Battleship Game 에 필요한 객체들

Map Player

Air-craft De-stroyer

Subma-rine

Page 13: [Pl in c++] 5. 객체지향 프로그래밍

객체

속성

행동

캐릭터

머리모양 , 키 , 피부색

공격력 , 방어력레벨

아이템

달리기 , 서있기 , 앉기

공격하기 , 방어하기

맞기 , 죽기

Page 14: [Pl in c++] 5. 객체지향 프로그래밍

크기와 색상이 달라도 다 같은거…

Page 15: [Pl in c++] 5. 객체지향 프로그래밍

객체

속성

행동

객체

멤버 변수

멤버 함수( 메소드 )

Page 16: [Pl in c++] 5. 객체지향 프로그래밍

각 객체들의 속성과 행동을 정의하자

Map Player

Air-craft De-stroyer

Subma-rine

Page 17: [Pl in c++] 5. 객체지향 프로그래밍

Aircraft

위치파손상태

?

Battleship

위치파손상태

?

Cruiser

위치파손상태

?

Destroyer

위치파손상태

?

Submarine

위치파손상태

?

Page 18: [Pl in c++] 5. 객체지향 프로그래밍

떄린건가 ? 맞은건가 ?

Page 19: [Pl in c++] 5. 객체지향 프로그래밍

객체는 내가 중심이다

다른 객체에 대해서는 신경쓰지 않아도 된다 .

Page 20: [Pl in c++] 5. 객체지향 프로그래밍

Aircraft

위치파손상태

히트 체크

Battleship

위치파손상태

히트 체크

Cruiser

위치파손상태

히트 체크

Destroyer

위치파손상태

히트 체크

Submarine

위치파손상태

히트 체크

Page 21: [Pl in c++] 5. 객체지향 프로그래밍

결국은 다 같은 계열…

Page 22: [Pl in c++] 5. 객체지향 프로그래밍

부모 클래스

자식 클래스

클래스의 상속 구조

Page 23: [Pl in c++] 5. 객체지향 프로그래밍

Ship

- 위치 , 파손 상태

- 히트 체크

Aircraft Battleship Cruiser Destroyer Subma-rine

부모 클래스

베이스 클래스

자식 클래스 , 파생 클래스

Page 24: [Pl in c++] 5. 객체지향 프로그래밍

클래스 제작 실습

Page 25: [Pl in c++] 5. 객체지향 프로그래밍
Page 26: [Pl in c++] 5. 객체지향 프로그래밍
Page 27: [Pl in c++] 5. 객체지향 프로그래밍

Ship.h ( 헤더파일 / 클래스 선언 )Ship.cpp ( 헤더파일 / 클래스 정의 )

Page 28: [Pl in c++] 5. 객체지향 프로그래밍

• 헤더 파일 (.h) - 선언• 클래스의 인터페이스를 선언한다

• 다른 객체들에게 노출되는 클래스의 인터페이스

• 일반적으로 실제 구현은 없는 외부 껍데기

• 함수의 인터페이스만을 선언한다 .

• 코드 파일 (.cpp) – 정의• 실제 프로그램의 실행 부분을 구현하는 정의 부분

• 함수의 내용을 실제로 구현하는 파일

• 실제 컴파일은 cpp 파일만 이루어 진다 .

Page 29: [Pl in c++] 5. 객체지향 프로그래밍
Page 30: [Pl in c++] 5. 객체지향 프로그래밍
Page 31: [Pl in c++] 5. 객체지향 프로그래밍

[ 과제 ]

BattleShip Game 에 필요한 객체들의 인터페이스 (.h) 를 구현하여라 .

Map Playe

r

Aircraft Battle-

ship

De-stroyer

Cruiser

Subma-rine

Game Manager(Logic)