□ 단원 : C/C++
□ 목표 : 객체지향 프로그래밍
□ 주요 연습 내용 : C++ 생성자, 상속, 멤버함수 정의 및 사용연습
□ 준비자료 : 1_CPerson.zip (Person.cpp, Person.h, Student.cpp, Student.h, main.cpp)
1113967562.zip
참고: VC++는 win32 console로 작성한다.
http://dis.dankook.ac.kr/lectures/hci07/entry/WIN32-Console-Program
연습문제 Ex1 (Due by 9/19 금 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex1.zip으로 묶어서 낼 것. 보고서 (30%)
[연습문제]
1. CPerson 클래스를 정의하라. (20%)
CPerson의 멤버 변수로는 이름, 아이디, 전화번호, 주소가 포함된다.
– char * _name;
– int _id;
– char * _phone;
– char * _addr;
그리고 멤버 함수는 다음과 같은 기능을 한다.
– CPerson(); // default constructor 기본 생성자 함수
– CPerson(char *, int, char *, char *); // conversion 형변환 생성자 함수
– CPerson(const CPerson&); // copy constructor 복사 생성자 함수
– CPerson& operator=(const CPerson&); // operator= 함수
– virtual ~CPerson(); // destructor 소멸자 함수
– virtual void Show(); // CPerson의 이름, 아이디, 전화번호, 주소를 보여줌
– char * GetName() const; // CPerson의 이름 (_name)을 돌려줌
– int GetID() const; // CPerson의 아이디 (_id)을 돌려줌
– char * GetPhoneNumber() const; // CPerson의 전화번호 (_phone)을 돌려줌
– char * GetAddress() const; // CPerson의 주소 (_addr)을 돌려줌
2. CPerson 클래스의 입출력을 위한 operator<< 함수와 operator>> 함수를 작성한다. (힌트: operator>> 함수에서는 “Please Enter Name: “을 호출하여 화면출력한 후에 cin의 getline 함수를 이용해서 한줄씩 char 값을 받는다. 마찬가지로, “Please Enter ID#: “, “Please Enter Phone#: “, “Please Enter Address: “로 화면출력 한 후에 입력값을 받는다.) (10%)
friend std::ostream& operator<<(std::ostream&, const CPerson&);
friend std::ostream& operator<<(std::ostream&, const CPerson*);
friend std::istream& operator>>(std::istream&, CPerson&);
3. CStudent 클래스는 CPerson으로부터 파생한 클래스로 성적평균 멤버변수를 추가로 가지고 있다. (20%)
– float _gpa;
그리고 멤버 함수는 다음과 같은 기능을 한다.
– CStudent(); // default constructor 기본 생성자 함수
– CStudent(char *, int, char *, char *, float); // conversion 형변환 생성자 함수
– CStudent(const CStudent&); // copy constructor 복사 생성자 함수
– CStudent& operator=(const CStudent&); // operator= 함수
– virtual ~CStudent(); // destructor 소멸자 함수
– virtual void Show(); // CStudent의 이름, 아이디, 전화번호, 주소,성적평균을 보여줌
– float GetGPA() const; // CStudent의 성적평균 (_gpa)을 돌려줌
4. CStudent 클래스의 입출력을 위한 operator<< 함수와 operator>> 함수를 작성한다. (10%)
friend std::ostream& operator<<(std::ostream&, const CStudent&);
friend std::ostream& operator<<(std::ostream&, const CStudent*);
friend std::istream& operator>>(std::istream&, CStudent&);
5. main.cpp에서 CPerson 객체와 CStudent 객체를 생성하고 위에서 정의한 각 멤버함수를 테스트하는 routine을 추가하라. (10%)