面向对象技术论文

合集下载

独立学院面向对象课程教学改革与论文

独立学院面向对象课程教学改革与论文

独立学院面向对象课程的教学改革与探索摘要:本文根据面向对象编程技术这门课程的特点,再结合独立学院学生的能力,提出“任务驱动”的教学方法,通过具体的案例来激发学生的主动性与积极性,以切实提高三本学生的动手能力。

通过两个学期的改革探索,证明了该方法确实能帮助学生更加深入的理解理论知识,提高分析和解决问题的能力。

关键词:教改任务驱动面向对象编程技术中图分类号:g642 文献标识码:a 文章编号:1673-9795(2012)12(b)-0007-011 现状与背景面向对象的设计方法是20世纪80年代发展起来的一种程序设计方法。

面向对象的方法就是将数据以及数据的操作方法放在一起,作为一个项目依存、不可分离的整体——对象。

对同类型对象抽象出其共性,形成类。

类中的大多数数据,只能用本类的方法进行处理。

类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信[1]。

相对与结构化的程序设计思想,面向对象的程序模块间的关系更为简单,模块的独立性,安全性有了很好的保障。

但是,很多学生在先学了结构化的程序设计之后,再来学习面向对象的一些概念就显得难以理解。

封装,继承,多态,对象,这样的概念显得很抽象。

目前,《面向对象编程技术》课程教学是老师单一授课后布置一些小习题让学生进行练习,这种教学模式过分的强调教师的主导作用,学生缺乏主观能动性,自主学习能力没有得到锻炼。

加上刚刚接触面向对象这些抽象的概念,普遍有畏难和厌倦的情绪。

为此,本文将以“任务驱动”为导向的课程教学及实践的方法对本门课程进行改革。

2 “任务驱动”教学2.1 “任务驱动”模式“任务驱动”教学模式是以任务为核心,通过分析该模式中的学生这一主体,设计合适的任务,引导学生去完成该任务,最后,针对完成的情况进行总结分析和评价。

主要有以下几部分构成[2,4]:(1)学生能力的分析。

“任务驱动”教学模式中学生是主体,是任务的主动实施者。

对学生能力的分析,有利于教师设计出更符合学生特点及能力的任务,更好的提供帮助和指导,设计适合学生任务与学习资源。

[论文]面向对象的三个基本特征和概念

[论文]面向对象的三个基本特征和概念

面向对象的三个基本特征(讲解)面向对象的三个基本特征是:封装、继承、多态。

封装封装最好理解了。

封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类可以继承多个基类。

但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

实现继承是指使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。

例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。

但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

多态多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

面向对象软件工程开发探讨的论文

面向对象软件工程开发探讨的论文

面向对象软件工程开发探讨的论文当前计算机软件的复杂性处于日益增长的趋势,不仅意味着软件技术的飞跃,同时也意味着计算机软件的规模也将随之不断扩大。

在这样的背景下,面向对象的软件工程逐渐成为了软件开发过程中的主流技术,在近年来逐渐由面向对象编程向面向对象分析及面向对象设计转移,为计算机软件的开展开辟了新的道路,成为了一种主要的研究方向。

软件工程的设计在于对工程学的相关理论进行利用,并由此作为立足点来进行软件开发与维护。

作为软件工程方法中的一大主流方向,面向对象的方法在近年来得到了较为广泛的应用。

在该方法中,对象的主要特征属性在于数据与操作,其中数据对应于对象的内部属性特征,操作对应于对象的外部运动规律,通过利用面向对象的方法,软件开发与维护的便捷性可得到根本提升。

本文特针对基于面向对象的软件工程开发进行了相关探究,现总结如下。

面向对象的分析过程主要包含以下两个阶段:①对用户需求进行提取与抽象概括;②建立模型。

面向对象的设计过程主要是将用户的实际要求进行转换与设计,使其成为一个最优的。

面向对象的方法在由分析到设计的过程中,所有条件处于不断扩充的状态,在对其进行优化与完善后,最终使其成为模型。

