面向对象程序

2024-06-11

面向对象程序(通用12篇)

面向对象程序 篇1

1、引言

面向对象程序设计 (Object-Oriented-Programming, OOP) 是一种全新的程序设计思想, 目前已成为程序设计的主流思想, 面向对象程序设计的基本单元是类和对象。对于面向对象中一些基本概念的深刻认识, 对于一个初学者而言格外重要。但是, 最初接触到这些概念又会让那些初学者感到晦涩难懂。本文将大量的引入生活中的例子来阐述面向对象中一些概念, 以便初次接触这些概念的人能轻松把握。

在面向对象程序设计方法出现以前, 程序设计都是面向过程的。面向过程的程序设计重点在与函数的设计, 函数是组成面向对象程序的基本单元。面向过程程序设计的优点是:符合人们的思维方式, 按照由上到下的方式, 从整体把握一个要解决的问题。但是, 当处理一个较为复杂的问题时, 面向过程的程序设计将显得力不从心。因为, 在处理问题的过程中, 我们会遇到很多意想不到的问题, 这些问题在最初我们却又无法涉及到, 以前对问题的理解或许就不再适用。

为了解决这些问题, 出现了面向对象对象的程序设计。面向对象的程序设计是以数据为中心, 类作为表现数据的工具, 是划分程序的基本单位。它采用的是由下至上的解决问题的模式, 从问题的一部分入手, 逐渐构建出整个程序, 比较适用于较为复杂的项目的解决。

这样就给我们提出了一种全新的解决问题的思维模式:将一个大的项目分解为若干小的项目, 逐一突破, 继而完成整个项目。

2、类和对象

类和对象是构成面向对象程序设计的基本单位。

2.1 对象

2.1.1 对象的概念

对象就是一组变量和相关方法的有机结合体, 其中变量表明对象的属性, 方法表明对象所具有的行为。

2.1.2 生活中对象的概念

现实世界是由各种对象组成的, 在生活中, 我们所指的对象就是“东西”, 几乎任何东西都可以看做是对象。将一个东西看做对象, 我们便可以独立的去审查它的性质、行为, 进而研究它和其他对象之间的关系。同样, 我们在程序中引入对象的概念, 就可以把一个程序看做是多个对象相互作用的结果。

下面以电视机为例讲述对象的概念。绝大多数人对于电视机的内部构造及工作原理并不理解, 但是却又能十分熟练的来使用电视机。因为, 电视机的设计本来就是让我们不需要了解其内部构造就能够使用。电视机对用户来说, 可以视为一个“黑匣子”, 此时, 电视机对我们来说就是一个对象。当用户通过遥控器对电视进行操作的时候, 其内部需要经过一系列复杂的过程, 但是, 这些复杂过程对用户都是屏蔽的, 作为用户只需要知道按下按键将会转换到另一个频道即可。

由此, 我们可以看到对象这个概念的魅力所在, 使用对象的人无需了解其内部构造, 只需要简单了解对象的表面 (接口) 便能应用。因此, 我们不需要成为汽车工程师也能开车, 不需要成为电脑工程师也能使用电脑。这是面向对象程序设计的第一个特点:封装。

电视机的发展经历了从黑白到彩色再到今天的数字电视, 不断的推陈出新都是在最初电视机的基础上发展而来。这便是面向对象程序设计的第二个特点:继承, 即在原有的基础上加以修改创新。

早先设计的录像机, 在今天仍然可以用于新技术的电视机上, 原因在于, 电视机的音频、视频的输入/输出接口没有变化, 这就是“接口”的稳定性。接口的稳定保证了若干对象在各自发展的同时, 还能够进行交互。

2.2 类

2.2.1 类的概念

类, 是具有相同操作功能和相同数据格式的对象的集合和抽象描述。

2.2.2 生活中类的概念

分类在日常生活中无处不在。如下图所示:

诸如上述分类在生活中比比皆是, 不再赘述。

2.3 类和对象的关系

一个类的定义就是对一类对象进行的描述, 是构成对象的模板。类是抽象的, 对象是具体的。如我们用模子来制作月饼, 于是一个月饼加工厂生产出的月饼的外形都一样, 只是各个月饼的馅料各不相同。这时, 我们可以说模子就是一个类, 而样子相同的各个月饼就是由这个类创建的对象。另外, 我们通过一张图纸可以制造出好多辆汽车, 那么这张图纸便是类, 一辆辆的汽车就是由这个图纸类创建出来的若干对象。在程序设计中我们涉及的是由类创建出来的一个个真实的对象。

3、接口

由于封装这个对象的重要特性的存在, 外界将无权访问对象内部的一些信息和功能。此时的对象被视为一个“黑盒子”, 让使用对象的人不用 (也不能够) 了解对象内部的构造及工作情况。这时候, 类的设计者便可以设计一个清晰的接口, 从而达到对对象的操作。可见, 接口的存在可以让用户在不了解对象内部构造的情况下, 轻松的对该对象进行操作。

接口是一种非常有效的工具, 使得程序员能够将对象的定义和实现完全分离, 从而实现了在不破坏现有应用程序的情况下, 使对象得以发展。

4、多态

类中具有相似功能的不同方法可以用同一个方法名进行定义, 从而使用相同的方式对这些具有不同功能的方法进行调用, 这种现象称为多态。

多态在生活中的例子也不难找到。下面引入智能洗衣机的例子来阐述多态。现有一台智能型的洗衣机, 用户只需将脏衣服放进洗衣机后按下【开始】键即可。接下来的任务全部由洗衣机自动完成。这时候, 洗衣机会按照衣物的质地和脏的程度来决定洗的方式和次数。

当用户放进一条比较脏的牛仔裤时, 洗衣机会强洗15分钟, 漂洗5分钟;

当用户放进一件不是太脏的丝绸衣物的时候, 洗衣机会轻柔洗涤5分钟, 漂洗1分钟。

上述这样根据衣物的质地和脏的程度来决定洗涤方式的洗衣机表现出来的便是多态这个特性。不同的洗涤方式是由衣物 (程序中对应的参数) 所决定的。

多态的有两种实现机制:方法重载与方法重写。

方法重载的特点:在一个类中包含多个名字相同的方法, 但各个方法的参数列表是不同的。这个不同体现在参数的个数、参数的数据类型等不同。那么, 这些参数列表的不同之处就决定了最终将会调用那个方法。如同, 上述智能洗衣机的例子, 各个不同的参数即是放进洗衣机中的不同衣物, 它们的不同决定了洗衣机表现出的不同状态。

方法重写是发生在子类与父类之间的, 子类中有和父类中相同的方法名, 但是方法所完成的任务不同。这就和我们生物中所说的遗传非常相似。孩子继承了家长的相貌, 但是又和家长的长相不完全一样, 在家长相貌的基础上又有不同之处, 这个遗传的现象形象的解释了面向对象中方法的重写。

5、结束语

