面向对象程序设计心得体会(共15篇)(共15篇)
1.面向对象程序设计心得体会 篇一
面向对象课程学习心得
这学期的面向对象课程对我来说是收获匪浅的一门课。通过老师课件的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。
面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复用、可扩展、可维护性、弹性。
OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。
面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。
在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。
访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象中的。
为遍历不同的聚合结构提供一个统一的接口。根据实现方式的不同,效果上会有差别。同时还简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
在Java Collection的应用中,提供的具体迭代器角色是定义在容器角色中的内部类。这样便保护了容器的封装。但是同时容器也提供了遍历算法接口,你可以扩展自己的迭代器。至于迭代器模式的使用。客户程序要先得到具体容器角色,然后再通过具体容器角色得到具体迭代器角色。这样便可以使用具体迭代器角色来遍历容器了。
OOA和OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生鸿沟,这是相对结构化思想的好处,因为从功能模块到某块详细控制逻辑设计两者之间的联系不是十分紧密,需要分析人员与设计人员的再沟通。
通过课程的学习与实践,对面向对象的理念,以及相关方法,设计模式有了更为深刻的理解与掌握。针对面向对象的分析与设计课程的授课内容及方法,我个人觉得对我还是有不少的帮助和 提高。结合自己的工作,虽然与开发接触的比较少,但是在运维过程中,如果能了解开发原理,结合实际的工作,会对一些源代码的分析能力以及工作效率的提高起到明显的帮助作用。
2.面向对象程序设计心得体会 篇二
面向对象程序设计 (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
3.面向对象数据库系统设计 篇三
关键词:面向对象;数据库;系统设计
一、数据查询(OQL)
作为数据库,最重要的估计是数据查询了,面向对象数据同样如此。在这里,我设计了以下查询语法:get(…)if(…),其中get里面是要查询的类,类的属性等,相当于SQL里面的select … where …。比如有类A,A中有一个属性a(数字型,关于类型后面会说)。则获取所有A类实例中所有a的值小于0的实例集合的查询语句是:get(A)if(A.a<0);
执行该语句应该要返回所有类A实例中所有a小于0的实例集合。具体使用方法如下:
(一)单类查询
即在一个类中进行查询。如:get(A)if(A.a<0);就返回是所有类A实例中所有a小于0的实例集合。而不带条件的查询是get(A);这将返回类A的所有实例。
(二)多类查询
如:get(A,B);将返回类A和类B的所有实例的数据。
(三)方法查询(暂不实现)
(四)表达式计算
如:get(3+3);返回的将是6。
(五)复杂查询
如:get(A.a+B.b,C,C.a/A.a)if(A.a
二、数据操作(OML)
(1)插入数据:new 类名(构造函数参数列表);这样即生成了一个实例(即插入一个实例)。举例如下:
Test t = new Test(1,2,3);//假如类Test的构造参数是三个数字类型的参数。
(2)更新数据:直接调用该类实例的引用的属性复制即可实现更新。举例如下:
t.a = 3;//假如类Test有个公有成员a且是数字型的。
可以有更复杂的、有逻辑的更新,如:if(Test.a>3){Test.a = 1;//将所有符合条件的Test类的实例的a字段复制为1,是集合操作。}
又如:while(t.a>0){Test.a——;//只要实例t的字段a的值还大于0,则所有Test的实例的值继续减一。}
(3)删除数据:free(类名)if(删除条件表达式)。如果没有if,则删除此类的所有实例。free(Test)if(Test.a>0);这将删除类Test的实例t。
(4)数据定义(ODL)
定义语言包括类的定义和对象的定义。语法模仿的Java的语法。具体如下:
定义类:
class :定义类,语法如下:class 类名{
属性定义:其中包括变量权限声明,值定义,类型声明,目前仅支持三种类型,字符串型,数字型和 比特型。
方法定义:方法定义,跟Java类似,但目前仅留接口,不做实现。}
下面是一个实例:
class Test{private num a;//数字型;public str b;//字符串型;protected byte c;//比特型,变长比特型,用来存储大容量数据;public void testMethod(num a){//方法定义,目前暂不实现a++;this.a = a;}“;//”一定要加 “;”号,否则不能结束。
alter:更新类。语法如下:alter 类名.字段名或者方法名 =
{//字段或者方法的新式描述,如果没有任何信息,则表示删除该字段或者方法};举例如下:
alter Test.a {public num a;//如果不是命名为a,而是b,则将删除a字段,新建b字段。
该语句将把字段a的访问权限从私有变为公有。下面是更新方法:alter Test. testMethod {public void testMethod(num a){//方法更新,目前暂不实现a++;this.a = a——};
drop:删除类。此关键字只有一个语法,即:
drop 类名;如:
drop Test;//即表示删除Test类。
(5)数据控制使用try{//行为}catch(){}的语法形式,用来控制事务。在try块中的行为必须全部执行成功数据库才会更改,相当于事务提交。如果发生异常(即不能全部执行成功),则事务回滚。同时还要执行catch块中的信息。一般说来,catch块中留空则只回滚事务。
参考文献:
[1]邢斌、高荣芳、刘予东,《基于JSP的学生就业管理系统》,福建电脑。2006-9
作者简介:
4.面向对象程序设计实习报告 篇四
实习报告
班级:电子商务
学号:xx
姓名xx
指导教师:
实习时间:2011.12.26-2012.1.6
一、实习目的
经过两个周的面向对象程序设计的实习,让我再次复习了SQL和VB的相关知识,因为自己这这学期的课程中对VB和SQL都有学习。虽然我们的上机课是有限的,但是在这次的实习中让我更加的对自己多掌握的知识做了个很详细的补充。由于两个周基本上都是自己在电脑上亲自操作完成任务,所以我就更加熟悉和掌握其具体应用的方法。当然在这个任务完成的工程中会遇到很多的难题,所以就要靠自己努力不懈的看书弄懂,还有问老师和四周的同学,把不懂的地方尽量通过这几种渠道把它弄懂。在整个实习过程中,我清楚并掌握了SQL Server的集成环境、系统的菜单、工具栏、企业管理器、查询分析器的具体使用方法还有掌握了创建数据库、数据表等的方法,了解并知道数据表的操作命令以及T-SQL命令的使用。在编写代码的时候,我大概了解VB基本命令的使用方法;掌握常用函数、表达式的使用方法,掌握程序控制结构的使用和程序设计,掌握变量的作用范围和自定义函数的使用。以及熟悉了VB与数据库管理系统的连接方法等。这些都是要通过自己的实际操作中慢慢的的熟悉和了解的。我觉得这样的实习不仅让我在这两门重要的编程课中加深自己的知识,同时在以后的工作中能够有更大的用途。
这次的实习,在我自己来看,虽然还存在很多的问题,但是总体的效果还是很好的。老师的逐渐提醒和同学们之间的共同商量,都能够让我受益匪浅。还有还渐渐的掌握了一些小的程序的编程,这让我在vb和sql上有更加深刻的掌握,对我的以后工作还是学习上都是百利无一害的。
二、实验内容
在这次的实习中我完成了SQL SERVER的基本操作,如创建学生情况表等三个表以及录入记录;SQL Server 与程序设计语言连接,从中对之前的三个表的录入信息等; 程序设计语言基本算法中的求素数和自然数对、最大公约数和公倍数问题、百钱百鸡问题等;常用统计算法中的成绩统计和字符统计问题;常用排序方法中的选择排序法和二维数组排序问题;以及加密解密、数值转换问题;矩阵的综合运算;学生管理信息系统、集成界面已经程序封面的设计等问题。但是同时由于知识的不全面也没有完成如冒泡排序法、梵塔问题。
1.创建学生情况表107及数据录入
图 1-1 学生情况表107结构设计
图 1-2 学生情况表107的记录信息
2.创建课程情况表107及数据录入
图 2-1 课程情况表107结构设计
图 2-2 课程情况表107的记录信息
3.创建选课情况表107及数据录入
图 3-1 选课情况表107结构设计
图 3-3 选课情况表107的记录信息
实验二
SQL Server 与程序设计语言连接
图2-1 学生情况表综合查询
图2-1学生情况表记录
图2-2学生情况表网格
图2-3学生情况与选课主从
图2-4课程情况与选课主从
图2-5课程情况表网格
图2-6选课情况表记录
图2-7选课情况表网格
实验三
程序设计语言基本算法
1.求“107到500”以内的所有素数及自然数对。
图3-1 素数及自然数对程序运行界面图
2.计算最大公约数和最小公倍数
图3-2 计算最大公约数和最小公倍数的运行结果图
3.百钱百鸡问题
图3-3 百钱百鸡问题的运行结果图
实验四 常用统计算法
1.成绩统计
图4-1成绩统计的运行结果图 2.字符统计
图4-2 字符统计的运行结果图
实验五
常用排序方法
1.选择法排序
图5-1选择法排序的运行结果图 2.二维数组排序
图5-2 二维数组排序的运行结果图
实验六
加密解密与数制转换
1.数据加密与解密
图6-1 简单数据加密解密的运行结果图 2.数制转换
图6-2数制转换的运行结果图
实验七
矩阵的基本运算
图7-1 矩阵操作的运行结果图
实验八
综合应用
1.数据文件管理
图8-1 学生基本信息管理系统
2.设计程序封面
图8-2 程序封面示意图
3.系统集成界面设计
图8-3集成系统界面
三、实习总结
主要收获:经过两个周的面向对象程序设计实习,让我对与VB和SQL的综合运用能力有了很大的提高和长进。因为我们大部分的时间都是实际操作,这样子的话使我们每个同学都能够很好的将书本知识转化为实践能力,在实践中慢慢的发现自己的不足和知识的欠缺。而在这个过程中,我学到了远远比在书本上学到的东西多得多的能力,比如SQL的基本操作和命令的熟练运用,VB的程序代码的编写以及界面的绘制等等,在这次的实习中我都能够慢慢的掌握并且运用在实际的实习中。这不经让我在这两门课程中从不太了解逐渐一步一步熟悉,许多没掌握的知识也有所消化,很多没注意的细节也有所掌握。尤其是在我在不懂的时候通过查阅资料、询问老师和同学商量的过程中也让我更加的对这次的实习感到万分的高兴,这种宝贵的机会更能调动我们的自己动手的能力,更快的提高我们掌握知识的速度。存在问题:虽然说这次的实习我学到了很多的知识和丰富的经验,但是我在实习中是存在许多问题没有解决。比如:
一、在VB方面,对于难一点的程序设计,它的程序代码编写我还是觉得写起来很困难,这样的话对于我的程序的运行上面就会出现很多次的小问题导致不能正常运行,还是没有很好的学习到更加深层次的复杂性的程序设计。
二、在SQL方面,虽然在创建数据库、创建表、插入记录上面我已经很熟练的掌握并且能够很好的运用,但是在连接方面我还是存在很大的问题,只能死记硬背老师给教的步骤,然后慢慢的调试。尤其在于实验二中的学生情况表的综合查询方面,我还是有点不能很好的理解和运用。
三、毕竟实习的时间是很短暂的,在这个短短的两个周内要好好看书,然后再慢慢的在电脑上调试还是需要时间的,所以在于很多的任务上我还是第一次涉及到,比如封面设计的绘制图形、设计集成界面等,都要通过有关的书籍看懂再自己设计的,所以还不能设计出更加好看的图形,只能是涉及绘制那种最简单的图形。
四、对与VB的有些实习任务比如冒泡排序法和梵塔问题,在这次的实习中通过看书和同学商量,我还是对于这两个程序有点手足无措,虽然大致的程序界面能够很好的设置下来,但是还是存在很多的问题,这说明了在VB的复杂性的程序设计方面我还是有一些问题的。实习需要改进的意见:首先我觉得对于我自己来说,最重要的还是多看书,在这次实习中我觉得我真的看的有关这个方面的书籍真的是太少太少了,这让我在实习中会遇到很多无论是细小的问题还是理论上的问题,都会遇到很多的困难,所以利用这个寒假还是要好好的在这个方面得到提高。其次我要在自己不懂的地方自己实在不能解决的要请教老师和赶紧和同学商量,要把详细的问题请问老师,不能大而化之的问。这样才能真正的知道哪里欠缺,哪里真正的掌握。最后,就是常常和四周的同学沟通和商量,这样的效率也比较的高,也能知道更多别的同学所掌握的知识,这样更加的丰富了自己的知识和能力。还有就是,这样的实际操作的实习机会应该多点给我们学生,自己动手做才能更好的学到知识。
总之,在这次的实习中我得到了很多的知识,也获得了丰富的经验,在这次的实习中使我受益匪浅,希望以后能够多多的得到这样的机会来提高自己。
参考资料:
1.《SQL Server应用教程》郑阿奇、刘启芬、顾韵华编写.人民邮电出版社,2008.12月第一版 2.《Visual Basic 程序设计》龚尚福编写.中国矿业大学出版社,2007年8月第一版
3.《Visual Basic6.0程序设计实务入门》陈建成、陈柏宏、黄珮莹、陈泽雄、林清祥编写.中国铁道出版社,2001年4月第一版 4.《基于VB和SQL的数据库编程技术》刘志妩、张焕君、马秀丽编写,清华大学出版社,2008年4月第一版
5.面向对象程序设计心得体会 篇五
实验一 Visual C++ 6.0开发环境应用入门(2学时)
一、实验目的和要求
1.了解Visual C++ 6.0的特点。2.熟悉Visual C++ 6.0的开发环境。
3.学习用Visual C++ 6.0编写标准的C++控制台程序。
二、实验任务
1.使用Visual C++来建立一个非图形化的标准C++程序,编译、运行以下程序:
#include
1.启动Visual C++6.0开发环境
※ 从“开始”菜单中选择“程序”│Microsoft Visual Studio 6.0│Microsoft Visual C++ 6.0,显示Visual C++ 6.0开发环境主窗口。
2.创建一个项目
※ 单击File菜单中的New选项,显示New(新建)对话框(如图1—1所示)。
图1-1 New对话框
※ 单击Projects标签,在Projects(项目)选项卡中,选择Win32 Console Application(Win32控制台应用程序)。在Location(位置)文本框中指定一个路径,在Project Name(项目名称)文本框中为项目输入一个名字“lab1_1”,单击OK(确定)按钮。
※ 在弹出的Win32 Console Application—Step l of 1对话框中选择An Empty project单选项,然后单击Finish(完成)按钮(如图1-2所示)。
图1—2 创建控制台应用程序第一步
※ 最后在New Project Information对话框中单击OK按钮,完成项目的建立。3.建立C++源程序文件
※ 选择菜单命令Project│Add to Project │New,弹出New对话框,如图1-3所示。※ 在New对话框的Files选项卡中选择C++ Source File,并填入文件名称“1abl_1”,单击OK按钮,完成新建C++源程序文件。
图1-3 添加新的源程序文件
4.编辑C++源程序文件内容
※ 在文件编辑窗口中输入代码(如图1—4所示)。
图1-4 在文件编辑窗口中输入代码
※ 选择菜单命令File │Save保存这个文件。5.建立并运行可执行程序
※ 选择菜单命令Build │Build labl_1.exe,建立可执行程序。
如果你正确输入了源程序,此时便成功地生成了可执行程序labl_1.exe。如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令Build │Build labl_1.exe,建立可执行程序。
※ 选择菜单命令Build │Execute labl_1.exe运行程序,观察屏幕的显示内容。6.关闭工作空间
※ 选择菜单命令File │Close Workspace关闭工作空间。实验二 函数的应用(2学时)
一、实验目的
1.掌握函数的定义和调用方法。2.练习重载函数的使用。3.练习使用系统函数。
4.学习使用VC++的Debug调试功能,使用Step Into追踪到函数内部。
二、实验任务
1.编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。
2.编写重载函数Max1可分别求取2个整数,3个整数,2个双精度数,3个双精度数的最大值。
3.使用系统函数pow(x,y)计算x的值,注意包含头文件cmath。4.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
y
三、实验步骤
1.编写函数float Convert({float TempFer},参数和返回值都为float类型,实现算法C=(F-32)* 5/9,在main()函数中实现输入、输出。程序名:lab3-1.cpp。
2.分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。程序名:1ab3-2.cpp。
3.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:1ab3-4.cpp。
4.编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3-5.cpp。
5.使用Debug中的Step Into追踪到函数内部,观察函数的调用过程,参考程序如下:
//1ab3_5.cpp #include
cout<<”Enter number:”; cin>>n; cout<<”nn”;answer=fib(n);
cout<
int fib(int n){ cout<<”Processing fib(“< 6.调试操作步骤如下: (1)选择菜单命令Build │ Start Debug│Step In,或按下快捷键F11,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时Visual Studio中光标停在main()函数的入口处。 (2)把光标移到语句“answer=fib(n)”前,从Debug菜单或Debug工具栏中单击Run to Cursor,在程序运行的DOS窗口中按提示输入数字10,这时回到Visual Studio中,光标停在第11行,观察一下n的值(观察方法见实验2)。 (3)从Debug菜单或Debug工具栏中单击Step Into,程序进入fib函数,观察一下n的值,把光标移到语句“return(fib(n-2)+fib(n-1))”前,从Debug菜单或Debug工具栏中单击Run to Cursor,再单击Step Into,程序递归调用fib函数,再进入fib函数,观察一下n的值。 (4)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。 (5)再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。实验三 继承与派生(2学时) 一、实验目的 1.学习定义和使用类的继承关系,定义派生类。2.熟悉不同继承方式下对基类成员的访问控制。3.学习利用虚基类解决二义性问题。 二、实验任务 1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。 2.定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 3.定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。 4.(选做)从实验6中的people(人员)类派生出student(学生)类,添加属性:班号char classNO[7];从people类派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacheradviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。 三、实验步骤 1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示: error C2248:’age’:cannot access private member declared in class ’Animal’ 把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。 2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析 构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。 3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。 4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。 课程编号: 课程中文名称:面向对象程序设计 课程英文名称:Object-Oriented Programming 总学时: 40 实验学时: 0 上机学时:学分: 2.5 适用专业:软件工程专业 一、课程性质、目的和任务(300字内) 《面向对象程序设计基础》是计算机软件工程专业本科生的一门专业基础课。面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化的程序,并体现信息隐蔽、可复用、易修改、易扩充等特性。本课程主要介绍面向对象程序设计的方法和C++语言的基本概念及C++语言中的面向对象机制。通过本课程的学习,应使学生能够较好地理解和掌握面向对象程序设计技术的基本概念,掌握面向对象程序的设计方法,并能够在C++环境下(如VC++)开发较大型的应用程序。从而为以后的工作和学习打下基础。 二、课程教学内容及学时分配 第一章、面向对象程序设计概述(3学时) 1.教学内容 1.1面向对象程序设计方法的产生和发展 1.2面向过程和面向对象程序设计方法概述 1.3 面向对象程序设计的基本术语 1.4 面向对象程序设计的基本特征 1.5面向对象程序设计语言 1.6基于Visual Studio 2010的C++应用程序的开发 2.基本要求 了解面向对象技术的发展历程;了解面向过程和面向对象程序设计两种程序设计方法 优缺点;掌握面向对象程序设计的特点;掌握面向对象程序设计的相关术语和基本特征;了解目前常用的面向对象程序设计语言。了解Visual Studio环境下,C++应用程序的开发过程。3.重点、难点 重点:面向对象程序设计的特点(数据的抽象与封装、继承性、多态性)及面向对象的基本术语;C++应用程序的开发环境。 难点:面向对象程序设计的特点(数据的抽象与封装、继承性、多态性)和面向对象的基本术语。 第二章、C++基础(6学时) 1.教学内容 2.1C++程序的组成部分 2.2 命名空间 2.3 C++数据的输入输出 2.4引用 2.5函数 2.6 变量的的作用域与可见性 2.7对象的生存期 2.8 const常量 2.9动态内存分配和释放 2.10编译预处理 2.11文件的输入和输出 2.基本要求 了解C++程序的组成部分;掌握命名空间、变量的的作用域与可见性及生存期的概念;掌握引用及函数的引用参数和返回引用的概念和使用;掌握带有默认参数的函数的使用;掌握内联函数和重载函数的使用;掌握动态内存分配和释放的方法;掌握磁盘文件的输入输出操作方法。3.重点、难点 重点:引用及函数的引用参数和返回引用的概念和使用;动态内存分配和释放的方法;默认参数的函数的使用;内联函数和重载函数的使用。 难点:函数的引用参数和返回引用的使用;掌握磁盘文件的输入输出操作方法。 第三章 类和对象(6学时) 1.教学内容 3.1类和对象的概念 3.2类的定义 3.3对象的创建与使用 3.4构造函数 3.5析构函数 3.6构造函数和析构函数的调用顺序 3.7 对象数组与对象指针 3.8向函数传递对象 3.9对象的赋值和复制 3.10类的组合 2.基本要求 理解类的概念,掌握类的定义方法;理解对象与类的关系,掌握对象的创建和使用方法;掌握构造函数、析构函数的概念和使用方法;掌握拷贝构造函数的使用方法;掌握对象数组和对象指针的特点和使用方法;掌握函数调用中参数的传递方式;理解类的组合的特点。3.重点、难点 重点:构造函数、析构函数的使用方法;对象数组和对象指针的特点和使用方法;函数调用中参数的传递方式。 难点:拷贝构造函数的使用方法;对象数组和对象指针的特点和使用方法;类的组合使用。 第四章、类与对象的其他特性(4学时) 1.教学内容 4.1类的静态成员 4.2友元 4.3类的作用域和对象的生存期 4.4常量类型 2.基本要求 掌握类的静态成员(静态数据成员和静态成员函数)的定义和使用方法;掌握友元函数、友元类的作用、定义和使用方法;了解类的作用域,理解对象的类型和生存期;掌握各种常量的特点、定义和使用方法。3.重点、难点 重点:静态数据成员和静态成员函数的使用方法;友元函数、友元类的使用方法。难点:静态数据成员和静态成员函数的使用方法;类的作用域、对象的作用域及生存周期。 第五章、继承与派生(6学时) 1.教学内容 5.1类的继承与派生概念 5.2基类与派生类 5.3派生类的构造函数和析构函数 5.4多重继承 5.5子类型与赋值兼容规则 5.6程序实例 2.基本要求 理解基类和派生类的概念;掌握派生类的声明、生成过程、继承方式和访问权限;掌握派生类的构造函数和析构函数;掌握多重继承的构造函数和析构函数、构造顺序和析构顺序及多重继承中的二义性;掌握虚基类的概念;理解子类型和赋值兼容规则; 3.重点、难点 重点:派生类的继承方式和访问权限;派生类的构造函数和析构函数的定义;多重继承构造函数和析构函数的构造顺序和析构顺序;多重继承中的二义性;虚基类的定义。 难点:多重继承中的二义性;虚基类的定义;理解子类型和赋值兼容规则。 第六章、多态性(5学时) 1.教学内容 6.1运算符重载 6.2多态性的概念 6.3虚函数 6.4纯虚函数与抽象类 6.5面向对象程序设计 2.基本要求 掌握重载运算符的定义方法;了解运算符重载为成员函数与友元函数的区别;掌握不同类型数据间的转换方法;掌握多态性的概念;掌握虚函数的定义和使用方法;掌握纯虚函数和抽象类的定义;了解面向对象程序设计的基本思想。3.重点、难点 重点:成员函数和友元函数重载运算符;虚函数的使用方法。难点:虚函数的使用方法;纯虚函数和抽象类的定义和使用。 第七章、模板(2学时) 1.教学内容 7.1模板的概念 7.2 函数模板与模板函数 7.3类模板与模板类 2.基本要求 了解模板的概念;掌握函数模板的定义和使用,理解函数模板与模板函数的关系;掌握模板函数显式具体化;掌握类模板的定义和使用,理解类模板与模板类的关系;掌握类模板的派生;掌握类模板的显式具体化。3.重点、难点 重点:函数模板与类模板的使用。难点:类模板的使用。 第八章 文件和流 1.教学内容 8.1 C++的输入/输出 8.2 标准输入流 8.3 标准输出流 8.4 文件的输入和输出 2.基本要求 了解C++的输入/输出的概念;掌握使用cin进行输入;掌握istream类的方法进行输入。掌握使用cout进行输出;掌握格式化输出;掌握ostream类的方法进行输出;掌握文件的输入和输出。3.重点、难点 重点:掌握istream类和ostream类的输入和输出方法;掌握文件的输入和输出。 存在着两种生源, 分别是五年制与三年制学生, 学生的数学知识的不健全, 理解能力比较差, 学生的对这门课程的兴趣比较少, 上课没有预习, 还停留在初中阶段的, 等老师的喂食。喜欢跟着老师做, 自己不怎么动脑思考, 尤其是要自己去举一反三能力没有。学院开的课程不够科学, 上课的安排不合理。学生上完了课程, 回宿舍基本就不去看, 所定制的教程很不合理的, 不能够让学生容易的学习, 学生遇到问题马上就问老师的坏习惯, 老师变成了现成的字典。上完课程的任务不够, 学生容易偷懒, 作业大部分存在抄袭复制现象。 为了很好的解决这些问题, 提出了自己对于《面向对象程序设计》课程教学改革方法。 第一, 根据学院的实际情况修改不同生源的教学大纲。 五年制的学生的教学大纲容易一点, 三年制的学生的教学大纲难一点。 第二, 选择适当的教材。 不能与本科教材, 中专教材类同, 要根据当前计算机发展选适当的面向对象教材, 我选择的是 (vb2005) , 本课程是基础的程序设计, 现在还使用vb6.0太落后, 如有使用新的vb2005学生更难接受, 因为很多新的概念, 别的课程跟不上, 使用多媒体教师, 使用案例演示+任务驱动, 教师讲解, 学生跟学项目, 学生修改项目, 学生独立完成项目作业, 教师针对性指导, 学生互相讨论学习, 挑选出较好的学生做学习辅导。 第三, 激发学生兴趣。 《面向对象程序设计》课程难度大, 被学生列为最难学的课程之一, 建立学生的学习信心很重要。要使学生感觉不太难, 树立他们的学习信心, 讲课时一定要抓重点, 因此在教学中不是泛泛介绍描述工具的语法和框架, 而是突出关键技术“精讲多练”, 学生可花较少的精力获得较强的编程能力。 第四, 注重学生能力培养。 “面向对象程序设计”课程应采用多媒体课堂授课的方式进行教学, 必须借助一定的工具, 网络教学软件如 (红蜘蛛) 是首选工具, 它能够很好的宏观展示程序整体结构, 又能够很好地微观剖析局部算法, 让每个学生都能清晰的显示教学内容, 比投影仪器效果要好的多, 这对课堂教学中发挥教师的主导作用是非常有利的。培养学生做学习笔记的良好习惯。 第五, 优化多媒体资源。 多媒体课件做的一定要简洁, 不要用一些非必要元素干扰了主题, 程序代码要采用链接的方式去完成, 用记事本打开即可。这样就保证了幻灯片页数少, 讲课时切换少, 减少学生对堂课的主题的理解偏差, 提高课堂效率和效果。 第六, 以问题驱动课堂。 在教学中将问题有目的、有组织地提出, 启发、引导学生的思维方向, 迫使学生动脑思考解决办法, 使他们逐渐习惯以专业的思维思考问题和解决问题。 第七, 作业内容要慎重。 作业在上课前先布置, 让学生带着问题去学习, 让学生去完成作业不是目的, 也不是完成教学环节的任务。作业内容要考究, 一定要留那种教材能够看到影子, 可又看不到全部面目的题材, 要迫使学生去图书馆或者到互联网上查阅资料, 要求必须在作业上体现出查阅资料的特征。这样可以减少作业的抄袭, 促进学生学习能力的提高。作业的公开演示, 防止学生的抄袭。创建一学习的网络 (创建一学习的网站, 教学的视频, 作品的实例) 。 学生先预习, 找出不懂的问题, 听完讲解后, 在询问老师或同学, 事先准备好教学的案例 (以案例应用突出教学重点与难点, 案例要实用简单难度适中) , 教师自己编写一些项目, 在教学前给学生演示, 只给项目的基本框架内容, 要求学生在基本框架里进行修改或是创新, 根据布置的作业可把学生分成3-5人一组完成项目。 第八, 掌控实验进程, 实现因材施教。 实验教学中应逐步提高设计类和综合类实验的比例, 以“任务”和“课题”的形式提出实验要求和具体的实验成果, 事先没有参考答案可供借鉴, 要求学生通过阅读教材和相关资料, 掌握实验所涉及到的知识, 通过综合利用这些知识来设计、开发并最终完成实验项目。 第九, 让学生做好笔记。 教学重点内容要做笔记, 我们的生源情况, 大多学生的记忆能力较差, 五年制的学生更加要求做笔记, 不要让学生把重点内容写在课本里, 最好是拿一本专门学习的笔记本。 第十, 教师与学生的互动体现。 教师采取的做法应该是鼓励表达观点的, 而不论你支持哪种观点, 施压于无观点的学生。促使学生思考问题, 培养学生求真到底的科学精神。通过这样的方式, 师生之间确立了良好的学术关系, 也会使学生相信这个老师有着严肃的做人做事原则, 学生就会对老师逐渐地建立信任感, 进而愿意学习老师教授的知识。 第十一, 培养学生的自学能力。 计算机是一个发展, 每隔一段时间就会推出新的概念与新的面向对象程序设计的产品, 我们学校所教的面向对象程序设计课程的内容也应跟上计算机的发展。 第十二, 科学设置课程设计, 提高应用能力。 课程设计为学生提供一个既动手又动脑的独立实践机会, 使学生将课本上的理论知识和实际有机地结合起来。根据我们的生源情况, 最好是把这门课程开设为两学期, 第一学期为基础内容, 第二学期为项目的开发与提高。课程的安排最好不要一天连上四节, 让学生有时间消化内容。 第十三, 题目难度适中。 由于教学目标和设计时间的限制, 题目规模要保持在300—500行手工代码能够解决的范围内, 难度要稍偏低, 使学生能够有思路解决问题, 能够在规定的时间内完成代码编制、输入、调试和形成相关文档, 树立学生独立开发项目的信心。 在今后的教学中不断改进教学方法, 总结教学经验, 找出一套更适合我们高职高专院校, 《面向对象程序设计》课程最佳教学方法与教学效果。提高我们高职高专院校学生的计算机专业应用人才的知识架构和较强应用能力, 让学生用面向对象的程序设计语言编程来解决具体问题。 摘要:在几年的《面向对象程序设计》课程教学过程中存在着一些问题, 本文对这些教学问题提出解决了方法与对策, 找出一套更适合我们高职高专院校的《面向对象程序设计》课程最佳教学方法, 提高我们高职高专院校学生的计算机专业应用人才的知识架构和较强应用能力。 关键词:面向对象程序,课程改革,任务驱动,项目 参考文献 [1]靳广斌.Visual Basic2005程序设计案例教程.北京大学出版社, 2009. [2]孔长征.VB.NET编程实例教程.北京希望电子出版社, 2002. [3]蒋明亮.面向对象程序设计课程实践教学改革研究[J].教学园地.2009, 1. 31重视上机实践及习题 做习题是对所学内容进行复习的重要过程,还是深入学习的必要过程。每次课程讲授之后,教师均应当将有着较强代表性的一些习题布置给学生,以此对课堂上所学习到的内容加以巩固。还可以借助于学生作业的具体情况来了解学生掌握课程内容的程度。对于作业中普遍出现的错误,则需要教师当堂讲解,以便于让学生掌握牢靠、理解透彻。与此同时,学生作业中所出现的新颖新奇的程序设计思路及方法,也需要做好作业批注,并且当堂宣讲,鼓励学生勇于迸发出创新的火花。 32激发学习兴趣 为了能够使学生较快及较好的掌握相关方面的计算机知识,真正的融入计算机领域,教师应当尤其重视学生学习兴趣的调动及培养。在接触计算机的最初阶段,相当一部分学生仅仅是感到好玩、新奇,但并非是对此有兴趣,而逐渐地随着课程的持续深入,大量的要求、定义、规则、概念以及机械化格式的出现,非常容易使得学生有乏味枯燥的感觉產生。为了能够将学生的好奇向学习兴趣转化,那么在课程讲解中要注意着手于具体问题,使学生从感性上对新知识加以认识,然后再对理论要点进行讲授。比如,在首次课上,教师可以找已学的一些《线性代数》、《高等数学》等课程的问题,要求学生采取算法语言来予以求解,以这样的方式使学生对程序设计的用途加以切身体会,最重要的是掌握全新的一种问题的解决方法。在课程讲授的过程中,教师还要积极的引导学生学习一类算法,并且在同行课程中尝试应用。另外,教师还可以向学生经常性的介绍趣味性的一些算例,比如“迷宫问题”等,以此将学生的学习兴趣培养起来,促使学生主动积极的学习与获取知识,从而将程序设计基础打好。 1 系统开发背景与需求 《面向对象程序设计》是广东石油化工学院高州师范学院计算机专业学生的一门必修课程,也是进一步学习后续专业课程的重要根底课。学生在学习该门课程时,普遍感到教学内容笼统,难以了解,使学生不只在课堂上需求教员的引导,而且还需求课堂教学之外的有效补充。因而,迫切需求创立一个网络平台,引导学生自主学习交流,协助学生了解课程的重点与难点,提高广阔师生互动,完成网课教学统一。而《面向对象程序设计》精品课程网站就是这样一个网络平台。 2 精品课程网站的功用剖析 精品课程网站是一个基于 B/S 形式的对课程资源高效管理与应用的系统,它的用户主要是学生和教员以及管理员。三类用户的运用功用如图 1 所示。 3 网站设计与完成 3.1 主要技术 本网站主要用到 JSP(Java Server Pages)、Struct2、Hibernate、Div+CSS 及 JavaScript 等 技 术。JSP 是 使 用JAVA 编程言语编写类 XML 的 tags 和 scriptlets,一个封装产生动态网页的处置逻辑网页能经过 tags 和 scriptlets 访问存在与效劳端资源的应用逻辑[1].Struct2 是在 JSP Model2根底上完成的一个 MVC 框架,有助于减少运用 MVC 设计模型开发 Web 应用的时间[2].Hibernate 是一个面向 Java环境的对象 / 关系数据库映射工具,能够管理 Java 类到数据库表的映射,并提供数据的查询和获取办法。 摘要 3.2 数据库设计 将网站的数据笼统为下列的 14 张数据表:权限表(编号,权限名);用户表(编号,用户账号,密码,姓名,所在系,班级,性别,权限 ID);目录表(编号,目录称号);父子关系目录表(编号,子目录 ID,父目录 ID);文章列表(编号,文章标题,文章作者 ID,所属目录 ID,发表时间,文章内容,缩略图地址);附件表(编号,附件名,所属文章 ID);日志表(编号,用户 ID, 操作来源,操作,操作地址,操作时间);外部链接表(编号,链接称号,链接地址)根贴表(编号,发帖用户 ID,帖子主题,帖子内容,发帖时间,引荐标识,置顶标识,被置顶时间);回帖表(编号,回帖用户 ID,所属跟帖 ID,回帖内容,回帖时间,回帖数量);作业任务表(编号,教员 ID,作业标题,作业任务,作业发布时间);学生作业状态表(编号,作业任务 ID,作业学生 ID,作业状态);学生作业细致表(编号,作业学生ID,学生答案,得分,作业上传时间);数据库备份记载表(编号,数据库文件称号,备份时间)。 3.3 精品课程网站模块设计与完成 3.3.1 课程管理模块 课程管理模块只允许管理员与教员对其进行各种操作。它包括课程分类管理和课程资源管理两大子功用。课程分类管理子模块是用于添加或删除课程资源类别,包括父类与子类的设置;父类即主导航栏目的设置,子类即父类中的分类列表,这样不只有利于教员或管理员对课程进行自在地设置,也便于学生进行阅读。依据精品课程网站的目的及《面向对象程序设计》课程特征,初步设置了六大课程资源类别:学习指导、教学指南、授课教案、多媒体教学、教学录像、课程源码及实验指导。 其中,为学习指导类设定了最新公告、在线答疑两子类;教学指南类设定了课程引见、教学大纲、考试大纲、教材引见及参考学惯用书五个子类。 3.3.2 作业管理模块 作业模块是在线布置作业、在线提交、修改一体的管理模块。包括教员在线布置、查看、修改作业,学生提交、下载作业以及查看评语与分数等功用。 本系统中,作业录入、修改功用采用了 CKEeditor 和ckfinder 在线文本编辑器,录入的数据为 html 格式,便于设置作业内容的特殊显现效果。经过设置表格 style 属性,使数据显现自动换行,从而完成编辑与显现相分歧。作业提交、下载则应用 jspSmartUpload 组件来完成。经过表单提交做好的作业,后台将获取学生的答复,并在学生作业细致表中写入学生答案,最后将学生作业状态表中的任务状态改为 1,标识该学生此次任务已完成并上交。 3.3.3 论坛交流模块 论坛模块能够让学生与学生、学生与教员之间集中交流互动。学习者经过论坛能够分享学习心得,提出问题,以至交友互动。教员与管理员共同对论坛发表的帖子进行管理,如删除、置顶、引荐等操作。一切的操作都在用户客户端的阅读器中完成,由 JSPWeb 程序处置后,对效劳器的数据库进行操作,再处置成 HTML 文件传到用户客户端阅读器,响应用户的需求。 3.3.4 日志管理模块 日志是调试系统和定位毛病的.重要手腕之一。系统管理员依据日志来评价平安程序的效率,以及肯定惹起平安毁坏及系统功用失效的缘由,为审计和监测提供数据。 本模块的设计请求将一切记载日志的操作提取出来,构成一个独立的模块,用来管理和记载整个系统需求记载的日志。用户登录后,教员和学生能够经过日志管理模块来查询个人一切的操作记载,而管理员既能够查看一切用户一切的操作记载,也能够执行清空操作。 3.3.5 外链管理模块 外链是指从其他网站导入到本人网站的链接。导入链接关于网站优化来说是一个重要的过程。经过外链管理模块,一切用户能够外链,教员能够对个人外链进行添加、删除、修正操作,管理员能够对恣意外链进行各种操作。 本网站除了上述功用模块外,还有网站常见的注册登录模块、用户管理模块及网站信息管理模块。其中注册登录模块请求用户在登录界面中输入合法的用户名、密码及正确的考证码来登录本精品课程网站。 用户管理模块是用于集中对各层次的用户进行有效的辨认和管理,包含个人材料和权限的修正等。网站信息管理模块便于管理员检查网站各类信息和课程资源状态,及时备份数据和处置异常问题。 4 结 语 论文摘要:信息资源的价值越来越高,建设以数据库为中心的管理信息系统,对提高金融管理水平和生活质量具有重要的意义,本文以具体实例阐述了面向对象程序设计方法的特点,并分析其优点和不足的地方,以便于在经济工作中运用面向对象软件开发实践方法具体设计相关管理信息系统。 论文关键词:金融信息系统 面向对象程序设计会计软件开发 1前言 随着我国经济信息化工作的不断发展提升,对金融工作者的计算机应用知识要求越来越高,有些企业的信息系统正面临从传统的核算软件向管理决策性的大型管理软件的再开发。当前我国企业经济发展对管理信息系统开发的需求很大,如何正确安排软件的结构,合理组织、管理软件的生产,不仅是从事软件开发专业人员的事,也是广大从事金融管理工作人员及学员必需掌握的知识,金融工作人员经常就会被要求加入到系统开发中去,向系统开发人员提供有关专业技术支持,帮助开发人员了解企业的财务处理程序、经营过程,管理要求及用户的信息需求等。为了缩短了软件的研制时间,提高了软件的开发效率,面向对象程序设计由此应运而生。面向对象事件驱动程序设计方法是程序设计方法的一次变革.我们应迎头赶上井掌握这门新技术。 2面向对象方法程序设计(00)的基本过程 计算机软件技术发展非常快,越来越多的实用软件工具有不同程度的面向对象自动编程功能,软件工程各阶段的自动化程度也将越来越高.面向对象程序设计是目前程序设计方法的主流,是程序设计在思维和方法上的一次巨大进步。面向对象程序设计思想是面向对象,即设计的重要任务在于描述对象,程序是由事件驱动的,因而,在执行过程中,持续等待的是一个发生在对象上的事件。而发生什么事件则要看使用者的操作,如单击、双击鼠标等。至于下一步的程序流向,则要看驱动的是什么事件。这类程序设计的主要目的是从任何方便与简化使用人手,由使用者控制程序流向,这在一定程序上增加了编程的难度,以基于VFP6.0面向对象的程序设计应用为例,假设某储户到银行提取存款X元,试问银行出纳元应如何付款最佳(即各种票颊钞票总张数最少)。 2.1分析 可以从最大的票额(100元)开始,算出所需张数,然后在剩下的部分算出较小面额的张教,直到最小票额(1元)。 2.2设计步辣 (l)建立应用程序用户最界面。 选择“新建”表单设计器,增加一个命令按钮Command 1、14个标签LABELI_LABEL 14, 7个文本框TEXTI _TEXT7。 (2)设置对象属性.如表i: 表单的默认按钮 (3)编写程序代码: 说明:文本框的InteractiveChange事件当文本框中的内容被改变时发生。 2.3建立程序界面与程序运行结果 在企业的金融信息系统中其它应用需求诸如:求各种所得税的纳税情况,水电费收支情况,工资管理情况等应用,软件需求大,需求的具体要求各有千秋,程序代码和界面是千变万化的,系统开发人员和信息管理应用工作者应根据具体的要求按一定的语法规则去改变程序的结构和方式,形成各自的风格,以满足企业信息管理系统对应用软件日益增长的需要。 3面向对象系统开发(00)方法的原理 面向对象方法是在吸取结构化思想和优点的基础卜发展起来的,是对结构化方法的进一步发展和扩充。各种分析方法在财经软件开发过程中墓本目标是相同的。都以较低的成本开发高质量的软件,系统开发从问题域中的实体与关系出发,体系结构是由对象类及其关系构成,对象之间通过消息传递信息,通过执行服务一消息链完成指定功能,一旦用户要求修改,可以只更改局部内容即可。但不管采取什么开发方法,软件开发的墓本活动包括:需求定义、设计(design),实现、验证/确认,一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。“面向对象”一词是针对“面向过程’一词提出的,是在本质上不同于传统的结构化方法的一种新方法,但其是基于或扩展结构化的思想,且包含三个基本的原理:封装、继承及多态。面向对象方法是吸取结构化方法的思想和优点的基础上发展起来的,是对结构化方法的进一步发展和扩充。 4面向对象系统开发(00)方法的特点和发展趋势 面向对象程序设计方法是一种正在发展中的方法,它认为客观世界是由对象组成的,用对象表示软件应用领域里的事物,用消息传送表现事物之间的相互联系,它用对象和消息来描述事物及其相互之间的联系,用类和继承来描述对象,建立问题或模型、描述系统。它是一种运用对象、类、继承、聚合和消息等概念来构造程序的设计方法。面向对象的程序设计方法主要的`构成可为:对象+类十继承十消息。软件系统利用以上四个概念进行设计或实现的,使认为其是面向连接的.面向对象程序设计的特点是唯一性,从前一阶段到后一阶段高度连续,将面向对象分析OOA、面向对象程序设计OOP、面向对象设计OOD集成到生存期各阶段中,相对于结构化程序设计方法来说.面向对象程序设计方法具有其独到的以下优点:开发方法的唯一性,开发阶段的高度连续性.表示方法的一致性。问题空间实体的自然表示,减轻了设计者的负担。设计之初不必考虑很完整的地方,建立完整的体系结构,可促进复用性,易于维护,易于修改,可合理利用其共同性,减少其复杂性。 例如,在基本的发VISUAL FOXFRO, VI-SUAL BASIC. VISUAL C++中,控件(CONTROL)、表单(FORM)等都是一个个对象.对其中对象的操作,可以通过属性、事件和方法来实现。面向对象是当前软件方法学的主要方向,也是目前最有效的开发方法之一。其基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。在应用中,面向对象的分析方法首先定义对象及其属性,根据问题域中的操作规则和内在性质定义对象的行为特征(服务),建立状态模型,用状态模型描述对象的生命周期,分析对象之间的关系,采用封装,继承,消息通信等原则使问题域的复杂性得到控制,根据对象及其生命周期定义处理过程。当然,面向对象设计方法有很多不足之处,在开发大型软件方面,面向对象设计方法无疑其有很好的优势,但这种优势只有其在开发大型软件上才体现出来,软件的重用使其冗余相对较大。对于小型软件和要求讲究效率的场合来讲,结构化程序设计方法仍有其使用的必要。 以金融管理信息系统为例,随着金融软件的推广应用,企业电算化应用水平不断提高,软件已不能满足企业管理水平提高的需求,为此我国金融软件开发应用工作者又相继推出了ATM系列、银证转账软件产品,井与会计管理软件功能相关联和对接,主要包括:账务处理、资金管理、帐务分析、销售等功能,在管理型软件各功能模块中还将满足纳税处理、提供审计线索等功能需求。将推出成熟的商品化金融企业管理信息软件,以实现企业内部物流、资金流与信息流的一体化管理,实现管理与决策有机统一,并通过建立在Internet/Intranet/Extranet上,实现企业内部资源与企业外部资源构成的整个供应链的管理。 5结语 关键词: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. 关键词:面向对象程序设计,逆向循环教学法,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. 1.Java中继承由关键字()实现,用此关键字指出超类。 interface implements class extends 本题分值: 5.0 用户得分: 5.0 用户解答: extends 知识点: 5.1 继承 2.继承是()之间的一种关系,当一个类获取另外一个类中所有非私有数据和操作的定义作为自己的部分或全部成分时,则称这两个类之间具有继承关系。 两个类 多个 集合 层次 本题分值: 5.0 用户得分: 5.0 用户解答: 两个类 知识点: 5.1 继承 3.下面不能用在类声明的修饰是:()。 implements private public 默认 本题分值: 5.0 用户得分: 5.0 用户解答: implements 知识点: 5.1 继承 4.super关键字表示超类的引用,可用super: ()。 在子类构造方法使用超类构造方法。 访问超类成员 引用类自己 无用 定义父类 本题分值: 5.0 用户得分: 5.0 用户解答: 访问超类成员 知识点: 5.1 继承 5.子类继承父类所有的 public 和()成员,而无论这个类是否与父类在同一个包中。 private protected 公共 所有 本题分值: 5.0 用户得分: 5.0 用户解答: protected 知识点: 5.2 域的继承与隐藏 6.在子类中重新定义一个与从父类那里继承来的()的域,称为域的隐藏。 private protected public 名字完全相同 本题分值: 5.0 用户得分: 5.0 用户解答: 名字完全相同 知识点: 5.2 域的继承与隐藏 7.在子类中不能简单地通过变量名称引用父类中被隐藏的成员变量。要在子类访问被隐藏的父类中的域必须通过关键字()引用。 this super object 变量名 本题分值: 5.0 用户得分: 5.0 用户解答: super 知识点: 5.2 域的继承与隐藏 8.子类继承了父类中所有的非私有方法,允许在子类重新定义父类中的实例方法,()中的类方法。 定义类 对象 引用父类 隐藏父类 本题分值: 5.0 用户得分: 5.0 用户解答: 对象 知识点: 5.3 方法继承、覆盖、隐藏 9.“多态”是指一个程序中同名的不同方法共存。在面向对象程序中,多态的实现方式有:方法覆盖和()。 重载 继承 外联 限制 本题分值: 5.0 用户得分: 5.0 用户解答: 重载 知识点: 5.3 方法继承、覆盖、隐藏 10.在子类中可以通过成员的名称直接引用父类的方法或者用“()”引用父类的方法。 对象.方法名称 this.方法名称 super.方法名称 object.方法名称 本题分值: 5.0 用户得分: 5.0 用户解答: super.方法名称 知识点: 5.3 方法继承、覆盖、隐藏 11.在子类中的实例方法与在父类中的实例方法有相同的()时,称作覆盖父类的方法。 返回值 结构 语句 签名和返回类型 本题分值: 5.0 用户得分: 5.0 用户解答: 签名和返回类型 知识点: 5.3 方法继承、覆盖、隐藏 12.当在子类中的覆盖一个父类的方法时,用()注解符通知编译期在父类你想要覆盖的方法。 @author class @Override public 本题分值: 5.0 用户得分: 5.0 用户解答: @Override 知识点: 5.3 方法继承、覆盖、隐藏 13.在调用覆盖的方法时,被调用的覆盖方法的版本(),就是子类中的覆盖方法。只有一个 有多个 不是唯一的 与重载类似 本题分值: 5.0 用户得分: 5.0 用户解答: 只有一个 知识点: 5.3 方法继承、覆盖、隐藏 14.如果子类没有无参数构造方法,它将继承父类的()作为自己的构造方法。 this()指定方法 任何方法 无参数构造方法 本题分值: 5.0 用户得分: 5.0 用户解答: 无参数构造方法 知识点: 5.4 构造方法继承 15.public abstract class GraphicObject { abstract void draw();„„ } 是()类。 抽象 抽象方法 接口 未完成的类 本题分值: 5.0 用户得分: 5.0 用户解答: 抽象 知识点: 5.5 抽象类 16.声明抽象方法用下面的格式:()类型 方法名([参数表]); static public final abstract 本题分值: 5.0 用户得分: 5.0 用户解答: abstract 知识点: 5.5 抽象类 17.Java语言中接口是像类一样的引用型类型,仅可包含()、嵌套类型。 private static 实例变量 方法 常量、方法签名 本题分值: 5.0 用户得分: 5.0 用户解答: 常量、方法签名 知识点: 5.6 接口 18.接口声明由修饰、interface、接口名称、()和接口体。 private 逗号隔开的父接口列表 static final 父类列表 本题分值: 5.0 用户得分: 5.0 用户解答: 逗号隔开的父接口列表 知识点: 5.6 接口 19.包(package)由一组()组成,是相关类型的组,提供访问保护和命名空间管理。 类和接口 方法 对象和类 静态变量 本题分值: 5.0 用户得分: 5.0 用户解答: 类和接口 知识点: 5.7 包(Packages) 20.引入整个包中所有成员,即“import 包名字.*”,例如:() import java.io.*;import *.*;import java;import java.io; 面向对象程序设计(ObjectOrientedProgramming,OOP)是信息管理与信息系统专业学生必修的专业基础课,在整个教学体系中的地位非常重要,学生在学习该课程后能充分掌握面向对象程序设计思想和方法,是该课程教学改革的理想目标。 一、相关概念 (一)面向对象程序设计 OOP 是一种计算机编程架构,它具备软件工程的灵活性、重用性和扩展性。OOP 不仅具有丰富的理论知识,同时具有很强的实践性,坚持在真实的项目中锻炼编程能力,才能理解其精髓,进而活学活用。 (二)项目教学法 项目教学法以学生为教学中心,是学生在教师的指导下处理项目,提高自身能力的教学方法。其优势在实践性较强的 OOP 课程中体现得淋漓尽致。具体实施时,教师化身为顾问,主要的作用是引导学生把课堂所学用在实践过程中,理论联系实际,进而提高动手能力 ;学生是项目的具体操作者,知识水平和发现问题、解决问题能力均能得到提高。 二、改革的必要性 OOP 是一门实践性很强的课程,如果不进行实践教学,学生不能全面掌握其核心思想。原因主要有以下两方面 : (一)难理解 由于面向对象概念较抽象,是基于现实世界的特点,对系统的复杂性进行概括、抽象和分类,对象是 OOP 的核心,是将代码和数据封装起来的具有某些特性的具体事物的抽象。从学生角度来看,以知识点为中心的讲解教学方式理论性太强,不好理解,甚至有部分学生自始至终也无法掌握OOP 的重要概念,不能满足课程考核要求。 (二)理论教学多 教师上课采用多媒体教学,这种方式基本上是教师在课堂上唱独角戏,把理论和方法灌输给学生,学生被动地学习,只是把教师讲的内容在大脑中形成记忆,没有自己独立思考的过程,不利于培养学生的创造能力。 三、项目教学法的改革要点 项目教学法设计了完整的软件项目教学背景,克服了传统教学中注重理论知识忽视应用实践的缺点。学生在慢慢了解、逐渐熟悉软件项目开发的过程中,能够理解应用,学习和掌握各种知识并训练相关技能。 (一)项目题目的设定 教师在进行项目教学引导时需要策略,创设学习的资源,协调学习合作环境。教学项目题目的选取是其中的关键问题,选题最好能与软件公司进行交流或合作,应具备针对性和实用性,能体现出学生综合能力的运用,并且可以进行客观评价。首先,项目题目应尽可能覆盖教学大纲的多项知识点 ;其次,应该构建具有完整项目的项目案例库,项目题目应有不同的难易度和适当的工程工作量,适应所教班级的不同学生的实际水平;最后,项目题目应尽量贴近大学生的生活,并可以用一些标准,如软件是否易用、是否有良好的用户交互性等进行公平、准确的评价。 (二)互动增强 传统的教学环节中,老师和同学的交流仅限于课间十分钟或者课下较短时间的交流,交流时间少,沟通的`问题也只是教学内容中个别的知识点。而在项目教学法中,沟通渠道是多向的,老师与学生之间沟通的宽度和广度都加大了。另外,即使在同一课堂上听讲,不同的学生在学习动机、学习心理、学习兴趣和学习能力等方面仍然会有一些差别。 (三)角色换位 在项目教学法中,学生居于教学活动中的主要地位,应该是项目的积极参与者,首先要认真阅读选定的真实项目材料,和同一个项目的同学讨论,甚至就项目问题的不同理解与同组同学展开争辩。其次在真实项目实战场景下,经过认真的独立思考和判断动手编写程序。学生的自学能力和实践能力得到提升,并主动构建自己的知识体系。居于教学活动中从属地位的是教师,教师不再是整个课程的中心。教师对整个教学活动按照工程项目的需要加以指导,做适当的示范,只是项目的指导者或者说是项目进度的推动者,引导学生进行深入学习。 “C++面向对象程序设计”课程是我校信息与电子学院信息类专业学生的一门公共基础课,该课程以“C语言程序设计”为先修课程,以“数据结构”为后续课程。该课程概念多、理论抽象、知识面广,并且起着承上启下的重要作用,为了设计好教学过程,增强教学效果,经过多年的思考和探索,《C++面向对象程序设计》课程组在明确课程定位、优化教学内容、改革教学方法和完善考核方式等方面进行了探索,逐步形成了自己的课程特色。 2 课程定位 课程必须准确定位,这个定位指明了整个教学过程中努力的方向。大体而言,C++程序设计的课程定位大体有两种不同的思路:1)侧重于程序设计语法规范的说明。认为课程的对象是高校各专业的大学生,并无从事程序设计的实际经验,将来也不一定是C++的专业开发人员,因此课程的定位在于了解面向对象程序设计方法,能够利用C++编写相对简单的程序,为以后进一步学习和应用打下基础。2)侧重于用编程解决实际问题的说明:致力于消除大学生毕业后却不会编程的普遍现状,将课程定位牢牢锁定在编程能力而不是应付机械式的考试上。 这两种思路是鉴于学生的未来是否以编写程序为职业作为出发点来进行定位,由于本门课程的教学对象是信息类非计算机专业大二本科生,学生的未来职业与C++的相关度属于中等程度,因此,从这个意义上来说,本门课程的基本定位首先是力求平衡。其次,等级考试所引起的盲目应试追求虽然常被诟病,然而应试所带来的学习驱动力是客观事实,因此,本门课程的定位兼顾着应对计算机等级考试能力的培养,旨在由应试需求驱动学习兴趣,从而引导学生走向内在驱动,领悟C++面向对象程序设计本身的精彩之处。 3 教学内容 本课程以“C语言程序设计”为先修课程,以“数据结构”为后续课程,因此,教学内容以“从C到C++”为第一章完成过渡,以泛型程序设计的基础——“模板”为最后一章留下铺垫,中间以面向对象程序设计的三大特性:封装性、继承性和多态性为核心。教学内容的整体布局如表1所示[1]。 4 教学方法 4.1 从问题出发,进行启发式教学 课堂的主体是学生,调动学生的学习意愿,让学生参与教学。教师的作用在于对学生学习的引导和课堂的组织。如在介绍类的定义时,照本宣科的方法是对下面的定义格式加以说明: 在C++中,定义类的一般格式为: 在实际的教学过程中,也可以通过这样一个递进的过程来进行启发式教学[2]: 1)回顾struct:“同学们还记得结构么?” 2)用“class”代替“struct”:“结构变成了类,运行一下代码,结果会如何呢?” 3)访问权限的说明:对报错信息“cannot access private member declared in class”展示,说明类和结构的第一个区别是缺省的成员访问权限不同,结构是public,类是private 4)成员函数的引出:“如果数据完全无法访问,类的存在就没有意义了,那如何访问呢?答案是成员函数提供了一种严格的访问私有数据的方法!” 5)给出类的定义的一般形式:进行完整性说明。 这种递进的过程将类的定义形式顺理成章地展示在学生面前,非常易于接受,记忆也比较深刻。 4.2 选择生动的示范程序 示范程序是任何一门程序设计语言教学不可或缺的。示范程序的选择,首要条件当然是要能够很好的服务于当前所教的知识点,起到一个示范的作用。示范程序不宜过长,长代码虽然真实但是容易令初学者有压力之感;也不宜过于符号化,采用完全没有实际意义的例子来说明语法则容易令人有枯燥之感。因此,如果教师能够选取长度适中又生动有趣的示范程序则效果更佳。 例如在讲解多继承情况下的构造函数调用顺序的例子中,在继承图谱(见图1)和代码的配合下,描述了一个泰迪熊的诞生过程[3]。 这个示范程序是描述比较复杂的多层同时多重派生的例子,然而其代码相当简短,并且足以对派生类对象建立过程中构造函数的调用知识点进行展示:(一)派生类构造函数中没有显式的基类构造函数的调用即为调用基类的缺省构造函数,见“Book Character();Bear();Teddy Bear();”(二)构造函数的调用顺序总体原则是先基类后派生类,多个基类存在的时候按照声明之时的顺序加以先后调用,展示输出结果:“Character↙Book Character↙Zoo Animal↙Bear↙Toy Animal↙Teddy Bear↙”。 选择合适的示范程序不但可以巩固已学知识,而且可以提升学生的课堂兴趣。 4.3 渗透适量语言背后的实现原理 大多数程序设计课程注重的是语言的逻辑,学习语法规则,对其如何实现问题则完全避之。实践表明,对语言背后的实现过程进行适当的说明是有助于整体的教学效果的,其中,最典型的例子是“引用”。 引用从逻辑上理解是“别名”,使用引用就等于一个变量多了一个关联的名字,修改引用值就是修改所引用的变量的值。在这个通常意义上的理解对于后续学习是有一定局限性的,例如当学习多态性之时,实现动态联编两大条件为虚函数的定义和使用基类指针或者引用调用虚函数。如何解释“指针和引用能起到相同的作用”就成为难题了。因此,在引用的学习之初可以一方面说明它是“别名”,另一方面则从物理实现上进行理解,引用是个隐性的指针。以如下代码为基础配合图2进行说明。 从图2(a)中可见,引用的别名理解是在某块有名内存之上又加了一个新名字而已,而从图2(b)中则可以理解到引用的本质类似于一个常指针,永远指向这块有名内存。详细给出指针和引用的对比。 指针: 可先定义后赋值 可操作两个实体:指针值、指向的值 访问指向值需间接访问,变量前加* 引用: 定义的同时完成赋值 只可操作一个实体:指向的值 访问指向值无需间接访问形式,变量前不加*(编译完成幕后的转换工作) 一旦有了这样的知识准备,对于引用在函数通信中如何能够有“形似值传递(引用传递在语法表达上类似于值传递)而神似地址传递(引用传递在功能上类似于地址传递)”的效果就非常容易理解,对于后续章节中的虚函数调用中指针和引用的平等地位则不言而喻。 4.4 解释语言本身的内在需求 程序设计语言的教学过程中大多时间是说明它有什么规则,并且向学生解释为什么提供这项规则的说明,这种对语言本身需求的说明在课程全程中无处不在。例如:类将数据和动作捆绑在一起使得数据变成聪明的数据,不同的对象各自悠闲地行动;友元是通往私有数据的后门,为密切相关者提供方便;引用是形神兼备继而在函数通信中大显身手;虚基类是解决多继承引起的二义性问题等等。在此,强调一下往往被忽视的有关多态性的需求说明:继承呼唤多态[4]。 虚函数的定义规则和调用要求都不难理解,难以理解的是为什么要做这件事。说明这个问题首先要从赋值兼容规则开始:派生类的对象可以赋值给基类对象;派生类对象的地址可以赋值给基类指针;派生类的对象可以初始化基类的引用。接下来进行同化效应的说明,即基类对象、指针和引用是可以接纳派生类对象,然而赋值之后派生类的特征就完全消失了。以如下代码及运行结果进行说明。 从中可见,gs虽然是Graduate Student对象,但是托付给了Student之后,便一切都表现为Student。如果没有新的机制,对类家族中的不同类对象需要提供不同的处理模块,并且对于每个对象的到来都首先需要进行类型判断。然而,我们是多么希望一个集合中允许有类家族中的不同类的对象能够共存,对每个元素的操作具有分辨不同类对象的能力!于是,动态联编使梦想成真。 解释语言本身的内在需求一方面有助于提高学习兴趣,学生们不再有莫名其妙的困惑;另一方面,由于了解需求的同时也清楚了该语法规则的应用场合,有助于实际问题的解决。 5 考核方式 本门课程的成绩评定重视学生的平时表现,避免一张考卷定乾坤带来的弊病。总评成绩=期末闭卷笔试(70%)+平时成绩(30%),其中平时成绩有三个方面,包括课堂提问、网络教室作业和上机实验报告。 5.1 课堂提问 本课程在每个章节之后都设计一个小的课堂练习环节,该环节的基本作用是复习概念,特别是以判断题的形式对于容易混淆和忽视的问题加以强调,通过同学们回答问题的情况了解大家对基本知识的掌握程度,对课程进展的节奏适当调节。对回答问题中表现优秀的学生给予平时成绩的适当加权,激发学生的积极性。此外,在此环节还包括通过题目补充知识点,使得学生在提问的紧张中有放松的间歇,复习中也有新鲜感。 5.2 网络教室作业 “北理在线”提供了网络教学平台,在该平台上搭载有教师上课的同步课件、共享学习资源、师生互动板块和在线测试。课程中的每个章节均设置一个测试单元,每个单元有选择题形式的语法练习(题目的设置以全国计算机等级考试题目为参考),也有编程形式的操作练习。选择题的答题有效期设置为当前周,次数限制为两次,分数取平均分。编程练习的答题有效期设置为两周,当前周为满分周,次周为折扣周。设置目的是使同学们在回答问题过程中保持重视的态度,同时对错误和拖沓给予补救的机会。全部的作业单元成绩累加,统一加权纳入最后评定。 5.3 上机实验报告 学生们在平时的编程练习中是单兵作战,并且以测试样例为唯一的评价标准。在实验课堂上,一方面给大家一个互相学习和交流的机会;另一方面程序、学生和老师三方同时面对面的交流,学生的困惑得以解决,老师对教学效果有了更加直观的了解。此外,上机报告中能够体现出一些在线作业中所未见的问题,实验报告中表现优秀的学生同样给予平时成绩的适当加权。 5.4 期末笔试 期末考试采用闭卷笔试,题型包括:选择题、判断题、填空题和综合题,综合题中包括读程序查错、读程序写出运行结果,以及程序填空。判断题和填空题主要考核基本的概念知识;选择题的比例较大,主要考核基本概念的理解和基本规则的运用,以程序代码为主,以文字描述为辅;综合题的题目通常是完整的程序,程序规模较大,知识点交叉性强。笔试题目总体的原则是知识点的全面,侧重于对学生综合能力的考核,其成绩为最终成绩的主体。 6 结论 经过不断的思考,在整个教学过程中做了一系列有益的尝试,实践表明这些尝试能够提高学生学习C++面向对象程序设计的兴趣和效果,课堂的氛围更加活跃,师生的沟通更加流畅。从评教的结果上看,课程也是得到了越来越多学生的喜爱。 摘要:“C++面向对象程序设计”课程是当前计算机以及相关专业的一门重要的基础课程。该文结合多年的教学经验,对该课教学中的课程定位、教学内容、教学方法以及考核方式等方面总结了一些思路,并进行了有益探索,以期对该课程的教学方法的改进和教学质量的提高有所贡献。 关键词:C++面向对象程序设计,教学改革 参考文献 [1]高飞,聂青,李蕙芳,薛艳明.C++与数据结构[M],北京理工大学出版社,2006, [2]Greg Perry..Visual C++自学21日通[M].张军宝译.学苑出版社,1994. [3]Stanley B Lippma.C++Primer中文版[M].李师贤译.人民邮电出版社,2006. 【面向对象程序设计心得体会】推荐阅读: 面向对象课程设计任务07-22 java面向对象程序设计教案12-27 面向对象程序设计-教学大纲-信管01-20 “面向对象的程序设计基础”课程总结01-22 《面向对象程序设计方法》课程教学大纲12-14 面向对象作业评讲07-13 面向社区的动态人口管控系统设计论文11-076.C++面向对象程序设计教学大纲 篇六
7.面向对象程序设计心得体会 篇七
8.面向对象程序设计心得体会 篇八
9.面向对象程序设计心得体会 篇九
10.面向对象程序设计心得体会 篇十
11.面向对象程序设计心得体会 篇十一
12.面向对象程序设计心得体会 篇十二
13.面向对象程序设计心得体会 篇十三
14.面向对象程序设计心得体会 篇十四
15.面向对象程序设计心得体会 篇十五