软件工程课程设计小论文之面向对象技术
软件工程课程设计小论文之面向对象技术

软件工程课程设计小论文之面向对象技术logo软件工程小论文题目《面向对象技术》专业班级:小组成员:指导教师:完成时间: 2012 年X月X日XXXX学院目录引言 (1)1、程序设计语言1.1面向对象语言的优点 (1)1.2面向对象语言的技术特点 (2)1.3选择面向对象语言 (4)2 面向对象的程序设计风格2.1 提高可重用性 (5)2.2 提高可扩充性 (7)2.3 提高健壮性 (7)3 面向对象的测试3.1面向对象的单元测试 (8)3.2面向对象的集成测试 (8)3.3面向对象的确认测试 (8)4 小结个人感想 (9)参考文献 (10)摘要面向对象方法学把分析、设计和实现很自然地联系在一起了。
实现的结果和实现成本却在很大程度上取决于实现环境。
因此,直接支持面向对象设计范式的面向对象程序语言、开发环境及类库,对于面向对象实现来说是非常重要的。
为了把面向对象设计结果顺利地转变成面向对象程序,首先应该选择一种适当的程序设计语言。
面向对象方法学使用独特的概念和技术完成软件开发工作,因此,在测试面向对象程序的时候,除了继承传统的测试技术之外,还必须研究与面向对象程序特点相适应的新的测试技术。
面向对象测试在测试类时使用的方法主要有随机测试、划分测试和基于故障的测试。
每种方法都测试类中封装的操作。
应该设计测试序列以保证相关的操作受到充分测试。
检查对象的状态(由对象的属性值表示),以确定是否存在错误。
关键词:面向对象语言,测试类,对象引言面向对象实现主要包括两项工作:把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;测试并调试面向对象的程序。
面向对象程序的质量基本上由面向对象设计的质量决定,但是,所采用的程序语言的特点和程序设计风格也将对程序的可靠性、可重用性及可维护性产生深远影响。
目前,软件测试仍然是保证软件可靠性的主要措施,对于面向对象的软件来说,情况也是如此。
面向对象测试的目标,也是用尽可能低的测试成本发现尽可能多的软件错误。
软件工程中的面向对象设计方法研究

软件工程中的面向对象设计方法研究随着软件技术的不断发展,面向对象设计方法成为了一种广泛应用的设计方法。
面向对象设计方法以对象为中心,通过封装、继承、多态等特性,实现了软件的可维护性、可扩展性和可重用性。
本文依次从面向对象的概念、面向对象设计方法、常用的面向对象设计模式和当前存在的问题等角度对软件工程中的面向对象设计方法进行研究。
一、面向对象的概念面向对象是一种计算机编程和系统设计的思想,在这种思想中,一切事物都是对象,对象包含属性和行为,并且能够与其他对象进行互动和协作。
面向对象编程是指一种基于面向对象思想的编程范式。
因此,面向对象的核心在于对象,是一种以类和对象为基础的编程方法。
面向对象的主要特性包括封装性、继承性和多态性。
封装性指的是将对象的属性和方法封装在一起,对外部隐藏细节;继承性指的是子类可以继承父类的属性和方法,从而扩展和重用代码;多态性指的是对象可以表现出多种形态,通过对同一方法的不同实现来实现多态。
二、面向对象设计方法面向对象设计方法是指一种基于面向对象思想的软件设计方法,它将系统设计分成了三个阶段:分析、设计和实现。
面向对象的软件设计方法有以下几个步骤:1. 需求分析需求分析是面向对象设计方法的第一步,它是确定软件设计方案的基础。
在需求分析阶段,开发团队需要了解客户需求,并且将其转化为技术需求。
在这个过程中,需要了解客户需要什么,为什么需要,以及如何满足这些需求。
2. 面向对象分析面向对象分析是面向对象设计方法的第二步,它是确定对象和对象之间交互的基础。
在面向对象分析中,团队需要定义对象的属性和行为,并且建立对象之间的关系。
3. 面向对象设计面向对象设计是面向对象设计方法的第三步,它是通过分析阶段的分析结果,设计出软件的架构、对象的类别、对象之间的关系以及方法等。
在面向对象设计中,需要产生类、接口、继承、多态等。
4. 面向对象实现面向对象实现是面向对象设计方法的最终步骤,它是将面向对象设计方法的结果转化为软件代码。
面向对象技术论文