面向对象程序设计中的基本概念, 对于初次接触的人而言非常重要, 对概念的深刻理解和较好的把握将为今后的程序开发打下坚实的基础。本文通过引入了日常生活中较多通俗易懂的例子, 来诠释了面向对象程序设计中的一些基本的却又晦涩的概念, 希望能够给那些对这些概念把握不准确或者理解欠缺的人扫清障碍。

摘要:面向对象程序设计中的概念的理解往往对于初学者而言晦涩难懂, 本文主要引入一些日常生活中的常见例子深入浅出的介绍面向对象中的类、对象、接口、多态等基本概念, 解决初学者对面向对象概念的匮乏或理解欠缺。

关键词:面向对象,类,对象,接口,多态

参考文献

[1]杨学全.C#技术基础[M].北京:高等教育出版社.2008.1

[2]张俊, 乔宇峰, 周欣.C#程序入门[M].吉林:吉林电子出版社.2005.2

面向对象程序 篇2

课程名称:面向对象程序设计 英文名称: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

六、课外学习要求

要求课前预习下一次课的讲课内容,课后复习本次课的讲课内容并通过相应的作业加以消化。

七、考核方式

面向对象程序 篇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 面向对象

面向对象是当前计算机界关心的重点,它是当今软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。

1.1 基本概念

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

2)对象的状态和行为:对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

3)类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的实体化就是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

4)消息和方法:对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。

类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。

1.2 特征

1)对象唯一性:每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

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

3)继承性:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。

4)多态性:多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。

1.3 要素

1)抽象:抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。类实现了对象的数据(即状态)和行为的抽象。

2)封装性(信息隐藏):封装性是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。

3)共享性:面向对象技术在不同级别上促进了共享。如同一类中的共享,在同一应用中共享,在不同应用中共享。

1.4 面向对象技术

面向对象技术包括面向对象分析(object-oriented analysis,简称OOA)、面向对象设计(object-oriented design,简称OOD)及面向对象程序设计(object-oriented programming,简称OOP)三部分内容:

1)面向对象分析(OOA)指软件需求分析的一种带有约束性的方法,用于软件开发过程中的问题定义阶段。其主要活动是对问题进行抽象建模(包括使用实例建模、类和对象建模、组件建模和分布建模等),产生一种描述系统功能和问题论域基本特征的综合文档。

2)面向对象设计(OOD):将面向对象分析所创建的分析模型转变为作为软件构造蓝图的设计模型。面向对象设计的独特性,在于其具有基于抽象、信息隐蔽、功能独立性和模块性建造系统等四个重要软件设计概念的能力。

3)面向对象程序设计(OOP):指使用类和对象以及面向对象特有的概念进行编程。

2 计算机程序设计

计算机程序设计的本质就是把现实生活中我们遇到的问题,通过抽象然后利用计算机语言转化到机器能够理解的层次,并最终利用机器来寻求问题的解。在此过程中,涉及到两方面问题:一,如何把我们所面对的问题抽象化?使问题能够很好的被抽象语言描述。二,如何把已经抽象解决了的问题映射到机器能够理解的语言里面去。从第一方面体现了程序设计思想而第二方面则体现了程序设计语言,有此可见,两者是有密切关系的,其中的连接点就是抽象机制。

2.1 程序设计语言的概论

程序设计语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。

2.2 程序设计范型的演化

1)过程式程序设计:过程式程序设计范型是:确定需要哪些过程;采用能找到的最好的算法。

2)模块程序设计:设计程序的着重点已经从有关过程的设计转移到了对数据的组织,这种转移也反映了程序规模增大的情况。相关的过程与他们所操作的数据组织在一起,通称为一个模块,程序设计范型变成:确定需要哪些模块;将程序分为一些模块,使数据隐藏于模块之中。

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

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

3 面向对象程序设计

传统的结构化分析与设计开发方法是一个线性过程,以过程为中心进行功能组合,软件的扩充和复用能力很差。区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

下面将使用C++的类机制来设计一个数组抽象

1)数组类的实现中有内置的自我意识,首先它知道自己的大小。

2)数组类支持数组之间的复制,比较等操作。

3)可以查询数组里面的最大植和最小值,以及需要的数值。

4)可以排序。

关键字private和public控制地类成员的访问,一般来说公有成员提供该类的接口—即实现这个类的行为的操作的集合。私有成员提供私有实现代码—即存储信息的数据。这种类的公共接口与私有代码的分离称为信息隐藏。这样我们就可以对数组进行整体操作,实现了数据和算法的捆绑。一般来说我们的实现也许就是针对特定用户的,而不具有普遍性,也就是说有的用户也许根本不需要排序这样的功能,但是我们却为其加入了,我们如何才能支持各种用户对于我们的数组类的要求呢?面向对象程序设计方法为我们提供了这样的一种能力,即继承机制和多态机制。

我们可以把普遍和共同的属性通过基类来实现,而各种特殊的要求,我们通过继承和多态来表达需要的更多于基类的行为。

通过一个数组的演化,我们可以清楚的看到面向对象程序设计的核心思想是:抽象数据类型,继承和多态。我们也可以清晰的感受到面向对象程序设计对于过程式程序设计的好处和优点。

4 结束语

计算机硬、软件技术的发展日新月异,在很短的时间内即涌现出大量的各种各样的软件开发工具,并在迅速不断地更新换代,为编程人员提供了多样化的开发平台,带来了极大的方便,面向对象程序设计技术必将应用到更多的程序设计方法中。

摘要:面向对象技术提供了一种新的认知和表示世界的思想和方法,它对计算机工业的影响是深远的。面向对象技术包括面向对象分析(object-oriented analysis,简称OOA)、面向对象设计(object-oriented design,简称OOD)及面向对象程序设计(object-orientedprogramming,简称OOP)三部分内容。面向对象程序设计是一种方法,这种方法为数据和函数提供共同的独立内存空间,这些数据和函数可以作为模板以便在需要时创建类似模块的拷贝。

关键词:面向对象分析,面向对象设计,面向对象程序设计,函数

参考文献

[1]Stroustrup.C++程序设计语言[M].北京:机械出版社,2004.

[2]Lippman.C++PRIMER中文版[M].李师贤,蒋爱军,梅晓勇,等,译.中国电力出版社,2008.

[3]Yourdon E.Object-Oriented System Design,An Integrated Approach[M].Yourdon Press/Prentice Hall,1994.

面向对象程序设计-实验报告2 篇5

广东海洋大学学生实验报告书

实验名称 实验2:构造函数和析构函数 课程名称 面向对象程序设计

学院(系)

学生姓名

成绩信息学院学号 专业 计算机科学与技术实验地点 科423 班级 实验日期 一.实验目的1.掌握构造函数和析构函数的定义的基本格式。

2.掌握利用构造函数对对象的数据成员进行初始化的方法。

3.了解构造函数的使用方法。

二.实验内容

