본문 바로가기

728x90
반응형

Major-

(864)
[C++] 07-02. 상속의 문법적인 이해 상속의 표현 A 아버지 B클래스의 멤버함수 내에서는 A클래스의 멤버함수나 멤버변수를 호출 가능 임의의 클래스 생성자 내에서는 임의의 클래스 내의 멤버를 모두 초기화 해야한다. -> 생성자의 존재 목적 생성자에서 동적할당 할 경우 소멸자에서 해제를 해야한다. -> 임의의 클래스 안에 있는 멤버를 다른 클래스 생성자에서 초기화 불가 A클래스의 멤버변수는 어디에서 초기화하는게 올바른가? -> 상속을 했다고 하더라도 원칙이 깨져서는 안된다. B클래스의 객체를 동적할당으로 생성 -> B클래스의 생성자만 호출하지만 A클래스의 멤버변수도 초기화가 되어야 한다. [같이 인자로 전달] 객체는 하나이지만, 두 개의 생성자를 호출 -> B클래스 내 생성자는 B클래스의 멤버변수를 초기화하고 -> A클래스 내 생성자는 A클래스..
[C++] 07-01. 상속에 대한 이해와 접근 [급여관리시스템 1단계] 상속에 대한 접근 1단계: 문제의 제시 2단계: 기본개념 소개 3단계: 문제의 해결 -> 상속은 기존에 정의해 놓은 클래스의 재활용을 목적으로 만들어진 문법적 요소 급여관리 시스템 - 1단계 : 직원마다 각자의 객체를 생성 연봉제 정규직 [데이터 중심 클래스] 컨트롤 클래스 [컨트롤 클래스 객체를 통해서 프로그램이 동작] //상속을 하는 시기, 상속하는 이유, 상속의 장점 #include #include using namespace std; class PermanentWorker { private: char name[100]; int salary; public: PermanentWorker(const char* name, int money) //const char*로 선언 : salary(money) {..
[JSP] 데이터통신 구현방식, JSON과 XML JSON ( JavaScript Object Notation) 자주 사용하는 DB형태로 전송하는 데이터 통신 구현 파일 방식 문법 Data is is name / value pairs Data is separated by commas Curly braces hold objects Square brackets hold arrays "employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter","lastName":"Jones"} ] Name/value pairs : "~":"~"로 구분 Data Separator: ,로 구분 Array : []로 구분 object..
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 05 클래스의 분류= 컨트롤클래스와 Entity 클래스 클래스의 기능을 관리, 제어하는 컨트롤 클래스의 적용 컨트롤 클래스의 특징 프로그램 전체의 기능을 담당한다. 기능적 성격이 강한 클래스 컨트롤 클래스만 봐도 프로그램의 전체 기능과 흐름을 파악할 수 있다. Entity 클래스의 특징 데이터적 성격이 강한 클래스 파일 및 데이터 베이스에 저장되는 데이터를 소유한다. 프로그램의 기능을 파악하는데는 관련이 없다 프로그램상에서 관리되는 데이터의 종류를 파악하는데 목적 은행계좌 관리시스템의 주요기능은 전역함수를 통해 구현되어 있다. C++에서는 전역함수와 전역변수의 선언을 허용하지만, 객체지향에는 전역이라는 개념은 존재하지 않는다. 때문에 컨트롤 클래스를 이용해 전역함수를 이용하지 않도록 하나의 컨트롤 클래스로 묶..
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 04 Account 클래스의 멤버함수에 const 선언을 추가해서 코드의 안전성을 높인다. #include #include #include using namespace std; const int NAME_LEN = 20; void ShowMenu(void);//메뉴출력 void MakeAccount(void);//계좌개설을 위한 함수 void DespositMoney(void);//입금 void WithdrawMoney(void);//출금 void ShowAllAccInfo(void);//잔액조회 enum { MAKE = 1, DEPOSIT, WITHDRAW, INQUIRE, EXIT }; class Account { private: int accID;//계좌번호 int balance;//잔 액 char* c..
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 03 Account 클래스에 깊은 복사를 진행하는 복사 생성자를 정의한다. Account 클래스에 깊은 복사를 진행하는 복사 생성자를 정의하면서, 복사 생성자가 호출되지는 않지만 깊은 복사를 원칙으로 정하고 복사 생성자를 추가한다. Account(const Account& ref) :accID(ref.accID), balance(ref.balance) { cusName = new char[strlen(ref.cusName) + 1]; strcpy_s(cusName,strlen(ref.cusName)+1,ref.cusName); } #include #include #include using namespace std; const int NAME_LEN = 20; void ShowMenu(void);//메뉴출력 v..
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 02 클래스의 대상과 클래스 구성 방법 Account 구조체의 cha형 배열 멤버를 Account 클래스에서 동적 할당으로 구현 -> 멤버변수로 문자열 포인터를 이용 객체 배열을 이용하지 않고, 객체 포인터 배열을 이용해 구현 #include #include #include using namespace std; const int NAME_LEN = 20; void ShowMenu(void);//메뉴출력 void MakeAccount(void);//계좌개설을 위한 함수 void DespositMoney(void);//입금 void WithdrawMoney(void);//출금 void ShowAllAccInfo(void);//잔액조회 enum { MAKE = 1, DEPOSIT, WITHDRAW, INQUIRE,..
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 01 C언어 기반의 C++ 구현할 기능 계좌개설 입금 출금 전체고객 잔액조회 구현의 한계에 의한 최소한의 가정 통장의 계좌번호는 중복되지 않는다. [중복검사의 미구현] 입금 및 출금액은 무조건 0보다 크다. [입금 및 출금액 오류검사 미구현] 고객의 계좌정보는 계좌번호, 고객이름, 고객의 잔액으로 저장 및 관리 둘 이상의 고객 정보 저장을 위해 배열을 사용 계좌번호는 정수의 형태 선수과목: 열거체, 스위치, 구조체와 구조체 배열 #include #include #include using namespace std; const int NAME_LEN = 20; void ShowMenu(void);//메뉴출력 void MakeAccount(void);//계좌개설을 위한 함수 void DespositMoney(voi..

728x90
반응형