面向对象技术论文摘要:面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,在这篇论文中,我将从程序设计语言的发展和程序设计思想的演化之间的关系,来理解和思考面向对象程序设计技术,并逐步讨论如下。
关键字:关键字:面向对象过程化程序设计程序设计技术计算机程序设计的本质就是把现实生活中我们遇到的问题,通过抽象然后利用计算机语言转化到机器能够理解的层次,并最终利用机器来寻求问题的解。
在此过程中,涉及到两方面问题:一,如何把我们所面对的问题抽象化?使问题能够很好的被抽象语言描叙。
二,如何把已经抽象解决了的问题映射到机器能够理解的语言里面去。
从第一方面体现了程序设计思想而第二方面则体现了程序设计语言,有此可见,两者是有密切关系的,其中的连接点就是抽象机制。
1,程序设计语言的概论程序设计语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。
具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。
程序设计语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言,反映的就是一条抽象机制不断提高的演化道路,机器语言和汇编语言几乎没有抽象,对于机器而言是最合适的描叙,它可以操作到机器里面的位单位,并且任何操作都是针对机器的,这就要求人们在使用机器或者汇编语言编写程序时,必须按照机器的方式去思考问题,因为没有抽象机制,所以程序员很容易陷入复杂的事务之中。
C,PASCAL,FORTRAN, 随等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。
由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描叙问题。
随着程序规模的不段断扩大,在60 年代末期出现了软件危机,在当时的程序设计范型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计范型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如C++,Java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。
面向对象论文软件分析论文

面向对象论文软件分析论文摘要:本文介绍了面向对象的相关概念和特性,以及对面向对象软件开发与设计进行了相关分析,探讨了面向对象软件开发技术的主要内容,其包括面向对象的需求分析技术、面向对象的系统设计技术、面向对象的程序设计技术和面向对象的测试技术。
关键词:面向对象;特征;软件分析;设计技术object-oriented software design technologyshi tong(shanghai east china normaluniversity,shanghai200062,china)abstract:this paper introduces an object-oriented concepts and features,as well as object-oriented software development and design of the correlation analysis,explore the object-oriented software development technology,the main content,which includes object-oriented requirements analysis techniques,surface system design technology to the object,object-oriented programming techniques and object-oriented testing techniques.keywords:object-oriented;features;softwareanalysis;design technology一、引言随着传统结构化方法的软件开发技术的弊端不断凸现,人们逐步转向了面向对象的软件开发技术,到上世纪90年代,面向对象技术是软件开发技术中核心的开心技术,虽然近年it界已经提出了面向服务的软件开发技术,但由于其在软件业的应用不成熟性和一些局限性,和面向对象技术的相关优势,其仍然是当今软件开发与设计的核心技术之一。
面向对象的软件工程需求分析方法的论文

