观音赞唱诵歌词:1.2 每个对象都有一个接口

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 20:33:52
1.2 每个对象都有一个接口
亚里士多德大概是第一个深入研究类型(type)的哲学家,他曾提出过鱼类和鸟类这样的概念。所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分。这种思想被直接应用于第一个面向对象语言Simula-67,它在程序中使用基本关键字class来引入新的类型。
Simula,就像其名字一样,是为了开发诸如经典的"银行出纳员问题"(bank teller problem)这样的仿真程序而创建的。在银行出纳员问题中,有出纳、客户、账户、交易和货币单位等许多"对象"。在程序执行期间具有不同的状态而其他方面都相似的对象会被分组到对象的类中,这就是关键字class的由来。创建抽象数据类型(类)是面向对象程序设计的基本概念之一。抽象数据类型的运行方式与内置(built-in)类型几乎完全一致:你可以创建某一类型的变量(按照面向对象的说法,称其为对象或实例),然后操作这些变量(称其为发送消息或请求;发送消息,对象就知道要做什么)。每个类的成员或元素都具有某种共性:每个账户都有结余金额,每个出纳都可以处理存款请求等。同时,每个成员都有其自身的状态:每个账户都有不同的结余金额,每个出纳都有自己的姓名。因此,出纳、客户、账户、交易等都可以在计算机程序中被表示成唯一的实体。这些实体就是对象,每一个对象都属于定义了特性和行为的某个特定的类。
所以,尽管我们在面向对象程序设计中实际上进行的是创建新的数据类型,但事实上所有的面向对象程序设计语言都使用class这个关键词来表示数据类型。当看到类型一词时,可将其作为类来考虑,反之亦然。
因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型,例如所有浮点型数字具有相同的特性和行为集合。二者的差异在于,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中的存储单元的数据类型。可以根据需求,通过添加新的数据类型来扩展编程语言。编程系统欣然接受新的类,并且像对待内置类型一样地照管它们和进行类型检查。
面向对象方法并不是仅局限于构建仿真程序。无论你是否赞成以下观点,即任何程序都是你所设计的系统的一种仿真,面向对象技术的应用确实可以将大量的问题很容易地降解为一个简单的解决方案。
一旦类被建立,就可以随心所欲地创建类的任意个对象,然后去操作它们,就像它们是存在于你的待求解问题中的元素一样。事实上,面向对象程序设计的挑战之一,就是在问题空间的元素和解空间的对象之间创建一对一的映射。
但是,怎样才能获得有用的对象呢?必须有某种方式产生对对象的请求,使对象完成各种任务,如完成一笔交易、在屏幕上画图、打开开关等等。每个对象都只能满足某些请求,这些请求由对象的接口(interface)所定义,决定接口的便是类型。以电灯泡为例来做一个简单的比喻(如下图所示): 接口确定了对某一特定对象所能发出的请求。但是,在程序中必须有满足这些请求的代码。这些代码与隐藏的数据一起构成了实现。从过程型编程的观点来看,这并不太复杂。在类型中,每一个可能的请求都有一个方法与之相关联,当向对象发送请求时,与之相关联的方法就会被调用。此过程通常被概括为:向某个对象"发送消息"(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。
上例中,类型/类的名称是Light,特定的Light对象的名称是lt,可以向Light对象发出的请求是:打开它、关闭它、将它调亮、将它调暗。你以下列方式创建了一个Light对象:定义这个对象的"引用"(lt),然后调用new方法来创建该类型的新对象。为了向对象发送消息,需要声明对象的名称,并以圆点符号连接一个消息请求。从预定义类的用户观点来看,这些差不多就是用对象来进行设计的全部。
前面的图是UML(Unified Modelling Language,统一建模语言)形式的图,每个类都用一个方框表示,类名在方框的顶部,你所关心的任何数据成员都描述在方框的中间部分,方法(隶属于此对象的、用来接收你发给此对象的消息的函数)在方框的底部。通常,只有类名和公共方法被示于UML设计图中,因此,方框的中部就像本例一样并未给出。如果只对类型感兴趣,那么方框的底部甚至也不需要给出。
人是不是在每个年龄阶段,都会有一个暗恋对象呢 路由器的每个接口是否都有MAC,路由器能否自动发送广播? 交换机有物理地址吗?是否每个接口一个?它能自动发送广播吗? 每个夫妻之间都有一个共同点,你知道吗? 交换机是不是每个端口都有一个MAC地址? Ultra ATA接口是不是每个主板都能用? 每个国家都有军训? 我有一个对象,但是..... 请问现在945的主板都是只能接SATA硬盘吗?我怎么看每个945板子都只有一个IDE接口? 是不是每个城市都有一个世贸中心?它代表的是不是一个城市的中心. 串行都有哪些接口?并行都有哪些接口? 每个成功男人背后都有一个女人,那失败男人后面会有什么? 是不是每个男人都难忘记他的初恋和初夜的对象呢?? . 面向对象程序设计都有哪些主要特征? 是不是每个城市都有每个城市的城市脾气? 每个男孩子的心中都有一个永远不能忘记的女孩吗 福娃中每个娃娃都有一个琅琅上口的名字分别是:( ),( ),( ),( ),( ) 在美国是不是每个邮箱(post box --P.O.)都有一个编号? 全国只有十几个,每个人生下来都有一个 谜底 在计算机中,每个存储单元都有一个连续的编号,此编号称为 每个城市都有一个动物的别名比如广洲叫羊城,深圳叫鹏城! 每个企业是不是都有一个专用帐户,这个帐户对一企业是唯一的? 传奇世界每个人物和怪物都有一个编码,谁发一下BOSS的编码? mp3里每个文件夹里面都有一个同名的EXE文件。。。。