面向对象设计范文
面向对象设计范文(精选12篇)
面向对象设计 第1篇
在已发现的重要对象中, 类关系的细节和对象的行为是开发通过一个相关联的模型, 捕捉软件架构的四个层次:逻辑静态, 逻辑动态, 物理静态和物理动态[3]。
逻辑静态模型描述实例 (类成员) 关系, 关联, 聚合 (部分) 和概括, 这就是所谓的系统对象模型。泛化关系意味着属性和方法的继承。用于数据建模的实体关系符号的图形符号经常被用来定义对象模型。约束, 如基数 (例如一对一, 一对多, 多对多) 对设计来说是重要的, 也表示在对象模型。巴科斯-诺尔表格语法的文本符号也被使用。文法类结构提供了更简洁的表示。
逻辑动态模型描述对象之间的相互作用。交互定义该系统的运行时行为的参与对象, 对象之间有序的消息和确定每个对象的可见度。对象的可见性定义了一个对象如何处于向它发送消息的方法的作用域之中。例如, 它可以是方法的参数、局部变量、新的对象、或当前执行方法的对象的部分。对象交互图和交互图被用来描述重要的相互作用。这些数据显示对象之间的参与对象和时间排序的消息。一个互动对象的可见性是通过可见性图标来表达的。对象的可见性决定一个对象如何成为发送消息的方法范围的一部分。例如, 它可能是一个方法参数, 本地变量, 一个新的对象, 或当前对象的一部分执行方法。简洁的描述类似的相互作用的字符集的对象交互模型被称为传播模式模型。
物理静态模型描述模块中代码的布局。物理动态模型描述软件的进程和线程体系结构。面向对象的设计过程是一个迭代开发和细化类结构和对象交互的层次分解。新的对象和类反映计算机科学领域的元素如算法, 数据结构和实施工具, 如数据库工具将被添加。
面向对象设计也可以确定一个或多个在执行中使用的框架, 框架是设计为协同工作的一个已经集成和重用的类的集合, 规定了应用程序的体系结构。框架是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物, 它的发展在很大程度上依赖硬件技术的发展。应用框架强调的是软件的设计重用性和系统的可扩充性, 以缩短大型应用软件系统的开发周期, 提高开发质量。重用一个特定的框架, 将强烈的影响一般的设计方法相关软件。软件中使用框架为了实现“高内聚、低耦合”把怎提划分开来各个解决, 易于控制, 易于延展, 易于分配资源。框架最大的好处是重用, 由于框架能实现代码重用, 因此从一个已有框架中建立应用变得更加容易, 使软件生产效率和质量得到很大提高, 建立更加开放的系统。
新的开发工具, 如Visual Age, Visual Basic和Delphi, 分别提供应用程序开发框架的语言, C++or或Smalltalk, Basic和Object Pascal。面向对象编程语言各不相同, 但是这些语言中可以看到他们都支持对面向对象三大机制:封装、继承、多态。[6]对这些产品通常提供图形用户界面开发的框架。第三软件开发商制作的组件的集合称为零件和VBXs (Visual Basic中的自定义控件) 处理其他许多常见的软件功能, 如数据库接入, 多媒体和通信。这些都可以集成现有的框架, 给设计人员和开发人员提供扩展的功能。任何一个有职业操守的面向对象程序员都不应该只从编程语言上获得面向对象知识, 因为通过面向对象编程语言认识到的面向对象, 只是浅陋的面向对象, 并不是面向对象的全部, 应该系统的学习面向对象知识, 从而胜任面向对象设计与开发
指引和启发
一些指导方针和探索方法在文献中发现用来帮助面向对象设计师, 经典的软件工程结构化设计的最初制定的主导原则依然作为重要的面向对象设计:模块化, 数据隐藏, 低模块的耦合和高模块的凝聚力。设计结果清晰、易懂、易读是提高软件可维护性和可复用性的重要措施。
在类c的方法M中, 我们应该只调用下面的类的方法:
1、当前对象的直接子部分 (包括存储和派生) 的类
2、M的参数对象 (包括类C本身) 的类
3、由M创建的对象的类
在实施时, 该规则禁止嵌套消息发送, 在设计时, 该规则限制消息对象交互传递。通常, 设计质量越高设计结果保持不变的时间也越长, 即使出现必须设计的情况, 也应该使修改范围尽可能的小。
结论:
该技术的目前状态并没有作为一个明确的面向对象设计模型, 语言或方法被定义, 在实践中, 面向对象设计可能涉及使用事例描述情景, 对象建模技术 (OMT) 描述静态对象模型, 和Booch方法或动态对象模型描述传播模式。
对象建模技术和Booch方法在进程中要结合起来, 形成统一的方法。对象建模技术和统一方法之间的一个关键区别在于, 对象建模基数不支持与明确的模型对象交互。另一个区别是, 对象建模技术的功能模型基于数据流图。
统一方法, 设计模式和传播模式表明在面向对象设计中重点从静态模型向静态模型的转移。
参考文献
[1]Grady Booch, Object-Oriented Design WithApplications Benjamin/Cummings Publishing Company, Inc., 1991。
[2]Grady Booch and James Rumbaugh, 基于面向对象发展的统一方法.技术报告, Rational软件公司, 1995。
面向对象分析与设计课程总结 第2篇
课程总结
0923010208 指导老师:庄育飞
这学期学院开设了面向对象分析与设计(UML)这门课,通过老师的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。我觉得学习这门课还是受益匪浅的。
面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。
OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复
用、可扩展、可维护性、弹性。
OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。
面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。
在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。
访问一个聚合对象的内容而无需暴露它的内部表示。
支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象中的。
为遍历不同的聚合结构提供一个统一的接口。根据实现方式的不同,效果上会有差别。同时还简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。
在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
在Java Collection的应用中,提供的具体迭代器角色是定义在容器角色中的内部类。这样便保护了容器的封装。但是同时容器也提供了遍历算法接口,你可以扩展自己的迭代器。至于迭代器模式的使用。客户程序要先得到具体容器角色,然后再通过具体容器角色得到具体迭代器角色。这样便可以使用具体迭代器角色来遍历容器了。
OOA和OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生鸿沟,这是相对结构化思想的好处,因为从功能模块到某块详细控制逻辑设计两者之间的联系不是十分紧密,需要分析人员与设计人员的再沟通。
通过课程的学习与实践,对面向对象的理念,以及相关方法,设计模式有了更为深刻的理解与掌握。针对面向对象的分析与设计课程的授课内容及方法,我个人觉得对我还是有不少的帮助和 提高。结合自己的工作,虽然与开发接触的比较少,但是在运维过程中,如果能了解开发原理,结合实际的工作,会对一些源代码的分析能力以及工作效率的提高起到明显的帮助作用。
庄老师上课经常说一些与课程无关的内容,我已开始并不理解他的作法,后来我慢慢认识到面向对象分析设计的学习就是培养思想的一种过程,这种思维方式还是需要大量的实践才能灵活的运用。目前的阶段,只能说是知道有这样一种设计思想、这种解决问题的方案,至于在何时应该使用、如何去使用,就需要在今后的经验中去累积了。
下面是一些我掌握的基础知识
9种UML图:
类 图:描述类的结构(包括属性以及类之间的相互关系)
对象图:对象以及对象之间的相互关系
构件图:构件及其相互依赖关系
部署图:构件在各节点上的部署
顺(时)序图:强调时间顺序的交互图,用于将系统行为分配给类。一般包含了边界、控制、实体对象
协作图:强调对象协作的交互图,与时序图同构
状态图:类所经历的各种状态,包括状态之间的转换以及触发转变的事件
活动图:对工作流程建模
用例图:与用例文档结合进行需求捕获,测试依据
面向对象设计七个原则:
开-闭 原则、里氏转换原则、依赖倒转原则、接口隔离原则、组合/聚合复用原则、迪米特法则、单一职责
ICONIX开发过程:域模型——用例文档——健壮性分析——健壮图——时序图
设计模式:
1)创建模式: 涉及对象的创建
单例模式, 工厂模式, 建造者模式,原型模式
2)结构模式:涉及类和对象的组合
Facede外观模式, 代理模式, 适配器模式, 装饰模式
3)行为模式: 刻画了类和对象交换及分配职责的方式.主要目标是解耦
观察者模式, 命令模式, 模板模式
本学期学了《面向对象系统分析与设计》课程,本课程我们主要是学习了面向对象的统一建模语言UML,了解面向对象技术的基本概念,掌握面向对象的分析和设计方法,以及与面向对象技术相关的一些软件开发技术,同时掌握在IBM RSA软件环境下用UML进行分析和设计的技术。在《面向对象系统分析与设计》 的上级课程上,我们的实践能力方面着重设计构思和设计技能的得到基本训练,熟练的上机操作能力和分析能力,加深理解、验证、巩固课堂教学内容。
数据库是以信息处理为核心的任何应用系统的基础,数据库设计的质量直接关系到系统开发的成败和优劣。数据库设计的方法与系统使用的开发方法有着密切的关系,同时还与所应用的数据库模型(层次模型、网状模型、关系模型、对象模型)有关。目前经常采用E—R(Entity—Relationship)图的方法设计数据库。但E—R图设计数据库存在的主要问题是只能对资料建模,而不能对行为建模。而UML类图的描述能力更强,UML类图是E—R图的扩充。对于关系模型来说,可以用类图描述数据库模式,用类描述数据库表。
UML是应用面向对象方法进行系统开发的全程建模语言,可用于业务分析、需求分析、系统设计、系统实现与测试等系统开发的各个环节。UML概念设计的基本工作分为两个方面:
· 一是从系统分析和系统设计所建立的各种类图中抽取持久型类。
· 二是确定持久型类之间的关系,并用类图描述这种关系,从而把类图作为数据
库概念设计的结果。
1.抽取持久型类
持久型类是指类的完整信息需要在数据库中存储的类。在UML中,类可以分为
边界类、实体类和控制类三种类型。
· 接口类和控制类的信息一般不需要长久存储。
· 持久型类只可能是实体类,但并不是所有实体类的信息都需要长久地存储,持久型类只需要从那些信息需要长久存储的实体类中抽取。
2.确定类关系
在比较复杂的系统分析和设计中,并没有建立立足于整个系统的整体类图,而只是建立了一个个针对具体用例的类图。也就是说,所提取的持久型类被分散到各个用例类图当中了。因此,需要对抽取的持久型类进行分析,以确定它们之间的相互关系,建立起反映这些类关系的类图。
UML数据建模与E—R图有着本质的区别。在E—R图中,应用型数据库系统的重点是数据库结构。概念设计是应用型数据库系统开发的重点和难点。而UML是用于面向对象系统开发的全程建模语言,可用于需求分析、系统分析与设计、系统实现、系统测试等系统开发的所有环节。由于UML基于面向对象技术,而要保持方法的一致性,最好选择面向对象数据库。但是,目前的面向对象数据库在实现技术上还不十分成熟,即使应用面向对象技术和环境开发应用系统,通常的做法是使用UML进行建模,用关系型数据库储存和管理数据。
通过一学期的学习和实践,我了解到uml具有以下特点[1]:
(1)面向对象。uml支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图形和方法,能简洁明了地表达面向对象的各种概念。
(2)可视化,表示能力强。通过uml的模型图能清晰地表示系统的逻辑模型和实现模型。可用于各种复杂系统的建模。
(3)独立于过程。uml是系统建模语言,独立于开发过程。
(4)独立于程序设计语言。用uml建立的软件系统模型可以用Java、vc++、smalltaik等任何一种面向对象的程序设计来实现。
(5)易于掌握使用。uml图形结构清晰,建模简洁明了,容易掌握使用。使用uml进行系统分析和设计,可以加速开发进程,提高代码质量,支持动态 的业务需求。uml适用于各种规模的系统开发。能促进软件复用,方便地集成已有的系统,并能有效处理开发中的各种风险。
而且uml是一种功能强大的、面向对象的可视化系统分析的建模语言,它采用一整套成熟的建模技术,广泛地适用于各个应用领域。它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。
通过对学籍管理系统的开发可以看到,uml作为软件工程中的建模语言,代表了面向对象方法的软件开发技术的发展方向,具有重大的经济价值和国防价值,并获得了国际上的广泛支持,具有非常好的应用前景。
浅谈面向对象程序设计方法 第3篇
关键词:面向对象程序设计 结构化程序设计
一、面向对象设计方法
软件设计有两种主流设计方法:以结构化程序设计为基础的结构化软件设计和由面向对象设计方法导出的面向对象的软件设计, 20世纪70年代末到80年代初的结构化设计方法即传统设计方法,以区别于后来兴起的面向对象的设计方法。在软件设计周期中,面向对象设计方法是一种全新的设计和构造软件的方法,它使计算机解决问题的方式更符合人类的解决问题的思维方式,更能直接的描述客观世界,同时也可以增加的代碼的可重用性,是目前和未来软件开发的方向[1]。
面向对象设计在整个软件设计中占据着非常重要的部分,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,但是面向对象分析和面向对象设计之间没有明显的界限,面向对象的方法是基于抽象、信息隐藏、功能独立和模块化等重要软件设计概念基础上的,现阶段的软件设计基本上都运用了面向对象的设计方法[2]。面向对象的开发支持鼓励软件实践中的信息隐藏,数据抽象和封装,可以对单独对一个对象内部进行隔离修改,那么就使得运用面向对象开发的软件更容易修改、扩充和维护[1]。
对象和类是面向对象程序设计的基石,其基本的机制便是方法和消息。消息是要求某个对象执行类中某个操作的规格说明;方法就是对象执行的操作。面向对象程序设计三个重要特征:封装性,继承性和多态性。
(一)对象(Object)和类(Clasess)
对象即指现实生活中无所不在、各种各样的实体,它可以使具体的事物,也可以是抽象的实体[2]。从对象的构成和内容来看,设计程序时使用对象有以下优点:对象是对物体的直接抽象,这种抽象简化了实际物体的模型,同时以一种可以操作的形式将实体表达出来。进行了数据的封装后,掩蔽了实现的复杂性,对于用户使用起来就更加方便。
在现实生活中,具有相似性质,执行相同操作的对象,称为同一类对象,即类是同一种对象的集合与抽象[2]。例如,在Visual Basic中窗体都是Form类的实体,一个单独的窗体也是一个类。
(二)数据封装(Data Encapsulation)
数据封装是类的一个重要特性。数据封装是把数据和相关的操作设在一个包中,那么程序不能直接访问对象中的变量,只有通过对象的方法才能作用于数据。
(三)继承(Inheritance)
我们首先在对象的基础上创建对象,新的对象就会继承原先对象的所有属性和特点,同时根据实际情况也可以选择和修改父对象的属性和功能,这就叫做继承。利用这点,可以将旧的程序扩充为当前所需要的,也可以从已知的类中派生出新的类来。
(四)多态性(Polymorphism)
多态性就是多种表现形式,不同事物具有不同表现形式的能力,具体来说,可以用“一个对外接口,多个内在实现方法”表示。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。
二、结构化程序设计与面向对象程序设计
结构化程序设计是由算法和数据结构组成,算法指处理数据的特定的方法。结构化程序设计首要想法是如何处理数据,然后再选择最为方便处理的数据结构,那么重点主要集中在数据上了。结构化程序设计的基本思想是:系统按功能要求分解为若干个子模块,子模块再根据需求进一步分解为子模块,不断的进行分解,从上往下进行分解,这样的形式是自顶向下的“瀑布式”设计,仅运用了顺序、分支和循环三种结构设计编码。
面向对象程序设计中,用户需要做的事向对象传送消息。编程人员在设计过程中要做的就是向对象处理适当的消息以及它的内部数据,这样就最大限度了提高了代码的可重用性,缩短了调试时间。面向对象程序设计与结构化程序设计是相反的,面向对象的程序设计是从下往上的“喷泉式”的设计,对象是数据处理方法紧密结合的整体。
三、Windows及应用程序与面对对象的程序设计
Windows中的图形用户接口包括窗口,下拉式菜单,对话框等各种控件,这就使得Windows应用程序非常容易使用。我们用结构化的程序设计方法开发Windows应用程序非常困难,即使要在屏幕上生成一个简单的窗口或是一个简单的下拉式菜单也要编写几十条甚至几百条复杂的代码,写这些代码的前提必须是我们对Windows具有非常深入的了解。那么在这种情况下,一种开发时间短、质量高、复用性高等比结构化程序设计方法优良的设计方法。由于Windows的进城的核心也是对消息的处理,因此Windows程序编程是以消息为核心。消息也是面向对象程序设计的基本机制,程序的进程的核心也是对消息的处理,因此面向对象程序设计比结构化程序设计更适合于开发Windows应用程序。利用面向对象程序设计的封装性可以把Windows应用程序的所具有的行为进行封装,形成一个类层次库,这样就为Windows应用程序提供一个一致、直观和简单的与Windows的接口。面向对象程序设计具有继承性这一特性,Windows的应用程序可简单、方便的继承和选择性的使用Windows特性而不必重写这些代码,同时,编程人员也可以借用其他应用程序的功能代码,或是稍作修改,也不必考虑Windows底层的细节。那么这样看来,类层次库就大大的降低了Windows程序设计的复杂性,编程人员也不必一条一条代码的编写,显著的减少了创建Windows应用程序界面所需的源代码量,因此面向对象的程序设计在开发应用程序方面显示出巨大的优越性。
四、结语
面向对象的程序设计方法是当前软件设计的一个主要潮流,采用这种方法开发出的软件具有极大的稳定性、可维护性和可重用性,面向对象程序设计方法运用于软件设计中极大的提高的功能代码的复用性,大大的提高了工作效率。
参考文献:
[1]李双双,李探.面对对象的设计方法[J].计算机光盘软件与应用,2010年第5期
[2]史济民,顾春华,李昌武,苑荣.软件工程——原理、方法与应用(第二版)[M].北京:高等教育出版社,1990
面向对象程序设计中的对象层次问题 第4篇
Visual FoxPro在支持传统的结构化程序设计的同时,扩展了面向对象程序设计的新特点。现在的编程人员不再是单纯考虑从代码的第一行到最后一行的程序编写,而是由建立对象提供给用户所有的功能。在面向对象程序设计中,一切操作都是针对对象的,而对象的来源就是它所属的类。面向对象程序设计主要是代码包装的方式、代码可重用性及程序易维护性,其中主要的包装叫类。类的层次结构和容器的层次结构是Visual FoxPro中两个独立的范畴。Visual FoxPro的类层次结构是逐层向上查找的,而对象的引用在容器中则是逐层向下查找的。因此,对于程序设计中的对象引用,必须指明相应的层次关系,否则,可能无法找到指定的对象。
2 对象引用
2.1 绝对引用
面向对象程序设计中,若要处理一个对象,就需知道它相对于容器的层次关系,在容器层次中的对象就好比一封信件的投递地址,可以用绝对路径来指示如何查找对象所在的位置。当处理投递的信件时,通常这样来指示投递人员的投递位置,形如:
中国.四川省.自贡市.自井区.同兴路.XX街道.XX号XX门牌号
投递人员通常是按照地理位置从上到下去寻找投递对象的位置。
在Visual FoxPro中也是这样的,如图1中描述了一种可能的各个对象的层次关系。
如需将“控件”对象的颜色设置为“黑色”,则在程序中可采用绝对引用:
表单集.表单.页框.页.表格.列.控件.backcolor=RGB(0,0,0)这就显示了一个对象在容器中的绝对位置,程序在执行时,就会按照指定的层次关系从上往下查找指定的对象。
2.2 相对引用
在容器中引用对象时,可以采用快捷方式来指明所要处理的对象的位置。表1列出了这些快捷方式所指的对象层次关系。
这些关键字所代表的快捷引用方式只能在程序中使用,用代表组件对象或者创建的类实例对象。例如,利用自定义的类Oblong去计算一个长方体的面积,当为按钮“开始计算”添加代码时,就利用了快捷的相对引用方式:
因为添加的Oblong1对象是存在于FORM1表当中的,那么THISFORM就代表该对象的直接容器对象FORM1,因此,要设置此对象的属性,就必须指定该对象的层次关系,又如:
3 设置对象的属性
这里所说的设置对象的属性指的是在程序中动态地设置属性。前面讲了对象引用的层次关系,那么在设置对象的属性时,也需用到对象的层次关系,因为只有定位到具体的对象,才能对对象进行操作。
3.1 对象的单个属性的设置方法
如果一次仅设置一个对象的一个属性值,则可采用如下方法:
容器.对象.属性=属性值
例如,若需将表单集中的form1表单中的标签Label1的标题设置为“Hello,World!”,则可这样来设置:
在这段程序代码中,Thisformset1是最高层次的容器,而form1是标签对象Label1的容器,而Caption属性是Label1对象的属性,因此,首先需要自上而下地指明对象的层次关系,然后再对对象进行操作。
3.2 对象的多个属性的设置方法
也可以在程序中一次性地对对象的多个属性进行设置,这可利用下列语句来实现:
例如, 若要将表单集中的form1表单中的标签Label1的标题设为 “Hello,World!”, 背景颜色设为黑色, 宽度设为50, 高度设为20, 并且是可见的, 则可这样来设置:
4 调用对象的方法
如果在程序中已经创建了对象,那么就可以在任何地方调用该对象的公共方法来执行相应的任务。调用方法同样需要指定对象的层次关系,使用的方式同属性一样,只不过这里换成了方法,其方式如下:
容器对象.对象.方法名称()
需要说明的是,如果对象方法不需要传递参数,就必须添加上“()”,否则系统会当做对象的属性来处理。
例如,需将焦点设置在表单FORM1中的文本框对象TEXT1上,即可使用下列方法:
这段代码中, FORM1是TEXT1对象的直接容器, 而SETFOCUS () 方法是TEXT1对象的。
也可在程序中调用自定义的方法,例如,在表单FORM1中添加一个自定义的方法:
那么,就可以在设置窗体对象的标题时调用自定义的函数,例如:
这里同样需要指定该函数的层次关系,以标明该函数是定义在哪一个对象中的。
5 结语
在Visual FoxPro中,表单、表单集和控件是包含在应用程序中的对象,对象的引用层次问题,可以通过对象的属性、事件和方法来处理。每个对象都可以对一个被称为事件的动作进行识别和响应。在处理一个对象时,需要知道它相对于容器层次的关系,这对对象的正确引用是十分必要的。本文对于那些学习面向对象程序设计的用户来说,为其提高对层次问题的理解和应用提供了一些借鉴。
参考文献
[1]张涌逸,康祥顺.Visual Foxpro8.0设计师之路.北京:电子工业出版社,2006.
[2]刘甫迎.Visual Foxpro实用教程.成都:电子科技大学出版社,2003.
《面向对象程序设计》教学大纲 第5篇
课程名称:面向对象程序设计 英文名称:Object Oriented Programming)学分:2 总学时:36 实验(上机)学时: 8 开课专业:电子商务专业
一、本课程的性质、目的和培养目标
面向对象程序设计是电子商务专业的限定选修课程。面向对象程序设计是当今最为流行的程序设计方法,本课程以C++语言为核心,全面概述面向对象程序设计的基本概念和基本技术。主要内容包括:理解和掌握面向对象程序设计的基本思想和技术,掌握C++中的引用和函数重载、类与对象、静态成员与友元、运算符重载、继承与派生类、多态与虚函数等重要概念和技术。通过教学要求学生基本掌握面向对象的程序设计方法,认识C++是如何支持面向对象程序设计的,培养、训练学生运用面向对象技术进行程序设计的能力。
二、预修课程
计算机语言与程序设计
三、课程内容及学时分配
第一章 从C语言到C++语言
1.C++语言出现的历史背景(OOP思想概述)2.C++中的注释、常量和输入输出 3.C++中的变量定义与作用域 4.C++中的函数 5.C++中的指针与引用
本章学时数:4,本章习题数:4 第二章 类与对象 1.类 2.对象
3.构造函数和析构函数 4.对象及其应用 5.对象的生存期 6.再论程序结构 7.面向对象程序设计
本章学时数:6,本章习题数:6 第三章 静态成员与友元 1.拷贝构造函数 2.静态数据成员 3.静态成员函数 4.友元函数
本章学时数:6,本章习题数:6 第四章 运算符重载 1.运算符重载的概念 2.运算符重载举例
本章学时数:4,本章习题数:4 第五章 继承与多态 1.继承的概念 2.单继承 3.多态与虚函数
4.类的分解(类的层次设计)5.抽象类与纯虚函数
本章学时数:6,本章习题数:6 第六章 I/O流库简介 1.C++流库的结构 2.输入与输出 3.格式控制 4.文件
本章学时数:2,本章习题数:2
四、实验(上机)内容和建议学时分配 实验1(4学时)
要求:定义类,该类至少应包括静态数据成员和静态成员函数,要求通过本实验掌握定义类的基本方法。实验2(4学时)
要求:通过本实验掌握函数重载、友元函数、继承、虚函数等的基本使用方法。
五、教材和参考书目
1.《C++语言基础教程》,吕凤翥编著,清华大学出版社,1999 2.《C++程序设计教程》,钱
能主编,清华大学出版社,1999 3.《The C++ Programming Language》(Third Edition),Bjarne Stroustrup,Addison-Wesley,1997
六、课外学习要求
要求课前预习下一次课的讲课内容,课后复习本次课的讲课内容并通过相应的作业加以消化。
七、考核方式
面向对象设计 第6篇
关键词:城乡一体化;地籍测量;数据模型
1.地籍测量对象的描述
在地籍信息系统中,经常使用地籍单元概念来表达地籍空间对象。地籍单元是用来描述地籍管理的主要信息单元,兼有单位性和结构层次性。地籍空间对象本身就包含了地理信息系统传统意义上的地籍单元图形实体以及地籍单元属性。作为一个空间实体,图形是其本身的属性。作为逻辑描述时,不必考虑实体属性本身的存储和表达方式,重要的是将其固有特征以属性来表现。
2.城乡一体化地籍测量对象的建立
2.1基于地籍要素的对象
建立城乡一体化CIS的一个指导思想就是使农村地籍在原来土地利用现状的基础上加强对权属的管理,城镇地籍在原来地籍调查的基础上加大对地类的调查,从而能够在全面整合原有传统模型的基础上,建立一个适用于城乡一体化的地籍数据模型。
城镇地籍数据组织单元街坊和农村地籍数据组织单元村坊可以求交集,得到的将是集城镇和农村的地籍数据,这就意味着这一集合与城镇和农村的地籍认知无关,可以定义为城乡一体化的地籍要素,以实现城镇和农村地籍数据组织的一体化管理。
城乡一体化地籍对象包括城镇和农村的地籍对象,它们在空间上是连续的。根据面向对象的方法,结合地籍空间概念可以得出城乡一体化的地籍对象,包括空间对象和非空间对象。
空间对象有:行政区域、地籍调查区、行政界线、宗地、界址线、界址点、地类、注记。
非空间对象有:土地产权证、地籍调查表、土地登记项目。城乡一体化的地籍对象可以概括为点对象、线对象和面对象以及复杂对象。点对象主要是指界址点,线对象主要指界址线、行政界线及地类界线;面对象主要指行政区、宗地和图斑;复杂对象主要是指对由点对象、线对象、面对象的相互组合而成的复杂地物对象。
2.2城乡一体化地籍数据对象的关系
城乡一体化地籍数据对象之间的关系主要包括空间关系和非空间关系。空间关系包括拓扑关系、顺序关系和度量关系,地籍对象之间最典型的空间关系是宗地、界址点和界址线三者之间的关系。宗地、界址点和界址线也是城乡一体化地籍对象中最重要的三个要素,城乡一体化的各级地籍单元的界线必须最终由宗地逐级汇总而成。
2.2.1界址点对象和界址线对象的关系
界址线是由两个界址点按一定的顺序连接而成,因为界址线是有方向的,所以两宗地共用的界址线根据起始点和终止点的不同而不同。对于界址线的存储一般采用依次记录其相对应的起始界址点和终止界址点即可。但对于农村地区可能存在有多个非界址点的中间点的界址线的存储,可以在记录起始界址点和终止界址点之间再添加记录这些非界址点的中间点坐标。
2.2.2界址线和宗地的关系
宗地是由界址线构成的封闭区域。由于宗地的完备边界系统由界址线来实现,所以界址线和宗地之间不可能出现界址线穿越宗地边线的情况。
界址线和宗地的关系只有两种可能:一种是界址线在宗地上,是宗地边界区域上的一条界址线;另一种就是界址线不在宗地上。对于宗地的存储只需依次存储构成宗地的所有的界址线。
2.2.3宗地与宗地之间的关系
根据拓扑学上的“剖分”概念,宗地与宗地之间是不可能出现任何交叉关系。宗地和宗地的关系可以用以下四种关系表示:
(a)相接,宗地和宗地之间有且只有一个公共界址点;
(b)相邻,宗地和宗地之间有且只有一条公共界址线;
(c)相离,宗地之间没有公共界址点;
(d)套接,宗地之间存在包围与被包围的关系。
2.2.4地籍数据对象之间的非空间关系
非空间关系就是有非空间地籍对象介入时的地籍对象之间的关系,包括图与表的关系和表与表的关系。
图与表的关系:一种图表关系就是宗地与地籍调查表和土地产权证之间的关系。地籍调查表和土地产权证实际可以理解为是宗地的附加属性,地籍调查表通过特定的标志符(单位代码+宗地号)与宗地相对应,来补充说明宗地的属性。土地产权证间接和宗地相关,共同反映宗地的权属状况。
表与表的关系:表与表的关系例如地籍调查表主表和子表的关系,这个关系比较简单,子表是主表的一部分,主表是所有子表的概括。
3.城乡一体化地籍测量概念模型
概念模型是对真实世界中问题域内的事物的描述,不是对软件设计的描述。为了表示地籍概念数据模型,创建一个图表。图表记录了数据库中包括的数据实体,这些实体及其相关域之间存在的关联。数据模型不仅表示了所包括的元素,还表示了这些元素之间,尤其是地籍元素之间的相互联系,拓扑关系,取值域等。
综合上面所描述的地籍对象特点,利用面向对象的建模语言UML对地籍对象进行建模,主要描述地籍、权利对象、地形、地类等概念模型,及相互关系。逻辑数据模型在概念数据模型的基础上创建。逻辑数据建模体现数据的用户视图,逻辑数据模型的设计利用UML进行面向对象建模,采用ESRI提供的Geodatabase建模模板,使创建的模型既符合工业标准,又具有Geodatabase模型的特点。
建立面向对象的城乡一体化地籍测量数据模型是建设城乡地籍数据库的重点。本文通过分析地籍测量对象的描述,建立城乡一体化的地籍对象,从而实现城镇和农村地籍数据组织的一体化管理。最后利用面向对象的建模语言UML建立了城乡一体化的地籍概念模型。
参考文献
[1]詹长根.现代地籍技术[J]测绘信息与工程.2008.29
[2]高延利.我国地籍信息化建设现状与发展[J]国土资源部地籍司.2008
基于UML的面向对象设计 第7篇
UML支持从需求分析开始的软件开发的全过程。UML通过三类图形建立系统模型:用例(Use Case)图、静态结构图(对象类图、对象图、组件图、配置图)和动态行为图(顺序图、协同图、状态图、活动图),这些图可以从不同的抽象角度实现系统的可视化。
1面向对象概述
1.1面向对象思想。面向对象思想起源于20世纪70年代,在80年代得到了巩固与发展。90年代,面向对象技术已经成熟,并进入深入发展阶段。面向对象程序设计与传统的过程式程序设计有着显著的区别。过程式程序设计是面向功能的,通常使用函数或过程来实现所需要的功能,数据通常作为参数传递给函数或过程,这种方式不利于大中型软件的开发与维护,小部分数据或功能的变动会波及到很多的相关程序。随着计算机应用需求的不断扩大,计算机软件越来越复杂,这种复杂性不仅体现在规模的扩大,而且模块之间的交互越来越复杂。面向对象程序设计提出了一种新的系统设计模型,他将系统看成通过交互作用来完成任务的对象的集合,每个对象用自己的方法管理数据。他允许抽象化、模块化的分层结构,具有多态性、继承性和封装性。面向对象的程序设计考虑如何通过创建对象来简化程序设计,提高代码的可重用性。
1.2面向对象的几种设计方法。随着面向对象技术成为研究的热点,相继出现了几十种支持软件开发的面向对象方法。其中Booch,Coad/Yourdon,OMT和Jacobson的方法在面向对象软件开发界得到了广泛的认可。Booch方法的优点在于其丰富的符号体系;Rumbaugh的OMT方法从3个视角描述系统,相应地提供了3种模型对象模型、动态模型和功能模型;Coad/Yourdon方法严格区分了面向对象分析(OOA)和面向对象设计(OOD)。
该方法利用5个层次的活动来定义和记录系统行为、输入和输出;Jacobson方法与上述3种方法有所不同,他涉及到整个软件生命周期,包括需求分析、设计、实现和测试等4个阶段;而统一建模语言UML(Unified Modeling Language),结合了Booch,OMT和Jacobson方法的优点,统一了符号体系,并从其他的方法和工程实践中吸收了许多经过实际检验的概念和技术,UML作为一种标准的建模工具已经得到世界的认可,成为国际标准。
2 UML概述
2.1 UML的出现与发展。面向对象技术作为一种软件技术有着其优越性,但是由于目前的大多数面向对象分析与设计方法都没有提供一个定义对象的有力手段,往往是在工作一开始就陷入了一个十分复杂的境地。由于事先定义了过多的对象,使得在进一步确定对象时仍具有很大的随机性和盲目性。所以,随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT(反对Modelling技术)。这是一种自底向上和自顶向下相结合的方法,而且他以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。UML是Booch,Objectory和OMT方法的结合,并且是这三者直接的向上兼容的后继。同时他还吸收了大量方法学家的思想,包括Wirfs Brock,Ward,Cunningham,Rubin等等。这些先进的面向对象的思想统一为公共的、稳定的、表达能力强的面向对象方法提供了基础。
2.2 uml的特点。作为一种标准的图形化建模语言,UML有如下几个方面的特点:(1)UML结合了Booch方法、OMT方法和OOSE方法的概念,统一了面向对象方法的基本概念,是一个单一的通用建模语言;(2)UML的建模能力比其他面向对象方法更强,不仅适合于一般系统的开发,更擅长于并行、分布式系统的建模;(3)UML是一种标准的建模语言,而不是一个标准的开发过程,他完全独立于开发过程;(4)UML提出了许多新的概念,如构造型、职责、扩展机制、模式等等。所以,UML的出现意味着开发方法统一化、标准化的新发展,标志着软件自动化进程又迈进了一步。
2.3 UML的基本内容。UML语言使用若干个视图(view)构造模型。每个视图代表系统的一个方面。UML共包括5类视图:用例视图(Usecase view)用于描述系统应该具有的功能集,并指出各功能的操作者,主要为用户、设计人员、开发人员和测试人员而设置。逻辑视图用来显示系统内部的功能是如何设计的。组件视图(Component view)用来显示代码组件的组织方式。他描述了实现模型(implementation module)和他们之间的依赖关系,主要供开发者使用。并发视图(Concurrency view)用来显示系统的开发工作状况。供系统开发者和集成者使用。展开视图(Deployment view)用来显示系统的物理架构,即系统的物理展开。供开发者、集成者和测试者使用。视图用图描述,而图用模型元素的符号表示。图中包含的元素可以有类、对象、组件、关系等,这些模型具有具体的含义并且用图形符号表示。UML图包括:类图、对象图、用例图、状态图、序列图、协作图、活动图、组件图和展开图。
3基于UML的面向对象设计
3.1 UML的应用。标准建模语言UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。但需要注意的是,UML是一种建模语言而不是方法,这是因为UML中没有过程的概念,而过程正是方法的一个重要组成部分。UML本身独立于过程,这意味着用户在使用UML进行建模时,可以选用任何适合的过程。然而,使用UML建模仍然有着大致统一的过程框架,该框架包含了UML建模过程中的共同要素,同时又为用户选用与其所开发的工程相适合的建模技术提供了很大的自由度。
同时,UML建模过程是一个迭代递增的开发过程。使用此方法,不是在项目结束时一次性提交软件,而是分块逐次开发和提交。构造阶段由多次迭代组成,每一次迭代都包含编码、测试和集成,所得产品应满足项目需求的某一子集,或提交给用户,或纯粹是内部提交。每次迭代都包含了软件生命周期的所有阶段。同时,每次迭代都要增加一些新的功能,解决一些新的问题。以类图为例,在需求分析阶段,类图是研究领域的概念,是概念层描述;在设计阶段,类图描述类与类之间的接口,是说明层描述;而在实现阶段,类图描述软件系统中类的实现,是实现层描述。实现层描述更接近于软件实现中具体的描述,但概念层和说明层描述更易于不同领域专家之间的理解和交流。
3.2基于UML的Rational ROSE面向对象设计过程。现以某金融贸易系统为例说明UML建模的具体过程。该过程主要包括:理解需求、分析、设计、实现、测试和配置。
首先进行需求分析,这是一个决定系统能否符合用户需求的关键步骤,该阶段的好坏直接影响到设计的进度以及质量。需求分析主要是定义用例,对该系统的主要功能进行描述,从而确定系统的功能需求,在这部分主要应用的是用例图,用例图要详尽地表示系统的各种关系。在该系统中各角色的关系如图1所示。
从中我们可以清楚地看出各个角色之间的关系,所以在进行系统的设计、实现时可以减少盲目性。在需求分析时,要注意领域分析以及类与对象的定义。其次进行的是设计,设计一般分为架构设计和详细设计。这部分主要包括定义包、描述包间的相关性和基本的通信机制。注意要减少相关的二义性以及与用户的接口设计。
再进行的是实现,在这个过程中UML的优点可以得到长足的体现:运用Rational ROSE提供的环境将前几步设计的图进行分析,然后可以转换成自己所熟悉的高级语言,并在高级语言中进行编辑,在高级语言的环境中我们可以看到UML把图转换成系统的程序设计的结构框架。并且,在进行该系统扩展时只需要在前两步设计的图中进行更改,从而改变程序框架,彻底改变了传统设计中更改所带来的复杂性与潜在的危险性。
在进行测试的时候同样可以运用UML,将整个系统分为不同的单元,然后将各个单元作为一个“整块”,运用不同的图进行“整块”测试。将测试后的结果再返回到设计实现中进行分析。将完整无误的软件与需求说明结合,从而可以顺利地进行配置。可以看出:UML的图运用于整个系统设计的全过程,减少了设计盲目性,提高了设计效率。测试的目的是发现代码中的错误。在系统被修改后都要进行回归测试(regression test),回归测试用来检查一次改动是否对其它功能有所影响。
结语。要想实现软件生产自动化,基本的一条是实现开发方法的统一化、标准化。实现面向对象开发方法的标准化以后,就可以避免不同方法的差异,提高软件重用效率。另外,统一面向对象开发方法也就是综合每个面向对象方法的优点,最大限度地发挥各种方法的长处。UML作为一种建模语言,应用于各种系统的设计与分析,改变了传统的软件设计思想,降低了系统设计的盲目性,也更有利于系统的扩展与测试。但是由于他自身发展的程度决定了目前他还不能取代现有的各种面向对象的分析与设计方法。但是,随着UML进一步发展,必将有助于实现软件自动化。
参考文献
[1]张龙详.UML与系统分新设计[M].人民邮电出版社,2006.
[2]张敬,宋广军等.软件工程教程[M].北京航空航天大学出版社,2008.
[3]陈增荣.软件开发方法[M].上海:复旦大学出版社,1997.
面向对象程序设计和设计技术思考 第8篇
1 面向对象程序设计基本内容
该理念的雏形可见于1960 年的Simula语言中。对象的概念便来源于Simula语言, 1960 年的“对象”并不具备我们现阶段“对象”的含义。在80 年代以后, 有关面向对象程序设计语言才得以出现并受到了推广。可以说, 80 年代是“对象”语言发展的转折点, 不但词语得以丰富, 含义也不断加深。当然, “对象”与“面向对象设计”的语言以及与这些内容相关的语言多半来源于Simula。我们所理解的面向对象程序设计共有三个基础特征。分别是封装性;继承性与多态性。图1 向我们展示的是面向对象程序设计中数据与函数的组织结构。
2 面向对象程序设计技术内容
2.1 该项技术的优势
实践是检验真理的唯一标准。因此, 笔者特意在亲身实践的过程中探索面向对象程序设计技术存在的一些优点。例如, 该项技术更符合人们习惯的思维方法;易于软件的维护和功能的增减以及改善了工作界面等。可以说, 该项技术直接拉近了人们与现实生活的距离, 降低了编程在人们印象中的抽象性, 并通过赋予对象属性和方法的方式使编程更富有人性化。在面向对象程序设计技术未出现之前, 人们是无法根据自己的思维习惯处理实际问题的, 但是当这一技术出现之后, 人们便可以根据自己的思维习惯, 以及生活方式处理相应的问题或对象。因此, 该项技术以符合人们习惯的思维方法的优势赢得了软件开发者的青睐和行业的青睐。当然, 面向对象程序设计技术中的对象具有封装性, 而其松散组合的存在形式也为软件的修护与维修带来了方便。与此同时, 该项技术的发展以及该项技术的设计方法逐渐得到大众的青睐, 它使可视化不再成为想象, 而是与其相结合, 从而将相对“古老”的人机界面带入了GUI时代。
2.2 该项技术在现阶段存在的问题
该项技术的应用时间和运行时间相对较长, 在长久的应用时间内, 该项技术对计算机软件行业产生了深远的影响。但是并不能说明这项技术是完美无缺, 没有瑕疵的。它仍存在运行效率较低问题、类库简化问题以及类库可靠性问题。该项技术虽然会提升编程效率, 但是该项技术所开发的程序往往存在运行时效率低下的问题。而这一问题会随着系统规模变大而逐渐显现出来, 变得越发严重。
对个体来讲, 优秀的面向对象设计程序员应该熟练地从类库中将各个功能分门别类, 并逐一掌握类库中的功能。但是这一过程无疑是庞大的, 复杂的。因此, 简化类库, 节省程序员掌握功能的时间是使该技术趋于完美的重要方式之一。除此之外, 越庞大的系统必会存在我们无法预知的问题隐患, 程序员无法完全保证类库中的每个类在各种环境中百分之百的正确, 当使用的类发生了问题, 那么则会影响后续工作, 程序员也有可能推翻原来的全部工作。这便是该项技术中类库的可靠性问题。
2.3 面向对象程序设计技术未来的发展趋势
该项技术拥有较好的发展前景和广阔的发展领域。在面向对象程序设计技术中引入并发机制。将并行计算与面向对象结合在一起的称之为并发面向对象程序设计技术是一个较为新型的研究领域。为了构建完备的并发面向对象程序设计技术, 并发类库的设计必须能与对象模型中的一些现有的特征有机结合。这样才能达到构建完美并发面向对象程序设计技术的目的。
在并发面向对象程序设计技术中, 并发对象可以通过消息间的相互传递达到互相合作的目的。这是并发对象胜于普通对象的体现之一, 也是面向对象程序设计技术未来发展的最终目标。
总而言之, 在更新速度不断加快的信息时代中, 面向对象程序设计技术必将得到更为深远的应用, 也会逐渐显示出自身的优势与无可替代性。与此同时, 该项技术也会成为推动软件设计、开发与应用进程的“主力军”, 用自身的优势与特征进一步推动软件设计与开发技术的出现与发展。
参考文献
[1]欧静敏, 何银川.面向对象程序设计和设计技术研究[J].现代计算机 (专业版) , 2015 (07) .
[2]张位勇.浅谈面向对象程序设计技术[J].科技信息, 2010 (06) .
[3]石通.面向对象的软件设计技术[J].计算机光盘软件与应用, 2011 (06) .
[4]王书爱.面向对象程序设计的应用[J].电脑知识与技术, 2011 (29) .
[5]丁智国, 钱婕.面向对象程序设计课程教学改革[J].计算机教育, 2011 (09) .
基于面向对象设计的软件再工程实践 第9篇
本文以一个结构化设计的医疗费用管理系统为例探讨基于面向对象的软件再工程的实践过程。
一、原系统介绍
原医疗费用管理系统开发于2001年, 以PB6.5为应用开发平台和Visual Foxpro6.0为数据库数据管理平台, 采用C/S模式部署。经过多年运行, 系统已无法满足业务部门日益增长的工作需要, 问题主要有以下3个方面:VF6.0数据库不支持多线程编程, 数据处理能力较差, 不适应数据日益增大的系统处理要求;PB6.5开发平台老旧, 研发技术不够先进;系统新增功能与原系统进行对接难度较高。
二、软件再工程实施过程
(一) 业务需求再分析
采用软件再工程方法要对原系统的规模、体系结构、功能、内部算法、复杂度功能进行分析, 同时与业务人员沟通, 将系统目前欠缺的功能及缺陷进行汇总, 确定软件再工程涉及的范围。
1. 更改系统界面, 将原系统的客户端程序用Web代替, 实现B/S模式访问。
2. 更换系统数据结构。更换系统数据库, 采用Oracle数据库替换VF6.0, 同时对原系统数据库表进行高范式重构。
3. 更换系统平台, 采用MVC设计模式和Java语言进行系统编码, 优化功能模块设计, 增加部分系统功能, 如身份验证和报表生成等。
(二) 软件系统再设计
原医疗费用管理系统C/S模式部署, 客户端为单用户使用, 数据库和应用都部署在单机上。逻辑功能结构如图1所示。
通过对原系统的逻辑分析以及系统用户的需求再调研, 软件再工程过程可以从3个层次开展, 即系统的表示层、逻辑层和数据层。用既存系统的3个层次去分别对应从逻辑上得到对应每个层次的输入和输出, 然后为每一层寻找能够实现最大程度重用的重构方法。具体过程如下。
1. 重构系统部署模式和访问模式。集中设立应用服务器和数据库服务器, 客户端通过IE浏览器访问系统, 简化系统维护工作。基于服务器端的网络应用需要重新开发界面, 这种方法看上去没有重用既存界面代码, 其实不然。首先, 界面设计完全可以重用, 从而节省设计时间;其次, 可以重用已有的网络系统界面 (如系统身份验证界面、各类统计分析报表界面等) , 这样也会减少工作量。
本次系统重构将C/S模式改变为B/S模式, 增加系统登陆界面及对原有系统界面的Web化处理, 仿照原系统界面, 利用JSP技术设计新系统Web界面, 有利于原系统用户更快适应新系统的使用方法。
2.重构系统逻辑功能和运行平台。由于新旧系统逻辑功能基本不变, 因此原系统中逻辑功能部分代码重用率高。通过对系统逻辑层的分解可得到可重用和不可重用的2部分代码。对可重用部分可直接引用, 对不可重用部分则应尽量通过对象包装法将其改造成可重用构件, 用于新系统的功能实现。
本次系统重构主要将系统开发平台转换为Java平台, 设计模式采用MVC模式, 将逻辑功能封装到Java Bean中, 最大可能将业务处理逻辑与数据处理逻辑及展现逻辑分离。将原系统中人员信息封装为Person类, 将管理员封装为admin类, 将收入处理封装为in类, 将支出处理封装为out类, 将数据处理封装为data类。将所有的数据及功能全部封装到各个类的方法中, 便于今后进行功能修改和维护。如图2所示。
面向对象的封装实现了新系统各个类重用原系统得功能模块, 利用JAVA语言对原系统功能模块进行重写, 内部处理逻辑及算法都可以重用, 极大加快了系统开发进度, 降低了系统开发成本。
3. 重构系统数据结构。更改系统数据库管理平台, 采用Oracle数据库替换VF6.0。对原系统数据库表进行高范式重构, 将人员信息表及明细表拆分, 设计数据表为人员信息表、收入表、支出表、历史数据表、管理员信息表。通过表范式提升, 将实体基本信息和业务数据分离, 有效解决了数据处理中统计报表、年终处理以及年度数据历史备份问题。
数据层通常要求更高的重用率, 此次实践将数据结构进行了较大程度修改, 势必使逻辑不能正常运行, 因此, 在进行数据层重构时要提供新数据结构与原数据结构对应关系。在逻辑功能实现时, 特别重用部分原系统逻辑功能模块时, 利用这种对应关系修订原系统部分代码, 尽量提高系统重用功能的研发效率。
(三) 系统重构再部署
完成系统研发并经过测试后, 系统部署主要包括:一是原系统历史数据的导入, 由于数据层结构已经改变, 因此在数据导入前需对元系统数据进行清理分割, 按照新系统数据结构导入;二是新系统Java及Oracle数据库的安装调试, 准备好服务器基本环境和网络环境。
本次实践中, 系统重构后采用网络系统进行部署, 需对业务部门用户进行培训及技术支持。
三、软件再工程实践总结
(一) 提升系统研发效率可采用软件再工程方法
软件再工程能够重用原系统大部分功能, 并且改造后的软件系统能提供更多功能的软件重用构件, 为其他系统的再工程改造继续提供支持。软件再工程周期越长, 可用构件越多, 那么效率就越高。因此, 软件再工程与系统新建是一个互为补充的关系, 经过再工程改造的软件系统就如同一个新系统使用, 但是这种再工程研发效率明显高于新建系统。
(二) 延续系统生命周期可采用软件再工程方法
通过新技术、新架构的采用, 软件再工程方法能够延续软件系统的生命周期。软件再工程方法就是针对用户需求不断变化、软件系统复杂性不断提高和软件维护日趋困难而提出的。早期的软件系统经过软件再工程实施后仍能够提供相应的业务功能, 而且系统架构和IT技术都较为领先, 因此延长了系统生命周期, 降低了系统重新研发的成本。
面向对象的三维参数化封头设计研究 第10篇
1 二次开发流程
Pro/TOOLKIT支持在Windows 2000/NT/XP操作系统中使用C和C++语言设计程序, 采用Microsoft Visual C++6.0作为编译器和连接器, 并可以在Microsoft Visual C++6.0的集成环境下完成程序的设计、调试和编译。
Pro/Toolkit二次开发基本过程为:利用Pro/Toolkit函数从标准零件库将标准零件读入内存, 然后检索用户定义的参数对象;通过参数对象获取设计参数的类型和值大小, 通过对话框界面显示给用户当前模型参数值, 等待用户交互修改设计参数并进行模型的重生, 产生新的三维模型。
参数化设计是指零件或部件的形状比较定型, 用一组参数约束该几何图形的一组结构尺寸序列, 参数与设计对象的控制尺寸有显式对应, 当赋予不同的参数序列值时, 就可驱动达到新的目标几何图形, 其设计结果是包含设计信息的模型。参数化设计技术以其强有力的尺寸驱动, 修改图形功能, 为初始产品设计、产品建模、修改系列产品设计提供了有效的手段, 大大提高了生产效率。
2 程序开发过程
2.1 编写源文件
源文件包括:资源文件和程序源文件。资源文件又包括信息资源文件、菜单资源文件和对话框资源文件, 分别用来完成创建各修改Pro/E菜单、对话框和窗口信息等功能。程序源文件也就是Pro/Toolkit文件, 是指我们所要编写的C语言程序, 它是整个Pro/Toolkit程序开发的核心部分。
2.2 程序的编译和连接
本文采用在VC++6.0环境中指定库文件、头文件、源文件的位置及要生成的可执行
文件或动态连接库称方法完成程序的编译连接。
3 参数化封头菜单的实现
3.1 菜单资源文件
3.2 菜单实现关键代码
4 对话框的实现
4.1 创建对话框资源
编写对话框资源文件是实现Pro/TOOLKIT对话框编程的第一步[5]。MFC对话框的界面开发可以直接利用VC++的可视化对话框创建技术实现, 大大减轻工作量。其基本创建方式是:利用VC++的ResourceView建立对话框的可视界面, 然后建立新的对话框类。通过ClassWizard创建与对话框元件相联系的程序内部变量, 用于存储用户设计参数。
4.2 创建对话框类
创建对话框的二步就创建对话框类, 即创建一个CDialog类的派生类与新建的对话框资源关联。对话框类CDialog提供了访问控件属性, 以及响应控件和对话框自身消息的功能。
5 数据交换、模型再生
参数对象 (Parameter Object) 和参数值 (the Value of a parameter) 数据结构, 建立数据结构后, 要实现参数化, 必须实现双向数据流, 即从基准模型设计参数到交互界面, 供用户修改;另一方面, 用户修改后的新参数值, 要从用户界面返回到基准模型以实现参数更新, 并且可以实现封头厚度自动计算, 进而更新零件模型。再生后的模型, 如图2、图3所示。
6 结语
本文采用了面向对象的参数化设计方法实现了内压封头的参数化系列设计, 包括半球形封头、椭圆形封头和碟形封头, 并以半球形封头为例阐述了整个设计过程, 在设计过程中用户可以通过友好界面实现数据交换, 假定焊接接头系数为1, 用户输入外半径、工作压力以及所选材料的许用应力后, 依据受内压封头设计公式, 系统自动计算出所需封头厚度, 最后完成模型的再生。
摘要:讨论了以Pro/ENGINEER作为设计平台, 利用其二次开发模块Pro/Toolkit, 以Visual C++为开发平台进行开发, 以菜单方式与Pro/ENGINEER集成, 并集成了设计计算, 然后实现模型的自动生成, 实现用户定制, 完成了封头参数化设计系统的二次开发。
关键词:Pro/ENGINEER,Pro/Toolkit,二次开发,VisualC++,参数化建模
参考文献
[1]侯晓林.刘爱华.张立强, 等.用PROTOOLKIT应用程序实现产品模型更新方法的研究[J]
[2]二代龙震工作室著.Pro/TOOLKIT Wildfire2.0插件设计[M].北京:电子工业出版社, 2005
[3]李世国.Pro/Toolkit程序设计[M].北京:机械工业出版社, 2003
[4]James R.Farr Maan H.Jawad著.郑津洋, 徐平, 方晓斌, 等译.ASM压力容器设计指南 (第二版)
[5]张继春编著.Pro/ENGINEER二次开发使用教程.北京:北京大学出版社
面向对象设计 第11篇
关键词:VB.NET;面向对象编程;排课系统设计
中图分类号:TP311文献标识码:A文章编号:1007-9599 (2013) 06-0000-02
1引言
排课问题是一所学校的教学及其他活动的基准。我国的高等教育事业的不断发展,通常情况下,各大高校将分配到本校的计算机排课系统提交到院校的教务部,由负责的数据工作人员录入电脑。这种最基本的排课系统,只能在一定程度上提高效率。因此,计算机系统研究人员也在不断探索更先进的计算机技术,从而使教务人员从复杂的任务中解放出来,提高老师的教学备课时间有效地利用教学资源,而且还提高教学管理的质量和教育管理的工作效率。如何减少教务工作者的工作强度,更有效地利用人力和物力资源,如何管理和利用好数据信息,已经成为当前人们关注的主要问题。
VB就是Visual Basic 的简称,它是一种可视化编程语言,功能包括应用程序、编写代码以及用户界面设计。Visual Basic6.0中改变程序的机制,是对传统意义上的主程序的改造,它是通过子程序驱动。作为面向对象编程语言,代码和数据相结合,大大提高了程序设计的效率,当前程序员只需要编写传统上程序员函数代码中的一部分。用户在使用时,也大大简化,只需知道程序的功能,至于它是如何工作的就不必知道了。
2编程语言Visual Basic.NET概述
开发数据库系统的首选语言是Visual Basic.NET,通常被简称为VB.NET,是基于NET框架的面向对象的编程语言。VB.NET是可以用来创建多种程序的编程机制,包括Windows应用程序、网络服务和网络程序、智能设备等,并且支持面向对象。
Visual Basic.NET和现在所知的开发工具完全不同,Visual Basic.NET具有强大的网络功能。其一是VB.NET中有它将是DCOM的取代者;其二是VB.NET中还有Web Forms,它代表了一个一个的Web页面。它的特点包括,作用广泛,容易掌握,使用也十分方面,拥有支持可视化继承的窗口板块设计器,程序采用标准化界面,真正支持面向对象和继承性。
3排课系统需求分析
3.1用户需求分析
班级信息有所在教室、所在教室上课班级的个数、班级学委的联系方式、班级专业编号;课程信息有班级专业编号、每学期总课时数目、每周节数以及是否分单双周上课、任课教师基本信息;教师信息包括手机号或其他联系方式、教师所上课程名称等;时间信息包括所上课程是第几周、第几节以及是否需要临时补课等。每门课程都有自己的期末考核办法,可以是书面作业,也可以是社会实践;每门课程可以规定禁止安排上课时间,也可以指定教师。
每个教室属于一个教学区域、教室名称、教室类型。为了考虑节约教学资源,根据教学班人数来安排合适容量的教室。同时,在同一时间每个教室只能安排某一教学班的授课。
3.2排课系统功能分析
排课系统首先需要实现系统初始化,包括设定教学区域、校区、学年学期、学期起始周次等。此外还有信息管理功能的维护,包括院系专业基本信息、基本信息、教师基本信息、教学班基本信息、班级基本信息、课程基本信息、学生基本信息及自动导入和手动录入教室基本信息。
其次是对于某些特殊情况,比如放长假之前需要补课,又比如任课老师要出差无法按时上课,这时就需要进行手动预排课。此种情况下,班级负责人就需要去上报情况,跟教务管理人员回报需要变动的教学计划,提前查看近期空教室的情况,推迟课程,重新排课。此时,需要考虑对下次授课时间的设定以及对教室容纳量有没有特殊的要求等进行排课,然后教务人员及时录入,并挂在网站上。
再次是网上查询课表、课表打印功能。排课系统提供互联网查询功能,进行计算机排课结束后,要确保学生和任课老师能够在网上查询本学年的课程安排情况,学生能够在网上打印输出自己班级的课表,教务人员可以进行简单的调课和数据修改,还可以查询各种类型课表。
此外还包括用户管理系统和数据备份与恢复。对不同级别的用户根据不同的情况设置不同的访问权限,用户必须先通过身份认证后才能进入系统,进而进行权限范围内的其他操作。计算机系统排课还可以实现排课系统设计中数据库内的信息安全,包括将数据库中的重要数据进行备份、从备份文件中恢复错误删除掉的数据等等。
4排课系统模块设计
排课系统是各大高校每学年开学前排课的工具,排课系统的作用在于它可以方便快捷地生成课表,同时可以储存本学年的课表文档。根据排课系统的需求,结合各个院系班级的情况以及任课老师的分配,由于录入数据比较庞大,因此需要在系统中装载数据模块,完成了这个预备工作后在开始执行程序语言运行。排课系统需要涵盖班级、教师、用户管理多个模块,而且需要在每一个大的功能模块下分派数目不等的子模块,以此来减少教务人员工作的难度,同时也可以方便用户随时在互联网上查询或下载课表。
4.1基本信息设置模块
(1)班级设置模块。“班级设置”模块负责维护班级信息。班级信息设置模块包括班级所在院系,班级每学年课程节数,班级学生人数,班级班主任基本情况等。
(2)课程设置模块。“课程设置”模块负责维护学校的课程信息,课程信息设置项包括专业课程名称,课程每学年安排多少个课时,每周有多少节,是否分单双周上课,任课教师情况等。
(3)教师设置模块。计算机系统对教师设置模块的设计主要解决教师信息维护的问题,包括任课老师的姓名、电话、邮箱等基本信息,以及任课时间与地点的统计。此版块的功能同样可以根据需要添加或是删除信息等。
4.2用户管理设置模块
用户管理设置板块是编写用户的基本信息,包括用户身份认证、名称、类别、密码等。用户管理模块的作用是保证用户信息添加、删除、修改的维护工作,此外用户管理要对对不同用户权限做出审查,同时,判断该用户是对数据库的访问权限达到限制额,这样做的目的是保证用户在使用过程中的信息安全。
用户管理是对用户信息进行添加、修改、删除和查看,并对用户信息的这些方面进行维护。基本操作流程:首先,点击添加新用户,填写用户信息点击提交,添加新用户成功。其次,删除选择要删除的用户,点击确定,删除用户。再次,修改用户信息,点击修改用户信息,选择要修改的用户,点击确定,提交修改。
5结论
高校各个学年开课之前必然需要排好课表,排课任务重要并且复杂,是高校教务管理工作的难题。排课的目的在于保证学生上课有合适的地点,老师有互不冲突的教学时间,从而使每学期的教学工作能够有秩序的展开。在计算机系统广泛应用之前,处理数据以及管理排课日程由教务人员手工操作,任务繁琐,容易出错,出错之后难以及时更改,造成各种麻烦,严重影响教学效率。面向对象编程语言VB.NET,不仅十分轻松的完成编写任务,在代码输入上也大大简化了工作程序,并且这种语言完全面向对象,代码维护方便容易,解决原先不能及时更改错误的难题。本文的主要工作是基于面向对象编程语言VB.NET,以设计高校课程安排管理系统的需求为目的,设计并实现了包括教室安排、班级管理、课程设置、教师设置、用户管理四个功能模块的高校排课管理系统,该系统的实现有利于提高工作效率,实现排课系统管理的信息化和标准。
参考文献:
[1]李英杰.VB.NET2005程序设计实例教程[M].天津:天津大学出版社,2008,11.
[2]郭瑞军,王松.Visual Basic.NET数据库开发实例精粹[M].北京:电子工业出版社,2006(5):34-59.
[3]孙雪莲,冯毅夫.基于B/S模式下的高校食堂管理系统设计[M].吉林师范大学学报(自然科学版),2005,11.
[4]李春葆.VB.NET 2005程序设计教程[M].北京:清华大学出版社,2009,2.
[5]龚辉锋,赵玉意,秦立公.基于VB.6与Excel的物流软件的开发构想中国管理信息化[J].2008,12.
面向对象的程序设计质量控制方法 第12篇
关键词:程序质量,程序设计,程序设计风格,模块化
1. 程序设计的一些准则
人们总是希望编制清晰、紧凑、高效的程序,但这些特性在编码时往往互相矛盾,一般应依次考虑下列原则:
(1)程序的正确性与可靠性
程序的价值首先在于能够运行并正确地解决问题,即在预定的条件下输入必要的数据后,能得到正确的输出结果。其次,还要求程序必须稳定可靠,在遇到意外情况时能自动进行适当的处理。例如,程序能识别由于误操作输入的不合理数据,并能采取适当的对策,以确保程序的运行不受干扰。可靠性指的是程序正常工作的能力,一般用平均无故障时间来衡量。
(2)程序的可读性
现代计算机的应用程序往往由若干人分工合作完成。某个人编写的程序不仅自己能读懂,还要使其他人也能够读懂,这样才便于整个程序系统的调试、组装。为此,应尽可能在程序中关键的位置上使用注释语句,说明程序模块的功能、变量的作用等。
(3)程序的可维护性
程序运行时可能出现故障。出现故障后检查故障的原因、确定程序中的错误位置、修正程序中的错误等操作需要一定的时间。程序可维护性的优劣就是以这类操作所需时间的长短来体现的。
(4)程序的重用
程序的重用是降低软件开发成本、提高软件质量的有效途径,尽可能编写可重用的模块,减少重复的劳动。
(5)程序的可移植性
程序的可移植性指的是在某一种型号的计算机上编写的程序,转到其它型号的计算机上运行的能力。
(6)程序的可扩充性
程序的可扩充性指的是在不改变整体结构的前提下,经过某些处理使程序的功能有所扩充。
(7)程序的效率
程序的效率主要是指程序运行时所占有的系统资源与程序本身处理功能的比率。
2. 程序结构
程序结构的主要原则:
(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
(2)选用的控制结构只准许有一个入口和一个出口。
(3)复杂结构应该用基本控制结构进行组合嵌套来实现。
(4)严格控制GOTO语句。
3. 良好的程序设计风格
良好的程序设计风格是软件开发人员应该具备的基本素质。良好的编写习惯,不但有助于代码的移植和纠错,也有助于软件开发人员之间的协作。
(1)源程序文档化。正确、适当地使用注释,恰当地使用标识符,完整地编制文档。
(2)数据说明的次序应标准化,对于复杂数据结构,应说明实现这个数据结构的方法和特点。
(3)语句结构应该简单而直接。如不要为了节省空间而把多个语句写在同一行。
(4)输入/输出。对所有输入输出数据都进行检验,对输入数据,说明其可用的选择或边界值;输出的内容应保持格式一致。
(5)尽可能提高程序的效率。
4. 模块化
采用模块化程序设计可以使软件结构清晰,不仅容易设计,也容易阅读和理解。因为程序错误通常局限于有关的模块以及它们之间的接口之中,所以模块化程序设计使软件容易测试和调试,有助于提高软件的可靠性。
4.1 分解
根据人们解决问题的一般规律,将一个复杂的问题分解成若干个较小的问题,能够减小解题所需要的总工作量。
4.2 模块的独立性
每个模块是一个特定子功能,模块之间仅仅交换那些为完成系统功能必须交换的信息,相对于其它模块独立。模块的独立程度可以用两个定性标准来度量,一是内聚,二是耦合。
4.2.1 内聚(1)偶然性内聚
模块内各成分在功能上互不相关,即使有关系,也很松散。
(2)逻辑性内聚
模块完成的各项任务逻辑上相关,通常由若干个逻辑功能相似的成分组成。
(3)时间性内聚
模块包含的各项任务必须在同一时间段内执行。
(4)过程性内聚
一个模块内处理的元素是相关的,而且必须按照某一特定次序执行。
(5)通信性内聚
模块内部的各成分都使用同一种输入数据,或产生同一个输出数据,它们靠公用数据联系在一起。
(6)顺序性内聚
模块内各组成部分必须顺序执行,前一部分的输出就是后一部分的输入。
(7)功能性内聚
模块内所有成分结合在一起,用于完成一个单一的功能。
内聚度越高越好,设计程序时,应该能够识别内聚度的高低,尽可能地提高模块的内聚度,从而获得较高的模块独立性。
4.2.2 耦合
(1)非直接耦合
两个模块之间任何一个都能够不依赖于其它模块而独立工作,相互之间没有信息传递。
(2)数据耦合
如果模块之间通过参数交换信息,而信息仅限于数据,则构成数据耦合。
(3)特征耦合
模块之间不仅仅交换数据,而且交换数据结构。
(4)控制耦合
模块间传递的信息中含有控制信息。
(5)外部耦合
若干个模块与同一个外部环境关联。
(6)公共耦合
若干个模块访问同一个全局性的数据结构。
(7)内容耦合
两个模块之间出现一个模块使用另一个模块内部的数据或控制信息,或者一个模块直接转移到另一个模块的内部。
在程序设计时应追求尽可能松散耦合。因为耦合松散的程序对模块的设计、测试和维护相对独立。模块间的耦合程度直接影响程序的可理解性、可测试性和可维护性。
5. 结束语
质量是软件需求方最关心的问题。软件设计成功的标准是用户使用你所设计的软件可以很容易完成要完成的任务。软件的质量因素有很多,主要有以下方面:
正确性与精确性:软件开发人员要为“正确”、“精确”四个字竭尽全力。
性能与效率:用户都希望软件的运行速度高些,并且占用资源少些。
易用性:由于人们的专业领域不同、操作习惯不同等原因,对软件的感觉与要求差异很大,软件开发人员要多从用户的角度来考虑问题。
可理解性与简洁性:编程时还要注意不可滥用技巧,应该用自然的方式编程,简洁是一种美。
程序的正确性是保证程序质量的前提。软件开发人员的工作是创建正确的、完全符合要求的代码。保证代码的正确性是软件开发人员的责任,因此,软件开发人员在把代码提交给编译器之前必须彻底地检查代码的正确性。采用一个良好的定义过程是第一道防线,其次是进行检查。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。
参考文献
[1]张忠林,王坚生,兰丽.软件项目管理思想在“软件工程”实践教学中的应用[J].计算机教育,2010,(05):157-160.
[2]王美华,张刚,丁京柱.面向对象的程序设计[J].河北工业科技.1999,(12):26-30.
面向对象设计范文
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。