OOP思想又一随笔
现有类再有对象,
类:对现实世界事物的抽象表示,包括事物的状态信息(成员变量)和行为信息(成员方法)。我们要让我们的计算机程序设计更有意思,也更有逻辑性,则我们的程序中对事物的描叙就必须符合真实情况,同时符合人类的思维习惯。因此,我们如果在计算中要描叙人这个事物,也是一类事物,我们就必须把该事物的所有特点包含进来,用成员变量描叙人的基本属性,如:身高,体重,年龄,性别等。这样就可以描叙一个“静态”的人了,所谓静态的意思也就是该人并不参与任何社会活动,没有任何行为。但是这样并不符合现实意义,那样我们必须为人添上行为,让他参加社会活动有自己的行为。所以我们需要用成员方法来描叙人的活动,如:吃饭,洗澡,睡觉等。
对象:对抽象事物的具体表示,使其具有自身的特点。类好比一个大的集合,里面的元素都有共同的特点,但是比较每个元素又可以发现每个有其自身的特点,对象就是这样,它是一个类的具体化,也是实例化,类是泛指,而对象是特指。虽然人都有身高,体重,年龄,同时有行为有吃饭,洗澡,睡觉等,但是当具体到某个人的时候就会有不同,例如:老人和小孩的年龄就有不同,所以,从类到对象是我们把现实事物进行计算机描叙的过程,同时也是一个从抽象到具体的过程,这很符合我们的真实思维逻辑。
对象的三大特征:继承,多态和封装。
多态:用一种解决方案来解决对一类问题,对于不同的事物解决途径和结果不同。在C++中实现多态性有三种方法,分别是:虚函数,函数重载和运算符重载。这三种方法大家都可以看到我们解决问题的初衷是一样的,都是利用同名函数,同名的运算符号,这抽象出来也就是解决问题的方法,但是对于不同的事物的反应却是不同的,例如:当用一个getPadNumber()方法来得到普通自行车和双人自行车的坐垫数量的时候,返回的结果是一个和两个,这就是具体的事物返回的结果不同。
继承:让抽象出来的事物具有本应该具有的联系。我们能用类来描叙一个抽象的事物,同时能用对象来描叙具体的事物,但是这些事物都是独立的,彼此之间没有应该有的联系,这样的孤立设计并不符合现实逻辑,让事物之间的联系得到描叙,我们就需要继承,例如:发明自行车的人并不是一开始就发明了多人自行车,这些都是从双轮自行车演变和发展而来,但是他们都有共同的特点,有轮子,有车架子,等等。让我们用继承的关系把这两个现实的抽象联系起来,这样我们就能设计出不孤立的类,而是和其他类有联系的类。
封装:让抽象的事物保护自身的状态,防止非其他事物对其进行错误的状态改变操作。我们抽象完一个事物后,可能在特定的条件下,其本身的状态需要改变,但是这个改变并允许其他的事物来进行,这样的改变只允许这个事物认同的操作域来进行,可以是该事物本身,也可以是它信任的其他事物。这样我们就能对我们抽象完的每个事物进行自身数据的保护。
OOP思想又一随笔的更多相关文章
- javascript大神修炼记(7)——OOP思想(多态)
读者朋友们大家好,今天我们就接着前面的内容讲,前面我们已经讲到了继承,今天我们就来讲OOP目前最后一个体现,那就是多态,因为javascript语言的灵活性,所以我们是没有办法使用接口的,所以这也给j ...
- OOP思想
OOP思想 读者朋友们大家好,我们今天这一讲就接着前面的封装继续讲解,今天就是在前面内容上面的升级,OOP思想中的继承,我们就先来解释一下继承到底是什么意思,我们在什么地方会用到继续. 继承就是,后代 ...
- JQuery OOP 及 OOP思想的简易理解
在项目维护的时候,看到通篇的function实际上是非常费(痛)劲(苦),个人对于前端也不是特别熟悉,就想着JQuery能否也建立OOP的写法? 目的便于日后代码维护管理,就算不为了自己,日后交接后也 ...
- 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装
接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...
- javascript大神修炼记(6)——OOP思想(继承)
读者朋友们大家好,我们今天这一讲就接着前面的封装继续讲解,今天就是在前面内容上面的升级,OOP思想中的继承,我们就先来解释一下继承到底是什么意思,我们在什么地方会用到继续. 继承就是,后代继续祖先的一 ...
- javascript大神修炼记(5)——OOP思想(封装)
读者朋友们好,前面我们已经讲解了有关javascript的基础,从今天的内容开始,我们就要开始讲有关封装的内容了,这里,我们就一点一点地接触到OOP(面向对象编程)了,如果作为一门语言使用的程序员连O ...
- OOP思想应该怎样来理解?
https://blog.csdn.net/qq157962718/article/details/50990154 https://www.cnblogs.com/xiaosongluffy/p/5 ...
- 一篇文章带你了解Java OOP思想
Java OOP 思想深度刨析 Java面向对象编程 面向对象编程简称OOP(Object--对象.Oriendted--导向的.Programming--程序设计) 面向对象通俗来讲,就是指使用丰富 ...
- Java面向对象OOP思想概述
目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...
随机推荐
- 【SQL Server】SQL常用系统函数
SQL常用系统函数 函数类型 函数表达式 功能 应用举例 字符串函数 SubString(表达式,起始,长度) 取子串 SubString('ABCDEFG',3,4) Right(表达式,长度) 右 ...
- HDU 3947 River Problem
River Problem Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ...
- python pdb模块
参考文件http://pythonconquerstheuniverse.wordpress.com/category/Python-debugger/ 翻译不是一一对应 Debug功能对于devel ...
- VOC Segmentation GT图像颜色表生成分析
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52185581 PASCAL VOC图像 ...
- js对文字进行编码
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
- yum update 出错解决办法
卸载掉yum和python 于是我卸载了python和yum,觉得自己重新安装python和yum. 步骤1:卸载python rpm -qa|grep python|xargs rpm -e --a ...
- 【bzoj1193】[HNOI2006]马步距离
[HNOI2006]马步距离 Description Input 只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys.并且它们的都小于10000000. Output 含一个整数,表示从 ...
- bzoj3874&2832 [Ahoi2014]宅男计划 模拟退火,三分
[Ahoi2014&Jsoi2014]宅男计划 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 962 Solved: 371[Submit][ ...
- python之基本数据类型及深浅拷贝
一.数据基本类型之set集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key set集合,是一个无序且不重复的元素集合 1.创建 ...
- Struts2 文件上传和下载
首先我们写一个单文件长传的fileupload.jsp: <body> <s:fielderror></s:fielderror> <!-- 报错信息 --& ...