2. 고객 차량 관리 프로그램을 위한 클래스 설계. (3개의 클래스가 사용되니 조건을 상세하게 확인!)
조건01) 프로젝트를 생성할때 패키지명을 com.회사명 또는 본인 이니셜.carApp 으로 설정하고
클래스명은 CarAppMain 으로 생성. (main() 메쏘드가 존재함)
조건02) 프로젝트에 새로운 패키지 com.회사명 또는 이니셜.carApp.car 를 만들고 클래스 Car를 생성 추가.
조건03) Car 클래스에 멤버변수 모델명, 색상, 연식, 제조사를 생성하고 접근 차단.
- 속성 타입은 조건12 참고.
조건04) 속성 정보들을 설정하는 매개 변수를 가지는 생성자 추가.
조건05) Car 클래스 속성들을 위한 getter/setter 추가.
조건06) 모든 속성 정보들을 출력하는 메쏘드 printCarInfo() 작성.
조건07) 새로운 패키지 com.회사명 또는 이니셜.carApp.customer 를 만들고 클래스 Customer 추가.
조건08) 고객 클래스에 고객명, 전화번호, 주소, Car 클래스 속성들을 생성하고 접근 차단.
조건09) 속성 정보들을 설정하는 매개변수를 가지는 Customer 생성자 추가.
조건10) 고객 속성에 대해서 getter/setter 생성.
조건11) 고객정보와 차량정보를 출력하는 printCustomerInfo() 추가.
조건12) main() 에서 다음의 정보들을 이용하여 객체를 생성하시오.
String name[] = {"홍길동", "김길동", "박길동", "이길동", "최길동"};
String tel[] = {"010-1234-5678", "010-4321-5678", "010-3478-1278",
"010-4523-1978", "010-7890-2134"};
String address[] = {"대구시 동구 신암4동", "서울시 동구 신암4동",
"부산시 동구 신암4동", "인천시 동구 신암4동", "광주시 동구 신암4동"};
String model[] = {"SM6", "쏘나타", "싼타페", "K7", "그랜져"};
String color[] = {"블랙", "은색", "흰색", "회색", "빨강"};
int year[] = {2016, 2017, 2016, 2017, 2016};
String company[] = {"삼성르노", "현대", "현대", "기아", "현대"};
조건13) main()에서 10명의 고객정보를 위한 객체 생성.
조건14) 생성한 객체에 조건12의 정보들을 랜덤하게 설정한후 printCustomerInfo()로
모든 고객정보와 구매한 차량정보를 출력.
[출처] Java 클래스 2번째|작성자 박x신
Car.h
#pragma once
#include <string>
#include <iostream>
using namespace std;
class Car
{
private:
string model;
string color;
int year;
string company;
public:
Car();
Car(string model, string color, int year, string company);
~Car();
inline void setModel(string model) {
this->model = model;
}
string getModel() {
return model;
}
inline void setColor(string color) {
this->color = color;
}
string getColor() {
return color;
}
inline int setYear(int year) {
this->year = year;
}
int getYear() {
return year;
}
void setCompany(string company) {
this->company = company;
}
string getCompany() {
return company;
}
void printCarInfo();
};
car.cpp
#include "Car.h"
Car::Car() {}
Car::Car(string model, string color, int year, string company) {
this->model = model;
this->color = color;
this->year = year;
this->company = company;
}
Car::~Car() {
cout << "car 소멸자" <<endl;
}
void Car::printCarInfo() {
cout << "모델 " << model << endl;
cout << "색상 " << color << endl;
cout << "연식 " << year << endl;
cout << "제조사 " << company << endl;
cout << "--------------------------------" << endl;
}
customer.h
#pragma once
#include "Car.h" //Customer.cpp 에 선언해줌 : 후위참조
#include <iostream>
class Customer
{
private:
string name;
string tel;
string address;
Car car;
public:
Customer();
Customer(string name, string tel, string address, Car car);
~Customer();
inline void setName(string name) {
this->name = name;
}
string getName() {
return name;
}
inline void setTel(string tel) {
this->tel = tel;
}
string getTel() {
return tel;
}
inline void setAddress(string address) {
this->address = address;
}
string getAddress() {
return address;
}
void setCar(Car car) {
this->car = car;
}
Car getCar() {
return car;
}
void printCustomerInfo();
};
customer.cpp
#include "Customer.h"
//#include "Car.h" //후위참조. customer.h 에서 선언을 안해주고 customer.cpp에 선언
Customer::Customer() {}
Customer::Customer(string name, string tel, string address, Car car) {
this->name = name;
this->tel = tel;
this->address = address;
this->car = car;
}
Customer::~Customer() {
cout << "customer 소멸자" << endl;
}
void Customer::printCustomerInfo() {
cout << "이름 " << name << endl;
cout << "전화번호 " << tel << endl;
cout << "주소 " << address << endl;
car.printCarInfo();
}
carMain.cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
#include "Car.h"
#include "Customer.h"
using namespace std;
int main(void) {
string name[] = { "홍길동", "김길동", "박길동", "이길동", "최길동" };
string tel[] = { "010-1234-5678", "010-4321-5678", "010-3478-1278",
"010-4523-1978", "010-7890-2134" };
string address[] = { "대구시 동구 신암4동", "서울시 동구 신암4동",
"부산시 동구 신암4동", "인천시 동구 신암4동", "광주시 동구 신암4동" };
string model[] = { "SM6", "쏘나타", "싼타페", "K7", "그랜져" };
string color[] = { "블랙", "은색", "흰색", "회색", "빨강" };
int year[] = { 2016, 2017, 2016, 2017, 2016 };
string company[] = { "삼성르노", "현대", "현대", "기아", "현대" };
Customer cst[10]; //기본생성자를 통해 객체는 이미 생성되어있고 배열안에 객체들이 들어가 있다.
cst[0].printCustomerInfo();
srand((unsigned int)time(NULL));
for (int i = 0; i < 10; i++) {
cst[i] = Customer(name[rand() % 5], tel[rand() % 5], address[rand() % 5], Car(model[rand() % 5], color[rand() % 5], year[rand() % 5], company[rand() % 5])); // 이 시점에서 carclass생성
cout << "번호:" << i + 1 << endl;
cst[i].printCustomerInfo();
}
}
Customer cst[10]; //기본생성자를 통해 객체는 이미 생성되어있고 배열안에 객체들이 들어가 있다. cst[0].printCustomerInfo(); 쓰레기 값이 출력됨. |
// get, set 쓰는 이유? : private 으로 멤버 변수가 보호되어 있기 때문에 변경하기 위해서 public에 Car 클래스 속성들을 위한 getter/setter 추가해준다
//customer(); 기본 생성자 없으면 Customer cst[10]; 과정에서 오류남. 왜? 컴퓨터가Customer(string name, string tel, string address, Car car); 변수 있는 생성자만 있다고 생각해서. Customer(string name, string tel, string address, Car car);가 없다면 기본생성자를 생성해서 오류 없이 배열을 만든다.
그렇기 때문에 Customer();를 적어줘야한다
'C++ > c++수업' 카테고리의 다른 글
class - btn+led 버튼 누르면 led on off (0) | 2020.10.27 |
---|---|
아두이노 라이브러리 (led 깜빡이는) 만들기 (0) | 2020.10.26 |
학생관리 프로그램을 위한 학생(Student) 클래스 설계 (0) | 2020.10.20 |
배열 포인터 (0) | 2020.10.20 |
자동차에 대한 클래스 작성 (0) | 2020.10.19 |