分析与设计虽属于两个不同的阶段,但两者不仅相互联系、相互影响,甚至可相互产生制约。

一方面,分析的准确性可对所建立模型的实际意义产生直接影响,同时也是设计结果的折射;另一方面,设计阶段并非可脱离分析阶段独立运行,反之,在这一阶段中需对分析的结果进行反复的理解,由此对其进行完善。

2.1Booch方法Booch这一方法主要分为微观与宏观两个过程,两个过程之间存在一定联合,同时相互区别,笔者在此进行区别概述。

微观的过程可概括为以下几个方面:①将类和对象抽象化,在问题中进行类和对象的挖掘,同时确定实现对象功能的行为;②对抽象出来的类的状态及行为进行建立,主要对类图进行利用,由此建立起识别对象与类的关系,对类对象的边界进行确认,并对相互协同作用的类对象进行区分;③对算法与数据结构进行优化设计,以实现对象类与对象。

《C#面向对象程序设计》教学改革之论文

《C#面向对象程序设计》教学改革之论文

《C#面向对象程序设计》教学改革之初探摘要:对c#面向对象程序设计课程教学现状进行分析,阐述了教学方法、教学手段和考核方式的改革,从而推动教学质量的全面提高。

关键词:c#程序设计;教学改革;教学方法;教学手段;考核方式中图分类号:g42 文献标识码:a文章编号:1009-0118(2012)07-0106-02c#是从c和c++演变而来的一种新的面向对象的编程语言,是目前主流的编程语言之一,可以实现跨平台操作,功能强大。

c#借鉴了c和c++的很多东西,同时也抛弃了c和c++中的指针和多重继承等复杂难懂的知识点,简单易学。

c#课程是计算机和软件技术专业的一门基础课程,是后续程序开发、数据库等专业课的前导课程。

课程对理论知识及实践环节的要求都较高,该课程的教学目标是使学生掌握使用c#设计应用程序的基本技能,了解面向对象和结构化程序设计方法,能够在.net环境下编写、调试和运行实用、规范、可读性好的c#程序。

笔者根据c#课程的特点,结合教学过程中遇到的实际情况,从教学方式、教学内容、考核方式等方面做了一定的探索,与大家共勉,以求集思广益,共同提高本课程的教学效果。

一、教学现状分析(一)实践教学环节薄弱对于程序设计语言课程而言,上机实验课是教学中一个重要的环节,通过上机实验可以有效增强学生的实际编程能力,增加对所学知识点的理解和掌握。

学习c#程序设计课程的最终目的是培养学生的实际动手能力,重在技能培养,理论教学以“必需、够用”为原则,应尽量避免过深过繁的理论探讨。

但是现在仍然有很多教师一般只布置一些在理论课堂上讲解过的类似习题让学生去验证,没有或很少针对学生实际专业技能的实训。

学生实际动手能力不强,技能培养目标难以实现。

(二)学生知识水平参差不齐该门课程要求学习的对象一般要有c和c++作为基础,由于每个学习对象所学专业不同、课时不同等原因,导致对c和c++的掌握程度不一样。

这样就向教师提出了如何才能做到统筹兼顾的问题。

硕士论文-面向对象方法

硕士论文-面向对象方法

分类号TP31 密级公开UDC 编号硕士研究生学位论文题目 XX系统的分析与设计学院(所、中心)软件学院专业名称软件工程研究生姓名学号导师姓名周华职称研究员年月独创性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。

除了文中特别加以标注和致谢的地方外,论文中不包含其他人或集体已经发表或撰写过的研究成果,对本文的研究做出贡献的集体和个人均已在论文中作了明确的说明并表示了谢意。

研究生签名:日期:论文使用和授权说明本人完全了解云南大学有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交学位论文和论文电子版;允许论文被查阅或借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。

