面向对象设计方法

2024-06-10

面向对象设计方法(精选11篇)

面向对象设计方法 第1篇

面向对象程序设计方法解决了传统结构化方法中问题空间与解空间不一致的问题, 避免从分析与设计到软件模块结构间的多次转换过程, 使开发变得简单、高效、合理。

从科学认识辨证法的角度来看, 结构化方法是还原主义方法在软件系统设计方法的映射。必然带有还原主义的局限性。运用结构化方法为现实世界的系统建模时, 随着分析越来越深入, 功能模块层次越来越多, 也就越来越难以重现功能模块间的有机联系。即容易“只见树木, 不见森林”。

利用面向对象方法设计程序, 实际上是利用抽象方法定义各种各样的抽象“类”, 通过将类具体化为对象和通过在对象之间传递消息来完成。其中, 通过模块和封装将对象的定义和对象的实现分开。通过继承体现类与类之间的关系。以及由此带来的动态链接性和并行性。从而构成面向对象的基本特征。因此面向对象方法在3个层次上实现了系统要素的复杂联系。

首先, 类的层次。面向对象方法按照相似原理和关系, 把所在研究的问题区分成一定的系统与类别。抽象出类的描述。类的抽象体现了面向对象方法的继承性特征。而继承特性正反映了系统的结构的主要特点。即底层系统对高层系统所具有的构成性关系, 和同层次系统间的相干性关系。

其次, 对象的层次。面向对象方法在对事物进行详细的剖析后, 将类的描述演化为对对象的描述, 在对象的层次上, 面向对象方法引入了封装的特征, 将对象的属性和方法进行封装。很好的模拟了系统要素间的相互独立的特点。同时对象中预先定义的消息也为实现系统要素间相互关系奠定了基础。

最后, 对象关系的层次。面向对象方法在剖析分析基础上再进行综合优化, 并在事物运动中和运动的相互关系中去考究事物的静态相似和动态相似的关系, 宏观相似和微观相似的关系, 横向相似和纵向相似的关系, 由此设计和实现对象间的传递消息。形成对象间的相互联系和作用。在对象关系的层次上, 对象间通过并发和动态链接, 实现相互链接和作用。以构成各种不同的应用系统功能。

综上所述, 面向对象方法的本质, 从现实世界中固有事物出发来构造系统, 用人类在现实生活中常用的思维方式来认识, 理解和描述客观事物。强制最终建立的系统能够映射问题空间, 虽然面向对象方法并没有从根本上解决目前的计算机软件危机, 但是面向对象方法远远由于传统的结构化设计方法, 并得到相当广泛的应用。此外, 面向对象方法还为我们提供了在认识论和方法论上的一种认识现实世界的有效方法。

摘要:一个程序的好坏, 它的容错能力的强弱, 以及最后的可实现性完全也不同程度地依赖于程序员的哲学观, 本文介绍面向对象程序设计方法所包含的系统哲学。

参考文献

面向对象设计方法 第2篇

(计算机科学与技术本科专业使用)

一、教学目标

通过该实验课,学生应在熟练掌握过程化程序设计方法的基础上,领会面向对象程序设计及类的封装、数据隐藏、继承及多态等特性,逐步掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。

二、实验教学时数

三、实验内容

实验一 图形打印

1、实验目的:练习for循环

2、实验技能培训内容:打印几种特殊图形,如菱形和Z字形

3、主要仪器:计算机

4、实验方法:上机编程

实验二 判素数

1、实验目的:练习函数

2、实验技能培训内容:判断101-200之间有多少个素数,并输出所有素数。

3、主要仪器:计算机

4、实验方法:上机编程

实验三 递归函数练习

1、实验目的:练习递归函数

2、实验技能培训内容:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....3、主要仪器:计算机

4、实验方法:上机编程

实验四 数列排序

1、实验目的:练习数组及几种基本排序方法

2、实验技能培训内容:用选择、插入、冒泡、快速等几种基本的排序方法对数列进行排序。

3、主要仪器:计算机

4、实验方法:上机编程

实验五 矩阵乘积

1、实验目的:练习数组

20学时

2、实验技能培训内容:用数组存储两个矩阵,求两个矩阵的乘积。

3、主要仪器:计算机

4、实验方法:上机编程

实验六 设计时间日期类

1、实验目的:掌握简单类的设计方法

2、实验技能培训内容:构造一个TimeDate类,类中包含一个成员函数,用来在屏幕上显示时间与日期(采用建立在标准库time.h中的标准时间与日期来寻找与显示日期)。

3、主要仪器:计算机

4、实验方法:上机编程

实验七 设计计时类

1、实验目的:掌握简单类的设计方法

2、实验技能培训内容:建立Watch类,用来仿效秒表跟踪消逝的时间。用构造函数将消逝时间的初值置为零。提供两个成员函数Start()与Stop(),分别打开与关闭计时器。

3、主要仪器:计算机

4、实验方法:上机编程

实验八 设计字符栈类

1、实验目的:掌握简单类的设计方法

2、实验技能培训内容:用Stack类,写一个函数LoadStack(),用来返回已经将字母表(a-z)入栈的堆栈。在调用函数中,将这个堆栈赋值给另一个对象,并证明它包含字母表。可以改变堆栈的尺寸,以便它大得足以支持字母表。

3、主要仪器:计算机

4、实验方法:上机编程

实验九 友元的使用方法

1、实验目的:掌握友元的使用方法

2、实验技能培训内容:求两数的平方差(友元函数说明)

3、主要仪器:计算机

4、实验方法:上机编程

实验十 访问权限

1、实验目的:掌握类成员的各种访问权限

2、实验技能培训内容:类成员的各种访问权限

3、主要仪器:计算机

4、实验方法:上机编程

实验十一 类的派生

1、实验目的: 掌握类的派生

2、实验技能培训内容:给出基类AreaClass(形状类),建立两个派生类Box(方形类)与Isosceles(等腰三角形类),让每个派生类包含一个函数Area(),分别用来返回方形与等腰三角形的面积。

3、主要仪器:计算机

4、实验方法:上机编程

实验十二 用类方法求解一元二次方程

1、实验目的: 掌握类的派生

2、实验技能培训内容:实现一个Complex类和一个Real类。将Real类定义为Complex类的子类。然后设计一个求解一元二次实系数方程的根的类Root。

3、主要仪器:计算机

4、实验方法:上机编程

实验十三 类继承中的构造

