본문 바로가기
C++/c++수업

자동차에 대한 클래스 작성

by sj0020 2020. 10. 19.

1. 자동차에 대한 클래스 작성하기.

조건1) 속성 - 대리점명은 상수 클래스변수로 선언. : static 변수
조건2) 속성(변수) - 제조사, 색상, 가격, 모델명은 인스턴스 변수로 선언. 소멸자 추가
조건3) 기본 생성자를 만들고 아래의 속성값들을 초기화 바람.
      제조사 - "기아", 색상 - "블랙", 이름 - "K7"
      가격 - "사천만원", 대리점명 - "동대구 영업소" (스트링)
조건4) 모든 속성들을 매개변수로 전달하여 객체를 생성할수있는 생성자 추가.
조건5) 모든 속성 정보들을 출력하는 인스턴스 메쏘드(함수) 추가.

[출처] Java 클래스 1번째|작성자 박x신

 

car.h

#pragma once
#include <iostream>
#include <string>
using namespace std;

class Car {
private:
	string manufacture;
	string color;
	string price;
	string model;

public:
	static const string BRANCH;
	Car(); //기본생성자
	Car(string manufacture, string color, string price, string model);
	~Car();

	void CarInfo();
	
	void setModel(string model);
	string getModel();

	void setPrice(string price);
	string getPrice();

};

car.cpp

#include "Car.h"

const string Car::BRANCH = "동대구영업소";

Car::Car() : model("k7"), price("40k") { //이 영역은 클래스 내부. 객체 내부 영역과 동일
	cout << "기본 생성자 호출\n";
	manufacture = "기아";
	color = "black";
	//price = "40k";
	//model = "k7";
	//const string BRANCH = "동대구영업소";  이렇게 쓰면 안된다.- static변수라서. 클래스 내부 영역에 저장되는 것이 아니라서  따로 빼줘야 함.
}

Car::Car(string manufacture, string color, string price, string model) {
	this->manufacture = manufacture;
	this->color = color;
	this->price = price;
	this->model = model;
}

void Car::CarInfo() {
	cout << "제조사 " << manufacture << endl;
	cout << "색상 " << color << endl;
	cout << "가격 " << price << endl;
	cout << "모델 " << model << endl;

	cout << "대리점명 " << Car::BRANCH << endl;
}

Car::~Car() {
	cout << "소멸자 호출\n";
}

void Car::setModel(string model) {
	this->model = model;
}

string Car::getModel() {
	return model;
}

void Car::setPrice(string price) {
	this->price = price;
}

string Car::getPrice() {
	return price;
}

CarMain.cpp

#include <iostream>
#include <string>
#include "Car.h"
using namespace std;


void main() {
	Car car;
	car.CarInfo();
	 
	Car car1("이건제조사","색깔","이건가격","모델");
    
    //Car car1;
	//car1.Car::Car("이건제조사", "색깔", "이건가격", "모델");
	car1.CarInfo();
}

 

// this->를 안 붙이면 충돌이 일어난다

//const가 있기 때문에 JIJUM = "동대구영업점" 으로 항상 고정됨. const를 붙이지 않더라도 JIJUM과 같이 변수명을 대문자로 쓰면 상수로 쓰겠다는 관례적인 약속임

 

// 소스파일에서는  include를 아무리 많이 넣어도 상관없다..  그렇지만 헤더파일 에서는 주의해서 사용할것. 특히 " "는 더 주의

 

//#pragma once : 헤더파일을 중복 include 되는것을 방지하기 위함