C++代码编程学习(2):类和对象封装部分的两个案例-立方体与点圆位置

news2024/11/15 11:14:26

C++类与对象 封装的学习 挺有趣的!

一、前言

  昨日有点事忙了些,今天把昨天学习的两个案例给整理一下,C++确实比较原始基础,在学习过程中需要好好总结分析与记录。

二、效果展示

  • 案例一:设计立方体
    立方体的面积和体积
    用成员函数的方法判断两个立方体是否相等
    在这里插入图片描述

  • 案例二:点圆位置(这个照片不太有趣~)
    设计一个圆形类 和 一个点类 计算二者之间的位置关系
    在这里插入图片描述

三、实现步骤

  1. 设计立方体
    创建立方体类,之后在成员函数中添加有关立方体边长的判断方法。
  2. 点圆位置
    先创建点类,再创建圆类,之后位置判断函数,这里初次尝试使用 .h 和 .cpp 文件布局设置。

注意,C++代码编程的基本规则,小括号啊!花括号啊!分号啊!不要漏掉。

五、编码实现

  1. 设计立方体
#include <iostream>
#include<string>
using namespace std;

class cube {
public:
	void setABC(int a,int b,int c) {
		m_a=a; m_b=b;m_c = c;
	}

	int getArea() {
		return 2*m_a*m_b+2*m_a*m_c+2*m_b*m_c;
	}

	int getVolume() {
		return m_a * m_b * m_c;
	}

	bool isSame(cube& c1) {
		if (c1.m_a==m_a && c1.m_b==m_b && c1.m_c==m_c) return true;
		else return false;
	}

private:
	int m_a, m_b, m_c;

};



int main() {
	cube c1,c2;
	c1.setABC(10, 10, 10);
	c2.setABC(10, 10, 10);
	cout << "立方体的面积为: " <<  c1.getArea() << endl;
	cout << "立方体的体积为: " << c1.getVolume() << endl;
	if (c2.isSame(c1)) cout << "两个cube一样" << endl;
	else cout << "两个cube不一样" << endl;
	system("pause");
	return 0;
}
  1. 点圆位置
  • 布局文件
    在这里插入图片描述
  • 头文件1:circle.h
#pragma once
#include <iostream>
#include "point.h"
using namespace std;

class circle {
public:
	void setCenter(point c);
	void setRadius(int r);
	int getCenterX();
	int getCenterY();
	int getRadius();
private:
	point center;
	int radius;
};

  • 头文件2:point.h
#pragma once
#include<iostream>
using namespace std;

class point {
public:
	void setPx(int x);
	void setPy(int y);
	int getPx();
	int getPy();
private:
	int px, py;
};
  • 源文件1:circle.cpp
#include "point.h"
#include "circle.h"


void circle::setCenter(point c) { center = c; }
void circle::setRadius(int r) { radius = r; }
int circle::getCenterX() { return center.getPx(); }
int circle::getCenterY() { return  center.getPy(); }
int circle::getRadius() { return radius; }
  • 源文件2:point.cpp
#include "point.h"


void point::setPx(int x) { px = x; }
void point::setPy(int y) { py = y; }
int point::getPx() { return px; }
int point::getPy() { return py; }
  • 源文件3:circleLoca.cpp
// 点和圆的关系
// 设计一个圆形类 和 一个点类 计算二者之间的位置关系
 
#include<iostream>
#include<string>
using namespace std;
#include "point.h"
#include "circle.h"

void circleLoca(point& p1, circle& c1) {
	int disX = p1.getPx() - c1.getCenterX();
	int disY = p1.getPy() - c1.getCenterY();
	int dis = disX * disX + disY * disY;
	int disR = c1.getRadius() * c1.getRadius();
	//cout << "dis" << dis << "   disR" << disR << endl;
	if (dis > disR) cout << "圆外" << endl;
	else if (dis == disR) cout << "圆上" << endl;
	else cout << "圆内" << endl;
}


