27
객체 객체 객체 객체 지향 지향 지향 지향 프로그래밍 프로그래밍 프로그래밍 프로그래밍 (Object Oriented Programming) (Object Oriented Programming) (Object Oriented Programming) (Object Oriented Programming) 13장 강사 강대기

프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

객체

객체

객체

객체

지향

지향

지향

지향

프로

그래

밍프

로그

래밍

프로

그래

밍프

로그

래밍

(Obje

ct O

riente

d P

rogra

mm

ing)

(Obje

ct O

riente

d P

rogra

mm

ing)

(Obje

ct O

riente

d P

rogra

mm

ing)

(Obje

ct O

riente

d P

rogra

mm

ing)

13장

강사–

강대

Page 2: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

차례

차례

차례

차례

(Agenda)

(Agenda)

(Agenda)

(Agenda)

�IS

A 상

속�

public

으로

파생

된클

래스

�pro

tecte

d 접

근�

생성

자멤

버초

기자

리스

트�

업캐

스트

와다

운캐

스트

�가

상멤

버함

수�

초기

(정적

) 결

합과

말기

(동적

) 결

합�

추상

화기

초클

래스

�순

수가

상함

수(p

ure

virtu

al fu

nction)

�public

상속

은언

제어

떻게

?

Page 3: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

상속

으로

상속

으로

상속

으로

상속

으로

할 할할할수 수수수

있는

있는

있는

있는

일 일일일(8

00

(800

(800

(800쪽 쪽쪽쪽

) )))

�근

본적

으로

더높

은수

준의

재활

용성

제공

�기

존의

클래

스에

기능

을추

�클

래스

안의

데이

터에

다른

데이

터멤

버추

�클

래스

메쏘

드가

동작

하는

방식

을변

Page 4: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

간단

한간

단한

간단

한간

단한

기초

기초

기초

기초

클래

스클

래스

클래

스클

래스

(801~

804

(801~

804

(801~

804

(801~

804쪽 쪽쪽쪽

) )))

�Table

Tennis

Pla

yer

클래

스파

생(8

03쪽

)cla

ss R

ate

dPla

yer

: public

Table

Tennis

Pla

yer

{ } �Public

상속–

기초

클래

스의

priva

te–

기초

클래

스의

public

�파

생클

래스

의public

–기

초클

래스

의priva

te �

파생

클래

스의

일부

이나

접근

불가

�파

생클

래스

는(그

림13.1

in 8

04 쪽

)–

기초

클래

스의

데이

터멤

버들

을저

–기

초클

래스

의멤

버함

수들

을사

Page 5: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

상속

상속

상속

상속

관계

를관

계를

관계

를관

계를

나타

내는

나타

내는

나타

내는

나타

내는

도표

도표

도표

도표

(pro

tecte

d(p

rote

cte

d(p

rote

cte

d(p

rote

cte

d는 는는는

844

844

844

844쪽 쪽쪽쪽

참조

참조

참조

참조

) )))

접근

불가

접근

불가

접근

불가

Priva

te 멤

Priva

tePro

tecte

dPro

tecte

dPro

tecte

d멤

Priva

tePro

tecte

dPublic

Public

멤버

Priva

te 상

속Pro

tecte

d

상속

Public

상속

상속

형태

기초

클래

Page 6: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

파생

파생

파생

파생

클래

스클

래스

클래

스클

래스

�초

기자

리스

트(m

em

ber in

itia

lization lis

t) –

805쪽

Rate

dPla

yer::R

ate

dPla

yer(u

nsig

ned intr, c

onst char*

fn, const char*

ln, boolht)

:

Table

Tennis

Pla

yer(f

n,ln,h

t)

{

this

->ra

ting =

r;

} Rate

dPla

yer::R

ate

dPla

yer(u

nsig

ned intr, c

onst char*

fn, const char*

ln, boolht)

:

Table

Tennis

Pla

yer(f

n,ln,h

t), ra

ting(r

)

{ }

�객

체생

성과

파괴

순서

–기

초클

래스

생성

자�

파생

클래

스생

성자

–초

기자

리스

트가

없으

면기

초클

래스

의디

폴트

생성

–파

생클

래스

파괴

자�

기초

클래

스파

괴자

Page 7: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

멤버

멤버

멤버

멤버

초기

자초

기자

초기

자초

기자

리스

트리

스트

리스

트리

스트

#in

clu

de <

iostream

>usin

g n

am

espace s