1.定义一个关于日期时间的类,并在类中定义构造函数、析构函数。

2.定义一个圆柱体类Cylinder。成员中有私有数据半径及高,要求有构造函数、析

构函数以及求圆柱体体积的成员函数。定义此类的两个对象,编写一个主函数进行测试。

浅谈面向对象编程思想 篇6

关键词:面向对象;继承;封装;多态

中图分类号:TP311.56文献标识码:A文章编号:1007-9599 (2011) 07-0000-01

Thought of Object-oriented Programming

Liu Jian,Sun Zheng,Hu Guoyu

(Nanjing University of Posts and Telecommunications,Nanjing210046,China)

Abstract:The class is an abstract thing with the same attribute,the object is a specific class of things,it has real property values.Object-oriented principle is the starting point and basic human habits as analog way of thinking,so it is easy to understand,logically,be accepted and recognized by the majority of IT practitioners.

Keywords:Object-oriented;Inheritance;Package;Polymorphism

说到面向对象就不得不提到面向过程。它出现在面向对象之前,是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后采用分支循环用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。首先必须承认面向过程可以解决所有的编程问题,但是也存在着重用性差、可维护性差、开发过程复杂等缺点。面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是软件开发方法的主流。下文这种对面向对象的编程模式进行探讨。

一、首先介绍面向对象的基本概念

(一)对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

(二)对象的状态和行为。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

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

(四)消息和方法。对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。

二、其次看看面向对象的特点

(一)封装。封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

(二)继承。面向对象编程(OOP)语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。继承概念的实现方式有三类:实现继承、接口继承和可视继承。

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

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

现在看看如何用面向对象的方法来解决这个问题。

建立学生实体类StudentTo其中包括如下属性

//姓名、年龄、性别、身高、学号

private String name;

private int age;

private String sex;

private String height;

private String studentID;

并提供get、set方法,有参、无参构造

在录入方法中实例化学生类对象为student,将姓名、年龄、性别、身高、学号等的属性值赋值给student,并将student传递给老师

StudentTo student=new StudentTo();

student.setName("李辉");

student.setAge(18);

student.setHeight("1.8m");

student.setSex("男");

student.setStudentID("NO.009");

老师接到传递过来的student后将学号改正后提交政教处保存

public void check(StudentTo student){

student.setStudentID("NO.010");}

政教处对学生接受到正确的学生对象后,可以从学生对象中取出姓名、年龄、性别、身高和学号备份留档。这样完整的面向对象解决问题的过程就结束了,从整个流程可以看到我们操作的一直是个实例化的对象,符合逻辑思维,减少了传递的参数,减小了出错的可能性,提升了编程的效率。

综上可以看出,面向对象操作符合人们思维习惯,它对类归纳总结,将类的成员放入对象中,大大减少了参数的传递和出错的可能。面向对象的继承、封装、多态特性也符合思维逻辑,在编程理解方面优势明显。随着时间的推移,近年来人们提出了更为先进的面向服务的概念,但是即使是面向服务也有大量面向对象的思想和影子。可以说面向对象思想直接影响了MVC编程模式,影响了人们的编程逻辑,对计算机语言的贡献无可替代。

参考文献:

[1]马光毅.面向对象方法研究[J].华南师范大学学报

面向对象程序 篇7

存在着两种生源, 分别是五年制与三年制学生, 学生的数学知识的不健全, 理解能力比较差, 学生的对这门课程的兴趣比较少, 上课没有预习, 还停留在初中阶段的, 等老师的喂食。喜欢跟着老师做, 自己不怎么动脑思考, 尤其是要自己去举一反三能力没有。学院开的课程不够科学, 上课的安排不合理。学生上完了课程, 回宿舍基本就不去看, 所定制的教程很不合理的, 不能够让学生容易的学习, 学生遇到问题马上就问老师的坏习惯, 老师变成了现成的字典。上完课程的任务不够, 学生容易偷懒, 作业大部分存在抄袭复制现象。

为了很好的解决这些问题, 提出了自己对于《面向对象程序设计》课程教学改革方法。

第一, 根据学院的实际情况修改不同生源的教学大纲。

五年制的学生的教学大纲容易一点, 三年制的学生的教学大纲难一点。

第二, 选择适当的教材。

不能与本科教材, 中专教材类同, 要根据当前计算机发展选适当的面向对象教材, 我选择的是 (vb2005) , 本课程是基础的程序设计, 现在还使用vb6.0太落后, 如有使用新的vb2005学生更难接受, 因为很多新的概念, 别的课程跟不上, 使用多媒体教师, 使用案例演示+任务驱动, 教师讲解, 学生跟学项目, 学生修改项目, 学生独立完成项目作业, 教师针对性指导, 学生互相讨论学习, 挑选出较好的学生做学习辅导。

第三, 激发学生兴趣。

《面向对象程序设计》课程难度大, 被学生列为最难学的课程之一, 建立学生的学习信心很重要。要使学生感觉不太难, 树立他们的学习信心, 讲课时一定要抓重点, 因此在教学中不是泛泛介绍描述工具的语法和框架, 而是突出关键技术“精讲多练”, 学生可花较少的精力获得较强的编程能力。

第四, 注重学生能力培养。

“面向对象程序设计”课程应采用多媒体课堂授课的方式进行教学, 必须借助一定的工具, 网络教学软件如 (红蜘蛛) 是首选工具, 它能够很好的宏观展示程序整体结构, 又能够很好地微观剖析局部算法, 让每个学生都能清晰的显示教学内容, 比投影仪器效果要好的多, 这对课堂教学中发挥教师的主导作用是非常有利的。培养学生做学习笔记的良好习惯。

第五, 优化多媒体资源。

多媒体课件做的一定要简洁, 不要用一些非必要元素干扰了主题, 程序代码要采用链接的方式去完成, 用记事本打开即可。这样就保证了幻灯片页数少, 讲课时切换少, 减少学生对堂课的主题的理解偏差, 提高课堂效率和效果。

第六, 以问题驱动课堂。

在教学中将问题有目的、有组织地提出, 启发、引导学生的思维方向, 迫使学生动脑思考解决办法, 使他们逐渐习惯以专业的思维思考问题和解决问题。

第七, 作业内容要慎重。

作业在上课前先布置, 让学生带着问题去学习, 让学生去完成作业不是目的, 也不是完成教学环节的任务。作业内容要考究, 一定要留那种教材能够看到影子, 可又看不到全部面目的题材, 要迫使学生去图书馆或者到互联网上查阅资料, 要求必须在作业上体现出查阅资料的特征。这样可以减少作业的抄袭, 促进学生学习能力的提高。作业的公开演示, 防止学生的抄袭。创建一学习的网络 (创建一学习的网站, 教学的视频, 作品的实例) 。

