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

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

一、第一种直接方法

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. springcloud之简介

    springcloud官方文档翻译网站:https://springcloud.cc/ 一.网站架构的演变过程.(这些架构描述的不是很到位,之后需要从新学习) 传统架构 —> 分布式架构 —&g ...

  2. MySQL中change与modify的用法与区别

    浅析MySQL中change与modify的区别   MySQL版本 show variables like 'version'; 表结构 desc student; 修改表 例如:修改表studen ...

  3. numpy第三方库

    # 导入numpy 并赋予别名 np import numpy as np # 创建数组的常用的几种方式(列表,元组,range,arange,linspace(创建的是等差数组),zeros(全为 ...

  4. 10-Pandas之数据融合(pd.merge()、df.join()、df.combine_first()详解)

    一.pd.merge() pd.merge()的常用参数 参数 说明 left 参与合并的左侧DataFrame right 参与合并的右侧DataFrame how 如何合并.值为{'left',' ...

  5. PHP array_reverse() 函数

    实例 返回翻转顺序的数组: <?php $a=array("a"=>"Volvo","b"=>"BMW" ...

  6. PHP key() 函数

    ------------恢复内容开始------------ 实例 从当前内部指针位置返回元素键名: <?php$people=array("Peter","Joe ...

  7. PHP fread() 函数

    定义和用法 fread() 函数读取打开的文件. 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行. 该函数返回读取的字符串,如果失败则返回 FALSE. 语法 string ...

  8. sockaddr_in & sockaddr

    #define __SOCKADDR_COMMON(sa_prefix) sa_family_t sa_prefix##family 这个宏用于为套接字地址(socket addresses),如“ ...

  9. bzoj 1195 [HNOI2006]最短母串 bfs 状压 最短路 AC自动机

    LINK:最短母串 求母串的问题.不适合SAM. 可以先简化问题 考虑给出的n个字符串不存在包含关系. 那么 那么存在的情况 只可能有 两个字符串拼接起来能表示另外一个字符串 或者某个字符串的后缀可以 ...

  10. Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树

    Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量基础 ...