功能:设计实现三个图形类:Circle(圆)、Rectangle(矩形)、Triangle(三角形)

  • Circle类基本信息:圆心坐标、半径
    Rectangle类基本信息:长、宽
    Triangle类基本信息:三个顶点坐标
    其中:成员变量为private属性,成员函数为public属性

  • 每个图形类有多个构造函数:缺省构造函数、带参数的构造函数

  • 每个图形类有计算图形面积GetArea(),显示图形的基本信息Show(),修改基本信息
    函数Set(形参)。例如:圆形;通过GetArea()计算圆的面积;Show()显示圆心坐标、
    直径、周长、面积等基本信息; Set(int x, int y, int r)可以修改圆心坐标和半径 ;check_input()检查输入数据是否合理

     注意:多个构造函数的声明方式与定义实现。当输入数据不合理时,要有相应的处理和提示
    

代码:

#include<iostream>
#include<math.h>
#define PI 3.1415926
using namespace std;//Circle类
class Circle
{public:Circle();  //不带参数的默认构造函数Circle(int x, int y, int r):x(x),y(y),r(r){ } //采用初始化列表进行初始化的带参构造函数~Circle(void)     //析构函数{cout<<"\nCircle object is being deleted\n"<<endl; }//计算圆的面积double GetArea()   ={double circle_area;circle_area = PI * this->r * this->r;return circle_area;}//显示圆的基本信息void Show()  {cout<<"以下是圆的一些基本信息:"<<endl; cout<<"圆心坐标:("<<this->x<<" , "<<this->y<<")"<<endl;cout<<"直径D = "<<2*this->r<<endl;cout<<"周长 = "<<2*PI*this->r<<endl; cout<<"面积 = "<<GetArea()<<endl; }//修改圆的信息void Set(int x, int y, int r)  {this->x=x;this->y=y;this->r=r;}//对输入的规范性检查int Check_input()  {if(this->r<0){cout<<"输入错误:圆的半径不能为负值!"<<endl;return -1;}return 1;}private:       //私有成员变量int x;int y;int r;
};//Rectangle类,和Circle类似,不再赘述
class Rectangle
{public:Rectangle();Rectangle(int x, int y): x(x),y(y){ } ~Rectangle(void){cout<<"\nRectangle object is being deleted\n"<<endl; }int GetArea(){return this->x * this->y;}void Show(){cout<<"以下是矩形的一些基本信息:"<<endl; cout<<"长 = "<<this->x<<" 宽 = "<<this->y<<endl; cout<<"周长 = "<< 2*(this->x + this->y) <<endl; cout<<"面积 = "<<GetArea()<<endl; }void Set(int x, int y){this->x=x;this->y=y;}int  Check_input(){if(this->x<=0 || this->y<=0){cout<<"输入错误:长度不能为负值或0!"<<endl;return -1;}return 1;}private:int x;int y;
};//Triangle类
class Triangle
{public:Triangle();Triangle(int x1, int y1, int x2, int y2, int x3, int y3): x1(x1),y1(y1),x2(x2),y2(y2),x3(x3),y3(y3){ }~Triangle(void){cout<<"\nTriangle object is being deleted\n"<<endl; }//获取两点间的距离,也就是三角形两个顶点构成的边的长度 double GetLength(int x1, int y1, int x2 ,int y2){double side_length;side_length = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) );return side_length;}double GetPerimeter(){double a,b,c;double perimeter;a = GetLength(this->x1, this->y1, this->x2, this->y2);b = GetLength(this->x1, this->y1, this->x3, this->y3);c = GetLength(this->x2, this->y2, this->x3, this->y3);perimeter = a + b + c ;return perimeter;}//由三角形的三条边计算三角形的面积,公式可以百度~double GetArea(){double a,b,c;double p;double area;a = GetLength(this->x1, this->y1, this->x2, this->y2);b = GetLength(this->x1, this->y1, this->x3, this->y3);c = GetLength(this->x2, this->y2, this->x3, this->y3);p = GetPerimeter()/2.0;area = sqrt( p*(p-a)*(p-b)*(p-c) ); return area;}void Show(){cout<<"以下是三角形的一些基本信息:"<<endl;  cout<<"周长 = "<<GetPerimeter()<<endl; cout<<"面积 = "<<GetArea()<<endl; } void Set(int x1, int y1, int x2, int y2, int x3, int y3){this->x1 = x1;this->y1 = y1;this->x2 = x2;this->y2 = y2;this->x3 = x3;this->y3 = y3;}int Check_input(){if( (this->x1-this->x2)*(this->y2-this->y3) == (this->x2-this->x3)*(this->y1-this->y2) ){cout<<"输入错误:三个顶点不能构成三角形"<<endl;return -1;}return 1;}private:int x1;int y1;int x2;int y2;int x3;int y3;} ;//main函数,用于测试int main(){int x,y,r;int x1,y1,x2,y2,x3,y3;char flag;//圆的测试部分 cout<<"请输入圆的相关信息:圆心(x , y)  半径 r "<<endl;cin>>x>>y>>r;Circle* circle_obj = new Circle(x,y,r);if(circle_obj->Check_input()>0){circle_obj->Show(); } cout<<endl<<"是否需要对圆的信息进行修改?Y/N"<<endl;cin>>flag;if(flag=='Y'||flag=='y'){cout<<"请输入修改后圆的信息: 圆心(x , y)  半径 r "<<endl;cin>>x>>y>>r;circle_obj->Set(x,y,r);if(circle_obj->Check_input()>0){circle_obj->Show();}}delete circle_obj;//矩形的测试部分cout<<"请输入矩形的相关信息:长 宽"<<endl;cin>>x>>y;Rectangle* rectangle_obj = new Rectangle(x,y);if(rectangle_obj->Check_input()>0){rectangle_obj->Show();}cout<<endl<<"是否需要对矩形的信息进行修改?Y/N"<<endl;cin>>flag;if(flag=='Y'||flag=='y'){cout<<"请输入修改后矩形的信息:长 宽 "<<endl;cin>>x>>y;rectangle_obj->Set(x,y);if(rectangle_obj->Check_input()>0){rectangle_obj->Show();}}delete rectangle_obj;//三角形测试部分cout<<"请输入三角形的三个顶点坐标:(x1,y1) (x2,y2) (x3,y3)"<<endl;cin>>x1>>y1>>x2>>y2>>x3>>y3;Triangle* triangle_obj = new Triangle(x1,y1,x2,y2,x3,y3);if( triangle_obj->Check_input()>0){triangle_obj->Show();} cout<<endl<<"是否需要对三角形的顶点坐标进行修改?Y/N"<<endl;cin>>flag;if(flag=='Y'||flag=='y'){cout<<"请输入修改后三角形的三个顶点坐标:(x1,y1) (x2,y2) (x3,y3) "<<endl;cin>>x1>>y1>>x2>>y2>>x3>>y3;triangle_obj->Set(x1,y1,x2,y2,x3,y3);if(triangle_obj->Check_input()>0){triangle_obj->Show();}}delete triangle_obj;return 0;}

运行结果截屏:

参考资料:

c++构造函数的默认参数

c++ 实现图形类设计相关推荐

