js面向对象编程程,类的设计

& 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点)
鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点)
&&&&& &上一讲鸡啄米讲了以后,C++和C语言相似的语法就剩下后面要讲的数组了,这一讲开始鸡啄米就要讲C++所特有的一些概念和思想了。本节编程入门教程主要讲面向对象程序设计的基本思想和特点。另外,说明一点,以后鸡啄米会加一个大的教程分类,让大家更好的对琐碎的知识进行分类,比如这一讲的大的分类叫&类与对象&,标题是面向对象设计的基本思想和特点。&&&&&& 在编程入门教程的前言中,鸡啄米已经简单讲到了面向对象程序设计的几个基本概念,这一讲将做更深入的讨论。&&&&&& 计算机技术飞速发展,软件开发技术也同样经历了各种各样的变化,从早期的面向过程的结构化程序设计,到面向对象的程序设计,其实都是在寻找一种更能够提高可扩展性和可复用性的程序设计方法,这样才能更大限度的提高软件开发效率。现在的面向对象程序设计方法(OOP)通过抽象、封装、继承等手段,已经成为目前最能提高可扩展性和可复用性的程序设计方法,能够最大限度的提高软件生产能力,降低软件开发和维护的费用。&&&&&& 在面向对象程序设计方法之前普遍使用的是面向过程的结构化程序设计方法,它的主要思想就是,将一个复杂问题根据功能等分成一个个子问题,然后再接着细分,直到分解成具体的语句,这种方法固然有很多优点,但是有个比较大的缺点就是,这种方法中数据和函数是分开的,如果我们要修改数据结构,则有关的函数都必须修改,这样不但维护成本比较大,而且很容易遗漏一些应该修改的地方。&&&&&&&面向对象程序设计方法是对面向过程程序设计方法的继承和发展。这种程序设计方法认为,现实世界是由一些互相关联的实体组成的,这些实体就是面向对象方法中的对象,而对一些对象的共性的抽象描述,就是面向对象程序设计方法中最核心的概念--类。面向对象的程序设计方法就是运用面向对象的思维来描述现实问题,再用计算机语言解决该问题,这里的解决就是靠类和对象实现的,是对现实问题的高度概括、分类和抽象。&&&&&&&鸡啄米下面讲下面向对象程序设计方法的基本特点:抽象、封装、继承和多态。&&&&&&1.抽象&&&&& &面向对象方法中的抽象是指对具体问题即对象进行概括,抽出一类对象的共性并加以描述的过程。面向对象的软件开发中,首先应该对要解决的问题抽象成类,然后才是解决问题的过程。抽象有两个方面:数据抽象和行为抽象。数据抽象是描述某类对象的属性或状态,,行为抽象是描述某类对象的共同行为或共同功能。&&&&&& 鸡啄米就拿时钟给大家举个例子,要实现有关时钟的程序,首先要对时钟进行抽象。时钟有时、分、秒,我们用三个整型变量来存储,这就是数据抽象。时钟有显示时间和设置时间等功能,这就是行为抽象。用C++语言描述就是:&&&&&&&时钟(Clock):&&&& & 数据抽象:&&&&& &int H int M int S&&&&& &行为抽象:&&&&& &ShowTime(); SetTime();&&&&&& 上面并不是真正的C++代码,只是简单的列出了数据成员和函数成员的代码片段。&&&&&&&2.封装&&&&&&&把抽象出来的数据成员和函数成员结合形成一个整体,就是封装。封装的时候,我们可以把一些成员作为类和外界的接口,把其他的成员隐藏起来,以达到对数据访问权限的控制,这样可以使程序的各个部分改变时最低程度的影响其他部分,程序会更安全。&&&&& &把数据和函数封装为一个可复用的模块,开发时可以利用已有的成果而不必每次都重复编写。我们只需要通过类提供的外部接口访问模块,并不需要知道内部的细节。C++中就是利用类的形式来实现封装的。下面是鸡啄米上面提到的时钟的具体封装形式及时钟类:&&&&& &class& Clock&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // class是关键字 Clock是类名&&&&& &{&&&&& &public:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &// 提示下面是外部接口&&&&&&&&&&&& &void SetTime(int NewH,int NewM,int NewS);&&&&&& // 行为,函数成员&&&&&&&&&&&&& void ShowTime();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 行为,函数成员&&&&&& private:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & // 特定的访问权限&&&&&&&&&&&& &int Hour,Minute,S&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & // 属性,数据成员&&&&&&&&&&&&&&&&};&&&&& &这是一个完整的类的声明。它声明了一个名为Clock的类,其中的数据成员和函数成员是前面分析得到的抽象结果。关键字public和private是用来指定成员的不同访问权限的,至于具体访问权限的问题后面课程中会讲到。声明为public的两个函数为类提供了外部接口,外界只能通过这两个接口跟Clock类联系。声明为private的三个整型数据是类的私有数据,外部无法直接访问。我们可以看到,这种访问权限的机制有效实现了对数据的隐藏。&&&&&& 3.继承&&&&&& 我们在软件开发过程中,可能已经有了前人的一些现有的成果,我们没有必要再重新去编写,那么我们怎样利用这些已有的模块呢?还有可能我们对以前写的程序有了更新的认识,需要融入一些新的认识,那怎么办呢?&&&&& &这些都可以通过继承来实现,C++语言提供了类的继承机制,让我们软件开发者可以在保持原有特性的基础上,进行更具体、更详细的说明。通过继承我们可以利用之前已经有的程序模块,还可以添加一些新的数据和行为,这在很大程度上提高了程序的复用性,大大节约开发成本。关于继承,后面的课程也会具体讲。&&&&&&&4.多态&&&&&& 多态就是类中具有相似功能的不同函数使用同一个名称。上一讲中讲的重载函数就实现了多态。利用多态可以对类的行为再抽象,抽象成同一个名称的功能相似的函数,减少程序中标识符的个数。多态是通过重载函数和虚函数等技术来实现的,虚函数后面也会详细介绍。&&&& & 这一讲鸡啄米认为,是属于软件开发思想方面的东西,在编程入门时可能不是很好理解,但是大家能掌握多少就尽量掌握吧,在以后大家真的实践了一些方法再来理解的话就很简单了,一句话,不要认为它有多难!&
除非特别注明,文章均为原创
转载请标明本文地址:
作者:鸡啄米
&&( 23:2:28)&&( 21:37:49)&&( 20:40:25)&&( 20:25:52)&&( 20:51:25)&&( 20:15:8)&&( 21:7:46)&&( 22:17:54)&&( 22:44:27)&&( 21:52:53)
好贴签到,同看留名。
标题有点意思
写得太好了,顶一下鸡啄米 于
23:14:53 回复谢谢,常来学习啊
“然后再接着细分,知道分解成具体的语句”应改为“然后再接着细分,直到分解成具体的语句”
谢谢楼主的无私奉献
言简意赅。。。写的很不错,胜过不少课本与教材。。。
完全随机文章浅谈面向对象设计方法发展史及现状
> 浅谈面向对象设计方法发展史及现状
浅谈面向对象设计方法发展史及现状
    来源:毕业论文网
  【摘要】面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行软件系统构造的软件方法学。本文就面向对象方法产生的背景以及发展现状进行了简要叙述。
  【关键词】面向对象 程序设计 发展史 UML
  1、面向对象特征概述
  面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在&对象&概念基础上的方法学。对象是由数据和操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。面向对象程序设计具有抽象性、封装性、继承性和多态性等特征。
  抽象:指从事物中舍弃个别的、非本质的特征,而抽取共同的、本质特征的思维方式。
  封装:将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。
  继承:让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。
  多态:指一般类和特殊类可以有相同格式的属性或操作,但这些属性或操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。
  2、面向对象设计方法发展历史
  在这里把面向对象方法的发展分为三个阶段:雏形阶段、完善阶段和繁荣阶段。
  (一)雏形阶段
  1967年挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,首先引入了类的概念和继承机制,它是面向对象的先驱。1972年Palo Alno研究中心(PARC)发布了Smalltalk-72,其中正式使用了&面向对象&这个术语。Smalltakl的问世标志着面向对象程序设计方法的正式形成。
  可以说出现了面向对象语言之后,面向对象思想才得到了迅速的发展。过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,直到面向对象语言。汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示机器指令,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性。
  (二)完善阶段
  PARC先后发布了Smalltalk-72、76和78等版本,直至1981年推出该语言完善的版本Smalltalk-80。Smalltalk-80的问世被认为是面向对象语言发展史上最重要的里程碑。迄今绝大部分面向对象的基本概念及其支持机制在Smalltalk-80中都已具备。它是第一个完善的、能够实际应用的面向对象语言。但是随后的Smalltalk-80的应用尚不够广泛,其原因是:
  追求纯OO的宗旨使得许多软件开发人员感到不便。
  一种新的软件开发方法被广泛地接受需要一定的时间。
  针对该语言的商品化软件开发工作到1987年才开始进行。
  (三)繁荣阶段
  从20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的面向对象编程语言的涌现,例如C++、Objective-C、Object Pascal、CLOS、Eiffel和Actor等。这些面向对象的编程语言分为纯OO型语言和混合型OO语言。混合型语言是在传统的过程式语言基础上增加了OO语言成分形成的,在实用性方面具有更大的优势。此时的纯OO型语言也比较重视实用性。现在,在面向对象编程方面,普遍采用语言、类库和可视化编程环境相结合的方式,如Visual C++、JBuilder和Delphi等。面向对象方法也从编程发展到设计、分析,进而发展到整个软件生命周期。
  到20世纪90年代,面向对象的分析与设计方法已多达数十种,这些方法都各有所长。目前,统一建模语言已经成为世界性的建模语言,适用于多种开发方法。把UML作为面向对象的建模语言,不但在软件产业界获得了普遍支持,在学术界影响也很大。在面向对象的过程指导方面,目前还没有国际规范发布。当前较为流行的用于面向对象软件开发的过程指导有&统一软件开发过程&(RUP)和国内的青鸟面向对象软件开发过程指导等。
  3、面向对象设计方法应用现状
  当前,面向对象方法几乎覆盖了计算机软件领域的所有分支。例如,已经出现了面向对象的编程语言、面向对象的分析、面向对象的设计、面向对象的测试、面向对象的维护、面向对象的图形用户界面、面向对象的数据库、面向对象的数据结构、面向对象的智能程序设计、面向对象的软件开发环境和面向对象的体系结构等。此外,许多新领域都以面向对象理论为基础或作为 主要技术,如面向对象的软件体系结构、领域工程、智能代理、基于构件的软件工程和面向服务的软件开发等。
  4、结语
  计算机软件技术的发展日新月异,在很短的时间内即涌现出了大量的软件开发工具并迅速地更新换代,给编程人员进行程序设计带来了极大的方便。在不久的将来相信面向对象程序设计技术必将应用到更多的程序中。
  [1] 麻志毅,著.面向对象分析与设计.机械工业出版社,2013,2.
  [2] 格雷厄姆(Ian Graham,I.)著,袁兆山,译. 面向对象方法:原理与实践.机械工业出版社,2003,3.