int main(){
	point cen;
	point p1;
	circle c1;
	// 圆心
	cen.setPx(10);
	cen.setPy(0);
	//点属性设置
	p1.setPx(20);
	p1.setPy(0);
	// 圆属性设置
	c1.setCenter(cen);
	c1.setRadius(10);
	// 圆点位置判断
	circleLoca(p1, c1);
	system("pause");
	return 0;
}


代码是在 visual studio 中编写的,该软件还是比较好用的,我安装的是2022专业版;

共勉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里微服务质量保障系列(一):微服务知多少

年初买了一本集团巨佬联合出的书《阿里测试之道》&#xff0c;然后认真拜读了下&#xff0c;我相信看过的同学都会获益匪浅&#xff0c;此书分享了阿里在大促保障、移动App测试、大数据测试、AI系统测试、云计算测试、资损防控、物流类测试等领域的方法、技术和工具平台&#x…

十一、Properties、多线程

Properties集合 Properties作为Map集合的使用 介绍 是一个Map体系的集合类Properties可以保存到流中或从流中加载属性列表中的每个键及其对应的值都是一个字符串 基本使用 public static void main(String[] args) {Properties prop new Properties();//增prop.put("…

Pytorch c++ 部署报错解决方案

目录 1. Only the versions between 2017 and 2019 (inclusive) are supported! 2. Cannot find cuDNN library. Turning the option off C 部署的时候&#xff0c;demo 写完之后&#xff0c;提示如下错误 1. Only the versions between 2017 and 2019 (inclusive) are sup…

使用Kubernetes部署xxl-job-admin及xxl-job执行器服务

部署环境 xxl-job-2.4.0kubernetes-1.26 这里以xxl-job官方的2.4.0的代码为例子&#xff0c;在官方编写的Dockerfile基础上使用dockerkubernetes进行部署&#xff0c;xxl-job-admin和执行器的Dockerfile、application等配置文件并不是关键&#xff0c;所以这里示例安装以官方…

Linux系统初始化进程及文件(带命令)

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.系统初始化进程及文件 1.init 进程 2.Systemd概述 3.SysVi…

【Java语言】— 循环结构 :for循环

循环结构&#xff1a;for循环 1.for循环 控制一段代码反复执行很多次。 for循环的格式如下&#xff1a; for (初始化语句;循环条件;迭代语句){循环体语句(重复执行的代码);}下面我们通过案例&#xff1a;输出3次HelloWorld感受一下。 //需求&#xff1a;输出3次HelloWorld…

OpenOCD 不同仿真器使用操作总结记录

针对不同的仿真器使用 OpenOCD 时候的设置操作总结 ...... 矜辰所致目录前言一、OpenOCD 环境搭建二、OpenOCD 基本测试三、Makefile 中仿真器配置3.1 ST-link3.2 Jlink3.2 CMSIS-DAP&#xff08;待更新&#xff09;结语前言 在使用 GCC 环境开发 ARM 系列芯片的时候&#x…

ArcGIS基础实验操作100例--实验35等高线生成DEM

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验35 等高线生成DEM 目录 一、实验背景 二、实验数据 三、实验步骤 方法一 &#xff…

4.5、静态路由配置及其可能产生的路由环路问题

静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表\color{red}人工配置路由表人工配置路由表。 这种人工配置方式简单、开销小。但不能及时适应网络状态&#xff08;流量、拓扑等&#xff09;的变化。\color{red}但不能及时适应网络状态&#xff08…

我的世界Bukkit服务器插件开发教程(十三)资源包与玩家资料

十三、资源包与玩家资料 1.资源包&#xff08;Resource Pack&#xff09; 早期的 Minecraft 并没有资源包一说&#xff0c;而是被叫做材质包。有些服务器为了让玩家拥有更好的游戏体验&#xff0c;一般会在自己特制的客户端中存放一些资源包供玩家加载。 显然&#xff0c;使用…

自动梯度计算

神经网络的参数主要通过梯度下降来进行优化&#xff0e; 当确定了风险函数以及网络结构后&#xff0c; 我们就可以手动用链式法则来计算风险函数对每个参数的梯度&#xff0c; 并用代码进行实现&#xff0e; 但是手动求导并转换为计算机程序的过程非常琐碎并容易出错&#xff0…

二叉树的基础oj题(单值二叉树、相同的树、对称二叉树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的构建和遍历、翻转二叉树)

今天&#xff0c;我带来二叉树的基础oj题 目录单值二叉树&#xff1a;[链接](https://leetcode.cn/problems/univalued-binary-tree/)相同的树&#xff1a;[链接](https://leetcode.cn/problems/same-tree/)对称二叉树&#xff1a;[链接](https://leetcode.cn/problems/symmetr…

syzkaller 黑盒测试1:环境搭建

syzkaller 黑盒测试1&#xff1a;环境搭建 近期需要使用syzkaller对某Linux发行版系统内核进行测试&#xff0c;但是未提供内核源码&#xff0c;只能在黑盒条件下测试。这是笔者第一次接触syzkaller&#xff0c;对测试流程不太熟悉。另外&#xff0c;网上很少有syzkaller黑盒测…

C语言版扫雷——从0到1实现扫雷小游戏

&#x1f412;博客名&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;有志者&#xff0c;事竟成&#xff0c;破釜沉舟&#xff0c;百二秦关终属楚&#xff1b;苦心人&#xff0c;天不负&#xff0c;卧薪尝胆&#xff0c;三千越甲可吞吴。 扫雷思维导图 目录 扫雷思维…

9_2、Java基本语法之常用类日期、时间类的使用

一、JDK 8之前时间日期API jdk8之前的日期时间类 1.System的currentTimeMillis() 2.java.util.Date以及子类java.sql.Date 3.SimpleDateFormat 4.Calender类&#xff1a;日历类 1、获取系统当前时间&#xff1a;System类下的currentTimeMillis(); //返回的是当前时间与1970年…

MySQL--整合Keepalived进行双机热备自动切换(升级版)

原文网址&#xff1a;MySQL--整合Keepalived进行双机热备自动切换&#xff08;升级版&#xff09;_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL整合Keepalived进行双机热备自动切换&#xff08;升级版&#xff09;。 服务器要考虑高可用问题。nginx、tomcat、缓存、队列、数…

Java开发的古董拍卖系统竞标系统拍卖网

简介 古董展品拍卖网站 用户可以注册成为买家也可以申请开店成为卖家&#xff0c;发布古董展品&#xff0c;设置拍卖起止时间进行展品的拍卖。如果早于拍卖开始时间或者晚于拍卖结束时间&#xff0c;则不可以竞拍。多人竞拍&#xff0c;买家可以根据最高价设置谁中标&#xff…

系分 - 结构化方法【概念】

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 系分 - &#xff08;概念&#xff09;结构化方法 结构化方法贯穿整个软件工程全部&#xff0c;可以单独细分出来作为某个软件工程环节的技术指引 结构化方法&#xff0c;由结构化分析&#xff08;SA&#xff0c;St…

【C语言进阶】速学,不会用数据库可不能再错过文本与二进制文件操作

目录 ✨前言✨&#xff1a; &#x1f388;一、文本文件与二进制文件&#x1f388;&#xff1a; &#x1f381;二、文件读取结束的判定&#x1f381;&#xff1a; 1.错误使用 feof 函数&#xff1a; 2.判断文件读取结束&#xff1a; &#x1f38a;三、文件缓冲区&#x1f38…

Ubuntu虚拟机图文安装详细教程

Hello, 小伙伴们&#xff0c;大家好&#xff01;今天教大家一步一步进行ubuntu虚拟机的安装。俗话说的好&#xff1a;“工欲善其事必先利其器”&#xff0c;作为一名嵌入式软件开发人员&#xff0c;我们必须熟悉Linux系统的操作及使用&#xff0c;熟练掌握Linux系统下的开发&am…