1、实验目的: 掌握类继承中的构造

2、实验技能培训内容:类继承中的构造方法

3、主要仪器:计算机

4、实验方法:上机编程

实验十四 类继承中的构造

1、实验目的: 掌握类继承中的构造

2、实验技能培训内容:类继承中的构造方法

3、主要仪器:计算机

4、实验方法:上机编程

实验十五 大学生类

1、实验目的: 掌握虚函数的使用

2、实验技能培训内容:设计一个大学的类系统,包括Student(学生),Professor(教师),Staff(职员)。另有一个类既作为学生又兼作助教的可作为派生类StudentStaff,它是由Student类和Staff类派生而来,另外定义一个父类DataRec作为上述类(子类)的基类。

3、主要仪器:计算机

4、实验方法:上机编程

面向对象设计方法 第3篇

关键词:面向对象程序设计;案例驱动;教学方法

中图分类号:G642.3 文献标识码:A 文章编号:1007-9599 (2013) 01-0278-02

1 引言

《面向对象程序设计》是信息与计算科学专业本科生的一门必修课程,是一门与实际结合非常紧密、实用性非常强的课程。面向对象软件开发方法集抽象性、封装性、继承性和多态性于一体,面向对象思想是基于抽象数据类型的,在编程过程中将数据类型和结构与其操作绑定成模块,该思想已经应用到程序设计和软件开发、数据库系统、人工智能等很多领域。程序设计的核心是数据结构和算法,面向对象方法的核心是封装、继承和多态,学生需要掌握用面向对象方法定义类,然后定义必要的数据成员,然后再定义成员函数来实现一个软件系统的可维护性和可复用性。通过解决面向对象的核心问题,数据的抽象化和继承关系使得概念和定义可以复用,多态性使得实现和应用可以复用,抽象化合封装可以保持和促进系统的可维护性。面向对象程序设计是把一个复杂的问题分解成多个能够独立的功能对象,然后通过提供了封装、继承和多态等特性,使得一个系统可以在更高的层次上提供可复用性。C++既是设计工具,又是实现工具;既可抽象概念,描述实际问题,又兼顾效率,能很好地实现底层的系统软件。由于概念比较抽象,多数学生感到上课似乎听懂了,但编程应用起来有很大困难,普遍缺乏综合应用所学知识解决实际问题的能力,影响了整体的教学效果。迫切需要找到一种既能变学生的被动学习为参与性和主动性学习,又能切实提高学生学习兴趣和能力的教学方法。

2 案例驱动教学思想的引入

应用面向对象的方法有助于提升认识问题的能力,可以很快地洞察问题的实质,建立起问题域的逻辑模型,并以此为依据解决一些看似复杂的问题。

面向对象程序设计课程引入案例驱动教学法,以学生为主体、案例为主线,教师主导课堂,对案例所提供的材料和问题进行分析,学习案例所涉及的相关知识点,针对问题需求相互探讨提出见解,做出决策相互合作进行上机实践。

3 案例驱动教学内容的实施

3.1 案例的选取

面向对象的编程语言最大的特色就是能让程序更容易的应对需求变化,用哪种语言来编写程序不重要,要考虑的是如何针对抽象编程。结合C++语言的特点,教师选取的案例要是学生在编程工作中学会如何去设计和考虑问题,更好的应用面向对象技术来创建可维护、可扩展、可复用并灵活性好的程序,学生与教师的关系要从师生关系演变为项目负责人与程序员的关系。

案例的选取首先应结合讲授,覆盖多个相关知识点。第二,案例应具有实践性,是学生熟悉的题材,能够在日常生活中反应。第三,案例难度适中,循序渐进,具有一定的综合性。

3.2 案例的实施

面向对象程序设计语言很多,C++语言兼容C语言,并且具备C语言的性能。如在讲授类与对象章节,选用的是学生管理系统,结合这个案例,首先讲解目必须的知识点——类的定义,将数据的操作归入数据结构中,数据内部结构的改变不会影响使用数据包的程序部分,用类来实现封装机制,共有成员和私有成员;然后分析学生管理系统,假设实现如果发现某班级中的一位同学犯错误,则全班同学都扣除一分的需求;根据案例先识别出类,在识别出类的属性、方法、关系;根据不同的业务规则,结合设计模式设计实体类,设计客户端,设计业务类。将学生合理的划分为5至6人一组,提供案例后指导学生分工合作完成学习任务。A组学生设计实体类,完成学生与班级的定义,如图1所示;B组学生设计客户端,需要一个公开的惩罚方法;CDE组学生实现惩罚方法的算法,通过某个学生得到该学生所在的班级,通过班级得到该班级的全部学生,循环所有学生扣除每个学生一个小红花如图2所示;FG组学生设计业务类,业务中有两个方法需要学生业务类去实现如图3所示,一个方法需要班级业务类去实现如图4所示。

案例驱动法改变了以往教师讲、学生听的学习习惯,通过案例的选取以及对案例的分析与讨论,学生真正参与到互动学习中,理解案例所涉及的知识;通过教师的指导学生能建立正确的编程思想,有效完成各自小组上机实践任务,最后进行分析讲述,形成创造型学习形式。

3.3 案例驱动教学法的推动

首先,理解面向对象程序设计基础概念:类与对象、继承与组合、虚函数与多态,有助于案例驱动教学法的推动。面向对象程序设计的重点是类的设计,而不是对象的设计。设计孤立的类是比较容易的,难的是正确设计基类及其派生类。在设计类时“以行为为中心”,即首先考虑类应该提供什么样的函数。C++的“继承”特性可以提高程序的可复用性。除了继承外,C++的另一个优良特性是支持多态,即允许将派生类的对象当作基类的对象使用。C++用关键字virtual来声明一个函数为虚函数,派生类的虚函数将(override)基类对应的虚函数的功能。

其次,良好的编程风格是产生高质量程序的前提。学生划分为5至6人的“学习小组”,根据案例需求分工合作进行上机实践。指导学生不要编写过分复杂的语句,不要编写集多种功能于一身的函数,不要将BOOL值TRUE和FALSE对应1和0进行编程。

再次,将案例驱动教学的上机实践引入学生成绩考核。

4 案例驱动教学成果的展示

在将案例驱动教学思想引入面向对象程序设计的调查问卷中,82%以上的同学认为通过小组合作学习提高了自我课堂参与性,41%的同学对整体程序设计具备了一定的分析与处理能力,89%的同学认为掌握章节中的基本概念及其应用,93%的同学感到小组成员对他学习的帮助。

