[1번 문제]
/*
정사각형을 의미하는 Square 클래스와 직사각형을 의미하는 Rectangle 클래스를 정의하고자 한다.
그런데 정사각형은 직사각형의 일종이므로, 다음의 형태로 클래스의 상속관계를 구성하고자 한다
class Rectangle
{
};
class Square :public Rectangle
{
};
이에 다음 main 함수와 함께 실행이 가능하도록 위의 클래스를 완성해보자
int main(void)
{
Rectangle rec(4, 3);
rec.ShowAreaInfo();
Square sqr(7);
sqr.ShowAreaInfo();
return 0;
}
*/
#include <iostream>
using namespace std;
class Rectangle
{
private:
int row;
int column;
public:
Rectangle(int length1, int length2) :row(length1), column(length2)
{
}
void ShowAreaInfo()
{
cout << "면적: " << row*column << endl;
}
};
//딱히 다른 변수가 필요없으므로 private 선언할 변수 X
class Square :public Rectangle
{
public:
Square(int num) :Rectangle(num, num)
{
}
};
int main(void)
{
Rectangle rec(4, 3);
rec.ShowAreaInfo();
Square sqr(7);
sqr.ShowAreaInfo();
return 0;
}
[2번 문제]
/*
책을 의미하는 Book 클래스와 '전자 책'을 의미하는 Ebook 클래스를 정의하고자 한다.
그런데 '전자 책'도 '책'의 일종이므로, 다음의 형태로 클래스의 상속관계를 구성하고자 한다
(클래스에 선언되어야 할 멤버변수만 제시하였다)
class Book
{
private:
char *title; //책의 제목
char *isbn; //국제표준도서번호
int price; //책의 정가
};
class Ebook :public Book
{
private:
char *DRMKey; //보안관련 키
};
위의 EBook 클래스에 선언된 멤버 DRMKey는 전자 책에 삽입이 되는 보안관련 키(key)의 정보를 의미한다.
그럼 다음 main 함수와 함께 실행이 가능하도록 위의 클래스를 완성해보자
int main(void)
{
Book book("좋은 C++", "555-12345-890-0", 20000);
book.ShowBookInfo();
cout << endl;
Ebook ebook("좋은 C++ ebook", "555-12345-890-1", 10000, "fdx9w0i8kiw");
ebook.ShowEBookInfo();
return 0;
}
*/
#include <iostream>
#include <cstring>
using namespace std;
class Book
{
private:
char *title; //책의 제목
char *isbn; //국제표준도서번호
int price; //책의 정가
public:
Book(char *booktitle, char *bookisbn, int bookprice) :price(bookprice)
{
title = new char[strlen(booktitle) + 1];
strcpy(title, booktitle);
isbn = new char[strlen(bookisbn) + 1];
strcpy(isbn, bookisbn);
}
void ShowBookInfo()
{
cout << "제목: " << title << endl;
cout << "ISBN: " << isbn << endl;
cout << "가격: " << price << endl;
}
~Book()
{
delete[]title;
delete[]isbn;
}
};
class Ebook :public Book
{
private:
char *DRMKey; //보안관련 키
public:
Ebook(char *booktitle, char *bookisbn, int bookprice, char *key) :Book(booktitle, bookisbn, bookprice)
{
DRMKey = new char[strlen(key) + 1];
strcpy(DRMKey, key);
}
void ShowEBookInfo()
{
ShowBookInfo();
cout << "인증키: " << DRMKey << endl;
}
~Ebook()
{
delete[]DRMKey;
}
};
int main(void)
{
Book book("좋은 C++", "555-12345-890-0", 20000);
book.ShowBookInfo();
cout << endl;
Ebook ebook("좋은 C++ ebook", "555-12345-890-1", 10000, "fdx9w0i8kiw");
ebook.ShowEBookInfo();
return 0;
}
개발 환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 열혈 C++ 프로그래밍 윤성우 저
'C++ > 열혈 C++ 프로그래밍(윤성우 저)' 카테고리의 다른 글
열혈 C++ 프로그래밍 8-1 문제 (0) | 2017.06.06 |
---|---|
OOP 단계별 프로젝트 5 (0) | 2017.06.05 |
열혈 C++ 프로그래밍 7-1 문제 (0) | 2017.06.05 |
OOP 단계별 프로젝트 4 (0) | 2017.06.03 |
OOP 단계별 프로젝트 3 (0) | 2017.05.31 |