面向对象的意义在于:

  • -将日常生活中习惯的思维方式引入程序设计中
  • -将需求中的慨念直观的映射到解决方案中
  • -以模块为中心构建可复用的软件系统
  • -提高软件产品的可维护性和可扩展性

其中类和对象是面向对象中的两个基本概念

-类:指的一类事物,里面包括不同对象实体,是一个抽象的概念,比如:程序语言

-对象:指的是类里的具体实体,比如:程序语言(类)->java(对象)、C#(对象)等

-类用于抽象的描述一类事物所共有的属性行为

比如:

电脑,都拥有CPU/主板/内存/硬盘(共有属性),并且可以运行程序(共有行为)

对象

-对象指类里的具体事物,并且拥有描述类中的一切共有属性和行为

比如:

神舟电脑G50-F5型号,CPU是酷睿i5,内存8G,硬盘1TB等

神舟电脑G60-F7型号,CPU是酷睿i7,内存16G,硬盘1TB+128GB(固态硬盘)等

总结:

  • 类下面不一定存在实际对象,比如:恐龙(类),对象已经灭绝,没有一个对象
  • 类的对象数目不确定,比如:电脑(类),该对象数目不确定,美国总统(类),该对象当今只有一个
  • 不一定都来源于现实生活.
  • 类不是独立的,类与类之间也存在关系,比如:电脑(类)包括了CPU(类),主板(类)等,
  • 对象不一定只属于一个类,比如:二哈(对象),既属于哺乳动物(类),又属于犬科(类)

类与类之间的关系

继承

-父类子类之间具有继承关系,比如:车(父类)包括了汽车(子类)

可以这么理解,汽车一定是车,但是车不一定是汽车

-继承的子类拥有父类所有属性和行为

组合

-一些类的存在必须依赖于其它的类,这种关系叫组合,比如:电脑(类)包括了CPU(类)等

-组合的类在某个局部上由其它的类组成

继承实例

以现实生活中的生物类为例:

如上图,在C++中,又如何通过程序来表达出来呢?

在C++中,通过struct表达,通过:表达继承,所以可以将上图改进为:

又通过变量表达属性,通过函数表达行为.

最终将生活中的例子体现在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() { }
}; int main()
{
Human ZhangSan; //创建对象
ZhangSan.sleep();
return ;
}

未完待续,下章学习类与封装

6.C++初步分析类的更多相关文章

  1. DirectUI的初步分析-转

    DirectUI的初步分析(一) 最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是 ...

  2. drf安装与APIView初步分析

    drf安装 1. pip install djangorestframework 2. 在settings文件中注册app : INSTALLED_APPS = [..., 'rest_framewo ...

  3. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  4. <八>面向对象分析之UML核心元素之分析类

    一:基本概念        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素.        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...

  5. UML--核心元素之分析类

    分析类包括边界类.控制类和实体类. 边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类. myself:就像建模时,不是所有的属性都要建模一样.不是所有的方法都要建模一样.学习也是如此, ...

  6. Java 反射 分析类和对象

    Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...

  7. 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言

    基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...

  8. S2-052 RCE漏洞 初步分析

    PS:初步分析,只是分析了Struts2 REST插件的部分,本来菜的抠脚不敢发,但看到各大中心发的也没比我高到哪里去,索性发出来做个记事! 漏洞描述 2017年9月5日,Apache Struts发 ...

  9. Netfilter之连接跟踪实现机制初步分析

    Netfilter之连接跟踪实现机制初步分析 原文: http://blog.chinaunix.net/uid-22227409-id-2656910.html 什么是连接跟踪 连接跟踪(CONNT ...

随机推荐

  1. IDEA for Mac注册码使用

    尼玛,一不注意把磁盘抹掉了,重新下idea发现 之前的破解方法失效了 之前所有的 idea 授权服务器已遭JetBrains封杀,所以重新下载后 用之前的方法已经然并卵了,苦苦google后,发现新大 ...

  2. Web API <五> 序列化

    在 Asp.Net Web Api 中提供了两种 媒体类型格式化器(mime-type formatter),分别用于支持 JSON 和 XML 数据的格式化处理.默认两种格式化器已集成到了 Asp. ...

  3. ios开发 第一天

    alloc 分配内存(类方法) init 调用构造函数 id可以替代任何数据类型(不加*号) 错误现象: 2013-06-27 21:44:21.769 FieldButtonFun[3465:113 ...

  4. c语言一个处理文本文件的例子

    功能 读取一个文本文件,将其中的文本按规则转换为int数据,然后对数据进行处理.文本的格式类似36 565 233... 代码 #include <stdio.h> #include &l ...

  5. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  6. junit的意义

    写了这么久代码了,自己从来没有好好的玩过junit.马上过年了,打算趁这段时间自己来写一套web框架,但是这里有一个很大的尴尬就是我平时编码并没有认真的来写测试类.那么自己在写框架的时候,不测试肯定是 ...

  7. jsp中 scope="application" 表示

    jsp中 <jsp:useBean id="countbean" scope="application" class="count.counte ...

  8. Unity3d 基本设计开发 原则(提高代码可读性)

    参考:http://blog.csdn.net/qq_34134078/article/details/51780356 1.单一原则 即:明确类的定义.通俗来讲,让他们只做一件事,而不是多件事. 提 ...

  9. zabbix_Agent 监控配置说明

    Agent 监控配置说明 Linux安装Agent 1.查看系统版本 查看系统版本 uname -a1根据系统版本下载对应的zabbix-agent版本安装 下载地址:http://repo.zabb ...

  10. MySQL相关命令与备份

    不加任何参数直接备份 mysqldump -uroot zabbix >/opt/zabbix.bak.sql 恢复,这样恢复时需要自已创建表 mysql -uroot < zabbix. ...