5 结束语

面向对象是一组思维方法、分析方法和编程方法的集合,可以将一个复杂问题迅速简化,第一步解决最小的简单模型;第二步解决复合的常规模型;第三步解决扩展的推广模型。把案例驱动的教学思想引入面向对象程序设计课堂,选取有代表性的案例,切实提高学生的程序设计水平显得尤为重要。

参考文献:

[1]陈帼鸾.“项目驱动”教学法在C++教学中的应用[J].中国科技信息,2009,7:200-201.

[2]肖明.案例教学法在“C++语言程序设计”教学中的应用[J].计算机教育,2010,6:83-86.

[3]丁智国,钱婕.面向对象程序设计课程教学改革[J].计算机教育,2011,9:9-12.

面向对象的程序设计质量控制方法 第4篇

关键词:程序质量,程序设计,程序设计风格,模块化

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.

面向对象设计方法 第5篇

教学目标:了解面向对象程序设计方法的基本原理及主要特点——抽象性、封装性、继承性、多态性。掌握类和对象的概念以及如何用类来解决具体问题并在类的基础上如何派生出新类,以及重载的概念和作用。

教学类型:在多媒体教室直观讲授,引导学生进行类的操作。教学内容:

复习上次课

5.5类的继承

Visual Basic.NET支持类的继承,允许用户定义一个类,作为其他类继承的依据,继承类能够继承,扩充基本类的属性和方法,继承类也可以重载基本类的一些方法。

例如,把窗体看成一个类,在Vissal Basic.NET中用户可以根据现有的窗体继承出一个新的窗体。其中已有类叫做基类(父类),继承的新类叫做派生类(子类)。

1、实现基本的继承

下面通过例子进一步说明为什么要使用继承。

要描述人和雇员,对于每一个人来说都有姓名、年龄、性别等信息,对于公司雇员有以上内容以外还有雇员的工作部门及薪水等信息。当分开来实现这两个类的时候,就会发现其实它们有许多相同之处。如果分开编写这两个类的代码,不仅编写效率低,而且程序代码也难以维护,所以最好的方法就是让它们使用一些相同的代码,此时继承就可以发挥作用了。使用继承,可以创建一个Person类(基类),它包含了name(姓名)、age(年龄)、sex(性别)等属性所有的共享代码。然后再创建employee派生类,这个类是由person类继承而来的,这样它们就可以自动地获得所有的公用代码了。

【例5.3】建立person类及它的派生类employee类。Public Class person

Public sname, Iage, ssex

Public Property name()As String

Get

Return sname

End Get

Set(ByVal value As String)

sname = value

End Set

End Property

Public Property age()As Integer

Get

Return Iage

End Get

Set(ByVal value As Integer)

Iage = value

End Set

呼伦贝尔学院—— 计算机科学与技术学院

End Property

Public Property sex()As String

Get

Return ssex

End Get

Set(ByVal value As String)

ssex = value

End Set

End Property End Class Public Class employee

Inherits person

Dim Ssalary As Single

Public Property salary()As Single

Get

Return Ssalary

End Get

Set(ByVal value As Single)

Ssalary = value

End Set

End Property

Sub Displayemployee()

Debug.WriteLine(“雇员的姓名:” & name)

Debug.WriteLine(“雇员的性别:” & sex)

Debug.WriteLine(“雇员的年龄:” & age)

Debug.WriteLine(“雇员的薪水:” & salary)

End Sub End Class Module Module1

Sub Main()

Dim aemployee As New employee()

aemployee.name = “王强”

aemployee.sex = “男”

aemployee.age = 25

aemployee.salary = 3600.0

aemployee.Displayemployee()

End Sub End Module

2、禁止继承

在默认状态下,创建的任何类都是可以用作基类,可由这个基类创建其他的类。但有时需要创建一个不被继承的类,这时可以在类的声明中使用NotInheritable关键字。

Public NotInheritable Class Class_name …… End Class

呼伦贝尔学院—— 计算机科学与技术学院

使用这个关键字后,其他代码都不能使用Inherits关键字来创建一个由这个基类继承二来的子类。

3、基类成员在派生类中的作用域

通过继承性创建子类时,新类将从父类获得所有Public 和 Friend方法、属性及变量。但在父类中声明的Private的任何内容都不能直接应用于新子类的代码中。

例如:可以在上例的person类中重写age方法,代码如下: Private Property age()As Integer

Get

Return Iage

End Get

Set(ByVal value As Integer)

Iage = value

End Set

End Property Age方法声明为private,所以employee类和其他代码都不能使用它。当然也有一个列外,就是New方法,构造函数方法必须在每一个子类中重新定义。

有时public和private并不够用,需要创建一个可以用于子类而不能用于客户代码的方法,此时就可以使用protected作用域。当某些内容声明为protected时,该元素就不能应用于类以外的代码,但可以应用于通过继承派生出的子类。

例如:若将person类当中的name、age、sex属性都声明为 Protected Property name()As String Protected Property age()As Integer Protected Property sex()As string 那么测试程序中的下列代码将不再有效: aemployee.name = “王强” aemployee.sex = “男” aemployee.age = 25 但示例中的name、age、sex属性可以应用于employee中的所有代码,因为它继承了父类。为设置属性,可以在employee中增加一个方法setperson():

Public Class employee

Inherits person

Dim Ssalary As Single Public Property salary()As Single

Get

Return Ssalary

End Get

Set(ByVal value As Single)

Ssalary = value

End Set End Property Sub setperson(ByVal n As String, ByVal a As Integer, ByVal s As String, ByVal c As Single)

name = n

age = a

sex = s

呼伦贝尔学院—— 计算机科学与技术学院

salary = c End Sub

Sub Displayemployee()

Debug.WriteLine(“雇员的姓名:” & name)

Debug.WriteLine(“雇员的性别:” & sex)

Debug.WriteLine(“雇员的年龄:” & age)

Debug.WriteLine(“雇员的薪水:” & salary)

End Sub End Class Module Module1

Sub Main()

Dim aemployee As New employee()

aemployee.setperson(“王强”, 25, “男”, 3600.0)

aemployee.Displayemployee()

End Sub End Module 5.6重载方法