(保密的论文在解密后应遵循此规定)研究生签名:导师签名:日期:…………………………………………………………………本人及导师同意将学位论文提交至清华大学“中国学术期刊(光盘版)电子杂志社”进行电子和网络出版,并编入CNKI系列数据库,传播本学位论文的全部或部分内容,同意按《中国优秀博硕士学位论文全文数据库出版章程》规定享受相关权益。

研究生签名:导师签名:日期:摘要<简单的论文总体描述>论文首先介绍了XX系统的研究背景,对所需要解决的问题进行了概述,讨论了项目的研究意义与重要性,阐述了系统开发方法和相关技术;论文提出了系统的设计目标,对系统进行了详细的需求分析,包括业务需求、功能需求、数据需求和非功能需求,给出了系统的业务流程图、用例图和概念类图,进行了用例描述;在系统设计中,对系统进行了总体设计与模块设计,包括XX等功能模块,给出了模块设计的功能结构图(包图)、类图、顺序图(协作图)和处理流程图,详细阐述了设计内容,进行了界面设计,并使用实体类图、E-R图和数据库表结构对数据库进行了详细设计;论文最后对研究的内容进行了总结,阐述了本人的主要工作,指出了论文存在的不足,并对进一步的工作进行了展望。

java毕业论文范文5篇

java毕业论文范文5篇

java毕业论文范文5篇Java语言是编程语言史上的一个里程碑,在此基础上形成的Java Applet技术是综合了计算机图形学、多媒体技术、网络技术的新技术,近年来在很多领域得到了快速的发展和应用。

*是小编为大家整理的java的毕业论文范文,仅供参考。

java毕业论文范文篇一:学生姓名_______ _学号___________专业____ 班级____ 指导教师200 年月1.Java语言的出现自从1946年世界上第一台电子计算机问世以来,计算模式的发展经历了三个阶段:集中计算模式、分散计算模式和网络计算模式。

Internet的出现,为在网络计算模式下的科学计算和信息处理提供了良好平台。

然而,要充分利用网络计算模式的功能与效益,平台的运行环境是个制约因素,而Java语言和Java技术则是解决这一问题的最佳途径。

1991年,SUN公司的Jame Gosling,Bill Joe等人试图为电视、烤箱等家用电器开发一种交互式的软件系统,这种应用需要的是那种小而可靠的系统,它能够移植,并且实时性好,适用于网络分布环境。

流行的C++是自然的选择。

不过,开发过程中遇到的许多难以克服的困难使他们意识到必须彻底解决问题了,最终,开发成功了一个名为Oak的软件,此中蕴藏着Java的原型,当时,并未引起人们的注意。

1994年下半年,随着Internet的迅猛发展,环球信息网WWW的快速增长,促进了Java语言研制的进展,使得它逐渐成为Internet上倍受欢迎的开发与编程语言。

1995年5月Java正式问世,一些著名的计算机公司纷纷购买了Java语言的使用权,如Microsoft、IBM、Netscape、Novell、Apple、DEC、SGI等。

因此,Java语言被美国著名杂志PC Magazine评为1995年十大优秀科技产品(计算机类仅此一项入选)之一,随之大量出现了用Java编写的软件产品,受到工业界的重视与好评,认为“Java是八十年代以来计算机界的一件大事”。

面向对象程序设计课设论文-模拟自动售货机

面向对象程序设计课设论文-模拟自动售货机

《面向对象程序设计》课程设计题目:模拟自动售货机院系:数学与计算科学专业:信息与计算科学姓名学号: 1指导老师:日期:2015年 1 月8 日摘要随着社会的发展和不断进步,人们的物质文化与精神文化都在明显的提高,各种各样的高科技产品也应运而生并慢慢融入人们的生活,如信用卡支付、手机、地铁等等,当然,还有随处可见的自动售货机。

我基于自己所学,设计了一款饮料自动售货机。

该售货机操作简单,适合广大民众生活。

这个自动售货机是在Windows 环境下用 Microsoft Visual Studio 2008工具,基于MFC框架设计的,可以实现初始化界面,让界面美观简洁。