td;

cla

ss T

est

{ priva

te:

int m

_first;

int m

_second;

// 순

서가

중요

public

:Test(

int a)

: m

_first(

a),

m_s

econd(m

_first*

2)

{ }

frie

nd o

stream

& o

pera

tor<

<(o

stream

& o

s, const Test &

t)

{re

turn

os <

< "

firs

t="

<< t.m

_first << "

, second="

<< t.m

_second;

}}; vo

id m

ain

(){

Test t(

4);

cout << t <

< e

ndl;

} �초

기화

리스

트의

초기

식들

은리

스트

에나

타난

순서

가아

니라

멤버

의선

언순

서대

로실

행�

m_f

irst와

m_s

econd

의위

치를

바꾸

면부

작용

이발

생함

Page 8: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

Public

Public

Public

Public

상속

인상

속인

상속

인상

속인

경우

경우

경우

경우–

파생

파생

파생

파생

클래

스와

클래

스와

클래

스와

클래

스와

기초

기초

기초

기초

클래

스와

의클

래스

와의

클래

스와

의클

래스

와의

관계

관계

관계

관계

(812

(812

(812

(812쪽 쪽쪽쪽

) )))

�기

초클

래스

의priva

te 아

닌멤

버를

사용

�기

초클

래스

포인

터는

파생

클래

스지

시가

능�

기초

클래

스참

조는

파생

클래

스참

조가

능�

기초

클래

스포

인터

나참

조는

기초

클래

스메

쏘드

만호

출가

능�

파생

클래

스참

조나

포인

터는

기초

클래

스를

지칭

할수

없음

�기

초클

래스

참조

와포

인터

를전

달인

자로

사용

하는

함수

�파

생클

래스

객체

도사

용가

능�

기초

클래

스객

체를

파생

클래

스객

체로

초기

화할

수있

음�

파생

클래

스객

체를

기초

클래

스에

대입

가능

Page 9: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

상속

상속

상속

상속

(is

(is

(is

(is- ---a

a

a

a 관

계관

계관

계관

계),

),

),

),

컴포

지션

컴포

지션

컴포

지션

컴포

지션

(has

(has

(has

(has- ---a

a

a

a 관

계관

계관

계관

계) )))

�814 쪽

�바

나나

는과

일이

지만

(is-a),

점심

은바

나나

를가

지고

있다

(has-a).

�Lunch 클

래스

의한

데이

터멤

버로

Fru

it 객

체를

포함

시킨

다.

�Arr

ay

클래

스로

부터

Sta

ck

클래

스를

파생

시키

지말

고,

Sta

ck

클래

스안

에Arr

ay

객체

를넣

는다

. (is-im

ple

mente

d-as-a)

Page 10: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

다형

성다

형성

다형

성다

형성

– –––C

++

C++

C++

C++

�para

metric

poly

morp

his

m -

템플

리트

�subty

pe p

oly

morp

his

m –

가상

함수

, 오

버라

이딩

�ad-hoc p

oly

morp

his

m –

오버

로딩

Page 11: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

public

public

public

public

다형

다형

다형

다형

상속

상속

상속

상속

(816

(816

(816

(816쪽 쪽쪽쪽

) )))

�호

출하

는객

체마

다메

쏘드

의행

동이

다른

–오

버라

이딩

(subty

pe p

oly

morp

his

m)

�방

–기

초클

래스

메쏘

드를

다시

정의

(ove

rrid

ing)

–820쪽

코드

–가

상메

쏘드

(가상

함수

)를사

용–

821쪽

코드

�가

상파

괴자

–올

바른

순서

로파

괴자

가호

출되

게함

(833,8

40 쪽

)

Page 12: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

어떻

게어

떻게

어떻

게어

떻게

상위

상위

상위

상위

클래

스클

래스

클래

스클

래스

객체

의객

체의

객체

의객

체의

메쏘

드를

메쏘

드를

메쏘

드를

메쏘

드를

실행

실행

실행

실행

하는

가하

는가

하는

가하

는가

? (

826

? (

826

? (

826

? (

826쪽 쪽쪽쪽

) )))

�기

초클

래스

메쏘

드를

재정

의한

경우

–B

rass::

Vie

wAcct(

); /

/ 기

초부

분을

출력

(826쪽

)

�기

초클

래스

메쏘

드를

재정

의하

지않

은경

–B

ala

nce()

; //

(827쪽

)

�Ja

va –

super.

view

