C++ 1571

OOP 단계별 프로젝트 5

/*우리가 구현하고 있는 Banking System의 주요기능은 다음과 같다1.계좌개설2.입금3.출금4.계좌정보 전체 출력이러한 기능은 전역함수를 통해서 구현되어있다. 그러나 객체 지향에는 '전역'이라는 개념이 존재하지 않는다.비록 C++에서는 전역함수와 전역변수의 선언을 허용하고 있지만, 이는 객체지향 프로그래밍을 위한 것은 아니니 가급적 사용하지 않는 것이 좋다기능적 성격이 강한 컨트롤 클래스를 등장시키면, 우리가 구현하고 있는 단계별 프로젝트에서 전역함수들을 없앨 수 있다.이들을 하나의 컨트롤 클래스로 묶을 수 있기 때문이다.이렇게 되면 컨트롤 클래스는 프로그램의 기능적 측면을 담당하게 되므로, 컨트롤 클래스의 성격에도 부합한다.그럼 이번 단계에서 구현해야 할 컨트롤 클래스의 구현방법에 대해서 간단..

열혈 C++ 프로그래밍 7-2 문제

[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 using namespace std; class Rectangle{private: int row; int column;public..

열혈 C++ 프로그래밍 7-1 문제

[1번 문제]/*앞서 상속관계에 놓여있는 클래스의 생성자 정의 및 호출 방식에 대해 설명하였다.이 내용을 바탕으로 다음 클래스에 적절한 생성자를 삽입해보자.그리고 이의 확인을 위한 main 함수를 적절히 정의해보자class Car //기본 연료 자동차{private:i nt gasolineGauge;public: int GetGasGauge() { return gasolineGauge; }}; class HybridCar :public Car //하이브리드 자동차{private: int electricGauge;public: int GetElecGauge() { return electricGauge; }}; class HybridWaterCar :public HybridCar //하이브리드 워터카{pri..

OOP 단계별 프로젝트 4

/*BankAccount 클래스의 멤버함수 중 일부를 const로 선언하면서 Banking System의 버전을 0.3에서 0.4으로 업그레이드 시키겠다.const로 선언이 가능한 모든 멤버함수를 const로 선언하자*/#include #include using namespace::std; int Menu(void); //메뉴void MakeBankAccount(void); //계좌 개설void Deposit(int money); //입금void Withdraw(int money); //출금void ShowAccountInfo(void); //전체고객 잔액조회 class BankAccount{private: int AccountNumber; //계좌 번호 char *Name; //고객 이름 int Mon..

OOP 단계별 프로젝트 3

/*BankAccount 클래스에 깊은 복사를 진행하는 복사 생성자를 정의하면서, Banking System의 버전을0.2에서 0.3으로 업그레이드 시켜보겠다.비록, 복사생성자가 호출되지는 않지만, 깊은 복사를 원칙으로 정하고 이를 위해서 복사 생성자를 추가하기로 하겠다.복사생성자 추가 외에는 프로젝트 2와 똑같다.*/#include #include using namespace::std; int Menu(void); //메뉴void MakeBankAccount(void); //계좌 개설void Deposit(int money); //입금void Withdraw(int money); //출금void ShowAccountInfo(void); //전체고객 잔액조회 class BankAccount{private..

열혈 C++ 프로그래밍 5-1 문제

/*문제 4-3의 문제 2를 통해서 NameCard 클래스를 정의하였다.그런데 이 클래스도 생성자 내에서 메모리 공간을 동적 할당하기 때문에 복사생성자가 필요한 클래스이다이에 복사생성자를 적절히 정의해보기 바라며, 복사 이후에 문제가 발생하지 않음을 다음 main 함수를 통해서 확인하길 바란다int main(void){ NameCard manClerk("Lee", "ABCEng", "010-1111-2222", COMP_POS::CLERK); NameCard copy1 = manClerk; NameCard manSENIOR("Hong", "OrangeEng", "010-3333-4444", COMP_POS::SENIOR); NameCard copy2 = manSENIOR; copy1.ShowNameCar..

OOP 단계별 프로젝트 2

/*Banking System의 버전을 0.1에서 0.2로 업그레이드 시켜보자. 아직은 클래스를 설계하는게 익숙하지 않은 단계이니,버전 0.1에서 정의한 구조체 Account를 클래스 Account로 변경해 보겠다.이는 키워드 struct를 class로 변경하라는 뜻이 아니다. 다음과 같은 내용들을 더불어 고민하라는 뜻이다."어떻게 캡슐화를 시키고 정보를 은닉시켜야 할까?""생성자와 소멸자는 어떻게 정의해야 할까?"추가로, 구현하는데 있어서 두가지 제약을 하곘다.1.버전 0.1의 Account 구조체는 char형 멤버로 둬서 고객의 이름을 저장했는데, 버전 0.2의 Account 클래스에는 이를 동적할당 형태로 구현하기로 하자2.객체배열을 선언하지 말고, 객체 포인터 배열을 선언해서 객체를 저장하라*/#..

열혈 C++ 프로그래밍 4-3 문제

[1번 문제]/*앞서 제시한 문제 4-2를 해결하였는가? 당시만 해도 생성자를 설명하지 않은 상황이기 때문에 별도의 초기화함수를 정의 및 호출해서 Point, Circle, Ring 클래스의 객체를 초기화 하였다.이 때 구현한 답에 대해서 모든 클래스에 생성자를 정의해보자*/#include using namespace std; class Point{private: int xpos; int ypos;public: /* void Init(int x, int y) { xpos = x; ypos = y; } */ Point(int x, int y) :xpos(x), ypos(y) { } int GetX() { return xpos; } int GetY() { return ypos; } void ShowPoint..

열혈 C++ 프로그래밍 4-1 문제

/*Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private으로 선언이 되어있다.그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다.1.사과의 구매를 목적으로 0보다 작은수를 전달할 수 없다위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안정성을 높일 수 있도록 일부 함수를 const로 선언해보자*/ /*FruitSaleSim1.cpp#include using namespace std; class FruitSeller{private: int APPLE_PRICE; int numOfApples; int myMoney;public: void InitMembers(int price, int num, ..