学生先预习, 找出不懂的问题, 听完讲解后, 在询问老师或同学, 事先准备好教学的案例 (以案例应用突出教学重点与难点, 案例要实用简单难度适中) , 教师自己编写一些项目, 在教学前给学生演示, 只给项目的基本框架内容, 要求学生在基本框架里进行修改或是创新, 根据布置的作业可把学生分成3-5人一组完成项目。

第八, 掌控实验进程, 实现因材施教。

实验教学中应逐步提高设计类和综合类实验的比例, 以“任务”和“课题”的形式提出实验要求和具体的实验成果, 事先没有参考答案可供借鉴, 要求学生通过阅读教材和相关资料, 掌握实验所涉及到的知识, 通过综合利用这些知识来设计、开发并最终完成实验项目。

第九, 让学生做好笔记。

教学重点内容要做笔记, 我们的生源情况, 大多学生的记忆能力较差, 五年制的学生更加要求做笔记, 不要让学生把重点内容写在课本里, 最好是拿一本专门学习的笔记本。

第十, 教师与学生的互动体现。

教师采取的做法应该是鼓励表达观点的, 而不论你支持哪种观点, 施压于无观点的学生。促使学生思考问题, 培养学生求真到底的科学精神。通过这样的方式, 师生之间确立了良好的学术关系, 也会使学生相信这个老师有着严肃的做人做事原则, 学生就会对老师逐渐地建立信任感, 进而愿意学习老师教授的知识。

第十一, 培养学生的自学能力。

计算机是一个发展, 每隔一段时间就会推出新的概念与新的面向对象程序设计的产品, 我们学校所教的面向对象程序设计课程的内容也应跟上计算机的发展。

第十二, 科学设置课程设计, 提高应用能力。

课程设计为学生提供一个既动手又动脑的独立实践机会, 使学生将课本上的理论知识和实际有机地结合起来。根据我们的生源情况, 最好是把这门课程开设为两学期, 第一学期为基础内容, 第二学期为项目的开发与提高。课程的安排最好不要一天连上四节, 让学生有时间消化内容。

第十三, 题目难度适中。

由于教学目标和设计时间的限制, 题目规模要保持在300—500行手工代码能够解决的范围内, 难度要稍偏低, 使学生能够有思路解决问题, 能够在规定的时间内完成代码编制、输入、调试和形成相关文档, 树立学生独立开发项目的信心。

在今后的教学中不断改进教学方法, 总结教学经验, 找出一套更适合我们高职高专院校, 《面向对象程序设计》课程最佳教学方法与教学效果。提高我们高职高专院校学生的计算机专业应用人才的知识架构和较强应用能力, 让学生用面向对象的程序设计语言编程来解决具体问题。

摘要:在几年的《面向对象程序设计》课程教学过程中存在着一些问题, 本文对这些教学问题提出解决了方法与对策, 找出一套更适合我们高职高专院校的《面向对象程序设计》课程最佳教学方法, 提高我们高职高专院校学生的计算机专业应用人才的知识架构和较强应用能力。

关键词:面向对象程序,课程改革,任务驱动,项目

参考文献

[1]靳广斌.Visual Basic2005程序设计案例教程.北京大学出版社, 2009.

[2]孔长征.VB.NET编程实例教程.北京希望电子出版社, 2002.

[3]蒋明亮.面向对象程序设计课程实践教学改革研究[J].教学园地.2009, 1.

面向对象程序 篇8

面向对象程序设计课程是计算机科学与技术专业的专业课, 理论性和操作性较强。教授学生基础的编程理论以及面向对象的编程方法, 通过本课程的学习, 可以有效的培养学生的编程逻辑思维能力和动手编程的能力, 并可以帮助学生提高编程中必备的合作能力。

该课程在教学中存在以下问题, 首先, 课程学时较少, 但需要教授的知识点较多, 有些语法较为复杂, 学生很难在有限的时间内很好的掌握;对学生只能做到基本理论知识的教授, 而很难再进一步, 让学生理解的更为透彻。其次, 在教学方法上, 基本都以小程序为例去讲解一些主要的理论知识点, 帮助学生理解。但学生的主观能动性无法很好的激发, 导致离开例子, 学生无法很好的编写程序, 或者无参考情况下, 无法独立完成基本程序的编写。

针对面向对象课程教学问题中存在的问题, 国内许多教学工作人员对该课程如何达到更好地教学效果, 培养实践能力和编程能力强的学生进行了研究。范振钧[1]提出了基于任务驱动的教学方法, 以解决问题为导向, 协助学生完成程序的编写, 在编写程序的过程中掌握知识。李玉梅[2]将案例驱动教学、多媒体教学、研究型学习三种方法结合起来, 试图提高学生学习的兴趣, 培养学生编程的逻辑思维能力, 加强学生的动手能力, 试图提高学生的整体水平。张焕生[3]提出了面向对象程序设计教学中理论教学、时间教学在方式、内容和考核方式等方面进行改革的相关措施, 以提高教学质量, 培养合格人才。

以上提出的教学改革方法中主要侧重于教师教学方法的改变, 以及考试改革, 但是对于面向对象程序设计这样一门对理论性和实践性要求都较高的课程来说, 如果不充分调动学生课下的学习积极性, 很难取得良好的教学效果。如何调动学生对该课程的学习积极性, 不要从一开始就掉队, 直接产生对课程的“讨厌感”非常重要。

因此, 除了对教学方式提出一些必要的教学改进之外, 主要是调动学生的学习积极性, 首先给学生提供有一个宽松的学习环境, 进行由浅入深, 由易到难, 由慢到快的循序渐进式的学习, 保证学生在学习课程的过程中不掉队;其次, 通过解决实际问题、课后开放趣味性实践作业、网络幕课讲解课堂知识点等方法提高学生对该课程的兴趣, 加强学生通过编程解决实际问题的成就感以全面提高教学质量。

2. 教学方法

针对该门课程存在的问题, 提出了四化教学方法, 通过教学内容“例题化”增加了学生的感性认识, 增强了学生面对问题求解的信心, 以便加深对知识的理解;通过教学形式“多样化”提高学生编程能力、逻辑编程思想;通过教学策略“分层化”帮助学生不断加深对面向对象程序设计的认识和理解, 循序渐进提高编程能力;通过教学过程的“阶段化”培养学生一步一步独立编程及团队合作编程的能力。最终希望学生通过上述方法的学习, 可以较好的掌握面向对象编程的方式, 方法, 具有较好的动手编程能力和团队合作能力。

(1) 内容例题化, 教学内容的设计必须以实例求解为主线索, 且实例必须贴近生活中可能需要解决的事情, 体现分析、设计能力的培养。针对书中每个重要的理论只是, 选择合适的编程题目, 从简单到复杂的传授给学生, 拿到问题, 如何分析, 如何设计, 以及如何编程解决的能力。以此提高学生抽象问题, 解决问题的能力。具体内容要从“实例”引导人手, 将枯燥的概念和公式融入到形象的比喻中, 加大学生学习程序设计的兴趣, 并促进学生的理解和记忆。

