[C++ lab] 3. c++ 프로그래밍

1,166 views

Published on

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,166
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
12
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

[C++ lab] 3. c++ 프로그래밍

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

×