程序通过CRC 卡分析,建立UML类图,把程序功能具体化,用需求分析与方案论证,从而实现自动售货机的开发过程。

关键字:自动售货机MFC CRC卡UML类图AbstractWith the development of society and progress,people's material culture and spiritual culture are obviously improved,a variety of high-tech products also arises at the historic moment and slowly into people's lives,such as credit card payments, mobile phone,the subway and so on,of course,and the everywhere vending machine.I use my learned knowledge,designed a drinks vending machine.The vending machine operation is simple, so it is suitable for the general public life.This vending machine is in the Windows environment using Microsoft Visual Studio 2008 tools, and based on the MFC framework to design,it can implement initialization interface, and let the interface beautiful and concise.The program through the analysis of CRC card to establish a UML class diagram, let the program function is specific,it also using demand analysis and scheme comparison to realize the development process of the vending machine.Key words:The vending machine MFC CRC card UML class diagrams目录摘要 (2)Abstract (3)目录 (4)引言 (5)一、课程设计内容 (5)1.1、题目要求 (5)1.2、课程设计目的 (6)1.3、CRC分析过程陈述 (6)1.4、UML类图 (7)二、设计分析 (7)2.1、界面初始化 (7)2.1.1、关于对话框设置 (7)2.1.2、关于按钮设置 (8)2.2、出售商品设置 (9)2.3、售货机工作员设置 (15)三、运行结果 (16)3.1、投币操作 (16)3.1.1、金额充足显示 (16)3.1.2、金额不足显示 (16)3.2、继续投币操作 (17)3.3、退币操作 (18)3.4、停止售卖 (18)3.4.1、金额上限停止显示 (19)3.4.2、商品售完显示 (19)四、心得体会 (20)五、参考文献 (21)引言本次课设是用C++语言编写一个模拟自动售货机程序,要求用户从售货机商品列表选择某一商品并投入硬币。

软件工程新技术论文

软件工程新技术论文

软件工程新技术论文软件工程是自二十世纪以来的一个新兴的学科,也是一门新兴的产业。

下面小编给大家分享软件工程新技术论文,大家快来跟小编一起欣赏吧。

软件工程新技术论文篇一面向对象技术与软件工程摘要:传统的软件工程方法曾经给软件产业带来巨大进步,部分的缓解了软件危机,使用这种方法开发的许多中、小规模软件项目都获得了成功。

但是随着大型软件产品的不断开发,传统软件工程方法已经不能够满足大型软件产品的开发需求。

而目前面向对象方法已经成为人们在开发软件时首选的范型。

面向对象技术已经成为当前最好的软件开发工具。

关键词:软件工程;面向对象技术1、软件工程概念为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。

概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

2、面向对象技术2.1面向对象的概念所谓面向对象(OO,Object�Oriented )就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

(1)对象对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。

对象是要研究的任何事物。

对象不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。

对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。

从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。

在对内的操作通常称为方法。

使用对象时只需知道它向外界提供的接口形式而无须知道它的内部实现算法,不仅使得对象的使用变得非常简单、方便,而且具有很高的安全性和可靠性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象技术论文摘要:面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,在这篇论文中,我将从程序设计语言的发展和程序设计思想的演化之间的关系,来理解和思考面向对象程序设计技术,并逐步讨论如下。

关键字:关键字:面向对象过程化程序设计程序设计技术计算机程序设计的本质就是把现实生活中我们遇到的问题,通过抽象然后利用计算机语言转化到机器能够理解的层次,并最终利用机器来寻求问题的解。

在此过程中,涉及到两方面问题:一,如何把我们所面对的问题抽象化?使问题能够很好的被抽象语言描叙。

二,如何把已经抽象解决了的问题映射到机器能够理解的语言里面去。

从第一方面体现了程序设计思想而第二方面则体现了程序设计语言,有此可见,两者是有密切关系的,其中的连接点就是抽象机制。

1,程序设计语言的概论程序设计语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。

具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。

