设计一个三角形类

#include <iostream>

#include <cmath>

using namespace std;

class Trigle
{
public:
	void Setabc (float x,float y, float z);
	void Getabc (float *x,float *y, float *z);
	float Perimeter (void);
	float Area (void);
private:
	float a, b, c;
};

void main(void)
{
	Trigle Tri1;
	Tri1.Setabc (4,5,6);
	float x,y,z;
	Tri1.Getabc (&x,&y,&z);
	cout<<"三条边为:"<<x<<'\t'<<y<<'\t'<<z<<endl;
	cout<<"三角形周长为:"<<Tri1.Perimeter()<<'\t'<<"面积:"<<Tri1.Area()<<endl;
}
void Trigle::Setabc (float x,float y, float z)
{
	do 
	{
		cin>>x>>y>>z;
		a=x;
		b=y;
		c=z;
		if ( a+b>c && a+c>b && b+c>a)
			break;
	}while (1);
}
void Trigle::Getabc (float *x,float *y, float *z)
{
	*x=a;
	*y=b;
	*z=c;
}

float Trigle::Perimeter (void)
{
	int sum;
	sum=a+b+c;
	return sum;
}
float Trigle::Area (void)
{
	float p,s,m;
	p=(a+b+c)/2;
	s=p*(p-a)*(p-b)*(p-c);
	m=sqrt(s);
	return m;
}

 
设计一个三角形类并用两个类分开编译的想法可能是为了展示面向对象编程中的模块化、继承或组合等概念。下面是一个简单的例子,我们创建一个 `Shape` 基础类(或接口),然后让 `Triangle` 类从它派生出来。 ### 第一步:编写 Shape.java 文件 这是所有形状的基本父类,其中包含颜色和其他通用的属性和方法: ```java // Shape.java public class Shape { protected String color; public Shape(String color) { this.color = color; } // 抽象出面积计算的方法,在子类中实现 public double getArea() { return 0; } @Override public String toString(){ return "This shape's color is "+color+"."; } } ``` 在这个文件里定义了形状的颜色,并预留了一个获取区域大小(`getArea`)的方法供各个具体图形去覆盖实施。 ### 第二步:编写 Triangle.java 文件 现在我们建立我们的三角形类,让它扩展刚才所定义的 `Shape` 类型: ```java // Triangle.java public class Triangle extends Shape{ private double base; private double height; public Triangle(String color, double base, double height){ super(color); this.base=base; this.height=height; } // 实现来自超类Shape的getArea方法 @Override public double getArea(){ return (this.base*this.height)/2; } @Override public String toString(){ return super.toString()+" It also has a area of "+this.getArea()+"."; } } ``` 在此处,我们将三角形视为一种特定类型的“形状”,因此将其设置为继承自 `Shape` 。此外还增加了底边(`base`) 和高 (`height`) 属性用于计算其面积,并实现了 `getArea` 函数以返回正确的结果。 这两个`.java`源码应该单独存放在各自的同名 `.java` 档案之中,并通过命令行或其他IDE工具依次进行编译及运行测试。 --- **重要提示**: 若要成功编译此类结构,请确保两者位于相同的包(package)下或者正确导入对方所在的包路径(如果是跨包访问的情况)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值