C++--第7课 - 面向对象基本概念
第7课 - 面向对象基本概念
1. 基本概念
类和对象是面向对象中的两个基本概念。“类”指的是一类事物,是一个抽象概念。“对象”指的是属于某个类的一个实体,是一个具体存在的事物。
类是一种“模板”,可以通过这种模板创建出不同的对象“实例”。对象“实例”是类“模板”的一个具体体现。一个类可以有很多对象,而一个对象必然属于某个类。
2. 类和对象的意义
类用于抽象的描述一类事物所特有的属性和行为。如:电脑类的每个对象都有CPU,内存和硬盘,电脑类的每个对象都可以开机和运行程序。
对象是一个具体的事物,拥有其所属类的所有属性,并且每个属性都是一个特有的值。如:老虎的每个对象(也就是每只老虎),都有不同的体重,不同食量以及不同的性情。
3. 类之间的关系
根据生活中的经验,我们可以把事物进行分类,类之间的界限一般都是很清晰的,如电脑类和老虎类;但是一些类可以再细分,如电脑类可以再分为Dell类,Sony类以及HP类等等;从同一个类细分出来的类和原来的类之间是有关系的,这种关系叫做继承,如HP类继承了电脑类;继承的类拥有原类的所有属性,如HP电脑就是一种电脑,HP电脑也同样的拥有CPU,内存和硬盘;
4. 深入理解类
不但可以抽象的描述一类事物的属性,也可以抽象的描述一类事物的行为;从同一个类细分出来的类不但继承了原有类的属性同时也继承了原有类的行为;继承出的新类可以拥有自己特有的属性和行为;属性主要用于描述类的静态特性,行为主要用于描述类的动态特性。
如:老虎类的属性有颜色,体重,而行为有捕猎和逃跑,而兔子类的属性也有颜色和体重,但是兔子类的行为没有捕猎,只有逃跑。另外,从一个更高的层面看,老虎和兔子都属于动物类,它们都继承了动物类的属性和行为,另外又又自己特定的属性和行为。
5. 深入理解对象
对象是一个类的实例,所谓实例即一个类中的特定的事物。
一个类可以有多个实例,并且这些实例之间是互不相同的。如:人这个类中有几十亿个不同的个体,每一个人都是人这个类的一个实例。
对象和类的关系如同模具和成品的关系,类就是一个模具,利用这个模具可以生成多个不同的成品,而这些成品就是各不相同的对象。
同一个类的不同对象都有对应的类中的属性和行为,但是这些属性和行为可能不完全相同。
6. 类的表示法
(1)改进1
这种表示法确实比画图的方法简单,可是却没有表示出类之间的联系。
关键问题是类之间的继承关系没有表示出来。
继承而来的属性和行为需要重复声明。
(2)改进2
改进的方法简单明了同时也能表示出类之间的联系。
但是需要划线来表示属性和行为,比较麻烦。
考虑更简单的表示法。
(3)改进3
改进2的方法即简单又能够清晰的表示类之间的关系。
但是C++编译器却不能明白,考虑把这种方法介绍给C++编译器。
于是应用一些C语言的关键字和语法特性。
(4)最终方案
改进3的方法开始引入C语言的语法,将表示法推广给编译器。
考虑一下:是不是可以再改进一下让编译器完全读懂呢?
再找共同点:每个类中只有属性和行为,属性是静态特性,行为是动态特性。
C++编译器支持变量和函数,根据相似性考虑用变量表示属性,用函数表示行为。
#include <stdio.h>
struct Biology
{
bool living;
};
struct Animal : Biology
{
bool movable;
void findFood()
{
}
};
struct Plant : Biology
{
bool growable;
};
struct Beast : Animal
{
void sleep()
{
}
};
struct Human : Animal
{
void sleep()
{
printf("I'm sleeping...\n");
}
void work()
{
printf("I'm working...\n");
}
};
int main(int argc, char *argv[])
{
Human human;
human.living = true;
human.sleep();
human.work();
printf("Press any key to continue...");
getchar();
return 0;
}
小结:
类和对象是面向对象方法论中的两个基本概念。
类指的是生活中有共同特性的一类事物。
对象是类的一个具体实例,拥有所属类的特征。
一个类可以有多个对象。
一个对象必然属于某个类。
面向对象方法论直接将生活中的事物映射到程序中。
转载于:https://www.cnblogs.com/free-1122/p/11336179.html
C++--第7课 - 面向对象基本概念相关推荐
- Python第十七课(面向对象基础)
Python第17课(面向对象基础) >>>思维导图>>>中二青年 面向对象编程思想OOP 什么是面向对象 面向对象是一种编程思想,是前辈们总结出的经验,指导 ...
- Java第八课. 面向对象特征3-多态抽象类
Java第八课. 面向对象特征3-多态&抽象类 回顾 1. toString(): 返回对象信息; 打印:syso(对象名.toString()); toString()可以省略,syso(对 ...
- c语言使用node类型指针,C语言利用 void 类型指针实现面向对象类概念与抽象
不使用C++时,很多C语言新手可能认为C语言缺乏了面向对象和抽象性,事实上,C语言通过某种组合方式,可以间接性的实现面对对象和抽象. 不过多态和继承这种实现,就有点小麻烦,但是依然可以实现. 核心: ...
- 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
面向对象编程概念 by Alexander Petkov 通过亚历山大·佩特科夫(Alexander Petkov) Have you noticed how the same cliche ques ...
- JavaSE(二十)——面向对象的概念及三个基本特征
文章目录 1. 面向对象的概念 2. 面向对象的三个基本特征 2.1 封装 2.2 继承 2.3 多态 1. 面向对象的概念 面向对象是一种符合人类思维习惯的编程思想.现实生活中存在各种形态不同的事物 ...
- java基础知识——面向对象基本概念
文章目录 Java基本概念 源文件声明规则 Java包 Import语句 继承类型 继承的特性 继承关键字 super 与 this 关键字 构造器 方法的重写规则 重载(Overload) 重写与重 ...
- UML-based workflow |wfmc|面向对象的概念
1.工作流的应用 一个电子政务系统中报文审批这一工作流程中的每个环节就组成了一个工作流,网上购物系统中从下定单到发货也是一系列的工作流程(其中包括用户取消定货和缺货等诸多环节),ERP系统中的工作流应 ...
- 7.1.3 Python进阶 《函数》定义、调用,参数,返回值《面向对象》概念,类,实例,对象,属性,方法《模块、包》导入,自定义,常用内置:datatime,time,random,os,sys
目录 ======== 第四部分 Python进阶 ======== 第一节 函数 4.1.1 函数定义及调用 4.1.2 函数的参数 4.1.3 函数的返回值 第二节 面向对象 4.2.1 面向对象 ...
- Java基础之面向对象的概念 继承---组合----枚举类
Java基础之面向对象的概念 继承---组合----枚举类 本章作为面向对象概念的最后一篇,但是作为一名java程序员在面向对象的这条路上还很长. 一.继承与组合简介 继承是实现类重用的重要手段,但是 ...
- 25_类和面向对象的概念
25_类和面向对象的概念 面向对象编程的概念 是JavaSE最重要的 万物皆对象-------------先找对象 面向对象指以属性(比如身高.体重,又称特征)和行为的观点去分析现实生活中的事物.-- ...
最新文章
- Redis 为什么默认 16 个数据库?
- python批量读取tiff文件_Python图像分析:从共焦显微镜读取多维TIFF文件
- 加速JDBC的快捷方法
- 虚拟主机创建虚拟lan_创建虚拟背景应用
- 理论 | 教你彻底学会Java序列化和反序列化
- python第七章文件和数据格式化选择题_python第七章-文件和数据格式化
- 【主机】计算机缓存机制
- RHEL6.5 部署DNS服务器
- OrCAD的下载与安装的详细步骤
- 人类微生物组和缺失遗传力--读论文
- sketch-矢量绘图应用软件
- 【发布】哔哩哔哩bilibili替换旧版播放(稍后再看)
- unraid虚拟linux系统,unRAID Linux环境下自作启动U盘
- 一、搜索引擎篇-揭开es神秘的面纱
- FCNIrPic,665005-28-7 齐岳生物金属配合物
- find grep联合搜索
- 双硬盘安装win10+ubuntu18.04双系统,U盘安装,UEFI引导
- 为校园超市系统增加购物车与订单功能
- 计算机专业的英文介绍,计算机专业英文自我介绍
- 极速空间笔记本CPU天梯图(笔记本CPU性能排行)——跟小虫学电脑配置
热门文章
- 机器阅读理解(MRC)和问答(QA)在信息抽取中的应用
- 卧槽!华为工程师总结的Java笔记,太优秀了!
- CTO 要我把这份 MySQL 规范贴在工位上!
- python基础篇--变量和简单的数据类型(中)
- android单例模式代码,在Android studio 中使用单例模式(示例代码)
- 用python建立三元一次方程_python简单的三元一次方程求解实例
- python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践
- 查看前端页面请求的文件地址_前端性能优化方法
- Nginx正向代理原理和部署方案
- python中如何调用图像处理库_python怎么调用图像处理