C++第4周项目3 - 多文件组织程序

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895


【项目3 - 程序的多文件组织】当程序规模变大后,一个程序用多个文件组织,便于组织生产。这样,不必每次都重复对所有代码进行编译,而只需编译一次即可。把编译后所形成的目标文件保存起来,以后在需要时把它调出来直接与程序的目标文件相连接即可。

  C++中一种常用的做法是,独立出一个头文件来。正确使用头文件带来的好处包括:支持代码的局部单独编译,尤其对类及成员函数声明;保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。使用头文件的时候,头文件只用于声明,而不是定义,头文件一般含有支持分别编译所需的类定义及变量和函数的声明。另外,一些const对象要定义在头文件中。类的成员函数定义在头文件中只有一个例外,那就是内置(inline)成员函数需要定义在头文件中。
  下面是本项目的要求:
  利用多文件组织,完成项目2。其中,项目包括3个文件:
主文件: main.cpp,用于定义main()函数
头文件: triangle.h,头文件
类定义文件: triangle.cpp,用于定义类Triangle
  注意,3个set函数和3个get函数是内置成员函数,其他函数不作为内置函数。


参考解答(在看参考解答时,注意每个文件中#include部分的写法):
头文件Triangle.h

class Triangle
{
public:
	void setA(double x){a=x;};  //内置函数要定义在头文件中
	void setB(double y){b=y;};
	void setC(double z){c=z;};

	double getA(){return a;}
	double getB(){return b;}
	double getC(){return c;}

	bool isTriangle();//判断是否构成三角形
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
private:
	double a,b,c; //三边为私有成员数据
};

头文件Triangle.h还可以如下所示

class Triangle
{
public:
	inline void setA(double x);  //内置函数在类内声明
	inline void setB(double y);
	inline void setC(double z);

	inline double getA();
	inline double getB();
	inline double getC();

	bool isTriangle();//判断是否构成三角形
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
private:
	double a,b,c; //三边为私有成员数据
};

inline void Triangle::setA(double x)
{
	a=x;
};  //内置函数在类外定义,但一定在头文件中
inline void Triangle::setB(double y)
{
	b=y;
};
inline void Triangle::setC(double z)
{
	c=z;
};

inline double Triangle::getA()
{
	return a;
}
inline double Triangle::getB()
{
	return b;
}
inline double Triangle::getC()
{
	return c;
}

用于定义类的triangle.cpp

#include "Triangle.h"
#include 
bool Triangle::isTriangle()
{
	return (a+b>c&&a+c>b&&b+c>a);
}

double Triangle::perimeter()
{
	return a+b+c;
}

double Triangle::area()
{
	double p=(a+b+c)/2;
	return sqrt(p*(p-a)*(p-b)*(p-c));
}

用于写测试程序的main.cpp

#include
#include "Triangle.h"
using namespace std;
int main()
{	Triangle tri1;	//定义三角形类的一个实例(对象)
	double x,y,z;
	cout<<"请输入三角形的三边:";
	cin>>x>>y>>z;
	tri1.setA(x);tri1.setB(y);tri1.setC(z);	//为三边置初值
	if(tri1.isTriangle())
	{ 
		cout<<"三条边为:"<



你可能感兴趣的:(2012级C++教学,C++课堂在线)