封装(个人学习笔记黑马学习)

这篇具有很好参考价值的文章主要介绍了封装(个人学习笔记黑马学习)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、格式

#include <iostream>
using namespace std;

const double PI =3.14;


//设计一个圆类,求圆的周长
class Circle {
	//访问权限
	//公共权限
public:

	//属性
	//半径
	int m_r;
	//行为
	//获取圆的周长
	double calculateZC() {
		return 2 * PI * m_r;
	}
};

int main() {

	//通过圆类创造具体的圆
	Circle c1;
	c1.m_r = 10;
	cout << "圆的周长:" << c1.calculateZC() << endl;
	system("pause");
	return 0;
}

封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++


2、案例:设计学生类

设计一个学生类,属性有姓备和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

#include <iostream>
using namespace std;
#include <string>

class Studentt {
public:
	string m_Name;
	int m_Id;

	void showStudent() {
		cout << "姓名:" << m_Name << " 学号:" << m_Id << endl;
	}

	//给姓名赋值
	void setName(string name) {
		m_Name = name;
	}

	//给学号赋值
	void setId(int id) {
		m_Id = id;
	}
};

int main() {

	Studentt s1;
	//s1.m_Name = "张三";
	s1.setName("张三");
	s1.setId(1);
	s1.showStudent();

	Studentt s2;
	s2.m_Name = "李四";
	s2.m_Id = 2;
	s2.showStudent();
	
	system("pause");
	return 0;
}

封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++


3、权限访问

1. public公共权限

2. protected 保护权限

3. private私有权限

#include <iostream>
using namespace std;
#include <string>

//1. public公共权限     成员 类内可以访问 类外也可以访问
//2. protected保护权限  成员 类内可以访问 类外不可以访问   儿子可以访问父亲中的保护内容
//3. private私有权限    成员 类内可以访问 类外不可以访问   儿子不可以访问父亲中保护的内容


class Person {
	//公共权限
public:
	string m_Name;

	//保护权限
protected:
	string m_Car;

	//私有权限
private:
	int m_Password;

public:
	void func() {
		m_Name = "张三";
		m_Car = "拖拉机";
		m_Password = 123456;
	}

};

int main() {

	Person p1;

	p1.m_Name = "李四";
	//p1.m_Car = "奔驰";//保护权限内容 在类外访问不到
	//p1.m_Password = 23456;//私有权限内容,在类外访问不到

	system("pause");
	return 0;
}

4、class和struct区别

  • struct 默认权限为公共
  • class默认权限为私有
#include <iostream>
using namespace std;
#include <string>

class C1 {
	int m_A;//默认权限是私有
};

struct C2 {
	int m_A;//默认权限是公共
};

int main() {

	C1 c1;
	//c1.m_A = 100;

	C2 c2;
	c2.m_A = 100;

	system("pause");
	return 0;
}

5、成员属性私有化

#include <iostream>
using namespace std;
#include <string>

class Person {

	
public:

    //设置姓名
	void setName(string name) {
		m_Name = name;
	}


	//获取姓名
	string getName() {
		return m_Name;
	}

	int getAge() {
		m_Age = 10;
		return m_Age;
	}

	void setLover(string lover) {
		m_Lover = lover;
	}

private:
	string m_Name;//可读可写
	int m_Age;//只读
	string m_Lover;//只写
};

int main() {

	Person p;
	p.setName("张三");
	cout << "姓名:"<<p.getName()<< endl;
	cout << "年龄:" << p.getAge() << endl;
	p.setName("梨花");

	system("pause");
	return 0;
}

封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++


6、案例设计:立方体类

设计立方体类(Cube)
求出立方体的面积和体积
分别用全局函数和成员函数判断两个立方体是否相等

#include <iostream>
using namespace std;
#include <string>

class Cube {

public:

	void setL(int l) {
		m_L = l;
	}
	int getL() {
		return m_L;
	}

	void setW(int w) {
		m_W = w;
	}
	int getW() {
		return m_W;
	}

	void setH(int h) {
		m_H = h;
	}
	int getH() {
		return m_H;
	}

	int calculateS() {
		return 2 * m_L * m_W + 2 * m_W * m_H + 2 * m_L * m_H;
	}

	int calculateV() {
		return m_H * m_L * m_W;
	}

	//利用成员函数判断两个立方体是否相等
	bool isSameByClass(Cube& c) {
		if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH()) {
		return true;
	}
	return false;
}

private:

	int m_L;
	int m_W;
	int m_H;
};

//利用全局函数判断 两个立方体是否相等
bool isSame(Cube& c1, Cube& c2) {
	if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()) {
		return true;
	}
	return false;

}

int main() {

	Cube c1;
	c1.setL(10);
	c1.setW(10);
	c1.setH(10);
	cout << "c1的面积为:" << c1.calculateS() << endl;
	cout << "c1的体积为:" << c1.calculateV() << endl;


	Cube c2;
	c2.setL(10);
	c2.setW(10);
	c2.setH(10);
	cout << "c2的面积为:" << c2.calculateS() << endl;
	cout << "c2的体积为:" << c2.calculateV() << endl;


	bool ret=isSame(c1, c2);
	if (ret) {
		cout << "c1,c2相等" << endl;
	}
	else {
		cout << "c1,c2不相等" << endl;
	}

	int ret2= c1.isSameByClass(c2);
	if (ret2) {
		cout << "c1,c2相等" << endl;
	}
	else {
		cout << "c1,c2不相等" << endl;
	}


	int ret3 = c2.isSameByClass(c1);
	if (ret3) {
		cout << "c1,c2相等" << endl;
	}
	else {
		cout << "c1,c2不相等" << endl;
	}

	system("pause");
	return 0;
}

