学习面向对象之面向对象的基本概念:对象和其他基本要素


Posted in Javascript onNovember 30, 2010

什么是对象

对象是一件事,一个实体,一个名词,概括来说:万物皆是对象

一个对象保存了某些信息,并知道如何执行某些操作

对象的状态和行为

对象具有状态,状态是对对象的一个或多个属性的描述(如:一个灯 "灯是亮的  这是它的状态")

对象具有行为,行为是对象为为改变自身的状态而发生的作用和反作用(如:一个灯 "把灯关了"  这是它的行为)

面像对象中最原始的单元就是对象

封装

把数据和影响这个数据的操作聚合成一个对象的行为称为“封装”

封装隐藏对象的属性和实现细节,公对公开接口,控制程序中属性的读和修改的访问级别

从外视图看,在一个对象内封装的数据是隐藏的

封装的目的增强安全性和简化编程,使用者不必了解具体的实现细节,而只要通过对象对外开发的接口,一特定的访问权限来使用对象的成员

消息和方法

消息发送

一个对象通过发送“消息”访问另一个对象,这样的访问,称为“消息发送”,是一个对象访问另一个对象的唯一的方法

消息发送过程中包含了:发送器->消息【名称和参数】->接收器 

学习面向对象之面向对象的基本概念:对象和其他基本要素

消息

一个“消息”由一个操作的名称和所有必须的参数组成,当一个对象给另一个对象发送消息时,发送者请求消息接受者执行指定的操作,并(有可能)返回信息,当接受者接收消息时,它以它所知道的方式来执行被请求的操作。这样的请求不规定如何执行一个操作。对于发送者的这种信息总是被隐藏的

消息名称

一个消息包括操作名称和该操作所要求的全部参数,有时,通过名称来查阅操作是很有用的,而不考虑它的参数,我们把一个操作的名称称为“消息名称”。

方法

当一个对象接收一个消息时,它通过执行一种方法来完成被请求的操作。这种“方法”就是一步一步执行算法。当消息名称和操作名称匹配时,响应接收到的消息。正如由信息隐藏原理所规定的。方法始终是一个对象私有表达的一部分,而不是公式接口的一部分。

签名

与消息发送相关的一个更有用的概念是签名,当一个消息由一种方法和方法所需的参数组成时,“签名”就是这种方法的名称,参数类型和返回对象的类型,签名是方法输入的正规说明书,也是方法输出的正规说明书。它规定了使用这种方法所必需的东西

Javascript 相关文章推荐
一个XML格式数据转换为图表的例子
Feb 09 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
Jan 28 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
jQuery中复合属性选择器用法实例
Dec 31 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
Javascript实现运算符重载详解
Apr 07 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
解决vue项目打包后提示图片文件路径错误的问题
Jul 04 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
vue 源码解析之虚拟Dom-render
Aug 26 Javascript
vue组件是如何解析及渲染的?
Jan 13 Vue.js
基于JQuery的asp.net树实现代码
Nov 30 #Javascript
JQUERY设置IFRAME的SRC值的代码
Nov 30 #Javascript
juqery 学习之四 筛选过滤
Nov 30 #Javascript
juqery 学习之四 筛选查找
Nov 30 #Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 #Javascript
xss文件页面内容读取(解决)
Nov 28 #Javascript
用js来解决ajax读取页面乱码
Nov 28 #Javascript
You might like
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
php UTF8 文件的签名问题
2009/10/30 PHP
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
深入理解PHP中的count函数
2016/05/31 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
围观tangram js库
2010/12/28 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python3 深浅copy对比详解
2019/08/12 Python
pandas的相关系数与协方差实例
2019/12/27 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技