面向对象的软件工程需求分析方法的论文面向对象的软件工程需求分析方法的论文摘要:在软件工程的众多阶段中,软件需求分析是其中最为重要的阶段之一,能够在面对客户的过程中做出正确的需求分析。
有很多人认为,在面向对象的软件工程中,软件需求的任务在于确定系统完成工作的方式,然而这种理解方式存在一定的不完整性,在此提出,软件需求的任务是确定系统完成工作的内容,其中包括对目标系统的完整性、准确性和具体性;软件需求的工作是探析软件的功能和使用方式,从而得出软件的设计意图和软件与其他程序之间接口的方式和结论,并且为软件的其他有效性的要去进行定义.关键词:面向对象;软件工程;软件需求分析本文主要阐述软件需求分析在关键工程中的必要性,并描述了面向对象的软件工程中软件需求分析的任务、过程和方法。
1软件工程软件工程涉及程序涉及语言、数据库、开发工具、以及设计模式等等,是研究并维护软件的一门学科。
在目前的社会中,软件在各个方面都被广泛的应用,如办公套件、操作系统以及游戏。
其中计算机软件的应用在银行、工农业、、企业中的应用更为广泛,有了这种软件工程的加入,让人们的生活和工作的质量更高,同时也加强了工作效率,推动社会经济的发展。
开发软件的职业是软件工程师,也能够根据所负责的工作不同进行划分为系统分析员、软件设计师、系统架构师和程序员等。
软件工程在学界中并没有专一的概念,比较被大部分人认可的定义为:软件工程是针对软件出现的各种问题而出现的一门学科,同时也是对软件进行一系列研究的方法。
软件工程的目标在于研发质量较高的.软件产品,使软件在功能、可靠、使用、效率、维护、移植等方面都具有良好的标准。
软件工程的表现为以下几点:首先,软件并不是指实际产品,它是指逻辑上存在的产品,费用的使用也主要是在研制过程中,软件的问题并不存在像实物中一些用坏或者损坏情况,而是存在过时问题;其次,软件的功能体现是靠用户的使用和软硬件的运行状态,而且其功能的复杂性也高于一般产品;最后,软件设计在功能和实现上有很大的多样性,提升软件的质量和开发效率就是推动软件工程发展的关键。
软件工程中面向对象设计的研究

软件工程中面向对象设计的研究软件工程是在解决复杂软件系统开发活动中的管理问题以及对软件开发过程的控制。
在软件工程中,需要使用各种方法和技术来解决复杂的软件设计问题。
软件工程中面向对象设计就是其中之一。
面向对象设计(OOD)是一种软件设计范例,其中程序被组织成包含数据集合的对象,对象通过在不同对象之间传递消息的方式来进行通信。
这种设计范例被广泛地应用在软件开发中,并且已经被证明可以帮助开发者更好地理解复杂的软件系统。
软件开发者在使用面向对象设计时,需要考虑的主要因素是抽象和复用。
抽象使得开发者能够将底层详细的实现细节隐藏在抽象层之下,使得高层次的类和对象更易于理解,更容易修改。
复用是另一个关键因素,通过使用继承,多态和其他技术,开发者能够重用已有的代码,从而减少开发时间和成本。
面向对象设计中最重要的思想是“封装”,“继承”和“多态”。
封装是指将数据和行为组成一个整体,控制对对象的访问,使其不受外部影响。
继承是指一个类从另一个类派生出来,从而共享父类中的属性和方法。
多态性允许对象在不同的环境中表现出不同的行为。
面向对象设计并不是一个简单的过程,需要开发者有一定的理论基础和实际经验才能将其应用到软件开发中。
开发者需要考虑许多因素,如类之间的关系、方法之间的调用、不同的应用场景等等。
在软件设计的实践中,开发者也会面临面向对象设计的一些挑战。
其中一些问题包括代码复杂度、类之间复杂的依赖关系以及不同的应用场景。
为了解决这些问题,开发者经常会使用一些技术,如接口、抽象类、模板方法模式等。
总体来说,面向对象设计是一个非常有用的软件开发范例。
它已被证明可以帮助开发者更好地理解复杂的软件系统,并且可以大大减少开发时间和成本。
在软件开发中,开发者应该积极地探索面向对象设计的各种技术和方法,以获得更好的结果。
软件工程新技术论文

软件工程新技术论文软件工程是自二十世纪以来的一个新兴的学科,也是一门新兴的产业。
下面小编给大家分享软件工程新技术论文,大家快来跟小编一起欣赏吧。
软件工程新技术论文篇一面向对象技术与软件工程摘要:传统的软件工程方法曾经给软件产业带来巨大进步,部分的缓解了软件危机,使用这种方法开发的许多中、小规模软件项目都获得了成功。
但是随着大型软件产品的不断开发,传统软件工程方法已经不能够满足大型软件产品的开发需求。
而目前面向对象方法已经成为人们在开发软件时首选的范型。
面向对象技术已经成为当前最好的软件开发工具。
关键词:软件工程;面向对象技术1、软件工程概念为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。
概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
2、面向对象技术2.1面向对象的概念所谓面向对象(OO,Object�Oriented )就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
(1)对象对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
对象是要研究的任何事物。
对象不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。
对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。
从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。
在对内的操作通常称为方法。
使用对象时只需知道它向外界提供的接口形式而无须知道它的内部实现算法,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。
面向对象课程设计论文

