主要练习 :在类中可以让另一个类作为本类的成员。

案例:判断点和圆的位置关系。

一、第一种直接方法

using namespace std;
#include <iostream>
class point
{
public:
void setx(int x)
{
m_x = x;
}
int getx()
{
return m_x;
}
void sety(int y)
{
m_y = y;
}
int gety()
{
return m_y;
}
private:
int m_x;
int m_y;
};
class circle
{
public:
void setr(int r)
{
m_r = r;
}
int getr()
{
return m_r;
}
void setcenter(point center)
{
m_center = center;
}
point getcenter()
{
return m_center;
}
private:
int m_r;
point m_center;
};
void compare(circle &c,point &p)
{
int disance=
(c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) +
(c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());
int rdisance=c.getr()* c.getr();
if (rdisance == disance) cout << "点在圆上";
else if (rdisance > disance) cout << "点在圆内";
else cout << "点在圆外";
}
int main() {
point p;
circle c;
c.setr();//半径长度
point senter;
senter.setx();//圆的坐标
senter.sety();
c.setcenter(senter);
p.setx();//点的坐标
p.sety();
compare(c,p);
return ;
}

二、分开代码

源.cpp中的代码

using namespace std;
#include <iostream>
#include "point.h"
#include "circle.h"
void compare(circle &c,point &p)
{
int disance=
(c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) +
(c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety());
int rdisance=c.getr()* c.getr();
if (rdisance == disance) cout << "点在圆上";
else if (rdisance > disance) cout << "点在圆内";
else cout << "点在圆外";
}
int main() {
point p;
circle c;
c.setr();
point senter;
senter.setx();
senter.sety();
c.setcenter(senter);
p.setx();
p.sety();
compare(c,p);
return ;
}

point.h中的代码

#pragma once
#include <iostream>
using namespace std;
class point
{
public:
void setx(int x);
int getx();
void sety(int y);
int gety();
private:
int m_x;
int m_y;
};

point.cpp中的代码

#include "point.h"
void point ::setx(int x)
{
m_x = x;
}
int point::getx()
{
return m_x;
}
void point::sety(int y)
{
m_y = y;
}
int point::gety()
{
return m_y;
}

circle.h中的代码

#pragma once
#include <iostream>
using namespace std;
#include "point.h"
class circle
{
public:
void setr(int r);
int getr();
void setcenter(point center);
point getcenter();
private:
int m_r;
point m_center;
};

circle.cpp中的代码

#include "circle.h"
#include "point.h"
using namespace std;
void circle::setr(int r)
{
m_r = r;
}
int circle::getr()
{
return m_r;
}
void circle::setcenter(point center)
{
m_center = center;
}
point circle::getcenter()
{
return m_center;
}

C++类和对象的封装 点和圆的案例的更多相关文章

  1. 01 语言基础+高级:1-2 面向对象和封装_day06【类与对象、封装、构造方法】

    day06[类与对象.封装.构造方法] 面向对象类与对象三大特征——封装构造方法 能够理解面向对象的思想能够明确类与对象关系能够掌握类的定义格式能够掌握创建对象格式,并访问类中的成员能够完成手机类的练 ...

  2. Python中用类实现对象和封装

    """ 用类实现对象和封装 对象:对应客观世界的事物,将描述事物的一组数据和与这组数据有关的操作封装在一起, 形成一个实体,这个实体就是对象 类:具有相同或相似性质的对象 ...

  3. java第2天:类,对象,封装和构造方法

    1 面向对象简述 将 {1,3,45,56,78,90}转化为[1,3,45,56,78,90] 1-2 方法1:面向过程 代码块 public class test { public static ...

  4. oop面向对象【类与对象、封装、构造方法】

    今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...

  5. day06_类与对象、封装、构造方法

    02_面向对象与常用类 01_面向对象思想的概述 面向过程:当需要实现一个功能的时候,每个具体的步骤都需要亲力亲为,详细处理每一个细节. 面向对象:当需要实现一个功能的时候,不关心具体步骤,而是找一个 ...

  6. java语言基础(四)_面向对象_类_对象_封装_构造

    面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...

  7. 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  8. Java(100-113)【类与对象、封装、构造方法】

    1.对象的创建以及使用 Student stu =new Student(); 根据一个类创建一个对象 导包.创建.使用 2.手机练习 有main才能run Phone.java package cn ...

  9. Java—面向对象、类与对象、封装

    理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 面向对象的程序设计方式,是 ...

随机推荐

  1. Linux切换用户时报错/.bash_profile: Permission denied,命令行(终端提示符)出现-bash-4.2$

    Linux切换用户时报错/.bash_profile: Permission denied,命令行(终端提示符)出现-bash-4.2$ 利用su - 切换用户时,发现有一个用户切时出现如下情况 [r ...

  2. JS控制语句及小练习

    一.控制语句 判断: ①if() {} ; if(){}else{} ; if(){}else if{};…… ② switch(){ case "": break; } 循环: ...

  3. ubuntu18.04安装opencv+CUDA10.2+cuDNN+YOLOv3

    安装顺序: Opencv 显卡驱动 CUDA10.2 cuDnn YOLOv3 1.Opencv3.2.0安装 搭建依赖环境 sudo apt-get install build-essential ...

  4. 2020HDU多校第三场 1005 Little W and Contest

    Little W and Contest Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/O ...

  5. Oracle数据库出现[23000][2291] ORA-02291: integrity constraint (SIMTH.SYS_C005306) violated异常

    参考链接 这个异常发生在往中间表中插入数据时,这时出现异常是因为关联的某个表没有插入数据,所以给没有插入数据的关联表插入数据,再给中间表插入数据此时异常就会解决.

  6. 记一次mysql关于limit和orderby的优化

    针对于大数据量查询,我们一般使用分页查询,查询出对应页的数据即可,这会大大加快查询的效率: 在排序和分页同时进行时,我们一定要注意效率问题,例如: select a.* from table1 a i ...

  7. Typora+PicGo-Core(command line)+SMMS、github、gitee实现Typora图片上传到图床

    Typora+PicGo-Core(command line)+SMMS.github.gitee实现Typora图片上传到图床 1 安装插件2 配置config.json    2.1 设置SMMS ...

  8. Linux的VMWare中Centos7用户和用户管理三个系统文件(/etc/passwd-shadow-group解读)和批量创建用户user及用户工作环境path

    Linux 用户和用户组管理 用户工作环境PATH Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用 ...

  9. zabbix脚本发送邮件告警

    目录 zabbix邮箱告警 内部使用第三方邮箱发送邮箱告警 zabbix使用第三方邮箱发送告警 通过脚本使用第三方邮箱发送邮箱告警 zabbix邮箱告警 环境说明: zabbix服务端 192.168 ...

  10. thread-01

    // 8:15 AM/09/28/2017 #pragma once #include <iostream> // std::cout #include <thread> // ...