본문 바로가기

강의자료/C/C++

044. 연습문제 - 자동차 클래스를 만들어보자.


◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


>> 아래와 같은 특징을 가지는 Car클래스를 작성하시오.
- int형 변수 speed를 가져야 하며 외부에서 접근이 불가능하도록 한다.
- 생성자는 int형 값을 하나만 받아서 speed변수를 초기화해주도록 한다.(기본생성자는 X)
- int형 값을 입력으로 받아 스피드를 올리는 speedUp과 스피드를 낮추는 speedDown 멤버함수를 작성한다.
  두 함수 모두 입력으로 받는 스피드값은 0보다 크고 30보다 작아야하며, 최대스피드는 200, 최하 스피드는 0이 되도록 작성하시오.
- 현재 speed값을 반환하는 currentSpeed멤버함수를 작성하시오.
- 출력 연산자를 오버로딩하여 cout을 이용해 현재 스피드를 출력할 수 있도록 하시오.

main() 함수는 아래와 같이 작성하고, 클래스는 직접 작성하라.
int main()
{
	Car car1(0);
	cout << car1;
	car1.speedUp(10);
	car1.speedUp(25);
	cout << car1; 
	car1.speedDown(25);
	cout << car1;
	car1.speedDown(10);
	cout << car1;

	return 0;
}

전체 소스코드.
// 함수 디폴트 인자값에 대해서 이해한다.

/*
>> 아래와 같은 특징을 가지는 Car클래스를 작성하시오.
- int형 변수 speed를 가져야 하며 외부에서 접근이 불가능하도록 한다.
- 생성자는 int형 값을 하나만 받아서 speed변수를 초기화해주도록 한다.(기본생성자는 X)
- int형 값을 입력으로 받아 스피드를 올리는 speedUp과 스피드를 낮추는 speedDown 멤버함수를 작성한다. 
  두 함수 모두 입력으로 받는 스피드값은 0보다 크고 30보다 작아야하며, 최대스피드는 200, 최하 스피드는 0이 되도록 작성하시오.
- 현재 speed값을 반환하는 currentSpeed멤버함수를 작성하시오.
- 출력 연산자를 오버로딩하여 cout을 이용해 현재 스피드를 출력할 수 있도록 하시오.
*/

#include  
using namespace std;
class Car 
{
private:
	int speed;

public :
	Car(int _speed=0):speed(_speed){}      
	~Car(){}   

	void speedUp(int _speed=10);
	void speedDown(int _speed=10);
	int currentSpeed() const;

	friend ostream& operator << (ostream& os,const Car& car);
};
void Car::speedUp(int _speed)
{
	if(_speed > 0 && _speed < 30)
	{
		speed += _speed;
		if(speed > 200) speed = 200;
	}
}
void Car::speedDown(int _speed)
{
	if(_speed <= 0 || _speed >= 30) return;

	speed -= _speed;
	if(speed < 0) speed = 0;
}
//현재 속도  
int Car::currentSpeed() const
{
	return  speed;   
}
ostream& operator << (ostream& os,const Car& car)
{
	if(car.currentSpeed() > 0)
	{
		os << "이 자동차는 현재 " << car.speed << "km/h" << "로 달리고 있습니다." << endl;          
	}else{
		os << "이 자동차는 현재 정지해 있습니다." << endl; 
	}
	return os;
}

int main()
{
	Car car1(0);
	cout << car1;
	car1.speedUp(10);
	car1.speedUp(25);
	cout << car1; 
	car1.speedDown(25);
	cout << car1;
	car1.speedDown(10);
	cout << car1;

	return 0;
}