程序设计语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言,反映的就是一条抽象机制不断提高的演化道路,机器语言和汇编语言几乎没有抽象,对于机器而言是最合适的描叙,它可以操作到机器里面的位单位,并且任何操作都是针对机器的,这就要求人们在使用机器或者汇编语言编写程序时,必须按照机器的方式去思考问题,因为没有抽象机制,所以程序员很容易陷入复杂的事务之中。

C,PASCAL,FORTRAN, 随等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。

由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描叙问题。

随着程序规模的不段断扩大,在60 年代末期出现了软件危机,在当时的程序设计范型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计范型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如C++,Java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。

面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。

2.程序设计范型的演化2.1 过程式程序设计总的来说,过程式的程序设计是一种自上而下的设计方法,设计者用一个main 函数概括出整个应用程序需要做的事,而main 函数由对一系列子函数的调用组成。

对于main 中的每一个子函数,都又可以再被精炼成更小的函数。

重复这个过程,就可以完成一个过程式的设计。

其特征是以函数为中心,用函数来作为划分程序的基本单位,数据在过程式设计中往往处于从属的位置。

过程式设计的优点是易于理解和把握,这种逐步细化问题的设计方法和大多数人的思维方式比较接近。

然而,过程式设计对于比较复杂的问题,或是在开发中需求变化比较多的时候,往往显得力不从心。

这是因为过程式的设计是自上而下的,这要求设计者在一开始就要对需要解决的问题有一定的了解。

在问题比较复杂的时候,要做到这一点会比较困难,而当开发中需求变化的时候,以前对问题的理解也许会变得不再适用。

事实上,开发一个系统的过程往往也是一个对系统不断了解和学习的过程,而过程式的设计方法忽略了这一点。

在过程式设计的语言中,一般都既有定义数据的元素,如 C 语言中的结构,也有定义操作的元素, C 语言中的函数。

如这样做的结果是数据和操作被分离开,轻易导致对一种数据的操作分布在整个程序的各个角落,而一个操作也可能会用到很多种数据,在这种情况下,对数据和操作的任何一部分进行修改都会变得很困难。

在过程式设计中,main()函数处于一个非常重要的地位。

设计者正是在main()函数中,对整个系统进行一个概括的描述,再以此为起点,逐步细化出整个应用程序。

然而,这样做的一个后果,是轻易将一些较外延和易变化的逻辑(比如用户交互)同程序的核心逻辑混淆在一起。

假设我们编写一个图形界面的计算器程序和一个命令行界面的计算器程序,可以想象这两个版本的main()函数会有很大的差异,由此衍生出来的程序很有可能也会迥然不同,而这两个版本的程序本应该有很大部分可以共用才对。

2.2 模块程序设计在设计好软件的体系结构后,就已经在宏观上明确了各个模块应具有什么功能,应放在体系结构的哪个位置。

我们习惯地从功能上划分模块,保持“功能独立”是模块化设计的基本原则。

因为,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。

但是“功能独立”并不意味着模块之间保持绝对的孤立。

一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。

比如手和脚是两个“功能独立”的模块。

没有脚时,手照样能干活。

没有手时,脚仍可以走路。

但如果希望跑得快,那么迈左脚时一定要伸右臂甩左臂,迈右脚时则要伸左臂甩右臂。

在设计一个模块时不仅要考虑“这个模块就该提供什么样的功能”,还要考虑“这个模块应该怎样与其它模块交流信息”。

模块设计优劣的三个特征因素:“信息隐藏”、“内聚与耦合”和“封闭——开放性”。

a. 信息隐藏在一节不和谐的课堂里,老师叹气道:“要是坐在后排聊天的同学能象中间打牌的同学那么安静,就不会影响到前排睡觉的同学。

”这个故事告诉我们,如果不想让坏事传播开来,就应该把坏事隐藏起来,“家丑不可外扬”就是这个道理。

为了尽量避免某个模块的行为去干扰同一系统中的其它模块,在设计模块时就要注意信息隐藏。

应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。

