Upload
mingeun-park
View
579
Download
7
Embed Size (px)
Citation preview
3. C++ 프로그래밍(L) C++ 프로그래밍
박민근
솔류션과 프로젝트 생성
객체지향 프로그래밍
객체
속성
행동
캐릭터머리모양 , 키 ,
피부색공격력 , 방어력
레벨아이템
달리기 , 서있기 , 앉기
공격하기 , 방어하기
맞기 , 죽기
객체
속성
행동
객체
멤버 변수
멤버 함수( 메소드 )
클래스객체 ( 인스턴스 )
건담 설계도( 생성된 ) 건담
크기와 색상이 달라도 다 같은거…
결국은 다 같은 계열…
부모 클래스
자식 클래스
클래스의 상속 구조
로보트
상속 관계(is a 관계 )
구체화일반화
상속 관계
• 부모의 특성 ( 속성 , 행동 ) 을 그대로 상속 받아 , 같은 특성을 가질 수
있다 .
• 부모 클래스를 좀 더 구체화 시켜서 설계 한다는 개념
• 각 클래스끼리의 공통된 특성을 부모 클래스에 넣어서 각각의 파생
클래스에서 재사용이 가능하다
• 부모 = 기본 클래스 , 자식 = 파생 클래스
• 부모 <-> 자식 == 일반화 <-> 구체화
• 자식 클래스는 부모 클래스의 흉내를 낼 수 있다 . ( 다형성 )
떄린건가 ? 맞은건가 ?
객체는 내가 중심이다
다른 객체에 대해서는 신경쓰지 않아도 된다 .
클래스 구조
객체의 생성
생성자와 소멸자
• 생성자 객체가 처음 생성 될 때 , 자동으로 호출 되는 함수
• 변수의 초기화 작업을 넣는다 .
• 최초 실행되어야 할 행동들을 넣는다
• 필요한 내부 객체들을 생성한다 .
• 소멸자 객체가 파괴될 때 , 자동으로 호출 되는 함수
• 할당된 메모리의 해제 작업
• 할당된 내부 객체들의 파괴 작업
• 기타 마지막에 실행되어야 할 행동들을 넣는다 .
생성자와 소멸자 – 상속 관계
• 자식 클래스가 생성될때 부모의 생성자 함수는 자동 호출 된다 .
• 자식 클래스가 소멸될때 부모의 소멸자 함수도 자동 호출 된다 .
멤버 변수와멤버 함수 (
메소드 )
Ship 클래스 – 멤버 변수 , 멤버 함수
접근 제한• 은닉성• 노출하지 않아도 되는
정보는 보여주거나 제공할 필요가 없다 .
• 외부에서 함부로 변경 못함
접근 권한 설정하기 (2)
멤버의 접근 권한 설정하기
접근 권한 키워드에 대한 요약 (뒤에서 더욱 자세히 분류 )public : 외부에서의 접근을 허용한다 .protected, private : 외부에서 접근할 수 없다 .
[21-23]
• 아무나 사용할 수 있다 . • 함수 – 객체를 사용하는 누구든 호출 가능• 변수 – 객체를 사용하는 누구든 값의 변경 및 사용 가능
Public – 모두에게 공개 한다
• 자신과 자식 클래스만 사용이 가능하다 . • 함수 – 나와 내 자식 클래스 내부에서만 호출 가능• 변수 – 나와 내 자식 자식 클래스 내부에서면 변경 및 사용 가능
Protected – 우리 집안것 ! 내 자식들만 사용 가능
• 자신만 사용이 가능하다• 함수 , 변수 전부 클래스 자기 자신만 사용 가능
Private – 이건 나만의 것 ! 내 자식도 못씀 ! 내거야 !!
클래스 내부 , 외부 , 자식 클래스 관계
접근 권한 설정하기 (1)
멤버의 접근 권한을 설정하는 예class AccessControl{public:
char publicData;void publicFunc() {};
protected:int protectedData;void protectedFunc() {};
private:float privateData;void privateFunc() {};
};
int main(){
// 객체를 생성하고 , 각 멤버에 접근해보자AccessControl ac;
ac.publicData = 'A'; // 성공ac.publicFunc(); // 성공ac.protectedData = 100; // 실패ac.protectedFunc(); // 실패ac.privateData = 4.5f; // 실패ac.privateFunc(); // 실패
return 0;}
enum 열거형
enum 열거형• 타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입• 내부적으로는 int 형과 같은 4 바이트 변수다 .• 변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다 . • 정의된 값들은 디폴트로 0 부터 순차적으로 증가한다 .• 0 이 아닌 다른 특정한 값 (int 형 ) 으로 정의할 수도 있다 .
예 ) 히트 결과 • 함수 반환 값으로 구별이 필요
• Int 형으로 반환 => 0 – 미스 , 1 – 히트 , 2 – 파괴
• enum 형으로 선언
• MISS, HIT, DESTROY
• 반환값으로 enum 형을 반환
구조체
• 여러가지 다른 타입의 데이터의 묶음• 관련된 다양한 데이터를 하나의 묶음 데이터로 처리할 수 있다 .• 예 ) 배의 위치 : x 좌표 , y 좌표
C++문자열
C 문자열 (char[])
I L o v e Y o u ~ P r o f \0
문자 (char) 의 배열
길이가 17 개인 고정 문자 배열 Char[17]
szTest 의 값 = 배열 시작 위치 ( 포인터 )
std::string
• 가변 문자열 템플릿 클래스
• 문자열의 길이에 상관 없이 문자열을 담을 수 있다 .
• 내부적으로는 문자의 가변 배열로 구성 되어 있다 .
• C 형태의 문자열 ( 문자배열 char[]) 로 변환이
필요한 경우에는 c_str() 멤버 함수를 사용 한다 .
sprintf_s()
• sprintf_s( 결과를 담을 문자 배열 , 포맷 , argu-
ment,..)
• printf 에서 출력 결과를 , 입력 받은 배열에
담는다고 생각하면 된다 .
• 문자열의 변경이나 복사 , 추가등에 활용할 수
있다 .
• 임의의 문자열 조합등을 문자열 배열에 담는다고
할 수 있다 .
문자열 변경
문자열 복사
문자열 추가