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

Slides:



Advertisements
Similar presentations
Kim Yeon Hee 8장. 상속과 다형성 Kim Yeon Hee.
Advertisements

1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
제 11 장 구조체.
명품 C++ 프로그래밍 3장. 클래스와 객체.
명품 C++ 8장 상속.
명품 C++ 4장. 객체 포인터와 객체 배열, 객체의 동적 생성.
C++ Espresso 제1장 기초 사항.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
명품 C++ 13장 예외 처리와 C 언어와의 링크 지정.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
C++ Exspresso 제5장 클래스의 기초.
8. 객체와 클래스 (기본).
명품 JAVA Programming.
Internet Computing KUT Youn-Hee Han
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
C++ Espresso 제9장 다형성.
[INA470] Java Programming Youn-Hee Han
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
10장 템플릿과 표준 템플릿 라이브러리(STL)
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
명품 C++ 8장 상속.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
C++ Espresso 제6장 생성자와 소멸자.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
다중 상속 - 가상 상속 추상 자료형 순수 가상함수
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
C ++ 프로그래밍 시작.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
프로그래밍2 및 실습 C언어 기반의 C++ 2.
스택(Stack) 김진수
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 3 클래스. 최호성.
제 11 장 전처리기.
adopted from KNK C Programming : A Modern Approach
추상 데이터 타입 정의하기 Defining abstract data types
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
가상함수와 추상 클래스.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
A Basic of C++.
3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
5. 논리적 자료표현 : 구조체.
18장. 다차원 배열 그리고 포인터.
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
6장 클래스(상속).
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
10장 템플릿과 표준 템플릿 라이브러리(STL)
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
Chapter 14. 템플릿(Template) 2
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
C++ 언어의 특징
프로그래밍 기법 최적화 프로그래밍.
Presentation transcript:

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

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

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

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

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

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

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

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

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