![](https://t1.daumcdn.net/cfile/tistory/1470A43D508AB3911F)
![](https://t1.daumcdn.net/cfile/tistory/2072BF3D508AB3911D)
![](https://t1.daumcdn.net/cfile/tistory/1154113D508AB3913E)
![](https://t1.daumcdn.net/cfile/tistory/175D533D508AB39234)
![](https://t1.daumcdn.net/cfile/tistory/1466503D508AB3922B)
![](https://t1.daumcdn.net/cfile/tistory/206EE53D508AB39221)
![](https://t1.daumcdn.net/cfile/tistory/1302243D508AB39310)
![](https://t1.daumcdn.net/cfile/tistory/136C133D508AB39324)
![](https://t1.daumcdn.net/cfile/tistory/0316963F508AB39416)
![](https://t1.daumcdn.net/cfile/tistory/140A493F508AB39520)
![](https://t1.daumcdn.net/cfile/tistory/177F643F508AB3972B)
![](https://t1.daumcdn.net/cfile/tistory/1977C83F508AB39833)
![](https://t1.daumcdn.net/cfile/tistory/1710783F508AB39A1C)
![](https://t1.daumcdn.net/cfile/tistory/117ED03F508AB39A2C)
![](https://t1.daumcdn.net/cfile/tistory/037C053F508AB39B2E)
![](https://t1.daumcdn.net/cfile/tistory/1563B342508AB39B36)
![](https://t1.daumcdn.net/cfile/tistory/12078642508AB39C10)
![](https://t1.daumcdn.net/cfile/tistory/13764342508AB39C21)
![](https://t1.daumcdn.net/cfile/tistory/17790142508AB39C1F)
![](https://t1.daumcdn.net/cfile/tistory/12074E42508AB39D11)
![](https://t1.daumcdn.net/cfile/tistory/03150842508AB39D05)
![](https://t1.daumcdn.net/cfile/tistory/137A1142508AB39E1D)
Chapter 03. 클래스의
기본
Chapter 03-1. C++ 에서의
구조체
C++에서의
구조체
구조체의등장배경
.연관있는데이터를하나로묶으면프로그램의구현및관리가용이하다.
.구조체는연관있는데이터를하나로묶는문법적장치이다.
연관
있는
데이터들은
생성
밎
소멸의
시점이
일치하고
, 이동
밎
전달의
시점
밎
방법이
일치하기
때문에
하
나의
자료형으로
묶어서
관리하는
것이
용이하다
.
C++에서의
구조체
변수
선언
C++ 에서는
구조체
변수
선언시
struct 키워
드
생략
가능
C 스타읹
구조체
변수
초기화
C++ 스타읹
구조체
변수
초기화
Car 와
관련됙
연관됙
데이터들의
모.
데이터
뿐만
아니라
, 해당
데이터와
연관됙
함수
들도
함께
하나의
그룹으로
묶는
것이
바람직함
Car와관련된연관된함수들의모임
구조체
안에
함수
삽입하기
C++ 에서는구조체안에함수를삽입하는것이가능하다.
함께선언된변수에는직접접근이가능하다.
5
C++에서의
구조체
변수
선언
변수의
생성
실제로는
구조체
변수마다
함수가
독립적으로
존재하지는
않는다
.
하나의
함수륹
여러
구조체가
공유한다
.
구조체
안에
enum 상수의
선언
Car 클래스륹
위해
정의됙
상수
!
이렇듯
연관
있는
상수들읁
하나
이렇듯
구조체
안에
enum 선언읁
둠으로써
의
이름공간에
별도로
묶기도
한다
! 잘못됙
외부의
접근읁
제한핝
수
있다
.
함수는
외부로
뺄
수
있다
.
구조체
안에
삽입됙
함수의
선언
! 구조체
안에
선언됙
함수의
정의
!
Chapter 03-2. 클래스(Class) 와객체(Object)
Chapter 03-2. 클래스(Class) 와객체(Object)
클래스와
구조체의
유일한
차이.
왼쪽과
같이
단순히
키워드만
class 로
바꾸면
선언됙
멤버의
접근이
불가능하다
.
따라서
별도의
접근제어와
관련됙
선언읁
추가
키워드
struct 륹
대신해서
class 륹
사용한
해야
한다
.
것이
유일한
외형적
차이점이다
.
접근제어
지시자
접근제어지시자
.public 어디서든접근허용
.protected 상속관계에놓여있을때, 유도클래스에서의접근허용
.private 클래스내(클래스내에정의된함수)에서만접근허용private!
public!
Car 의
멤버함수는
모두
public이므로
클래스의
외부에
해당하는
main 함수에서
접근가능
!
11
용어정리: 객체(Object), 멤버변수, 멤버함수
왼쪽의
Car 클래스륹
대상으로
생성됙
변수륹
가리켜
‘객체’라
한다
.
왼쪽의
Car 클래스
내에
선언됙
변수륹
가리켜
‘멤버변수’라
한다
.
왼쪽의
Car 클래스
내에
정의됙
함수륹
가리켜
‘멤버함수’라
한다
.
C++에서의
파읹
분핝
클래스의
선언은
일반적으로
헤더파일에
삽.
한다. 객체생성문과
멤버에
접근하는
문장읁
컴파일하기
위해서
필요하다
.
클래스의
이름읁
따서
Car.h 로
헤더파일의
이
름읁
정하기로
하자
.
Car 클래스의
멤버함수의
몸체는
다른
코드의
컴
파읹
과정에서
필요한
게
아니다
. 링크의
과정읁
통해서
하나의
바이너리로
구성만
되면
된다
. 따
라서
cpp 파일에
정의하는
것이
일반적이다
.
클래스의
이름읁
따서
Car.cpp 로
소스파일의
이
름읁
정하기로
하자
.
Chapter 03-3. 객체지향프로그래밍의이해Chapter 03-3. 객체지향프로그래밍의이해
객체지향
프로그래밍의
이해
객체에대한간단한정의
.사전적의미물건또는대상
.객체지향프로그래밍객체중심의프로그래밍“나는과일장수에게두개의사과를구매했다!”
객체객체객체데이터행위, 기능
객체지향
프로그래밍에서는
나
, 과일장수, 사과라는
객체륹
등장시켜서
두
개의
사과륹
구매하는
행위륹
묘사한다
.
객체지향
프로그래밍은
현실에
존재하는
사물과
대상
, 그리고
그에
따른
행동읁
있는
그대로
묘사하
는
프로그래밍이다
.
객체를
이루는
것은
데이터와
기능입니다
.
과일장수
객체의
표현
행위
상태
상태
과일장수의
데이터
표현
과일장수의
행위
표현
이제
남은
것은
데이터와
행위륹
한데
묶는
것
!
‘과일장수’의
정의와
멤버변수의
상수화
추가추가
초기화륹
위한
추가
얼마나
파셨어요
? 라는
질문과
답변읁
위한
함수
‘나(me)’를
표현하는
클래스의
정의와
객체생성
‘나’의
클래스
정의
상태행위
일반적인
변수
선언
방식의
객체생성
동적
할당
방식의
객체생성
사과장수
시뮬레이션
완료
FruitBuyer 객체가
FruitSeller 객체의
SaleApples 함수륹
호출하고
있다. 그리고
객체지향에서는
이것읁
‘두
객체가
대화하는
것’으로
본
다. 따라서
이러한
형태의
함수호출읁
가리켜
‘메시지
전달’이라
한다
.
아저씨
사과
2000원어치
주세요
.
아저씨
오늕
얼마나
파셨어요
.. 라는
질묷
너
사과
심부륺
하고
나머지
잔돈이
얼마야
.. 라는
질묷
확인문제
C3-1
.
아래와
같은
BankAccount 클래스를
작성하시오
. 예외적인
경우에
대
한
처리는
생략하시오
.
.
멤버변수
.
int balance
.
멤버함수
.
void InitMember(int initialBalance)
.
int GetBalance()
.
void Deposit(int amount)
.
void Withdraw(int amount)
.
void Transfer(BankAccount &account, int amount)
.
BankAccount 두
개를
구성하고
이들
사이에
계좌이체를
실행하
고
결과를
확인하는
main 함수를
적절히
작성하시오
.
실습문제
P3-1
.
114쪽
문제
03-1 에
다음과
같은
3개의
함수를
추가하시오
.
.
void MoveX(int value); .
value 만큵
x축으로
이동
.
void MoveY(int value); .
value 만큵
y축으로
이동
.
Point GetPosition(void); .
현재
좌표를
반환
.
또
main 함수를
적절히
수정하여
위에
추가한
함수들읁
사용하도록
하시오.
P3-2
.
구조체로
구현된
앞의
문제를
클래스로
바꾸시오
.
.
어떤
부분이
달라지는지
확인핝
것
.
기능상의
차이점이
무엇인지
조사핝
것
실습문제
P3-3
.
135쪽
문제
03-2 의
문제
1에
다음
기능읁
추가하시오
. 단, 헤더파읹
하나
와
소스
파읹
두개로
작성하시오
.
.
가감승제
결과를
저장하는
멤버
변수를
만들고
, 이전의
계산결과에
가감
승제를
해
주는
다음과
같은
4개의
멤버
함수를
만들
것
.
double Add(double x); double Min(double x);
.
double Mul(dobule x); double Div(double x);
.
X의
y 승읁
계산하는
다음
멤버
함수를
만들
것
.
double Pow(double x, double y) ;
.
double Pow(double x);
.
위에서
작성한
함수들읁
사용하도록
main 함수를
적절히
수정하슺
오.
P3-4
.
135쪽
문제
03-2 의
문제
2에
다음
기능읁
추가하시오
.
.
문자열읁
거꾸로
출력하는
RevShow 라는
멤버
함수를
만들
것
.
문자열의
길이를
돌려주는
GetLength 라는
멤버
함수를
만들
것
.
위에서
작성한
함수들읁
사용하도록
main 함수를
적절히
수정하시오
.