Acct(

);

Page 13: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

단순

단순

단순

단순

대입

대입

대입

대입

Bra

ss P

iggy(

"Porc

elo

t Pig

g",

381299, 4000.0

0);

Bra

ssPlu

s H

oggy(

"Hora

tio H

ogg",

382288,

3000.0

0);

Bra

ssPlu

s d

dd;

ddd =

Pig

gy;

// 적

당한

생성

자가

있으

므로

ok

Rate

dPla

yer

rp;

Table

Tennis

Pla

yer

ttp

= r

p;

// 생

성자

없으

므로

에러

Bra

ssPlu

s*

eee =

&Pig

gy;

// 컴

파일

에러

Bra

ssPlu

s*

eee =

(B

rassPlu

s*)

&Pig

gy;

eee->Vie

wAcct(

);//

실행

에러

의소

지다

분함

Page 14: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

대입

대입

대입

대입

, , , , 참

조참

조참

조참

조, , , , 포

인터

포인

터포

인터

포인

터코

딩코

딩코

딩코

딩실

험실

험실

험실

Bra

ss P

iggy(

"Porc

elo

t Pig

g",

381299,

4000.0

0);

Bra

ssPlu

s H

oggy(

"Hora

tio H

ogg",

382288, 3000.0

0);

Pig

gy.

Vie

wAcct(

);cout << e

ndl;

Hoggy.

Vie

wAcct(

);cout << e

ndl;

Bra

ss a

aa(P

iggy)

;//

대입

aaa.V

iew

Acct(

);cout << e

ndl;

aaa

= H

oggy;

// 나

중에

Bra

ss a

aa1(H

oggy)

;로바

꿔서

실험

aaa.V

iew

Acct(

);cout << e

ndl;

cout << e

ndl;

Bra

ss&

bbb =

Pig

gy;

// 참

조bbb.V

iew

Acct(

);cout << e

ndl;

bbb =

Hoggy;

//

나중

에B

rass&

bbb1 =

Hoggy;

로바

꿔서

실험

(429, 430쪽

)bbb.V

iew

Acct(

);cout << e

ndl;

cout << e

ndl;

Bra

ss*

ccc =

&Pig

gy;

// 포

인터

ccc->Vie

wAcct(

);cout << e

ndl;

ccc =

&H

oggy;

// 나

중에

Bra

ss*

ccc1 =

&H

oggy;

로바

꿔서

실험

ccc->Vie

wAcct(

);cout << e

ndl;

cout << e

ndl;

Page 15: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

함수

함수

함수

함수

대입

대입

대입

대입

, , , , 함

수함

수함

수함

수참

조참

조참

조참

조, , , , 함

수함

수함

수함

수포

인터

포인

터포

인터

포인

void

func1(B

rass p

){

p.V

iew

Acct(

);}

void

func2(B

rass&

p)

{p.V

iew

Acct(

);}

void

func3(B

rass*

p)

{p->Vie

wAcct(

);}

Bra

ss d

dd(P

iggy)

;fu

nc1(d

dd);

Bra

ss d

dd1(H

oggy)

;fu

nc1(d

dd1);

Bra

ss&

eee =

Pig

gy;

func2(e

ee);

Bra

ss&

eee1 =

Hoggy;

func2(e

ee1);

Bra

ss*

fff

= &

Pig

gy;

func3(f

ff);

Bra

ss*

fff1

= &

Hoggy;

func3(f

ff1);

�리

스코

프대

체원

리–

Lis

kov

Substitu

tion P

rincip

le (

Barb

ara

Lis

kov)

–원

문:

서브

타입

은언

제나

기반

타입

으로

교체

할수

있어

야한

다.

–C

++ :

파생

클래

스는

언제

나기

초클

래스

로교

체할

수있

어야

한다

.–

즉,

하위

클래

스는

상위

클래

스와

호환

성을

생각

해야

한다

는것

–그

러려

면구

현은

선언

을준

수하

고하

위클

래스

는상

위클

래스

의규

약을

준수

해야

Page 16: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

가상

가상

가상

가상

파괴

자가

파괴

자가

파괴

자가

파괴

자가

필요

한필

요한

필요

한필

요한

이유

이유

이유

이유

�831쪽

, 리

스팅

13.1

0 –

dele

te로

파괴

�파

괴자

가가

상이

아니

라면

포인

터형

에해

당하

는파

괴자

가호

출되

게됨

�EC

++의

규칙

