제 8장. 클래스의 활용 2012-1학기 프로그래밍언어및실습 (C++).

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
5장 배열 작성자 : 변재현.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
윤성우의 열혈 C++ 프로그래밍 Chapter C++에서의 구조체 윤성우 저 열혈강의 C++ 프로그래밍 개정판.
Lesson 6. 형변환.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
C++ Espresso 제12장 템플릿.
자바 5.0 프로그래밍.
23장. 구조체와 사용자 정의 자료형 2.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
프로그래밍 랩 – 7주 리스트.
14장. 포인터와 함수에 대한 이해.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
14. 예외처리.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
명품 C++ 9장 가상 함수와 추상 클래스.
Lesson 2. 기본 데이터형.
구조체.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
12. 상속 : 고급.
[ 단원 04 ] 반복과 배열.
Chapter 13. 템플릿(Template) 1
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
7주차: Functions and Arrays
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
3. 모듈 (5장. 모듈).
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 04. 클래스의 완성.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
13. 포인터와 배열! 함께 이해하기.
7 생성자 함수.
6 객체.
Presentation transcript:

제 8장. 클래스의 활용 2012-1학기 프로그래밍언어및실습 (C++)

학습 목표 클래스의 객체를 생성하는 여러 가지 방법을 알아본다. 열거 상수나 typedef 정의를 클래스 안에서 사용하는 방법을 알아본다. 멤버 객체의 개념을 이해하고 멤버 객체를 사용하는 방법을 알아본다. 2012-1학기 프로그래밍언어및실습 (C++)

여러 가지 객체 생성 방법 객체 배열의 생성 및 사용 동적 객체의 생성 및 사용 동적 객체 배열의 생성 및 사용 동적 객체 배열의 생성 및 사용 객체에 대한 포인터 배열의 생성 및 사용 2012-1학기 프로그래밍언어및실습 (C++)

객체 배열의 생성 및 사용 객체 배열 정의 시 따로 지정하지 않으면 항상 디폴트 생성자로 초기화된다. 객체 배열의 초기화 { } 안에 생성자 나열 Point arr[3]; // 디폴트 생성자로 초기화 Point arr[3] = {Point(10, 10), Point(20, 20), Point(30)}; 2012-1학기 프로그래밍언어및실습 (C++)

동적 객체의 생성 및 사용 동적으로 객체를 생성하려면 new 연산자를 사용한다. 동적으로 생성된 객체는 사용이 끝나면 반드시 delete로 해제해야 한다. delete 연산자로 동적으로 생성한 객체를 해제할 때 소멸자가 호출된다. Point *p1 = new Point; // 디폴트 생성자로 초기화 Point *p2 = new Point(10, 20); // 생성자의 인자 전달 Point *p3 = new Point(); // 디폴트 생성자로 초기화 2012-1학기 프로그래밍언어및실습 (C++)

동적 객체 배열의 생성 및 사용 new 연산자를 이용해서 동적으로 객체 배열을 생성할 수도 있다. 동적 객체 배열의 생성 및 사용 new 연산자를 이용해서 동적으로 객체 배열을 생성할 수도 있다. 동적 객체 배열도 일반 객체 배열처럼 [ ]를 이용해서 배열의 원소에 접근한다. 동적 객체 배열은 항상 디폴트 생성자로 초기화하며, 만일 클래스가 디폴트 생성자를 제공하지 않으면 동적 객체 배열을 생성하는 것은 불가능하다. 동적 객체 배열은 delete []로 해제한다. Point *arr = new Point[3]; // 동적 객체 배열 for(int i = 0 ; i < 3 ; i++ ) arr[i].Print(); // 또는 (arr+i)->Print(); delete[] arr; 2012-1학기 프로그래밍언어및실습 (C++)