面向对象课程设计论文一、教学目标本课程的教学目标是使学生掌握面向对象编程的基本概念、原理和方法,培养学生独立思考、动手实践的能力,提高学生运用面向对象技术解决实际问题的综合素质。
1.理解面向对象编程的基本概念,如类、对象、封装、继承、多态等。
2.熟悉面向对象编程的语法和结构,能够运用面向对象的思想编写简单的程序。
3.能够使用面向对象编程语言(如Java、C++等)编写简单的程序。
4.能够运用面向对象技术解决实际问题,如设计类、创建对象、实现方法等。
情感态度价值观目标:1.培养学生对编程的兴趣和热情,提高学生主动学习和探索的精神。
2.培养学生团队协作、相互帮助的意识,提高学生的沟通能力和团队协作能力。
二、教学内容根据课程目标,本课程的教学内容主要包括面向对象编程的基本概念、语法和应用。
1.面向对象编程的基本概念:类、对象、封装、继承、多态等。
2.面向对象编程的语法:类和对象的定义、成员变量和成员方法、构造方法、继承和多态等。
3.面向对象编程的应用:设计类、创建对象、实现方法、解决实际问题等。
三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解面向对象编程的基本概念和语法,使学生掌握相关知识。
2.讨论法:学生进行小组讨论,引导学生主动思考和探索面向对象编程的应用。
3.案例分析法:分析实际案例,让学生了解面向对象编程在实际问题中的应用。
4.实验法:让学生动手实践,编写面向对象的程序,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用权威、实用的面向对象编程教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,拓展学生的知识面。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:提供足够的计算机设备,让学生进行实验和动手实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试等,旨在全面、客观地评价学生的学习成果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
logo软件工程小论文题目《面向对象技术》专业班级:小组成员:指导教师:完成时间: 2012 年X月X日XXXX学院目录引言 (1)1、程序设计语言1.1面向对象语言的优点 (1)1.2面向对象语言的技术特点 (2)1.3选择面向对象语言 (4)2 面向对象的程序设计风格2.1 提高可重用性 (5)2.2 提高可扩充性 (7)2.3 提高健壮性 (7)3 面向对象的测试3.1面向对象的单元测试 (8)3.2面向对象的集成测试 (8)3.3面向对象的确认测试 (8)4 小结个人感想 (9)参考文献 (10)摘要面向对象方法学把分析、设计和实现很自然地联系在一起了。
实现的结果和实现成本却在很大程度上取决于实现环境。
因此,直接支持面向对象设计范式的面向对象程序语言、开发环境及类库,对于面向对象实现来说是非常重要的。
为了把面向对象设计结果顺利地转变成面向对象程序,首先应该选择一种适当的程序设计语言。
面向对象方法学使用独特的概念和技术完成软件开发工作,因此,在测试面向对象程序的时候,除了继承传统的测试技术之外,还必须研究与面向对象程序特点相适应的新的测试技术。
面向对象测试在测试类时使用的方法主要有随机测试、划分测试和基于故障的测试。
每种方法都测试类中封装的操作。
应该设计测试序列以保证相关的操作受到充分测试。
检查对象的状态(由对象的属性值表示),以确定是否存在错误。
关键词:面向对象语言,测试类,对象引言面向对象实现主要包括两项工作:把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;测试并调试面向对象的程序。
面向对象程序的质量基本上由面向对象设计的质量决定,但是,所采用的程序语言的特点和程序设计风格也将对程序的可靠性、可重用性及可维护性产生深远影响。
目前,软件测试仍然是保证软件可靠性的主要措施,对于面向对象的软件来说,情况也是如此。
面向对象测试的目标,也是用尽可能低的测试成本发现尽可能多的软件错误。
但是,面向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。
必须在实践中努力探索适合于面向对象软件的更有效的测试方法。
1 程序设计语言1.1 面向对象语言的优点面向对象设计的结果既可以用面向对象语言、也可以用非面向对象语言实现。
使用面向对象语言时,由于语言本身充分支持面向对象概念的实现,因此,编译程序可以自动把面向对象概念映射到目标程序中。
使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到目标程序中。
所有非面向对象语言都不支持一般-特殊结构的实现,使用这类语言编程时要么完全回避继承的概念,要么在声明特殊化类时,把对一般化类的引用嵌套在它里面。
到底应该选用面向对象语言还是非面向对象语言,关键不在于语言功能强弱。
从原理上说,使用任何一种通用语言都可以实现面向对象概念。
当然,使用面向对象语言,实现面向对象概念,远比使用非面向对象语言方便,但是,方便性也并不是决定选择何种语言的关键因素。
选择编程语言的关键因素,是语言的一致的表达能力、可重用性及可维护性。
从面向对象观点看来,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为这会带来下述几个重要优点:1.1.1 一致的表示方法从前面章节的讲述中可以知道,面向对象开发基于不随时间变化的、一致的表示方法。
这种表示方法应该从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变。
一致的表示方法既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。
1.1.2 可重用性为了能带来可观的商业利益,必须在更广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上进行重用。
因此,在OOA,OOD直到OOP中都显式地表示问题域语义,其意义是十分深远的。
随着时间的推移,软件开发组织既可能重用它在某个问题域内的OOA结果,也可能重用相应的OOD和OOP结果。
1.1.3 可维护性尽管人们反复强调保持文档与源程序一致的必要性,但是,在实际工作中很难做到交付两类不同的文档,并使它们保持彼此完全一致。
特别是考虑到进度、预算、能力和人员等限制因素时,做到两类文档完全一致几乎是不可能的。
因此,维护人员最终面对的往往只有源程序本身。
以ATM系统为例,说明在程序内部表达问题域语义对维护工作的意义。
假设在维护该系统时没有合适的文档资料可供参阅,于是维护人员人工浏览程序或使用软件工具扫描程序,记下或打印出程序显式陈述的问题域语义,维护人员看到“ATM”、“账户”、“现金兑换卡”等,这对维护人员理解所要维护的软件将有很大帮助。
因此,在选择编程语言时,应该考虑的首要因素,是在供选择的语言中哪个语言能最好地表达问题域语义。
一般说来,应该尽量选用面向对象语言来实现面向对象分析、设计的结果。
1.2 面向对象语言的技术特点面向对象语言的形成借鉴了历史上许多程序语言的特点,从中吸取了丰富的营养。
当今的面向对象语言,从20世纪50年代诞生的LISP语言中引进了动态联编的概念和交互式开发环境的思想,从20世纪60年代推出的SIMULA语言中引进了类的概念和继承机制,此外,还受到20世纪70年代末期开发的Modula_2语言和Ada语言中数据抽象机制的影响。
20世纪80年代以来,面向对象语言像雨后春笋一样大量涌现,形成了两大类面向对象语言。
一类是纯面向对象语言,如Smalltalk和Eiffel等语言。
另一类是混合型面向对象语言,也就是在过程语言的基础上增加面向对象机制,如C++等语言。
一般说来,纯面向对象语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象语言的目标则是提高运行速度和使传统程序员容易接受面向对象思想。
成熟的面向对象语言通常都提供丰富的类库和强有力的开发环境。
下面介绍在选择面向对象语言时应该着重考察的一些技术特点。
1.2.1 支持类与对象概念的机制所有面向对象语言都允许用户动态创建对象,并且可以用指针引用动态创建的对象。
允许动态创建对象,就意味着系统必须处理内存管理问题,如果不及时释放不再需要的对象所占用的内存,动态存储分配就有可能耗尽内存。
有两种管理内存的方法,一种是由语言的运行机制自动管理内存,即提供自动回收“垃圾”的机制;另一种是由程序员编写释放内存的代码。
自动管理内存不仅方便而且安全,但是必须采用先进的垃圾收集算法才能减少开销。
某些面向对象的语言允许程序员定义析构函数(destructor)。
每当一个对象超出范围或被显式删除时,就自动调用析构函数。
这种机制使得程序员能够方便地构造和唤醒释放内存的操作,却又不是垃圾收集机制。
1.2.2 实现整体-部分(即聚集)结构的机制一般说来,有两种实现方法,分别使用指针和独立的关联对象实现整体-部分结构。
大多数现有的面向对象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的实现方法,通过增加内部指针可以方便地实现关联。
1.2.3 实现一般-特殊(即泛化)结构的机制既包括实现继承的机制也包括解决名字冲突的机制。
所谓解决名字冲突,指的是处理在多个基类中可能出现的重名问题,这个问题仅在支持多重继承的语言中才会遇到。
某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。
不论使用何种语言,程序员都应该尽力避免出现名字冲突。
1.2.4 实现属性和服务的机制对于实现属性的机制应该着重考虑以下几个方面:支持实例连接的机制;属性的可见性控制;对属性值的约束。
对于服务来说,主要应该考虑下列因素:支持消息连接(即表达对象交互关系)的机制;控制服务可见性的机制;动态联编。
所谓动态联编,是指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。
动态联编机制使得程序员在向对象发送消息时拥有较大自由,在发送消息前,无须知道接受消息的对象当时属于哪个类。
1.2.5 类型检查程序设计语言可以按照编译时进行类型检查的严格程度来分类。
如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。
面向对象语言在这方面差异很大,例如,Smalltalk 实际上是一种无类型语言(所有变量都是未指定类的对象);C++和Eiffel则是强类型语言。
混合型语言(如C++, Objective_C等)甚至允许属性值不是对象而是某种预定义的基本类型数据(如整数,浮点数等),这可以提高操作的效率。
强类型语言主要有两个优点:一是有利于在编译时发现程序错误,二是增加了优化的可能性。
通常使用强类型编译型语言开发软件产品,使用弱类型解释型语言快速开发原型。
总的说来,强类型语言有助于提高软件的可靠性和运行效率,现代的程序语言理论支持强类型检查,大多数新语言都是强类型的。
1.2.6 类库大多数面向对象语言都提供一个实用的类库。
某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。
存在类库,许多软构件就不必由程序员重头编写了,这为实现软件重用带来很大方便。
类库中往往包含实现通用数据结构(例如,动态数组、表、队列、栈、树等等)的类,通常把这些类称为包容类。
在类库中还可以找到实现各种关联的类。
更完整的类库通常还提供独立于具体设备的接口类(例如,输入输出流),此外,用于实现窗口系统的用户界面类也非常有用,它们构成一个相对独立的图形库。
1.2.7 效率许多人认为面向对象语言的主要缺点是效率低。
产生这种印象的一个原因是,某些早期的面向对象语言是解释型的而不是编译型的。
事实上,使用拥有完整类库的面向对象语言,有时能比使用非面向对象语言得到运行更快的代码。
这是因为类库中提供了更高效的算法和更好的数据结构,例如,程序员已经无须编写实现哈希表或平衡树算法的代码了,类库中已经提供了这类数据结构,而且算法先进、代码精巧可靠。
认为面向对象语言效率低的另一个理由是,这种语言在运行时使用动态联编实现多态性,这似乎需要在运行时查找继承树,以得到定义给定操作的类。
事实上,绝大多数面向对象语言都优化了这个查找过程,从而实现了高效率查找。
只要在程序运行时始终保持类结构不变,就能在子类中存储各个操作的正确入口点,从而使得动态联编成为查找哈希表的高效过程,不会由于继承树深度加大或类中定义的操作数增加而降低效率。
1.2.8 持久保存对象任何应用程序都对数据进行处理,如果希望数据能够不依赖于程序执行的生命期而长时间保存下来,则需要提供某种保存数据的方法。
希望长期保存数据主要出于以下两个原因:(1) 为实现在不同程序之间传递数据,需要保存数据;(2) 为恢复被中断了的程序的运行,首先需要保存数据。
一些面向对象语言,没有提供直接存储对象的机制。