7번

–다

형성

을가

진기

본클

래스

에서

는소

멸자

를반

드시

가상

소멸

자로

선언

Page 17: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

정적

정적

정적

정적

결합

과결

합과

결합

과결

합과

동적

동적

동적

동적

결합

결합

결합

결합

�정

적결

합–

하여

간정

해진

데로

하겠

다!

–함

수이

름에

따라

어떤

코드

를실

행할

지를

컴파

일타

임에

결정

–sta

tic b

indin

g 또

는early

bin

din

g

�동

적결

합–

봐가

면서

하겠

다.

–함

수이

름에

따라

어떤

코드

를실

행할

지를

프로

그램

실행

시간

에결

–dyn

am

ic b

indin

g 또

는la

te b

indin

g

Page 18: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

업 업업업캐

스팅

캐스

팅캐

스팅

캐스

팅, , , , 다

운다

운다

운다

운캐

스팅

캐스

팅캐

스팅

캐스

�업

캐스

팅–

파생

클래

스의

참조

나포

인터

를기

초클

래스

의참

조나

포인

터로

변환

하는

것–

Bra

ssPlu

sx;

Bra

ss*

y = &

x; B

rass&

z =

x;

–B

rassPlu

sPlu

sxx

; B

rass*

yy= &

xx;

�다

운캐

스팅

–기

초클

래스

의참

조나

포인

터를

파생

클래

스의

참조

나포

인터

로변

환하

는것 –

명시

적인

데이

터형

변환

필요

–기

초클

래스

에없

는것

을참

조하

면런

타임

에러

발생

(그림

13.4

)

Page 19: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

동적

동적

동적

동적

결합

에결

합에

결합

에결

합에

대한

대한

대한

대한

논의

들논

의들

논의

들논

의들

�동

적결

합이

더멋

져보

인다

!–

왜두

종류

의결

합이

있는

가? (

836,8

37쪽

)–

왜정

적결

합이

디폴

트인

가?

–동

적결

합은

어떻

게동

작하

는가

?

�효

율성

–동

적결

합은

실행

시간

에객

체를

결정

해야

하므

로,

정적

결합

보다

느리

다.

–상

속을

하지

않을

거라

면정

적결

합으

로충

분하

다.

–사

용하

지않

을지

모르

는기

능때

문에

미리

부담

을떠

안지

않는

다. –

비야

네스

트롭

스트

�개

념모

델–

virtual 을

쓰지

않는

것으

로,

파생

클래

스에

서재

정의

되기

를원

하지

않는

메쏘

드들

은동

적결

합을

안한

다고

공공

연히

알림

�837쪽

팁�

그렇

다면

Java

의final cla

ss처

럼아

예막

을수

있는

방법

은? (

시험

문제

)�

그렇

다면

Java

의경

우,

가상

함수

는어

떻게

하면

되는

것일

까? (

역시

시험

문제

)

Page 20: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

가상

가상

가상

가상

함수

의함

수의

함수

의함

수의

동작

동작

동작

동작

�가

상함

수테

이블

(vta

ble

) –

가상

함수

의주

소저

장(8

39쪽

)

�클

래스

에숨

겨진

멤버

–가

상함

수테

이블

의포

인터

�가

상함

수실

행순

서1.

그객

체클

래스

의vt

able

주소

획득

2.

vtable

에서

함수

주소

획득

3.

함수

실행

�자

원(메

모리

와속

도)의

부담

–클

래스

에대

해가

상함

수테

이블

–객

체마

다가

상함

수테

이블

포인

–테

이블

에접

근하

는단

계(indirect addre

ssin

g)

Page 21: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

가상

가상

가상

가상

메쏘

드메

쏘드

메쏘

드메

쏘드

( (((함수

함수

함수

함수

) ) ) ) 정

리정

리정

리정

리(8

40

(840

(840

(840쪽 쪽쪽쪽

) )))

�vi

rtual 로

시작

–기

초클

래스

, 파

생클

래스

에대

해가

상메

쏘드

가됨

�포

인터

나참

조를

쓰게

되면

동적

결합

�파

상클

래스

에서

다시

정의

하고

싶은

메쏘

드는

가상

함수

로선

언하

�생

성자

–가

상함

수로

선언

할수

없다

�파

괴자

–상

속할

생각

이면

가상

으로

선언

해야

한다

. 디

폴트

로만

들게

하지

말고

무조

건선

언하

고정

Page 22: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

함수