(2) 形式多样化, 选择合适的时间点, 通过验证式教学和课题式教学的结合使用加深或强化学生对课堂理论知识的掌握。理论知识较难掌握, 往往上课的时候觉得已经掌握的知识点, 过一段时间又模糊了, 必须及时和反复的巩固和加深学生对课堂所学理论知识的理解, 项目采用递进式的层次验证方法帮助学生加深对课堂所学知识的理解和使用。验证式教学通过单个实验项目, 了解学生对单一知识点理论掌握和使用情况, 考查学生调试、测试程序能力。课题式教学在验证式教学很好完成的基础上, 提出较为复杂的问题, 涵盖若干个相关知识点, 学生根据自己的兴趣爱好确定一个课题进行课题设计, 通过查找相关资料, 提出研究课题, 写出实施计划, 程序实现流程, 考查学生在掌握从过程编程方法到面向对象编程方法的转换能力和现实问题的抽象, 分析, 解决问题能力。

(3) 策略分层化, 课程知识点较多, 难度不一致, 并且学生基础也不一致, 为了兼顾所有学生, 必须采用分层化的教学方法, 按基础, 综合, 实用三个层次, 逐渐递进的引导学生完成具体的教学内容。基础部分可以照顾编程基础较差的学生, 使之不至于从开始就掉队。实用部分主要偏向基础好, 且对编程兴趣较大的学生, 提高这部分学生的编程水平。同时, 借助于网络幕课的使用, 加深学生对关键知识点的理解, 通过互动和知识点实时测试, 提高学生学习该课程理论知识的兴趣。

(4) 过程阶段化, 面向对象程序设计课程课堂学时有限, 只有利用课内课外相结合的方式才能保证较好的教学效果。因此, 课前预习, 课程中根据在预习过程中碰到的难点听课, 及课后的实践, 成为学习本课程必不可少的三个阶段。希望可以通过这三个阶段, 调动学生学习本课程的积极性, 培养学生独立编程能力和团队合作意识。

3. 总结

通过四化教学法, 从两方面保证课程的改革质量, 一是提高学生对面向对象程序设计课程的学习兴趣, 二是结合网络幕课, 选择更为科学的教学教授方法。在保证学生掌握课程理论知识点的基础上, 通过验证式教学加深和巩固学生对理论知识点的掌握, 和基础的编程能力。提高学生的综合素质和竞争能力。通过本文的研究, 为面向对象程序设计课程提供理论基础, 对培养学生程序设计和编写能力提供一定的保证;为其他类似课程的教学模式研究提供参考。

摘要:传统的面向对象程序设计语言课程教学存在内容抽象, 学生水平不一及教学模式单一等问题, 本文提出了一系列的课程教学方法, 包括教学内容“例题化”、教学策略“分层化”、教学形式“多样化”、教学过程“阶段化”的教学方法, 通过教学方法的改变, 帮助学生更好更快的掌握面向对象编程的方法。

关键词:面向对象程序设计,教学方法,网络慕课

参考文献

[1]范振钧, 王建秋.面向对象程序设计课程教学改革探析, 通化师范学院院报, 2011.4.

[2]李玉梅.课程教学改革的研究与实践, 教学与改革, 2012.6

面向对象程序 篇9

1 两种理论内容概述

阴阳即是对自然界相互关联的某些事物和现象对立双方属性的概括。它的主要内容包括:阴阳对立统一、阴阳互根互用、阴阳消长平衡、阴阳相互转化。

面向对象编程技术是把“数据”和“处理数据的过程”抽象成一个具有某些属性和特定功能的自包含实体——对象。其中, “数据”可以看作是描述对象的静态特征, 用来解决“该对象有什么?”的问题;“处理数据的过程”可以看作是描述对象的动态特征, 用来解决“该对象能够做什么?”的问题。对象的本质是将任一事物的静态特性 (阴) 和动态特性 (阳) 封装成一个独立的整体, 这与《老子》中“万物负阴而抱阳”、《易经》中“一阴一阳之谓道”不谋而合。

面向对象编程技术具有封装性、继承性和多态性这三个重要的特征, 结合阴阳理论, 对两者之间的关系进行探讨, 更容易使读者理解面向对象程序设计。

2 封装性与阴阳理论

面向对象技术的封装性能够有效保护对象内部的属性或数据 (阴) , 但同时它也提供了方法或函数 (阳) 来操作内部的属性或数据 (阴) 。对象CPerson的属性包括:Name和Age。这两个属性表示该对象的两个静态特征, 这一点类似于阴阳理论中的“阴”。对象CPerson含有四个函数:Get Name () 、Get Age () 、Set Name () 、Set Age () 。这四个函数代表该对象的四个动态特征, 用来实现四个具体的功能, 分别完成对上述两个属性的读、写操作, 这一点类似于阴阳理论中的“阳”。“阴在内阳之守也, 阳在外, 阴之使也”, 私有封装的Age属性只能在CPerson的内部通过Get Age () 和Set Age () 进行读、写操作。

对象与对象之间的交互正是通过对象的函数 (阳) 来实现的。正是这种阴阳互动的封装方式, 构成了面向对象编程技术的基本单位—对象。这与阴阳理论“阴者藏精而起函也, 阳者卫外而为固也”相益成彰。

3 继承性与阴阳理论

《道德经》曰:“道生一, 一生二, 二生三, 三生万物。万物负阴而抱阳, 冲气以为和”。阴阳理论强调万物皆含有“阴阳”, “阴”与“阳”之间的互动, 构成了稳定、平衡的局面。

在面向对象程序设计里, 继承性体现了阴阳理论的这种“构成论”。派生类通过继承得到了父类的一切—父类中的数据 (阴) 和函数 (阳) 。如果在祖先类定义好数据 (阴) 和函数 (阳) , 那么从这个祖先类派生出去的所有子类都将含有数据 (阴) 和函数 (阳) 。CPerson类中, 含有阴 (Name和Age属性) 和阳 (Get Name () 、Get Age () 、Set Name () 、Set Age () 四个函数) 两大部分, 通过派生得到CChina、CUsa和CJapan三个子类, 在这所有的派生类中, 都继承了CPerson的阴、阳两部分的内容, 即使这三个派生类再派生其它子类, 依然会继承CPerson的阴、阳两部分的内容, 正所谓“万物负阴而抱阳, 冲气以为和”, 面向对象编程中这种阴、阳互动的内部工作方式构成了它强大的生命力。

4 多态性抽象类与阴阳理论

面向对象程序设计的多态性中出现的抽象类, 因其定义的某些函数 (阳) 是纯虚函数, 没有具体的代码, 实现不了常规的操作 (缺失“阳”的功能) , 这种抽象类 (含有“阴”却无功能性的“阳”) 不能够生成对象, 正符合“孤阴不生”之道。在抽象类中, 接口类是一种典型的没有数据 (阴) 的抽象类, 它只含有纯虚函数 (无功能性的“阳”) , 从上面分析可知, 该类型也是不能够实例化对象的, 正所谓“独阳不长”。