객체에 대한 포인터 배열의 생성 및 사용 객체에 대한 포인터 배열을 정의 시 객체는 생성되지 않는다. 포인터 변수만 미리 준비해 두고 객체는 프로그램 실행 중에 꼭 필요한 순간에 생성할 수 있다. Point *arr[3] = { new Point(10, 10), new Point(20, 20), new Point(30, 30) }; for(int i = 0 ; i < 3 ; i++ ) arr[i]->Print(); // arr[i]는 객체에 대한 포인터이므로 -> 사용 2012-1학기 프로그래밍언어및실습 (C++)

클래스와 열거 상수 (1) 특정 클래스에서만 사용되는 열거형이나 열거 상수가 있다면 열거형의 정의나 열거 상수의 정의를 클래스 정의 안에 포함시킬 수 있다. class Point { public: enum COLOR {red, green, blue}; protected: ... COLOR m_color; void SetColor(COLOR color); Point(int x = 0, int y = 0, COLOR color = red); }; 2012-1학기 프로그래밍언어및실습 (C++)

클래스와 열거 상수 (2) 클래스 안에 정의된 열거형이나 열거 상수는 “클래스 이름::열거 상수”의 형식으로 접근해야 한다. 열거형이나 열거 상수가 해당 클래스에 public일 때만 가능 int main() { Point p1(10, 10, Point::blue); cout << "p1 = "; p1.Print(); cout << "\n"; return 0; } 2012-1학기 프로그래밍언어및실습 (C++)

클래스와 typedef 특정 클래스에서만 사용되는 typedef 정의도 클래스 정의 안에 포함한다. #define INT_COORD class Point { public: #ifdef INT_COORD typedef int CoordType; #else typedef double CoordType; #endif ... protected: CoordType m_x, m_y; void SetXY(CoordType x, CoordType y); Point(CoordType x = 0, CoordType y = 0, COLOR color = red); }; 2012-1학기 프로그래밍언어및실습 (C++)

멤버 객체 다른 클래스의 객체를 멤버 변수로 사용 HAS-A 관계 Line 클래스는 Point 클래스와 HAS-A 관계이다. Line 클래스가 Point 클래스를 “가지고 있다”는 것은 Point 클래스의 객체를 멤버로써 가지고 있다는 의미이다. class Line { protected: Point m_start, m_end; ... }; 2012-1학기 프로그래밍언어및실습 (C++)

Line 클래스의 예 (1) class Point { protected: int m_x, m_y; public: void Print() const; void SetXY(int x, int y); bool IsEqual(const Point& p) const; Point(int x = 0, int y = 0); friend class Line; }; class Line Point m_start, m_end; void Set(const Point& begin, const Point& end); double GetLength() const; 2012-1학기 프로그래밍언어및실습 (C++)

Line 클래스의 예 (2) int main() { Line line1; cout << "생성 직후의 line1 : "; line1.Print(); line1.Set(Point(10, 10), Point(40, 50)); cout << "변경된 line1 :"; cout << "line1의 길이 : " << line1.GetLength() << "\n"; return 0; } 2012-1학기 프로그래밍언어및실습 (C++)

멤버 객체의 초기화 멤버 객체는 객체이므로 생성할 때 별도로 지정하지 않으면 디폴트 생성자에 의해서 초기화된다. 멤버 객체의 생성자에 인자를 전달하려면 초기화 리스트를 사용한다. 2012-1학기 프로그래밍언어및실습 (C++)

정리 클래스의 객체를 생성하는 방법은 다양하다. 객체의 배열을 생성하거나 객체를 동적으로 생성할 수 있다. 클래스의 객체를 생성할 때 따로 초기화하지 않으면 항상 디폴트 생성자에 의해서 초기화된다. 클래스에 관련된 열거 상수의 정의나 typedef 정의를 클래스 안에 포함할 수 있다. 클래스 안에 정의된 열거 상수나 typedef에 접근하려면 클래스 이름과 함께 사용한다. 클래스가 다른 클래스의 객체를 멤버 변수로 사용할 때 이것을 멤버 객체라고 한다. 클래스와 멤버 객체로 사용되는 클래스 사이에는 has-a 관계가 성립한다. 2012-1학기 프로그래밍언어및실습 (C++)