C++图文并茂轻松进阶面向对象
目录
- 一、进阶面向对象(上)
- 二、小结(上)
- 三、进阶面向对象(下)
- 四、小结(下)
一、进阶面向对象(上)
面向对象的意义在于
- 将日常生活中习惯的思维方式引入程序设计中
- 将需求中的概念直观的映射到解决方案中
- 以模块为中心构建可复用的软件系统
- 提高软件产品的可维护性和可扩展性
类和对象是面向对象中的两个基本概念
- 类∶指的是一类事物,是一个抽象的概念
- 对象∶指的是属于某个类的具体实体
- 类是一种模型,这种模型可以创建出不同的对象实体
- 对象实体是类模型的一个具体实例
注:一个类可以有很多对象,而一个对象必然属于某个类。
生活中的类和对象
类和对象的意义
类用于抽象的描述一类事物所特有的属性和行为
- 如:电脑拥有CPU,内存和硬盘,并且可以开机和运行程序
对象是具体的事物,拥有所属类中描述的一切属性和行为
- 如:每一只老虎都有不同的体重,不同食量以及不同的性情
二、小结(上)
- 面向对象是当今软件开发中的重要方法
- 类和对象是面向对象理论中的基本概念
- 类和对象均来源于日常生活中
- 每个类可以有多个对象
- 每个对象必然属于某个类
三、进阶面向对象(下)
类之间的基本关系
继承
- 从已存在类细分出来的类和原类之间具有继承关系( is-a )
- 继承的类(子类)拥有原类(父类)的所有属性和行为
组合
- 一些类的存在必须依赖于其它的类,这种关系叫组合
- 组合的类在某一个局部上由其它的类组成
类之间的基本关系 -- 继承
惠普电脑和苹果电脑都继承于电脑,具备电脑的所有特征。
类之间的基本关系 -- 组合
类的表示法
类的表示法 -- 简化
类的表示法 -- 改进1
类的表示法 -- 改进2
类的表示法 -- 改进3
这有点代码的味道了,那么如何用程序设计中的概念描述类的属性和行为?下面做最终改进。
类的表示法 -- 改进4
下面把上面表示方法写成代码,看看编译器会不会报错吧。
#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() { } void work() { } }; int main() { return 0; }
下面为输出结果:
可以看到,编译器并没有报错,也就证明面向对象那种表示方法是可以的。
四、小结(下)
- 类之间可以存在继承关系或组合关系
- 继承关系中子类拥有父类的一切属性和行为
- 组合关系是类之间整体和部分的关系
- 类及类之间的关系可以有不同的表示法
- 编译器对类的表示法有具体的要求
到此这篇关于C++图文并茂轻松进阶面向对象的文章就介绍到这了,更多相关C++面向对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
C++面向对象之多态的实现和应用详解
前言 本文主要给大家介绍的是关于C++面向对象之多态的实现和应用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 多态 大家应该都听过C++三大特性之一多态,那么什么多态呢?多态有什么用?通俗一点来讲-> 多态性可以简单地概括为"一个接口,多种方法",程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念.当多态应用形参类型的时候,可以接受更多的类型.当多态用于返回值类型的时候,可以返回更多类型的数据.多态可以让你的代码拥有更好的扩展性. 多态分
-
关于C++面向对象设计的访问性问题详解
前言 最近在看Scott Meyers大神的<Effective C++>和<More Effective C++>,虽然这两本书都是古董级的教参了(当然针对C++11/C++14作者所更新的<Modern Effective C++>英文已经发售了,不过还没中文翻译版本),但是现在看来仍然收益匪浅,而且随着对这个复杂语言了解的深入和实践项目经验的增加,很多东西和作者产生了一种共鸣,以前种种疑惑突然有种拨云雾而见天日.豁然开朗的感觉,也难怪被列为合格C++程序员之必读书
-
分享一下8年C++面向对象设计的经验体会
六年前,我刚热恋"面向对象"(Object-Oriented)时,一口气记住了近十个定义.六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是"面向对象",就象说不清楚什么是数学那样.软件工程中的时髦术语"面向对象分析"和"面向对象设计",通常是针对"需求分析"和"系统设计"环节的."面向对象"有几大学派,就象如来佛.上帝和真主用各自的方式定义了这个
-
C++面向对象编程之析构详解
目录 1. 概述 2. 详论 2.1. 对象生命周期 2.2. 不一定需要显式析构 2.3. 析构的必要性 3. 总结 1. 概述 类的析构函数执行与构造函数相反的操作,当对象结束其生命周期,程序就会自动执行析构函数: class ImageEx { public: ImageEx() { cout << "Execute the constructor!" << endl; } ~ImageEx() { cout << "Execute
-
一篇文章带你了解C++面向对象编程--继承
目录 C++ 面向对象编程 -- 继承 总结 C++ 面向对象编程 -- 继承 "Shape" 基类 class Shape { public: Shape() { // 构造函数 cout << "Shape -> Constructor" << endl; } ~Shape() { // 析构函数 cout << "Shape -> Destructor" << endl; } vo
-
C++图文并茂轻松进阶面向对象
目录 一.进阶面向对象(上) 二.小结(上) 三.进阶面向对象(下) 四.小结(下) 一.进阶面向对象(上) 面向对象的意义在于 将日常生活中习惯的思维方式引入程序设计中 将需求中的概念直观的映射到解决方案中 以模块为中心构建可复用的软件系统 提高软件产品的可维护性和可扩展性 类和对象是面向对象中的两个基本概念 类∶指的是一类事物,是一个抽象的概念 对象∶指的是属于某个类的具体实体 类是一种模型,这种模型可以创建出不同的对象实体 对象实体是类模型的一个具体实例 注:一个类可以有很多对象,而一个对
-
Java轻松掌握面向对象的三大特性封装与继承和多态
目录 1.封装 1.介绍 2.封装的理解和好处 3.封装的实现步骤 2.继承 1.介绍 2.继承的基本语法 3.继承的使用细节 3.super关键字 1.基本介绍 2.基本语法 3.细节与好处 4.super与this的比较 4.方法重写 1.基本介绍 2.注意事项与使用细节 3.重载与重写的比较 3.多态 1.基本介绍 2.具体体现 1.方法的多态 2.对象的多态(重点) 3.多态注意事项和细节讨论 1.多态的前提 2.属性 3.instance of 4.多态的向上转型 5.多态的向下转型
-
EJB轻松进阶之一
文章来源:硅谷动力 作者:中流砥柱 一.引言 EJB(Enterprise JavaBeans)是Java程序设计中比较高级的内容,也是Java程序员由入门级向高手级前进的门槛.SUN公司认证Java程序员(SCJP)与SUN公司认证Java开发员(SCJD)之间的一个显著区别就是:SCJP不考EJB,而SCJD要考.随着越来越多的企业采用J2EE平台开发电子商务应用系统,EJB开发已成为今天的Java程序员必须要面对的问题. 本文首先以一个例程介绍了一般分布式对象应用程序的基本原理,然后从基本
-
Python面向对象之成员相关知识总结
1.成员 1.1 变量 实例变量,属于对象,每个对象中各自维护自己的数据. 类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变量). class Person(object): country = "中国" def __init__(self, name, age): self.name = name self.age = age def show(self): # message = "{}-{}-{}".format(Person.co
-
Python面向对象之内置函数相关知识总结
Python内置函数 1. classmethod.staticmethod.property . 上述三个内置函数在文章(Python进阶--面向对象之成员)的方法和属性中已经详细介绍使用,可以返回浏览,具体地址: 2. callable,是否可在后面加括号执行. 函数 def func(): pass print( callable(func) ) # True 类 class Foo(object): pass print( callable(Foo) ) # True 类中具有__cal
-
python进阶_浅谈面向对象进阶
学了面向对象三大特性继承,多态,封装.今天我们看看面向对象的一些进阶内容,反射和一些类的内置函数. 一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) print(isinstance(s,Son)) print(isinstance(s,Foo)) #type更精准 print(type(s) is Son) print(type(s) is Fo
-
SQL Server 2012 创建定时作业(图文并茂,教你轻松快速创建)
SQL Server2012 如何创建定时作业?有兴趣的可以来看下,图文并茂哦! 1.首先我们打开SQL Server代理,里面选择作业 2.右键作业,选择新建作业 3.填写一些相应的内容,名称和说明自填即可. ***需要注意的是 已启用这个勾要勾选上. 类别我们这里默认即可,按照你的需求可以进行更改. 4.选择步骤 ,点击新建 5.填写步骤名称和所运行的数据库 ***需要注意的是 命令行就是执行你的存储过程 直接写 exec -. 即可 点击 分析 出来这样的对画框就可以了 6.点击计划
-
Python面向对象进阶学习
在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息.为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解. @property装饰器 之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效.我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问
-
Python基础之面向对象进阶详解
目录 面向对象三大特征介绍 继承 语法格式 查看类的继承层次结构 object根类 dir()查看对象属性 str()方法的重写 多重继承 MRO() super()获得父类定义 多态 特殊方法和重载运算符 特殊属性 对象的浅拷贝和深拷贝 组合 设计模式_工厂模式实现 设计模式_单例模式实现 工厂模式和单例模式的整合使用 总结 面向对象三大特征介绍 封装(隐藏):隐藏对象的属性和实现细节,知对外提供必要的方法. 继承:让子类拥有父类特征,提高了代码的重用性.从设计上是一种增量进化,原有父类设计不
-
Python面向对象编程之类的进阶
目录 1.引用的概念 2.对象的拷贝 2.1实例方法的引用 2.2类的特性装饰器 3.类的名称修饰 3.1_单下划线开头的名称修饰 3.2_单下划线结尾的名称修饰 3.3__双下划线开头的名称修饰 3.4__name__双下划线开头和结尾的名称修饰 3.5单下划线 4.Python的最小空类 1.引用的概念 引用 (Reference)是对象的指针 引用是内存中真实对象的指针,表示为变量名或者内存地址 每个对象存在至少一个引用,id()函数用于获得引用 在传递参数和赋值时,Python传递对象的
随机推荐
- AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
- Git 教程之安装配置详解
- js实现数组转换成json
- 购物车前端开发(jQuery和bootstrap3)
- iOS开发 widget构建详解及实现代码
- Java加解密技术系列之RSA详解
- 两种oracle创建字段自增长的实现方式
- Python中使用pprint函数进行格式化输出的教程
- js中动态创建json,动态为json添加属性、属性值的实例
- js或jquery实现页面打印可局部打印
- WHOOPS PHP调试库的使用
- PHP 开发环境配置(Zend Studio)
- jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
- C#基于UDP进行异步通信的方法
- js原生跨域_用script标签的简单实现
- XP安装过程中的两大潜在危险
- 浅谈Linux中ldconfig和ldd的用法
- 解析php 版获取重定向后的地址(代码)
- MySql常用查询命令操作大全
- 基于Redis的限流器的实现(示例讲解)