《易经》中有“天地氤氲, 万物化醇, 男女构精, 万物化生”, 在古籍《雪心赋》中更有“孤阴不生, 独阳不长”的名句[6]。句中的“天地”、“男女”更抽象一步可理解为“阴阳”, 两句都强调“阴阳”在万物的构成中相互依存的对立统一性。

5 总结

面向对象程序设计是近三十年来计算机领域内主流的编程技术, 究其流行的原因, 除了该技术更符合软件行业发展规律之外, 其本质的原因是相较于其它编程语言, 它更“遵循”阴阳理论。《皇帝内经》中有“从阴阳则生, 逆之则死”!正是“对象”这种程序体具有完整的“阴阳”这一特性, 才使得“对象”在计算机程序内成为一个个完整、独立的基本功能单位, 使它更趋向于人的认知模式, 方便编程人员解决实际问题。

了解面向对象编程与阴阳理论之间的联系, 能够更好的促进该技术的发展。利用阴阳理论指导面向对象编程思想进一步发展, 启示它向更深层次演化。阴阳相互转化原理、阴阳消长平衡原理对于面向对象编程技术的转化机制具有现实的指导意义。

摘要:研究了阴阳理论与计算机面向对象程序设计之间的联系。通过对面向对象程序设计的封装性、继承性和多态性的分析, 揭示了计算机面向对象程序设计符合阴阳理论的对立统一、互根互用的原理。

关键词:阴阳理论,面向对象程序设计,对立统一

参考文献

[1]曾仕强.易经的奥秘[M].陕西:陕西师范大学出版社, 2009.

[2]傅佩荣.易经与人生[M].上海:上海三联书店, 2009.

[3]刘慧宁, 孟威等.C++程序设计[M].北京:机械工业出版社, 2011.

[4]高红雨, 廖湖声.面向对象程序设计语言的分析[J].计算机工程, 2012, 09 (53) :98-101.

[5]中国易学文化研究院.易经导读[M].九州出版社, 2012.

面向对象程序 篇10

关键词:面向对象程序设计,逆向循环教学法,ISAS教学法,实践教学

《C#面向对象程序设计》是高职软件专业的专业核心课程, 是培养基于.NET技术程序员的主干课程。这门课程的主要任务是使学生掌握C#语言基本语法知识, 了解.NET平台基本结构, 同时学习面向对象编程的基础理论知识。除了详细的基础理论讲解, 还通过丰富的案例开发实践, 使学生初步具备综合应用面向对象理论知识从事应用软件开发的能力, 并具备一定的项目开发的专业技能和基本素质。该课程是一个理论和实践性都很强的综合应用课程, 是学习.NET平台技术其它课程的基础。

1 课程的主要内容

课程的主要内容包括.NET体系结构、C#基础语法、面向对象基础 (主要讲解面向对象基本特征及其实现技术) 、面向对象高级技术 (主要包括委托、事件、接口、多线程等) 、IO技术、异常处理技术、数据库访问技术、网络编程基础等。

2 课程教学中存在的问题

2.1 课程涉及知识面广而深, 课时不足

对于高职层面的学生, 该课程除.NET体系结构、C#基础语法外, 课程内容都具有一定难度。尤其面向对象理论知识从思维方式上颠覆了以往结构化程序设计的基础, 因此在教学过程中存在较普遍的厌学现象, 很多学生缺乏学习兴趣, 学习效果不太理想。另外, 该课程采用的是周4课时设置, 一周4个课时, 一学期76课时的时间, 从教学内容的广度和深度来看都显得太少。

2.2 学生在学习中知识遗忘率高

在教学过程中发现学生对所学知识记忆不清, 对有些东西似曾相识但就是想不起来。C#理论知识点很多, 同时, 要能熟练运用还要记忆很多“类”, 搞清楚理论已经不容易, 要记清楚那么多“类”更是困难。

2.3 实践教学方法需要创新

该课程是一门实践性很强的课程, 即使是理论性很强的面向对象基础部分都需要大量的实践做支撑。因此, 实践教学在该课程中的地位非常突出, 目前主要采用1:1比例, 即每周两课时理论课, 两课时实践课。但是, 即使做到了理论和实践课时1:1, 实践课时量仍显不足。首先, 前面已经提到该课程总课时量已经不足, 其次, 像这样一门需要大量实践支撑理论学习的课程, 仅靠课堂进行实践远远不够。

2.4 教学内容与最新技术同步

这是一个普遍存在的问题。由于软件技术发展非常快, 编程技术更新速度也非常快。C#从出现到现在已经经历多个版本, 每个新版本都会引入很多非常好的技术。但是, 纵观现在市面上多数高职的教材, 课程内容基本是最初出现时的东西, 很多新的好的东西没有涉及。也许这里考虑的是高职的层次以及仅仅是入门的情况, 但如何把新的好的技术尽快融入到教学中, 对提高学生能力, 使学生早日成为市场急需人才非常重要。

2.5 注重知识的灌输忽略能力培养

在教学过程中, 注重理论知识的灌输, 对于学生的动手能力培养不足。虽然有50%的课时用于实践练习, 但一般都是针对上次理论课所学知识的实践。这样的实践课过于片面, 研究者仅仅只是希望通过实践课程加深学生对理论知识的理解。但是, 编程是一门综合性和工程性非常强的课程, 一个知识点需要与多个其他知识点结合才真正体现它的价值, 另外, 大部分编程知识只有真正在工程实践中进行反复应用才能理解其真实价值。

3 有效教学方法与实践

改进教学方法和教学手段是改善上述问题的主要途径, 在多年教学实践中研究者进行了许多有益尝试。

3.1 兴趣是先导

教育心理学指出兴趣是人对客观事物的选择性态度, 表现为人力求认识和获得某种事物并力求参与相应活动。兴趣是通过情绪反应来影响一个人的行为积极性, 凡是从事自己感兴趣的学习和工作, 人就会觉得心情舒畅和愉快, 效率也就高;相反, 如果从事自己不感兴趣的事, 则可能心理动力不足, 缺乏激情, 效率也就低。由此可见, 在教学中培养学生的学习兴趣的重要性。通过成立课余兴趣小组、项目工作室、组织学生参加各种竞赛、请业界专家讲座等各种方法, 调动学生主观积极性, 努力提高学生学习兴趣。

3.2 合理运用多种教学方法

(1) 逆向循环教学法。