封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++


7、案例设计:点和圆的关系

设计一个圆形类(Circle),和一个点类 (Point) ,计算点和圆的关系

#include <iostream>
using namespace std;
#include <string>

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 isInCircle(Circle& c, Point& p) {
	//计算两点之间距离 平方
	int distance =
		(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
		(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
	//计算半径的平方
	int rDistance = c.getR() * c.getR();
	//判断关系
	if (distance == rDistance) {
		cout << "点在圆上" << endl;
	}
	else if (distance > rDistance) {
		cout << "点在圆外" << endl;
	}
	else {
		cout << "点在圆内" << endl;
	}
}

 int main(){
	//创建圆
	Circle c;
	c.setR(10);
	Point center;
	center.setX(10);
	center.setY(10);
	c.setCenter(center);
	//创建点
	Point p;
	p.setX(10);
	p.setY(11);
	//判断关系
	isInCircle(c, p);


	system("pause");
	return 0;
}

封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++


封装(个人学习笔记黑马学习),黑马c++学习笔记,学习,笔记,c++

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"




	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;
	}

面向对象.cpp文章来源地址https://www.toymoban.com/news/detail-694277.html

#include <iostream>
using namespace std;
#include <string>
#include "point.h"
#include "circle.h"

//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 isInCircle(Circle& c, Point& p) {
	//计算两点之间距离 平方
	int distance =
		(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
		(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
	//计算半径的平方
	int rDistance = c.getR() * c.getR();
	//判断关系
	if (distance == rDistance) {
		cout << "点在圆上" << endl;
	}
	else if (distance > rDistance) {
		cout << "点在圆外" << endl;
	}else {
		cout << "点在圆内" << endl;
	}
}

 int main(){
	//创建圆
	Circle c;
	c.setR(10);
	Point center;
	center.setX(10);
	center.setY(0);
	c.setCenter(center);
	//创建点
	Point p;
	p.setX(10);
	p.setY(10);
	//判断关系
	isInCircle(c, p);


	system("pause");
	return 0;
}

到了这里,关于封装(个人学习笔记黑马学习)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 内存四区(个人学习笔记黑马学习)

    C++程序在执行时,将内存大方向划分为4个区域: 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回

    2024年02月10日
    浏览(36)
  • 运算符(个人学习笔记黑马学习)

     加减乘除 取模   自增自减     逻辑非! 逻辑与  逻辑或|| 

    2024年02月11日
    浏览(36)
  • 跳转语句(个人学习笔记黑马学习)

          如果是奇数输出,偶数不输出    

    2024年02月11日
    浏览(40)
  • C++类和对象----封装(观看黑马教程整理的笔记)

    C++面向对象的三大特性为:封装、继承、多态 C++认为万事万物都皆为对象,对象上有其属性和行为 例如: ​ 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… ​ 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、

    2024年02月11日
    浏览(47)
  • 通讯录管理系统(个人学习笔记黑马学习)

    通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 显示联系人:显示通讯录中所有联系人信息 删除联系

    2024年02月10日
    浏览(122)
  • c++学习笔记-提高编程-模板(哔站-黑马程序员c++教学视频)

    通用的模具,提高代码复用性 不可以直接使用,只是一个框架;模板的通用性并不是万能的。 3.2.1 函数模板 函数模板的作用:建立一个通用函数,其函数返回值类型和参数类型可以不具体确定,用一个虚拟的类型来代表。 1)语法: templatetypename T//函数声明或定义 函数 temp

    2023年04月11日
    浏览(85)
  • C++从小白到初级工程师【个人学习笔记】

    C++作为能和计算机硬件打交道的语言,在计算机世界中具有重要意义。在Android 应用层的JNI开发中,Android framework层、驱动层、kernel层均使用广泛。 相应的,如果想对Android系统漏洞和安全防护有更多了解,对C++的了解是必不可少的。 本文是笔者对于自己系统学习C++语言的记录

    2024年01月23日
    浏览(43)
  • 【C++从入门到入土】C++学习资料和个人C++笔记整理------导航页

    消失了一段时间,主要在忙着学习c++和毕业的事。上个星期拿到双证,也正式离校了,研究生生活也正式宣布结束,真是一晃就过了三年。 秋招完呢就意识到想做视觉算法(应用工程类,不是research岗位),C++是基本功,所以问了好多C++大佬,整理了一份适合自己的学习路线

    2024年02月13日
    浏览(51)
  • Vue学习笔记(黑马前端)

    Vue阶段作业地址 Vue 快速上手 Vue 概念 / 创建实例 / 插值表达式 / 响应式特性 / 开发者工具 Vue 指令 v-html / v-show / v-if / v-else / v-on / v-bind / v-for / v-model 综合案例 - 小黑记事本 列表渲染 / 删除功能 / 添加功能 / 底部统计 / 清空 Vue 是什么 概念:Vue 是一个用于 构建用户界面 的 渐

    2024年04月15日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包