VB.NET具有重载方法的功能,可以利用重载来实现多态性。重载是可以在一个类中可多次声明相同名称的一种方法,只要每个声明都有不同的参数列表即可。其中参数列表不同指的是参数的数据类型不同或参数的个数不同。例如:Public Sub show(ByVal x As Integer, ByVal y As Integer)。

上面show方法的参数列表的参数的类型为(Integer, Integer)。为了重载这个方法,必须使用不同的参数列表,例如(Double,Integer)或(Integer,Double)都可以。重载不能只是通过改变函数的返回值来实现,而是要求实际参数的数据类型不同。

Public Class sum

Public Function add(ByVal a As Integer, ByVal b As Integer)As Integer

Return a + b

End Function

Public Function add(ByVal a As Double, ByVal b As Double)As Double

Return a + b

End Function End Class Module Module1

Sub main()

Dim NO1, NO2 As New sum

Debug.WriteLine(NO1.add(5, 6))

Debug.WriteLine(NO2.add(2.5, 3.6))

End Sub End Module

学生练习:声明一个Shape(形状)基类,在此基础上派生出Rectangle和Circle类,(1)根据给出的矩形的左上角和右下角的坐标计算该矩形的面积;(2)根据给出的圆心坐标计算出圆的面积。

面向对象的软件设计技术 第6篇

关键词:面向对象;特征;软件分析;设计技术

中图分类号:TP319文献标识码:A文章编号:1007-9599 (2011) 06-0000-01

Object-oriented Software Design Technology

Shi Tong