采用逆向循环教学法作为主要教学模型。传统教学是以课堂为中心, 教师为主体, 教学方法一般是先理论后实验实习, 这种以课堂为中心的教学不利于学生主体地位的落实和学习积极性的调动, 不利于学生主体活泼地健康发展。面向对象大师Betrand Mayer从软件认知规律出发, 提出了逆向教学的思想, 这种教学法与传统的程序设计课程的教授次序完全相反。传统的次序是自下而上的:从程序的建造单元开始, 例如变量与赋值, 接着是控制语句和数据结构, 再进入模块设计与构造大程序的技术。Meyer认为, 这种途径能让学生对程序的基本元素有一个很好的实际理解。但是它并非总是能教授系统建造的概念, 而这点是一个软件工程师要想在专业上成功所必须掌握的。

逆向教学的原则是:学生先作为用户来使用一些工具或部件来建造他们自己的应用系统, 然后逐步揭开这些工具或部件的面纱看看它们是怎么做的, 并改一改, 做一些扩展。Meyer指出, 这样这并非就忽略了讲授标准的低层的概念和技能, 因为最后学生需要能掌握一个程序所需要的所有东西, 从大画面到小细节。不同的是概念的顺序, 特别是对架构技能的强调, 是在自底而上的大纲中常被忽略的。

逆向教学法要求选择一个功能和规模都足够大的软件项目, 包括了分析、设计与实现这些方面。并且, 它应该包括复用、理解、学习、修改和运行已存在的软件。这样一个新班可以接手老班的结果并加以发展、改进。

图1是传统教学方法与逆向教学法的比较。

通过对逆向教学法的深入研究, 提出了自己的逆向教学方法模型, 加入了循环概念, 形成了具有自身特色的逆向循环教学方法模型。

(2) ISAS教学法。

逆向循环教学法作为主要教学模型, 主要用于课堂教学。为弥补课堂学时不足, 同时调动学生主观能动性, 引入ISAS教学法作为辅助。ISAS是Information Search and Analysis Skills的缩写, 即信息检索与分析技能, ISAS的教学过程是“学习→实践→提高”的过程, 以任务驱动教学, 先提出课程相关的实际问题, 将学生分组, 然后以团队的形式去寻求解决方案。ISAS具体教学过程大致分六个阶段:选题→分组→搜索信息→分析信息→演讲→答辩→评分。通过ISAS教学使学生具有以下能力:搜索和获取信息的能力、分析和解决问题的能力、团队协作能力、自主学习能力、语言表达能力、沟通交际能力、文档综合能力。

选择因课堂学时不足不会讲解但又非常重要的内容, 作为任务布置给学生自主组合的学习小组, 要求学生在规定时间内完成信息检索、自学, 并组织各小组对自学收获进行宣讲, 对优胜者给予奖励。这种方法可以极大提高学生自主学习积极性, 同时对培养学生综合能力很有帮助。

(3) 项目工作室。

程序设计是实践性非常强的课程, 课堂上的实践只是为了检验学生对当堂课内容掌握情况, 希望学生能综合利用所学解决实际问题仅靠课堂这点实践远远不够。专业教师在课外开设项目工作室, 引入实际软件项目, 组织有兴趣的学生进行开发, 这样可以极大提高学生参与积极性, 同时对提高学生利用所学知识分析和解决问题的能力作用极大。另外, 项目工作室的学生作品是可以传承的, 上届学生的作品可以传给下届, 这样可以让后来者学习往届生的技术和经验, 不断加深对所学知识的理解。

3.3 多种教辅手段并用提升教学效果

教学过程中采用多种教学手段并举, 以提高学生学习兴趣。

(1) 电化教学。

利用各种计算机及辅助设备进行教学, 包括大型投影仪、计算机、麦克风以及多媒体教学软件, 教师将所有授课内容都制作成多媒体课件。通过多媒体教学软件教师可以控制学生机进行屏幕广播、文件发放和接收, 及时了解学生的学习情况与动态。

(2) 开展课外知识竞赛活动。

通过形式多样、丰富多彩的学生竞赛活动, 促进学生主动学习课程有关知识, 加深学生对知识的理解和掌握, 提高学生的学习兴趣。

(3) 引入慕课课程。

给学生介绍优秀的慕课网站, 鼓励学生自主学习。

(4) 利用公共资源平台建立课程资源。

在公共资源平台 (如世界大学城) 上建立课程资源网站, 为学生学习提供丰富资源。

4 结语

21世纪需要高素质人才, 这对高职教育提出更高要求。因此, 要转变“以教师为中心、以课堂为中心、以书嘣为中心”的落伍观念, 树立“以教育为主线, 以学生为主体, 以实践为手段、以信息化为依靠”新型教学观, 充分调动每一位学生的主观能动性, 激发学生潜能, 为社会培养德才兼备的人才。

参考文献

[1]张良, 周长胜.实验教学在计算机基础教学中的改革与实践[J].高教论坛, 2008 (3) :88-89.

[2]王世安.基于工作过程的高职项目课程考核方法研究[J].职业教育研究, 2011 (4) :161-162.

面向对象软件测试方法研究 篇11

关键词:软件测试;面向对象;类测试

中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2013) 24-0000-01

面向对象软件测试技术是针对使用面向对象技术开发的软件而提出的一种测试技术。面向对象开发技术和传统开发技术相比有新的特点,使用面向对象技术开发的程序具有高质量、高效率、易扩展、易维护等优点,这也给它的测试技术带来新的挑战。面向对象软件测试与传统的软件测试相比,由于面向对象技术开发的软件会出现传统软件技术中不存在或者不突出的错误,使得传统的软件测试中次要方面成为了现在的主要问题,影响了软件测试的方法和内容,增加了软件测试的难度。

一、软件测试

(一)软件测试

软件测试是使用人工操作或者利用测试工具按照测试方案和流程对软件产品进行功能和性能方面的评估,检验软件产品是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

(二)面向对象对软件测试的影响

面向对象软件具有抽象性、封装性、继承性和多态性等特点,这些特点对软件测试产生了不同的影响。面向对象程序中子类可以继承父类的功能,父类进行了充分测试后,子类也要设计相应的测试用例进行充分测试,对子类进行测试时不仅要测试子类中的方法,还要重新测试与子类中重定义方法相关的类。面向对象软件测试时,对象的状态通常是信息隐蔽的,测试人员需要在测试类中添加适当的信息来表明对象的实现方法及其内部状态。对于面向对象软件的多态性形成的动态绑定的测试使用传统的静态分析策略是不合适的,需要使用动态的测试标准来解决这个问题。

二、面向对象软件测试方法

面向对象软件测试方法是从传统的软件测试方法中演化而来的,有与传统的软件测试相类似之处,但由于面向对象的软件开发具有继承性和多态性等特点,为了支持和加强数据隐藏的特性,面向对象的软件测试必须向一个类的接口添加操作,所以说面向对象的软件测试方法更复杂一些。

(一)面向对象软件单元测试

面向对象软件单元测试主要是类测试,包括方法测试和对象测试。类是面向对象程序设计的基本单位,对象是类的具体实例,类测试是来验证类的实现和类的说明是否完全一致,如果类的实现是正确的,那么类的每一个具体实例的行为也将是正确的。