  1. 图形类设计——c++圆、矩形、三角形类的设计

    题目要求: 设计三个图形类:Circle(圆).Rectangle(矩形).Triangle(三角形): 1.Cirlce 类基本信息:圆心坐标.半径: Rectangle 类基本信息:长.宽: Tr ...

  2. java 圆类 圆锥类_以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  3. 设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法

    设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类.长方形类.正方形类.三角形类来继承图形类,并实现上述两个方法 设计抽象类 就要使用abstract关键字,抽象类中的 ...

  4. java界面设计素材_9.java图形用户界面设计.ppt

    9.java图形用户界面设计.ppt 还剩 150页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 151v 程 ...

  5. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  6. 类设计原则及设计模式(一篇就够)

    类设计原则及设计模式 类设计的六大原则 设计模式定义 设计模式的分类 创建型模式 1. 简单工厂和工厂方法模式 定义和分类 2. 抽象工厂模式 3. 单例模式 定义 优缺点 饿汉式单例与懒汉式单例类比 ...

  7. 图形的设计和HTML和的CSS

    在这篇文章中,我将把重点放在只是两个的课程:一个介绍性的图形的设计和一个介绍性的HTML和的CSS.当然.(,如网站.序号网站域名排名的策略时间规划,移动台第一次,的信息体系结构,的可用性,用户-中心 ...

  8. JAVA图形界面设计

    图形界面设计 1 Java Swing 概述 图形化界面(Graphics User Interface,GUI)是指采用图形方式显示的计算机操作用户界面. 通过图形化界面,用户和程序之间可以方便地进 ...

  9. Java图形用户界面设计音乐播放器

    Java图形用户界面设计音乐播放器 设计思路 音乐播放器的基础是可以播放音乐,所以要有一个实现播放音乐功能的类audioplay,图形界面就是通过动作调用audioplay里面的函数.关于实现播放器图 ...

最新文章

  1. 操作系统课设--具有二级索引的文件系统
  2. [知识图谱实战篇] 八.HTML+D3绘制时间轴线及显示实体
  3. C语言 满分代码:L1-044 稳赢 (15分)(解题报告)
  4. 最常用的 HTTP 方法:GET 和 POST
  5. 话里话外:80后,那人生初始最关键的一步
  6. linux|计划任务
  7. python 读bin文件_Python学习 | Python 读写文件-bin文件打开
  8. 利用 Python 爬取58同城品牌公寓(附带租房指南)
  9. 租房需要注意些什么?
  10. Windows下安装igraph
  11. You-get视频下载工具
  12. 论文笔记2-如何写一篇SCI论文
  13. 请你设计一个用于填充n阶方阵的上三角区域的程序。
  14. 【芯片驱动】SMG42630的固定步数实现
  15. 终端定制行业分销初步设计
  16. 怎么培养孩子的金钱观
  17. linux中的ubiq命令用途,学习Linux命令(一)
  18. PHP 使用 PhpSpreadsheet
  19. matlab在三维图侧面添加二维图
  20. maka做出好设计_MAKA做出好设计

热门文章

  1. PTA-JAVA-类和对象
  2. 004、利用 百度AI 语音技术,把语音转文本
  3. 单机版简易考试系统开发过程讲解(C#注册机、用户注册、考试系统、有偿提供全部源码)
  4. 逃离塔克夫离线TT辅助
  5. win7用html做桌面,Win7系统3d桌面如何设置?Win7系统实现3d桌面的方法
  6. app开发和web开发_了解2020年现代Web App开发的概念
  7. 《构建跨平台APP:jQuery Mobile移动应用实战》连载三(整蛊小游戏)
  8. Biopython | 计算蛋白质的接触图(contact map)
  9. Ubuntu14.04+CUDA8.0+TitanX+caffe配置教程
  10. python ls命令_ls命令