전체 글 46

열혈 C++ 프로그래밍 OOP 프로젝트 09

09에서는 직접 정의한 string 클래스를 가지고 기존 프로젝트의 char를 string으로 대체함 String클래스를 정의한 String.cpp, String.h 파일 추가 기존에 Account내에 존재하는 복사 생성자, 대입 연산자, 소멸자는 String 클래스가 추가됨에 따라서 사용하지않게되므로 주석 처리해줌 1. String.h #ifndef __STRING_H__ #define __STRING_H__ #include "BankingCommonDec1.h" class String { private: int len; char* string; public: String(); String(const char* str); String(const String& str); String& operator=(..

C++ 2024.04.03

열혈 C++ 프로그래밍 OOP 프로젝트 08

08에서는 Account에 대한 대입연산자추가와 기존 Account형으로 생성한 배열을 BoundCheckPointPtrArray 배열 클래스를 만들어 대체하고자 함 Account.h, Account.cpp에 대입연산자를 추가 변경하고 AccountHandler.h에는 Array * userList[100] 에서 BoundCheckPointPtrArray userList로 변경 추가로 배열클래스를 정의할 AccountArray.h, AccountArray.cpp 파일 추가 1. 대입 연산자가 추가된 Account.h #ifndef __ACCOUNT_H__ #define __ACCOUNT_H__ class Account { private: int accId; int balance; char* cusName..

C++ 2024.04.03

열혈 C++ 프로그래밍 OOP 프로젝트 07

한 파일로 이루어진 CPP파일을 클래스별 역할에 따라 여러 개의 파일로 나눠서 관리하기 위해 선언은 헤더파일(h), 정의는 cpp파일에 저장함 어떤 코드를 공통헤더로 넣을지, 어떤파일에 h파일을 include 할지 생각해보는 과정 #include "AccountHandler.h" #include "BankingCommonDec1.h" // 02 class추가, 객체 포인터 배열 추가 // 03 복사 생성자 추가, 소멸자 추가 // 04 Account 클래스내의 const선언이 가능한 멤버함수에 const선언 // 05 전반적인 기능을 담당하는 Handler 컨트롤 클래스 추가 // 06 클래스 상속 추가 // 07 클래스별 cpp, h 파일 분할 (선언은 h, 정의는 cpp) int main(void) ..

C++ 2024.03.23

열혈 C++ 프로그래밍 OOP 프로젝트 06

06. 클래스의 상속 추가와 virtual 가상함수를 선언해 같은 이름으로 오버라이딩된 함수를 사용함 userList의 포인터형은 Account로 선언했지만 nomalAccount와 creditAccount의 주소값을 받을수있는 이유는 IS-A형으로 Account, NomalAccount, HighCreditAccount클래스가 상속받고 있기때문이다. 가상함수로 선언한 Deposit을 상황에 맞게 불러올수 있는 이유도 userList가 Account 포인터형이지만 이 포인터가 가리키는 객체가 생성되는 과정에서 NomalAccount와 HighCreditAccount로 나뉘기때문 #include #include using namespace std; // 02 class추가, 객체 포인터 배열 추가 // 0..

C++ 2024.03.22

열혈 C++ 프로그래밍 OOP 프로젝트 05

프로젝트 기능 제공의 핵심이 되는 컨트롤 클래스 정의 AccountHandler 클래스를 정의하고 앞에서 정의한 전역함수들을 클래스에 멤버함수로 포함 #include #include using namespace std; // 02 class추가, 객체 포인터 배열 추가 // 03 복사 생성자 추가, 소멸자 추가 // 04 Account 클래스내의 const선언이 가능한 멤버함수에 const선언 // 05 전반적인 기능을 담당하는 Handler 컨트롤 클래스 추가 enum { MAKE = 1, DEPOSIT, WITHDRAW, INQUIRE, EXIT }; class Account { private: int accId; int balance; char* cusName; public: Account() :a..

C++ 2024.03.21

열혈 C++ 프로그래밍 OOP 프로젝트 04

Account 클래스내의 const선언이 가능한 멤버함수에대해 const선언 class Account { private: int accId; int balance; char* cusName; public: Account(int id, int money, char* name) :accId(id), balance(money) { cusName = new char[strlen(name) + 1]; strcpy_s(cusName, strlen(name) + 1, name); } Account(const Account& ac) :accId(ac.accId), balance(ac.balance) { cusName = new char[strlen(ac.cusName) + 1]; strcpy_s(cusName, str..

C++ 2024.03.20

열혈 C++ 프로그래밍 OOP 프로젝트 02

OOP 프로젝트 02에서는 class를 추가해 private, public, 정보은닉과 캡슐화에 대해 추가함 1. 구조체 -> class로 변경, 생성자 추가, 멤버 이니셜라이저 추가 2. 객체 배열에서 객체 포인터 배열로 변경 #include #include using namespace std; enum { MAKE = 1, DEPOSIT, WITHDRAW, INQUIRE, EXIT }; class Account { private: int accId; int balance; char* cusName; public: Account(int id, int money, char* name) :accId(id), balance(money) { cusName = new char[strlen(name) + 1]; ..

C++ 2024.03.20