面向对象的类测试首先要确定测试方法,通常可以通过代码检查和执行测试用例两种方法来测试类的代码。代码检查方法容易受人为错误的影响,在代码量很大的情况下也会加大它的工作量,而编写一个好的测试用例需要很丰富的经验和较高的技巧。通过类实现的功能来分析所要编写的测试用例,然后根据类的边界值来扩充测试用例。构建测试用例一般是基于前置条件或后置条件,为所有可能出现的情况及情况的组合确定测试用例的需求,在这些可能出现的情况组合下,根据这些需求来构建测试用例,而且还要针对实际情况创建特定输入值的测试用例,并确定它们的正确输出。

测试驱动程序是一个运行测试用例并能够收集运行结果的程序。在面向对象的软件测试中,设计核心类的测试驱动程序十分重要,要求该程序必须思路严谨、结构简单清晰并易于维护。当确定了类的可执行测试用例,测试驱动程序就要创建类的实例来运行该测试用例,并给出测试用例运行的测试结果。

(二)面向对象软件集成测试

面向对象软件集成测试主要是类簇测试。面向对象软件是由若干对象组成的,这些对象互相协调合作来实现软件的功能,在面向对象的软件开发中,对象间的相互协调即对象的交互对于程序的正确性来说是非常重要的,对象的交互方式决定了程序能做什么,从而也就决定了程序是否正确。对象的交互测试是在对类的单独测试的基础上实现的,它来确保对象之间相互传递消息的正确性,它一般执行测试的是嵌入到应用程序中的交互对象。

在面向对象的软件测试当中,除了要考虑对象交互特征面之外,还需要具体的测试技术去实现测试的要求,目前常用的面向对象软件集成测试的方法有抽样测试和正交阵列测试。抽样测试提供了一种运算法则,不需要首先明确测试用例的总体,从一组可能的测试用例中选择测试序列;正交阵列测试是一种特殊的抽样方法,它通过定义一组交互对象的配对方式组合来进行测试,同时要尽量限制测试组合的配置数目,正交阵列测试系统就是挑选某个样本的特定测试技术。

(三)面向对象软件系统测试

在对面向对象软件进行系统测试时,要保证被测系统的完整性,搭建与真实用户实际使用环境相同的测试平台,并且需要参考面向对象分析的结果,对软件的架构进行验证,确保软件可以完全再现问题空间以及完整实现用户需求。系统测试不仅是要检测软件的整体功能行为表现,也是对软件设计开发的再确认,它针对的是非功能需求的测试,包括功能需求以外的所有需求以及注意事项等。系统测试是针对完整软件产品的测试,包括软件、软件运行所依赖的硬件、外设、数据、支撑软件及接口等,确保开发的软件与其依赖的各种资源能够协调运行,形成完整的软件产品。系统测试是软件测试过程中非常重要的阶段,它对测试技术的要求也是最高的。在进行面向对象软件的系统测试时,测试技术人员需要与软件的用户进行交流,根据用户提出的需求给出系统的修改建议,结合用户需求对被测试软件进行测试分析,根据分析结果建立测试用例。

三、结束语

面向对象的软件测试技术是面向对象软件开发中的重要组成部分,本文从面向对象软件的特点出发,分析了面向对象软件测试对传统软件测试的影响,介绍了面向对象软件测试的方法。

参考文献:

[1]王艳丽.面向对象软件簇级测试用例自动生成方法研究与实现[D].长春工业大学,2011.

面向对象程序 篇12

一、教学过程中存在的主要问题

(1) 学生基础知识掌握不牢固。《面向对象程序设计》课程内容需要用到程序设计中数组、函数、动态内存分配等知识点。部分学生在学习面向过程程序设计时没掌握好这些知识点。进而对构造函数、析构函数、面向对象多态性等内容理解存在困难。另外, 部分学生动手能力较差。上机碰到程序语法错误或逻辑错误, 不知道如何进行调试, 长久之后对课程的学习失去了信心。

(2) 学生难理解面向对象程序设计思想及相关概念。面向对象程序设计强调在大型软件开发过程中如何管理数据、函数, 实现数据封装、代码重用、函数多态性等功能。由于学生缺乏大型软件开发经验, 对面向过程程序设计在大型软件开发中产生的大量数据不好管理、程序难以维护及扩充等问题认识不足。

(3) 理论概念偏多, 学生学习积极性不高。面向对象程序设计强调思想理念, 理论性较强, 不像网页、动画制作那样生动具体。学生感觉面向对象程序设计不过是一些理论和代码的堆砌, 觉得课程内容枯燥难懂, 学习积极性不高。

二、教学方法探讨

(1) 适当采用案例教学。案例教学法是在计算机课程教学中非常有用的一种教学方法。对课程中的某些内容, 精选一些合适的有趣的实例, 先让学生对所学知识有一个感性的认识, 进而提高学生的学习兴趣。首先展示给学生看, 让学生对所学内容有一个直观的认识, 激发他们的好奇心和求知欲。然后通过分析实例的组成和实现方法, 进而引出该实例中用到的知识点, 再举一反三, 进一步讨论、归纳, 对实例进行完善和扩展, 最后达到学生对知识的快速掌握和使用。

(2) 采用分层次教学法, 在每次课的课堂教学过程中, 采用“现实抽象、创建模型、实战演习, 总结提高”模式, 实现分层次教学。

我们发现学生编程能力有较大差异, 我们设计主题作业以锻炼学生动手能力, 鼓励学生积极编写实用程序为目的, 同时激发他们钻研问题的兴趣。实训项目按难度设置成难度高、中和低三个等级, 以适合不同阶段层次的同学的主动参与。

(3) 拓展创新式教学法。面向对象程序设计有很多种竞赛或职业认证, 可以组成课外创新工作室或学习小组, 聘请有经验的老师作为技能指导, 组织学生考取相关IT证书和参加各类大赛, 积极拓展第二课堂, 以培养学生研究性和创新性学习能力。对于学习兴趣高、成绩良好, 善于思考的同学, 积极引导他们参加到创新小组中, 在教师指导下, 跟踪面向对象程序设计新技术发展动态, 选择自己感兴趣的方面进行深入研究。这样能够积极培养学生研究性和创新性学习能力, 也可以带动其他学生的学习积极性和主动参与性。

三、结束语

本文研究目标旨在改革现有的面向对象程序设计课程教学内容与模式, 总结教学经验, 找出一套适合高职高专院校, 《面向对象程序设计》课程最佳教学方法与教学效果。以培养高素质的创新型人才为出发点, 切实提高学生的思考能力和动手实践能力。

参考文献

[1]孙玉红.案例教学法在“面向对象程序设计”课程中的运用[J].电脑知识与技术.2011, 07

[2]蒋明亮.面向对象程序设计课程实践教学改革研究[J].教学园地.2009, l

上一篇:《梦幻西游》下一篇:锌铁合金