함수

함수

함수

오버

로딩

과오

버로

딩과

오버

로딩

과오

버로

딩과

파생

파생

파생

파생

클래

스의

클래

스의

클래

스의

클래

스의

오버

라이

오버

라이

오버

라이

오버

라이

딩 딩딩딩(8

42

(842

(842

(842쪽 쪽쪽쪽

) )))

�어

떤함

수를

파생

클래

스에

서다

시정

의하

면시

그너

처와

는무

관하

게같

은이

름을

가진

모든

함수

를가

려버

림(o

verr

ide)

�따

라서

상속

된메

쏘드

를정

의할

때는

기초

클래

스의

메쏘

드와

정확

히일

치시

켜야

혼란

이없

음�

단, 리

턴형

이기

초클

래스

의참

조나

포인

터이

면파

생클

래스

의참

조나

포인

터로

대체

됨(리

턴형

의공

변)

�또

한기

초클

래스

선언

이오

버로

딩되

어있

으면

파생

클래

스에

서는

모두

재정

의하

도록

한다

Page 23: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

Pro

tecte

dPro

tecte

dPro

tecte

dPro

tecte

d

�파

생클

래스

에서

는접

근가

�이

건과

연쓸

만한

가? �

설계

자가

정한

인터

페이

스로

만데

이터

를바

꾼다

는원

칙(8

45쪽

)

�Sin

gle

ton 패

턴–

정확

하게

한개

의객

체만

만들

어서

호출

한쪽

에게

그객

체만

리턴

하게

한다

Page 24: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

추상

화추

상화

추상

화추

상화

기초

기초

기초

기초

클래

스클

래스

클래

스클

래스

(ABC

)(A

BC

)(A

BC

)(A

BC

)

�구

현되

지않

는,

즉선

언만

하고

정의

는하

지않

는,

순수

가상

함수

를가

지고

있는

클래

�순

수가

상함

수는

함수

선언

뒤에

“=0”

붙임

(849쪽

) �

인터

페이

스의

개념

�왜

필요

한가

?–

원과

타원

의예

, 사

각형

과정

사각

형의

–B

aseElli

pse를

Circle

과Elli

pse로

상속

�B

rass와

Bra

ssPlu

s클

래스

에적

용(8

50쪽

~)

Page 25: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

AB

C

AB

C

AB

C

AB

C 철

학철

학철

학철

�추

상화

기초

클래

스만

기초

클래

스가

되게

해야

한다

는주

장이

있음

(856쪽

노트

) –

Java

에서

인터

페이

스를

만드

는것

과비

Page 26: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

파생

파생

파생

파생

클래

스에

서클

래스

에서

클래

스에

서클

래스

에서

동적

동적

동적

동적

메모

리메

모리

메모

리메

모리

할당

할당

할당

할당

�첫

번째–

파생

클래

스가

new

를사

용안

함(8

56쪽

)

–파

생클

래스

에서

명시

적파

괴자

, 복

사생

성자

, 대

입연

산자

따로

구현

할필

요없

음�

기초

클래

스에

서알

아서

해줌

�두

번째–

파생

클래

스가

new

를사

용(8

58쪽

)

–파

괴자

에선

자신

이new

한것

만dele

te

–복

사생

성자

에선

기초

클래

스복

사생

성자

먼저

호출

(859

쪽중

간코

드) �

인수

는파

생클

래스

참조

를전

달해

도무

관(업

캐스

팅)

–아

무것

도쓰

지않

으면

디폴

트생

성자

자동

호출

–대

입연

산자

의경

우자

기대

입점

검후

에바

로기

초클

래스

의대

입연

산자

실행

(860쪽

코드

)

Page 27: 프로그래밍 (Object Oriented Programming)dongseo.ac.kr/~dkkang/OOP2008Spring/Chap13-OOP.pdf · 이유 831쪽, 리스팅 13.10 –delete로파괴 파괴자가 가상이 아니라면

파생

파생

파생

파생

클래

스에

서클

래스

에서

클래

스에

서클

래스

에서

프렌

드프

렌드

프렌

드프

렌드

함수

에함

수에

함수

에함

수에

의한

의한

의한

의한

연산

연산

연산

연산

자 자자자오

버로

딩오

버로

딩오

버로

딩오

버로

�opera

tor<

<

–받

은파

생클

래스

객체

를가

지고

, 기

초클

래스

로강

제로

형변

환한

후호

출(8

65쪽

)