模块的信息隐藏可以通过接口设计来实现。

一个模块仅提供有限个接口(Interface),执行模块的功能或与模块交流信息必须且只须通过调用公有接口来实现。

如果模块是一个C++对象,那么该模块的公有接口就对应于对象的公有函数。

如果模块是一个COM 对象,那么该模块的公有接口就是COM 对象的接口。

一个COM 对象可以有多个接口,而每个接口实质上是一些函数的集合。

b. 内聚与耦合内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。

耦合(Coupling)是模块之间依赖程度的度量。

内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。

模块设计追求强内聚,弱耦合。

一、内聚强度内聚按强度从低到高有以下几种类型:(1)偶然内聚。

如果一个模块的各成分之间毫无关系,则称为偶然内聚。

(2)逻辑内聚。

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。

如一个模块读取各种不同类型外设的输入。

尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

(3)时间内聚。

如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

(4)过程内聚。

如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。

(5)通信内聚。

如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。

(6)顺序内聚。

如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。

(7)功能内聚。

模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。

二、耦合强度耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。

耦合按从强到弱的顺序可分为以下几种类型:(1)内容耦合。

当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。

此时,被修改的模块完全依赖于修改它的模块。

(2)公共耦合。

两个以上的模块共同引用一个全局数据项就称为公共耦合。

(3)控制耦合。

一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。

(4)标记耦合。

模块间通过参数传递复杂的内部数据结构,称为标记耦合。

此数据结构的变化将使相关的模块发生变化。

(5)数据耦合。

模块间通过参数传递基本类型的数据,称为数据耦合。

(6)非直接耦合。

模块间没有信息传递时,属于非直接耦合。

如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。

c. 封闭——开放性如果一个模块可以作为一个独立体被其它程序引用,则称模块具有封闭性。

如果一个模块可以被扩充,则称模块具有开放性。

从字面上看,让模块具有“封闭——开放性”是矛盾的,但这种特征在软件开发过程中是客观存在的。

当着手一个新问题时,我们很难一次性解决问题。

应该先纵观问题的一些重要方面,同时作好以后补充的准备。

因此让模块存在“开放性”并不是坏事情。

“封闭性”也是需要的,因为我们不能等到完全掌握解决问题的信息后再把程序做成别人能用的模块。

模块的“封闭——开放性”实际上对应于软件质量因素中的可复用性和可扩充性。

采用面向过程的方法进行程序设计,很难开发出既具有封闭性又具有开放性的模块。

采用面向对象设计方法可以较好地解决这个问题。

设计程序的着重点已经从有关过程的设计转移到了对数据的组织,这种转移也反映了程序规模增大的情况。

相关的过程与他们所操作的数据组织在一起,通称为一个模块,程序设计范型变成:确定需要哪些模块;将程序分为一些模块,使数据隐藏于模块之中。

在这样的设计范型中,最重要的概念就是数据隐藏原理。

2.3 基于对象程序设计允许程序员直接定义类型,这种类型的行为方式与内部类型几乎完全一样,这样的类型常常被称为抽象数据类型,其程序设计范型是:确定需要哪些类型;为每个类型提供完整的一组操作。

支持这种范型的典型设计语言就是ADA。

2.4 面向对象程序设计在基于对象程序设计范型的基础上,加入继承和多态这两个组重要的概念就演变出了现在最流行的程序设计方法---面向对象程序设计,其范型是:确定需要哪些类;为每个类提供完整的一组操作;利用继承去明确地表示共性。

支持此范型的典型语言就是EIFFEL,JAVA,C++等。

3.面向对象程序设计面向对象程序设计的最基本的概念、机制是对象,对象可以被定义由属性(数据)和操作这些数据的方法(代码)组成的软件单元。

数据不能被对象的使用者直接访问,只允许通过由对象提供的方法或者代码访问数据(也就是说,函数调用它的方法)。

封装对象既包含数据又包含操作或者改变该数据的方法(代码)对象的服。

相关文档
最新文档