(Shanghai East China Normal University,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;Software analysis;Design technology

一、引言

随着传统结构化方法的软件开发技术的弊端不断凸现,人们逐步转向了面向对象的软件开发技术,到上世纪90年代,面向对象技术是软件开发技术中核心的开心技术,虽然近年IT界已经提出了面向服务的软件开发技术,但由于其在软件业的应用不成熟性和一些局限性,和面向对象技术的相关优势,其仍然是当今软件开发与设计的核心技术之一。

二、面向对象

(一)面向对象

1.面向对象就是把现实世界中任何一种事物看作一种可以被认识的对象,并对其具有的相关属性和行为进行发现和研究。而面向对象技术的基本思想实现了从现实世界到计算机世界的映射,即现实问题空间到计算机的解空间,其中,问题空间到解空间为自然映射的抽象,解空间到问题空间为真实而完整的反映映射。

2.对象:是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,对象表示具体的事物和抽象的规则、计划或事件。

3.类和实例:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,或者说,类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

4.消息和方法:对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。

(二)面向对象的特征

1.对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。

2.抽象性。抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。

3.继承性。继承性是子类可以自动共享父类的数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

三、面向对象的软件分析与设计

(一)面向对象的需求分析技术。按照软件工程角度来说,面向对象的需求分析是软件开发过程中的需求分析阶段,其主要是运用面向对象技术和面向对象的思想对问题空间进行思考,分析,研究等工作。面向对象的需求分析一般采用方法包括自顶向下和自底向上的方法进行系统建模。

(二)面向对象的系统设计技术。面向对象的系统设计技术阶段的主要任务就是计算机世界的解空间中的相关对象和对象之间的关系进行模型化,根据相互联系,将对象进行类型划分。具体来说,即根据需求分析的内容和相关说明,将需求分析阶段的工作进行形式化的说明和描述,达到功能规格说明,并进行层次地逐步地细化,直到细化到能用面向对象的程序语言设计和实现为止。系统设计阶段要围绕以数据为中心,程序设计与数据相结合的设计方法。

(三)面向对象的程序设计技术。面向对象的程序设计技术是面向对象的系统设计的后期工作,是对计算机世界的解空间进行具体地实现,其工作与具体的程序设计语言是不相关的,与解空间的实现策略是相关的。在确定策略后,实施程序设计的步骤,如图1所示。

(四)面向对象的测试技术。面向对象的测试技术就是采用面向对象的方法开发系统测试,与其他的测试没有本质的区别。系统测试的目的在于检测系统的正确性和稳定性,测试步骤是从局部测试开始,再到整体测试。局部测试是对系统中部分构件的综合测试,整体测试是对整个系统进行综合、全面和局部与局部之间的联系性、稳定性的检测。测试技术最主要的测试方法是“主攻型”的综合性测试,尤其在软件的开发期间,表现尤为重要。

四、总结

软件的质量与软件的开发技术与方法是密切相关的,人们针对软件质量的要求,提出了多种软件开发技术和方法,但都遇到了软件维护方面的多种问题,尤其在采用结构化的软件开发方法。面向对象的软件设计和方法提供了以往开发方法更好的解决办法,其以数据为软件的开发中心,结合用户需求和系统功能进行系统结构的建立和设计,最后形成软件的框架与结构。

参考文献:

[1]倪彬.面向对象的系统分析[J].软件世界,1995,96(2)

[2]陈余年,方美琪.面向对象软件工程[M].北京:清华大学出版社,1999,2

[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998,1

面向对象设计方法 第7篇

目前,高等院校(包括高职院校)在计算机相关专业都开设了“面向对象分析与设计”这门课程。课程涉及的内容新、实践性强,目前仍在不断发展、不断完善;对于学生,只有理解相关概念、技术、方法,而不是死记硬背,才能学以致用,才能在以后的实际工作中跟上技术发展的步伐。所以,探索一种新的、行之有效的教学方法是完成教学任务、达到教学目标的关键。这里,我们着眼于高职院校,来探讨“面向对象分析与设计”这门课程的教学方法。

2 课程体系与教学目标

高等职业教育属于技术应用型教育,以培养高技能的实用型、应用性人才为目标,这一目标在专业设置、课程体系、教学大纲中逐步得到明确、落实。

在计算机相关专业的课程体系中,“面向对象分析与设计”是一门专业课程,开设于“程序设计基础”等专业基础课程之后;目前,绝大多数学校的“程序设计基础”课程以C++、Java、C#等作为教学语言。所以,学生在学习“面向对象分析与设计”之前,已经能够在编程语言级别上认识“面向对象”,这是学生认知的基础,因而也就是我们展开教学的基础。

在教学大纲中,“面向对象分析与设计”的教学目标包括:(1)理解面向对象的概念、思想、方法;(2)理解软件建模的意义、方法、步骤;(3)具有阅读、理解软件模型图的能力;(4)具有使用软件建模工具绘制软件模型图的能力。

3 教学方法

马克思主义的认识论告诉我们:认识是一个由“实践到认识”再由“认识到实践”的不断反复、提高的过程。综合学生的认知基础和课程的教学目标,我们通过“抽象-实现-建模”这三个步骤来展开各个知识点的教学:(1)抽象(实践到认识):分析现实世界中的事物,抽取、讲解与知识点有关的概念、思想、方法等,以加深学生的理解,防止死记硬背;(2)实现(认识到实践):通过程序代码,来分析这些知识点对应着实际编程过程中的哪些工作,升华学生对知识点的理解;(3)建模(反复、提高):引入UML的模型图和和图形符号,讲述模型图的作用,同时演示、讲解建模工具的使用。

下面,我们通过类、继承、关联这些概念的简化教学过程来演示这一方法。

3.1 类的教学

[抽象]张三是一个学生,李四是一个学生,学校有许多学生。为了指定一个具体的学生,我们必须指定其学号、姓名、班级、系部等信息。这些信息用来描述学生的特征,以便将不同的学生区分开来;同时学生也有行为,如:报到注册、考试、借书、请假,等等。可见,学生是具有相同特征、行为的群体,为了方便,我们给定一个包含共同特征、共同行为的描述框架,通过指定这个框架中的特征,就能明确指定群体中的一员。这个描述框架是群体共同特征及行为的抽象,我们称之为类,这个类取名为“学生”。对于教师,又是另外一个群体,我们需要另一个框架来描述,即“教师”类。可见类是一组具有相同特征和行为事物的抽象描述,类有三个要素:名称、一组特征、一组行为。

[实现]在编程语言中,类是一个自定义的数据类型,C++使用“class”来标识这种定义。在C++语言中,前述的三个要素分别是类名称、成员变量、成员函数,考虑到信息隐藏的需要,需要控制对成员变量、成员函数的访问。例如:

[建模]在实际的软件项目中,需求明确之后,并不是直接编程,而是将构思的软件系统画在图纸上,以便讨论、推敲、修改,完了之后才是编程,这样可以避免一时的仓促或疏忽,导致返工,浪费工时。在图纸上构建软件系统,就是系统分析和设计,在这里,就是绘制系统的类图。UML使用一个上下分成三个部分的矩形来表示,上面是类名称,中间是成员变量,下面是成员函数,如下图所视。这样,我们就可以根据类图来编写代码,反之,也可以根据代码来构建类图。

在Rational Rose中,用属性(attribute)来表示成员变量,用操作(operation)来表示成员函数(由于篇幅关系,这里略去具体的操作,在实际教学中,可以采用讲练结合的一体化教学方法)。

3.2 继承的教学

[抽象]有一些学生是党员,需要入党介绍人、入党时间、交党费这样的一些不同于其他学生的特征和行为,即具有党员这样的特殊性,怎样来描述这一群体的学生呢?从哲学的角度来讲,学生党员是学生,不仅具有党员这个特殊性,而且具有学生这个一般性。这样,我们可以在原来描述框架的基础上,添加有关党员的一些描述信息,就可以得到一个适合于学生党员的、新的描述框架。这种一般与特殊的关系,我们使用继承来表示:

继承是让某个类型的对象具有其它类的特征和行为。通过继承,可以使类的实例拥有另一个类的特征和行为。

[实现]在编程语言中,一个类(子类)从另一个类(父类)继承成员变量或函数,就是在父类的基础上再定义一个新类(子类),在其中添加自己所特有的成员变量或函数。在C++中,学生党员类可以如下定义(这里的CPStudent不仅具有自己的成员,而且还包含了Student中的成员):

表示继承,由子类指向父类。在Rational Rose中继承使用泛化(generalization)关系表示。上述CPStudent和Student的关系表示如图2所示。

3.3 关联的教学

[抽象]学生的图书证,是一类事物,可以通过编号、发放日期、有效期等信息来描述,另外上面还包含了学生的信息,以确定学生的身份。这里,图书证和学生存在一种关系,这种关系是关联。

一类事物其特征信息可能是另一类事物,我们说这两类事物之间存在关联。

[实现]在编程语言中,关联关系表示:一个类的属性其类型是另一个类。在C++中,上述图书证和学生的关联在代码上实现如下:

[建模]UML使用一个带箭头的实线来表示关联,由包含类指向被包含的类。这里,不再需要在图中给LibraryCard添加stu属性,这个stu属性蕴涵在关联关系中。上述LibraryCard和Student的关系表示如图3所示。

4 小结

本文从高等职业教育的性质、目标出发,分析了计算机相关专业的课程体系、“面向对象分析与设计”课程的教学目标,以类模型图为例,阐述了“抽象-实现-建模”的三步教学法,这种教学方法是马克思主义认识论的一个具体应用。教学实践表明,该方法能够活跃课堂的气氛、启发学生的思维,教学效果达到了教学目标的要求,符合高等职业教育对人才培养目标的要求。

摘要:面向对象分析与设计,涉及的内容新、实践性强。文章着眼于高等职业院校,分析了课程体系、教学目标,以类模型图为例,阐述了抽象-实现-建模的三步教学法。

关键词:教学方法,面向对象分析与设计,统一建模语言,课程体系,教学目标

参考文献

[1]卢红学.对我国高等职业教育人才培养目标的再认识[J].荆门职业技术学院学报,2007(4).

[2]Boggs W,Boggs M.UML与Rational Rose2002从入门到精通[M].邱仲潘,译.北京:电子工业出版社,2002.

[3]国刚,周峰,孙更新.UML与Rational Rose2003软件工程统一建模原理与实践教程[M].北京:电子工业出版社,2008.

面向对象设计方法 第8篇

关键词:面向对象,程序设计,教学方法,改革对策

1.引言

近些年,软件产业正在迅猛发展,面向对象程序设计已经成了软件开发的主流技术, 传统的结构化编程已经逐渐转变为面向对象的程序开发。表现在代码的开发基本基于各种空间,并且通过事件驱动完成的。目前,我国高校的计算机专业的专业课和非计算机专业的选修课程都开设了面向对象程序设计课程,例如C++,C#和JAVA课程。在传统的教学模式下,在面向对象的教授过程中出现了很多问题。因此,为了提高课堂教学效率,培养学生创新能力,本文对面向对象编程的特点进行详尽阐述,并且对面向对象的程序设计教学现状和存在的问题进行分析,并从全局的角度讨论面向对象程序设计的创新教学方法和改革对策。

2.面向程序设计教学现状

面向对象程序设计是高校计算机专业中一门实践性强的必修课程,在面向对象教学中主要问题表现如下方面:

(1)教学理念

很多讲授面向对象程序设计的教师, 知识针对某种面向对象程序设计语言进行教学, 忽视计算机专业知识的系统化学习,甚至忽视选修课的理论知识学习,例如算法导论、操作系统概论等。这样的结果导致很多学生在操作技能上非常突出。但是由于系统化知识不够全面,不能触类旁通,举一反三。对于问题的建模和解决问题能力很差, 面对实际的软件开发束手无策,无法适应未来的就业市场。

(2)教学内容

目前,一些教师仍然以自身为课堂的中心,对学生进行灌输式的教育,忽略课堂教学效果,仍然保留传统的教学方式,只是将讲授的内容放在面向对象程序语法和句式上, 但是对实际的面向对象程序工程向项目和贴近生活的实例而言却介绍得少之又少。甚至在面向对象程序程序的定义方面,很多教师没有讲解其真实含义, 使得学生在程序设计的知识层面上只停留在使用上,并未真正理解程序的意义。

(3)教学手段

面向对象程序的授课过程,教师大多采用了课件的形式,课件能够减轻教师的负担,课堂的信息量有所增加。但是过多信息化元素的使用,使得传统的、优秀的板书推导方式的作用得不到发挥,学生需要很长时间才能够理解程序演进的过程。另外,课件的使用,会使教师自然增加课堂节奏,这让学生更加难以理解一些关键内容。

3.面向对象教学改革模式

面向对象的教学目标是通过系统化的理论和实践教学,使学生能够深入理解面向对象编程的思想, 树立面向对象的编程思维,提高学生的实践能力与创新能力。教师应该让学生利用所学的理论知识解决实际问题, 通过教材和复制教材的选取,创新教学方法,现代化教学方法的应用等让学生有明确的学习目标,具有探索性的科学素养。

在面向教学的改革模式中, 教师应该极其注重精讲多练的原则,面向对象的实践性和操作都很强,学生容易形成死记硬背,无法有效培养编程能力。因此,精讲多练的原则是教学改革模式的重要组成部分。这就要求教师能够掌握全面的有关教学的知识,并对课堂教学内容与课后练习内容加以区分。课堂内容要求教师能够进行精与深的方式讲解, 让学生把握知识的精髓。多练的部分要求学生能够通过教师布置的习题完成操作性强与实践强的课后作业。学生可以通过基础题目加深对基础知识的理解,还可以通过开放性题目,进行分组合作完成作业,培养学生的团队合作精神、独立解决问题能力和创新能力。

4.结语

面向对象设计方法 第9篇

面向对象程序设计(Object-Oriented Programming,OOP)是当前主流的程序设计方法。它能有效降低软件的复杂性,极大地改善软件的重用性和可维护性,显著地降低软件的生产成本,提高软件的质量和开发效率。因此面向对象的程序设计方法已经取代了传统的结构化程序设计的地位而成为软件工业界主流的程序设计方法。面向对象程序设计的特点如下:

(1)抽象性

面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性。

(2)封装性

封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。在C++中,最基本的封装单元是类,封装主要是通过类中的私有成员来实现的。

(3)继承性

继承是指一个对象从另一个对象中获得属性的过程,是面向对象程序设计的原则之一,它支持按层次分类的概念。由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例,一个深度继承的子类将继承它在类层次中的每个祖先的所有属性。继承与封装可以互相作用,新的子类继承其所有祖先的所有属性。子类和系统中的其他代码不会产生无法预料的交互作用。

(4)多态性

多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用“一个接口,多个方法”来描述,可以通过方法的参数和类型引用。

1 多继承

继承是面向对象程序设计中的一个重要特征,按照基类的个数可分为单继承和多继承。多继承可以看作是单继承的扩展。多继承下派生类的定义格式如下:

class<派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…

{<派生类类体>};

其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。例如:

一般说来,在派生类中对基类成员的访问应该是唯一的,但是,由于多继承情况下,可能造成对基类中某成员的访问出现了不唯一的情况,则称为对基类成员访问的二义性问题。

2 基类之间没有继承关系的二义性

在多继承的关系中,其派生类的基类之间可以允许没有任何的继承关系。但是由于基类中可能存在着相同名称的成员,而这些成员都被派生类所继承,那么在派生类中就会产生同名现象,用派生类的对象去访问这些同名成员的时候就会出现访问二义性。

此调用语句便具有二义性:是访问类A中的函数f(),还是访问类B中的函数f(),编译器无法识别。此时程序运行将会出错。

为了解决此类二义性问题,第一种方法可以用类名限定法来限定成员的调用,从而消除二义性。

例如:用c1.A::f()调用或者c1.B::f()调用。前者就说明调用从A类继承的函数f(),后者调用从B类继承的函数f()。

第二种方法可以在派生类C中定义一个同名的成员函数f(),那么此时执行c1.f()调用的则是派生类里定义的成员函数f()。这就是同名隐藏原则,即在派生类中若定义了和基类同名的成员时,派生类的成员会把基类的成员隐藏起来。

例如:在上面例题中的C类的类体定义中增加函数f()的定义。

3 基类之间具有继承关系的二义性

如果某个派生类的部分或全部直接基类是从另一个共同的基类派生而来,在这些直接基类中,从上一级基类继承来的成员就拥有相同的名称,因此派生类中也就会产生同名现象。对这种类型的同名成员也要使用作用域分辨符来惟一标识,而且必须用直接基类定义来进行限定。

两条调用语句便具有二义性:是访问从B1类中继承而来的函数fun()和数据成员nv,还是访问从B2类中继承而来的函数fun()和数据成员nv,编译器无法识别。此时程序运行将会出错。

其实B1和B2中的数据成员nv和函数fun()都是从B0中继承而来的,也就是说是属于同一成员的多份拷贝,这就是所谓的路径二义性。

解决此类二义性的方法:当某类的部分或全部基类是从另一个共同基类派生而来时,在这些直接基类中从上一级共同基类继承来的成员就拥有相同的名称。在派生类的对象中,这些同名数据成员在内存中同时拥有多个拷贝,同一个函数名会有多个映射。我们可以使用作用域分辨符来惟一标识并分别访问它们,也可以将共同的基类设置为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。

虚基类的声明语法形式为:

class派生类名:virtual继承方式基类名

对于上面的程序就只要把

此二义性就解决了。

4 结束语

类的继承就是新的类从已有类那里得到已有的特性,而从已有类产生新类的过程就是类的派生。派生类同样也可以作为基类派生新的类,这样就形成了类的层次结构。派生过程完成后,我们就要讨论派生类及其对象的成员(包括了基类中继承来的部分和新增的部分)标识和访问问题。访问过程中,实际上有两个问题需要解决:第一个问题是惟一标识问题;第二个问题是成员本身的属性问题,也就是可见性问题。为了解决成员的惟一性标识问题和可见性问题,我们可采用同名隐藏原则、作用域分辨符和虚基类的方法。

参考文献

[1]郑莉.C++语言程序设计(第三版)[M].北京:清华大学出版社,2004.

[2][美]Raphael Pender著.苏剑译.标准C++编程宝典[M].北京:电子工业出版社,2005.

面向对象设计方法 第10篇

本文首先分析了Action Script 3.0作为面向对象程序设计语言的特点, 然后针对Action Script 3.0的特点提出了针对Action Script 3.0的教学设计方法。在教学过程中, 经过数年的实践和调整, 教学成果较为理想。

一、Action Script3.0面向对象程序设计语言的特点分析

1. 严谨的面向对象程序设计概念。

与脚本语言Action Script2.0不同, Action Script3.0是完全意义上的面向对象程序设计语言, 具有类、对象、包、继承、多态等面向对象概念。

2. Action Script3.0具有与C语言和Java等语言不同的语法表达。

Action Script 3.0具有与C语言和Java语言不同的基本语法表达。在实际教学中, 对于已学习过其他语言的同学来说, 需要注意明确指出这种区别, 以便减少学生由于基本语法上的混淆而影响实际程序的开发。以下列举几种基于不同语言的基本语法表达的异同: (1) 变量的定义和赋值。基于C语言和Java语言的整数类型a变量定义并赋值为6的语句如下:int a=6;基于Action Script 3.0同样表达以上含义的语句则为:var a:int=6;如上文的语句所显示的, Action Script3.0中变量定义采用关键词var, 即variable的缩写, 而该变量的类型则通过变量名后加冒号 (:) , 冒号后面是指定的类型。 (2) 数组的定义和赋值。Java和C语言中常用的数组定义和赋值语句如下:int a[5]={1, 2, 3, 4, 5};Action Script 3.0中可以用以下语句对数组定义和赋值:var a:Array=[1, 2, 3, 4, 5];与定义变量的语法类似, Action Script 3.0中, 采用关键字Array定义变量a为数组类型。 (3) 函数的定义和赋值。C语言中常用的函数定义语句如下:int max (int a, int b) {};Action Script3.0中函数定义语句如下:function max (a:int, b:int) :int{}。

3. Action Script3.0具有与Java等面向对象语言不同的概念。

除类、对象、包、继承、多态等面向对象概念外, Action Script3.0还有独特的概念, 如名称空间, 也称为命名空间。这一概念在XML等技术中被采用, 但是Action Script3.0中的名称空间的概念与XML中的又有不同。这些异同点在教学过程中需要阐述清楚, 并且在学生实践过程中出现语法错误时及时纠正, 帮助学生尽快掌握Action Script 3.0特有的语法表达。

4. 实用的可视化实例交互控制功能。

对可视化素材实例的交互操作功能是Action Script 3.0的重要优点。Action Script 3.0是Flash自带的脚本语言, 活用Flash本身的强大动画制作能力, 采用Action Script 3.0可以非常便利地实现对可视化素材进行交互式操作, 从而实现具有丰富视觉效果的交互系统。具体方法是通过Flash制作可视化素材, 将该素材定义为可视化类, 然后在脚本程序中可以按照生成类的实例化对象的方法, 定义可视化类的实例化对象。对可视化素材的实例化对象的操作, 是通过Action Script 3.0的事件机制实现的, 通过定义不同的事件类型和事件侦听器, 达到对可视化素材直接操作的效果。

二、Action Script3.0的教学设计

由于Action Script3.0所具有的特色, 在教学过程中采取了以下几种教学方法, 获得了很好的教学效果。

1. 采用对比法和类比法学习面向对象概念。

根据上文对Action Script 3.0语法特点的分析, 在实际教学过程中根据基础不同的学生采用不同的教学方法。本专业的很多学生在学习本门课程之前学习过C语言或Java语言, 针对这部分学生, 由于有以往学习的经验, 在掌握编程思想以及面向对象编程思想时是有利的, 然而根据以往的经验, 这部分学生对Action Script 3.0语法最初很不适应, 如果不能及时地帮助学生区分这些异同, 会大大降低学生继续深入学习的兴趣, 使一部分不能克服的学生在后面的学习中感到非常困难, 甚至不能体会Action Script 3.0开发的精髓。

2. 注重可视化案例设计。

Action Script 3.0在可视化方面的优秀表现是我们确定该项内容为教学重点的原因。为了使学生更好地熟悉和掌握这种技术, 在教学过程中我们制作了各种常用的可视化素材的交互控制应用, 在演示案例并详细讲解相关代码含义的基础上, 设置类似的工作任务, 引导学生在模仿的基础上能够开发自定义功能, 达到对相关知识的理解和掌握。

3. 引导交互功能的设计与实现。

学生通过学习和实践在掌握了Action Script 3.0的编程内容以后, 再在教学进程中安排Action Script 3.0程序设计的实训课程, 在此环节, 设计了不同主题的游戏任务, 在学生任务书中从技术要点方面对学生需要完成课题的难度、结构、组织方式、工作时间以及工作规范等内容进行了明确要求。学生按照4~6人一组进行分组, 具体的游戏内容和游戏规则由组长带领组员共同商讨进行, 并将小组内成员的具体分工和指导教师共同讨论, 并达成一致。

实践表明, 绝大多数学生可以按照计划完成最初策划的基本内容, 在实际开发的过程中, 也会对最初的策划进行一定程度的修改。在此过程中, 有的学生可以很巧妙地应用之前学习过的案例, 并进一步发展以实现自己设计的功能, 从而加深了对所学内容的理解并且进一步提高了学习的兴趣。

三、总结

本文总结了Action Script 3.0程序设计课程的多年教学经验, 首先分析了Action Script 3.0作为面向对象程序设计语言的特点, 然后针对Action Script 3.0的特点阐述了针对Action Script 3.0的教学设计方法。相关的教学方法在教学过程中, 经过实践和调整, 取得了较为理想的教学效果。通过本门课程的学习, 学生采用相关技术, 多次在省级和国家级竞赛中策划、获奖、开发各类系统以及进行毕业设计等, 达到了学以致用的目的。

摘要:本文分析了面向对象程序设计语言Action Script3.0的特点, 以此为依据, 提出了该课程在教学上的组织形式、教学案例设计、学习方法引导以及实训项目开展等方面的教学尝试。经过教学实践, 证明了所提出教学方法对于提高学生的学习兴趣、发挥学生的学习主动性等方面具有较好的效果, 有助于学生理解和掌握面向对象程序设计语言的概念以及Action Script3.0程序设计应用。

关键词:面向对象程序设计语言,Action Script3.0,案例设计,教学方法

参考文献

[1]朱喜福.Java程序设计[M].北京:人民邮电出版社, 2008.

[2]翟宝利, 等.Action Script3.0从入门到精通[M].北京:化学工业出版社, 2009.

[3]沈钧, 李庆.风云ⅡFlash CS3 Action Script3.0游戏开发基础与范例[M].北京:电子工业出版社, 2008.

杆件结构的面向对象编程方法 第11篇

杆件结构是一种重要的工程结构, 作为复杂结构的组成单元, 贯穿于材料力学、结构力学、弹性力学等力学学科之中。传统的杆件结构计算程序是采用面向过程的方法进行程序设计, 有着诸多弊端。其数据与操作函数的分离, 导致扩展性差, 程序代码重复利用率低, 难于维护和二次开发。随着结构体系的复杂化, 运算能力的剧增要求发展与之相适应的结构分析理论和方法。面向对象编程方法的引入, 可以较好解决上述问题。

1 杆件变形的基本形式及计算的力学原理

杆件受到方向大小作用点各异的外力作用, 造成杆件的变形形式各不相同, 但最基本的变形形式可以归结为四种, 即轴向拉伸或压缩、剪切、扭转、弯曲[1]。其他更为复杂的变形形式可以看成是由这几种基本变形形式的组合。这里仅对轴向拉伸或压缩、扭转、弯曲进行分析。

1.1 轴向拉压

直杆两端受到大小相等、方向相反的一对作用力, 其作用线与杆件的轴线相重合, 杆件的变形是沿轴线方向的伸长或缩短, 称为轴向拉伸或压缩。简称轴向拉压。轴向拉压时等直杆的轴向变形计算用虎克定律计算。

其中比例常数E是表示材料性质的一个常数, 称为拉压弹性模量, 也称杨氏模量。单位常用MPa或GPa表示。

1.2 扭转

直杆两端受到大小相等、方向相反的力偶的作用, 力偶矩矢与轴线平行。杆端B截面相对于A截面的扭转角称之为相对扭转角, 记为。相对扭转角的计算公式为

1.3 弯曲

当杆件受到垂直于轴线的外力或受到位于轴线所在平面的力偶作用时, 杆件的轴线会变弯, 此类变形称为弯曲变形。弯曲变形的杆件截面形心沿垂直于杆轴方向的线位移, 称为杆件在该截面的挠度。另一种是梁的横截面绕中性轴相对其原来位置所旋转的角度, 即角位移, 称为梁在该截面的转角。简支梁跨中受荷载大小P作用下, 跨中挠度为, 最大挠度产生于跨中位置, 大小为。杆端截面转角为

2 杆件结构分析程序设计

2.1 程序设计原理

“面向对象”是把一组对象中的数据结构和算法紧密地结合在一起组织系统的一种方法。它的指导思想是:按照人们通常的思维方式建立问题域模型, 设计尽可能自然的表现求解方法的软件。杆件结构的面向对象编程杆件在于建立杆件类。采用C#高级程序设计语言, 结合Microsoft Visual Studio 2008环境开发了杆件结构计算程序。

2.2 beam类成员

类中的数据和函数称为类的成员。数据成员包含了类的数据, 如字段、常量、事件。函数成员提供了操作类中数据的某些功能, 包括方法、属性、构造函数和终结器、运算符以及索引器[2]。Beam类的关键成员如图1所示。

2.3 计算过程

仅输入相关计算所需必要的杆件参数, 程序即可完成计算。计算结果显示在文本框中。首先, 输入相关计算所必要的杆件参数。点击计算后, Islegal () 函数首先判断输入的数据是否合法。Islegal () 检测通过, 根据计算种类, 分别由Get A () 、Get Ip () 、Get Ix () 、Get Iy () 、Get A () 、Get Ip () 、Get Ix () 、Get Iy () 函数计算相关杆件截面参数。由此得到计算需要的所有杆件参数。调用Get Axial Deformation () 、Get TorsionDeformation () 、Get BendingDeformation () 函数计算所需的结果。完成整个计算过程。

3 杆件结构分析程序应用实例 (见图2)

设一直杆长度为l=500mm, 弹性模量截面面积。轴向受到一对大小相等方向相反的拉力, 大小为N=30000N。把相关数据输入程序对应的文本框中。程序接收到用户的计算指令之后, 首先调用构造函数建立并且初始化杆件对象, 然后设置荷载值, 最后求解。经过程序计算, 得到杆件的变形为0.0375mm。和理论值相一致。

4 结论

可见, 应用面向对象编程方法能够成功的解决杆件结构变形计算的问题。并且由于面向对象编程方法的引入, 杆件结构程序设计的步骤得到极大简化, 代码简洁、高效。其数据与操作函数统一封装在类里, 修改或者扩充类成员不影响已有代码, 代码重复利用率高, 便于二次开发。为了更好的说明程序原理, 所给的代码做了一些简化。若应用到工程实际, 仍需逐步完善杆件类, 考虑到不同的受力情况和杆件的几何形状的变化, 并且完善异常处理机制。

摘要:通过分析杆件结构的基本变形, 利用材料力学基本原理作理论基础, 提出杆件结构的面向对象编程方法。建立了杆件类, 并且给出了类中的数据成员和函数成员以及构建类的关键代码。最后结合工程实例说明了程序的输入输出流程。经过对比理论计算和程序计算的结果, 验证了程序计算结果的可靠性。

关键词:杆件结构,面向对象,编程

参考文献

[1]宋子康, 蔡文安.材料力学[M].上海:同济大学出版社, 2001:15-56, 124-158.

上一篇:认定办法下一篇:克孜尔石窟