设计如下类:
    1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,
    内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个
    三角形。
     2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
     3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,
     面积显示。

#include<iostream>
#include<cmath>
using namespace std;
class point
{
private:int x;int y;
public:point();//无参数的构造函数point(int _x,int _y):x(_x),y(_y){}//有参数的构造函数~point() {};//注意!加{}才是定义,声明完必须定义,若此处无{},类外也没定义,则报错point(point& a) { x = a.x; y = a.y; };//拷贝构造函数int getx()//建立函数目的:提供接口,可以访问私有变量{return x;}int gety(){return y;}//friend class line;// 老师建议少使用友元
};
class line
{
private:point p1,p2;
public:line(): p1(0, 0), p2(0, 0){}line(point p11,point p12):p1(p11),p2(p12){}~line() {};//析构函数line(line& l) { p1 = l.p1; p2 = l.p2; };double length();//求线段长度//friend class triangle;
};
class triangle
{
private:line l1,l2, l3;
public:triangle(int l1=0,int l2=0,int l3=0);triangle(line a, line b, line c) :l1(a), l2(b), l3(c) {}~triangle() {};void judje();//判断是否是三角形void area();//算面积
};
point::point()
{x = 1;y = 1;
}
double line::length()
{double l;int x1,y1, x2, y2;x1 = p1.getx();y1 = p1.gety();x2 = p2.getx();y2 = p2.gety();l = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));return l;
}
void triangle::judje()//判断能否构成三角形
{if ((l1.length() + l2.length() > l3.length()) && (l1.length() + l3.length() > l2.length())&& (l2.length() + l3.length() > l1.length()))//l1.length后面如果没有(),不是函数{cout << "可以构成三角形"<<endl;area();}elsecout << "不能构成三角形" << endl;
}
void triangle::area()
{double p,s;p = (l1.length() + l2.length() + l3.length())/2;//海伦公式算面积s = sqrt(p * (p - l1.length()) * (p - l2.length()) * (p - l3.length()));cout << "三角形面积为:" << s << endl;}
int main()
{int x1, y1;cout << "A点坐标:";cin >> x1>> y1;point p1(x1, y1);cout << "B点坐标:";cin >> x1 >> y1;point p2(x1, y1);cout << "C点坐标:";cin >> x1 >> y1;point p3(x1, y1);line l1(p1, p2);line l2(p1, p3);line l3(p2, p3);l1.length();l2.length();l3.length();triangle t(l1,l2,l3);t.judje();return 0;
}

设计如下类: 1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端, 内含两个Point类的对象;建立Triangle类,表示一个三角形相关推荐

  1. 设计一个扩展自抽象类geometricobject的新的triangle类_面向对象设计原则之开放封闭原则(开闭原则OCP)...

    (1) 定义 一个软件实体(类.模块.函数等),对于扩展是开放的,对于更改是封闭的. 对于扩展是开放的:这意味着模块的行为是可以扩展的.当应用的需求发生改变时,我们可以对模块进行扩展,比如增加新的类或 ...

  2. 定义一个Triangle类表示三角形,测试这个三角形类的所有方法

    定义一个Triangle类表示三角形,其中三个double型变量a.b.c表示三条边长.为该类定义两个构造方法:默认构造方法设置三角形的三条边长都为0.0; 带三个参数的构造方法通过传递三个参数创建三 ...

  3. python定义一个triangle类_设计一个程序,程序中有三个类,Triangle,Lader,Circle。...

    //此程序写出三个类,triangle,lader,circle:其中triangle类具有类型为double的a,b,c边以及周长,面积属性, //具有周长,面积以及修改三边的功能,还有判断能否构成 ...

  4. Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:

    画出Triangle类和GeometricObject类的UML图,并实现这些类.编写一个测试程序,提示用户输入三角形的三条边.颜色以及一个boolean值表明该三角形是否填充.程序需要根据输入创建一 ...

  5. 设计一个扩展自抽象类geometricobject的新的triangle类_如何进行代码抽象设计?

    如何写好一段代码?直接CRUD.if-else.for.一个大方法等实现,从完成任务的角度来说没任何问题,但是会遇到一些问题,例如:后续写个新逻辑又得重新开发,而且代码相似度很高:想添加一个额外的功能 ...

  6. 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 问题引入 近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码 ...

  7. MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便

    先看一下我想要的结果: 很容易它就是一个单选按钮组,当我后台为Html对象(HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MV ...

  8. JAVA定义Triangle类用于表示三角形,其任意两个边的和必须大于第三条边。

    文章目录 前言 一.定义TriangleException异常类. 二.引用Triangle类用于声明任何违反以上规则的输入方. 总结 1.使用步骤 1.定义并建立一个Triangle类 代码如下(示 ...

  9. ndarray 与 array 的区别 关系,所以ndarray是一个类对象,而array是一个方法

    ndarray 与 array 的区别 关系 置顶 wanglll* 2020-02-06 20:00:37  8455  已收藏 17 分类专栏: 数据分析 文章标签: numpy 版权 ndarr ...

最新文章

  1. Java培训出来后一般多少工资
  2. 麒麟处理器是基于arm的吗_麒麟芯片是基于ARM构架,如果得不到授权华为还能活吗?...
  3. 简述Android触摸屏手势识别
  4. Unity_UIWidgets学习笔记03_组件_Container
  5. PHP通过CURL或file_get_contents请求第三方地址
  6. html5 js选择器,使用HTML5的JS选择器操作页面中的元素
  7. [vue] vue的属性名称与method的方法名称一样时会发生什么问题?
  8. android 开源 数据库,Android开源数据库框架-LitePal的使用
  9. Python遇到的问题(一)
  10. 简述Struts2 Convention零配置
  11. .NET 源代码的安全性(源代码工具真正比拼) (論)
  12. 一:Proficloud - EMMA能源管理+EMpro智能电表
  13. 炫龙dcpro黑苹果_毁灭者DC W650DC装黑苹果心得
  14. android手机主流屏幕大小,如何选择适合自己的手机屏幕大小 屏幕大小选择标准【详解】...
  15. wifi工具iw常用操作
  16. python任务栏显示网速_win10状态栏显示网速小工具_超好用
  17. 随机身份证号码计算年龄
  18. RH358配置电子邮件传输--配置仅发送电子邮件服务
  19. 青年大学习简单窗口使用教程
  20. Mac配置Qt环境和把应用打包成dmg文件

热门文章

  1. 自定义View 实现圆形seekbar (音量旋钮)
  2. 腾讯区块链的三年与它的打法 |链捕手
  3. miui系统备份恢复失败(一招解决,,无需技术也行)
  4. 【C#本质论 十一】合式类型(二)程序集引用、XML注释、垃圾回收和资源清理
  5. java的枚举类型是什么_什么是枚举(java枚举类型enum用法)
  6. 【Unity】场景搭建-天空 山脉 草木 湖泊
  7. 赵小楼《天道》《遥远的救世主》深度解析(115)婚姻的观点
  8. wps交叉表_利用Excel电子表格制作交叉报表
  9. 笔记本电脑重装win7/win10系统教程
  10. 计算机系统运行太慢,如何解决电脑运行速度慢