项目十练习3

题目:

定义一个或多个类,来描述以下需求:
汽车,有多个轮胎,一个发动机,品牌,型号, 价格, 行驶里程。
轮胎,有品牌,尺寸,气压。
发动机,有品牌,型号。

代码实现:

1. 汽车类

头文件

#pragma once
#include <string>
#include <vector>
#include "Tyres.h"
#include "Engine.h"

using namespace std;

class Car
{
public:
	Car(const string &brand,const string &model,int price,int mileage,
		const string &engineBrand,const string &engineModel,const string &tyreBrand="米其林");
	string getBrand() const;
	string getModel() const;
	int getPrice() const;
	int getMileage() const;
	Tyres getTyres(int i) const;
	Engine getEngine() const;
	string description() const;

private:
	string brand;	//品牌
	string model;	//型号
	int price;		//价格
	int mileage;	//里程
	Tyres tyres[4];	//轮胎
	Engine engine;		//发动机
};

实现方法

#include "Car.h"
#include <sstream>

Car::Car(const string & brand, const string & model, int price, int mileage, 
	const string & engineBrand, const string & engineModel, 
	const string &tyreBrand):engine(engineBrand, engineModel),
	tyres{ tyreBrand, tyreBrand, tyreBrand, tyreBrand }
{
	this->brand = brand;
	this->model = model;
	this->price = price;
	this->mileage = mileage;
}

string Car::getBrand() const
{
	return brand;
}

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

int Car::getPrice() const
{
	return price;
}

int Car::getMileage() const
{
	return mileage;
}

Tyres Car::getTyres(int i) const
{
	return tyres[i];
}

Engine Car::getEngine() const
{
	return engine;
}

string Car::description() const
{
	stringstream ret;
	ret << "汽车:" << brand << "-" << model << "价格:" << price
		<< "\t引擎:" << engine.description()
		<< "\t轮胎:" << tyres[0].description();
	return ret.str();
}

2. 轮胎类

头文件

#pragma once
#include <string>

using namespace std;

class Tyres
{
public:
	Tyres(const string &brand = "米其林");
	
	string getBrand() const;
	float getPressure() const;
	string description() const;
private:
	string brand;	//品牌
	float pressure;	//气压
};

实现方法

#include <sstream>
#include "Tyres.h"

Tyres::Tyres(const string &brand)
{
	this->brand = brand;
	this->pressure = 3.5;
}

string Tyres::getBrand() const
{
	return brand;
}

float Tyres::getPressure() const
{
	return pressure;
}

string Tyres::description() const
{
	stringstream ret;
	ret << brand << "-轮压:" << pressure;
	return ret.str();
}

3. 发动机类

头文件

#pragma once
#include <string>

using namespace std;

class Engine
{
public:
	Engine(const string &brand,const string &model);
	string getBrand() const;
	string getModel() const;
	string description() const;

private:
	string brand;	//品牌
	string model;	//型号
};

实现方法

#include <sstream>
#include "Engine.h"

Engine::Engine(const string &brand, const string &model)
{
	this->brand = brand;
	this->model = model;
}

string Engine::getBrand() const
{
	return brand;
}

string Engine::getModel() const
{
	return model;
}

string Engine::description() const
{
	stringstream ret;
	ret << brand << "-型号:" << model;

	return ret.str();
}

4. 调用

#include <iostream>
#include "Car.h"

int main() {
	Car car("保时捷","卡宴",2000000,10,"飞机发动机","三升");

	cout << car.description() << endl;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值