浅谈面向对象设计方法发展史及现状相关推荐君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
面向对象程序设计C中类的定义
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口面向对象程序设计(一种计算机编程架构)_百度百科
?一种计算机编程架构
面向对象程序设计
(一种计算机编程架构)
(Object Oriented Programming,,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的或对象组合而成。OOP 达到了的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
面向对象程序设计架构介绍
面向对象程序设计名词解释
面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、、消息传递。通过这些概念面向对象的思想得到了具体的体现。
1)对象(Object) 可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。
2)类(class) 一个共享相同结构和行为的对象的集合。
类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。
3)封装(encapsulation): 第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程。
第二层意思:将与实现分离的过程。
4)继承 类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的“是一种”关系。子类可以对基类的行为进行扩展、覆盖、重定义。
5)组合 既是类之间的关系也是对象之间的关系。在这种关系中一个对象或者类包含了其他的对象和类。
组合描述了“有”关系。
6)多态 类型理论中的一个概念,一个名称可以表示很多不同类的对象,这些类和一个共同超类有关。因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合。
7)动态绑定 也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定。通常由编译器插入特殊代码来实现。与之对立的是静态类型。
8)静态绑定 也称静态类型,指的是一个对象或者表达式的类型在编译时确定。
9)消息传递 指的是一个对象调用了另一个对象的方法(或者称为成员函数)。
10)方法 也称为成员函数,是指对象上的操作,作为类声明的一部分来定义。方法定义了可以对一个对象执行那些操作。[1]
面向对象程序设计语言分类
一种语言要称为面向对象语言,必须支持面向对象几个主要的概念。根据支持程度的不同,通常所说的面向对象语言可以分成两类:基于对象的语言和面向对象的语言。
基于对象的语言
基于对象的语言仅支持类和对象,举例来说,Ada就是一个典型的基于对象的语言,因为它不支持继承、多态,此外其他基于对象的语言还有Alphard、CLU、Euclid、Modula。
面向对象的语言
面向对象的语言支持的概念包括:类与对象、继承、多态。
面向对象的语言中一部分是新发明的语言,如Smalltalk、Java,这些语言本身往往吸取了其他语言的精华,而又尽量剔除他们的不足,因此面向对象的特征特别明显,充满了蓬勃的生机;另外一些则是对现有的语言进行改造,增加面向对象的特征演化而来的。如由Pascal发展而来的Object Pascal,由C发展而来的, ,由Ada发展而来的Ada 95等,这些语言保留着对原有语言的兼容,并不是纯粹的面向对象语言,但由于其前身往往是有一定影响的语言,因此这些语言依然宝刀不老,在程序设计语言中占有十分重要的地位。
面向对象程序设计设计优点
面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。
在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据。
这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。
比较面向对象程序设计和面向过程程序设计,还可以得到面向对象程序设计的其他优点:
1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;
2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;
3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;
4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制;
5)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;
6)通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。
面向对象程序设计架构特点
面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到之间的转换。这是面向对象设计方法最主要的特点和成就。面向对象设计方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
但是同原型方法一样, 面向对象设计方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用面向对象设计方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题。所以面向对象设计方法和结构化方法仍是两种在系统开发领域相互依存的、不可替代的方法。
面向对象程序设计设计方法
在数据输入模块内部设计中,采用面向对象的设计方法。[6]面向对象的基本概念如下:
对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。
类:类是对象的模板。即类是对一组有相同属性和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。
消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。
面向对象主要特征:
封装性:封装是一种技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在中重定义基类函数(定义为或虚函数)来实现多态性。
综上可知,在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的和实体的多态性,从而构成了面向对象的基本特征。
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。。按照Bjarne STroustRUP的说法,面向对象的编程范式:
l 决定你要的类;
2 给每个类提供完整的一组操作;
3 明确地使用继承来表现共同点。
由这个定义,我们可以看出:面向对象设计就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。
面向对象程序设计理论历史
1967年计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了和类的概念,它被认为是第一个。
世纪70年代初,Palo Alto研究中心的Alan Kay所在的研究小组开发出Smalltalk语言,之后又开发出Smalltalk-80,Smalltalk-80被认为是最纯正的面向对象语言,它对后来出现的面向对象语言,如Object-C,C++,Self,Eiffl都产生了深远的影响。
随着面向对象语言的出现,设计也就应运而生且得到迅速发展。
之后,不断向其他阶段渗透,1980年Grady Booch提出了的概念,之后面向对象分析开始。
1985年,第一个商用问世。1990年以来,面向对象分析、测试、度量和管理等研究都得到长足发展。
实际上,“对象”和“对象的属性”这样的概念可以追溯到20世纪50年代初,它们首先出现于关于人工智能的早期著作中。但是出现了面向对象语言之后,才得到了迅速的发展。过去的几十年中,对抽象机制的支持程度不断提高:从机器语言到,到,直到面向对象语言。汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性。但是,如果软件系统达到一定规模,即使应用方法,局势仍将变得不可控制。作为一种降低复杂性的工具,面向对象语言产生了,面向对象程序设计也随之产生。
面向对象程序设计学科应用
计算机科学中对象和实例概念的最早萌芽可以追溯到的系统。这一系统大概是最早的基于容量架构(capability based architecture)的实际系统。另外1963年Ivan Sutherland的Sketchpad应用中也蕴含了同样的思想。对象作为编程实体最早是于1960年代由Simula 67语言引入思维。Simula这一语言是和在挪威奥斯陆计算机中心为模拟环境而设计的。(据说,他们是为了模拟船只而设计的这种语言,并且对不同船只间属性的相互影响感兴趣。他们将不同的船只归纳为不同的类,而每一个对象,基于它的类,可以定义它自己的属性和行为。)这种办法是分析式程序的最早概念体现。在分析式程序中,我们将真实世界的对象映射到抽象的对象,叫做“模拟”。Simula不仅引入了“类”的概念,还应用了实例这一思想——这可能是这些概念的最早应用。
20世纪70年代PARC研究所发明的语言将面向对象程序设计的概念定义为,在基础运算中,对对象和消息的广泛应用。Smalltalk的创建者深受Simula 67的主要思想影响,但Smalltalk中的对象是完全动态的——它们可以被创建、修改并销毁,这与Simula中的静态对象有所区别。此外,Smalltalk还引入了的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的Simula。
此外,Simula 67的思想亦被应用在许多不同的语言,如、。
面向对象程序设计在80年代成为了一种主导思想,这主要应归功于——的扩充版。在(GUI)日渐崛起的情况下,面向对象程序设计很好地适应了潮流。GUI和面向对象程序设计的紧密关联在Mac OS X中可见一斑。Mac OS X是由语言写成的,这一语言是一个仿的C语言扩充版。面向对象程序设计的思想也使事件处理式的程序设计更加广泛被应用(虽然这一概念并非仅存在于面向对象程序设计)。一种说法是,GUI的引入极大地推动了面向对象程序设计的发展。
的尼克劳斯·维尔特和他的同事们对抽象数据和模块化程序设计进行了研究。Modula-2将这些都包括了进去,而Oberon则包括了一种特殊的面向对象方法——不同于Smalltalk与。
面向对象的特性也被加入了当时较为流行的语言:、、、、以及种种。由于这些语言最初并没有面向对象的设计,故而这种糅合常常会导致兼容性和维护性的问题。与之相反的是,“纯正的”面向对象语言却缺乏一些程序员们的特性。在这一大环境下,开发新的语言成为了当务之急。作为先行者,成功地解决了这些问题,并成为了当时较受欢迎的语言。
在过去的几年中,成为了广为应用的语言,除了它与C和C++语法上的近似性。Java的可移植性是它的成功中不可磨灭的一步,因为这一特性,已吸引了庞大的程序员群的投入。
一些既支持面向对象程序设计,又支持面向过程程序设计的语言悄然浮出水面。它们中的佼佼者有、等等.
正如面向过程程序设计使得的技术得以提升,现代的面向对象程序设计方法使得对设计模式的用途、和(如UML)技术也得到了一定提升。
Grady Booch Robert A. Maksimchuk 等.《面向对象分析与设计》:人民邮电出版社,

我要回帖

更多关于 js面向对象编程 的文章

 

随机推荐