面向对象程序设计实验教学大纲(精选12篇)
面向对象程序设计实验教学大纲 篇1
《面向对象程序设计方法》实验教学大纲
(计算机科学与技术本科专业使用)
一、教学目标
通过该实验课,学生应在熟练掌握过程化程序设计方法的基础上,领会面向对象程序设计及类的封装、数据隐藏、继承及多态等特性,逐步掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。
二、实验教学时数
三、实验内容
实验一 图形打印
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、实验方法:上机编程
责任撰写人:陈桂芬
面向对象程序设计实验教学大纲 篇2
面向对象程序设计的思想, 是软件技术这个专业针对学生培养的重要素质之一。尤其是在高职高专教育的课程体系里面, 面向对象程序设计这门课程在各个高校里面一直都位居举足轻重的位置。
在众多的高等职业教育里面, 计算机软件体系的课程, 尤其是针对软件开发这一体系的课程基本都是先学程序设计基础, 然后开设面向对象程序设计, 从我从事多年的教学经历来看, 学生们在学习程序设计基础这门基础课程的时候对于程序的控制结构比较难以理解, 到了学习面向对象程序设计这门课程的时候, 对类与对象的理解就更加困难了, 尤其是给同学们树立类与对象的思想。
2面向对象程教学内容—类与对象的教学设计
在这门课程的教学当中, 如果不让学生树立面向对象的思维, 那么学生就很难进入本门课程的学习, 学习尤其要注重理解性记忆, 如果全靠死记硬背把概念记住, 是不可能深入学习面向对象的精髓的。本门课程要求学生理解面向对象编程思想, 掌握面向对象基本概念、集合框架、多线程、IO以及异常处理, 能够运用JDBC开发C/S模式下的中小型数据库应用软件, 能够运用JUNIT工具进行单元测试, 培养团队协作、交流沟通、自学、抗压能力, 提升软件工程规范及编码规范意识。
所以要达到以上目标, 就要很好地给同学们树立面向对象程序设计的思想, 很多教材都是编排在第一章第一节讲解类的概念, 在第一章第二节讲解对象的概念, 这种方式的讲解无论是本科的学生还是专科的学生理解起来都是很困难的。所以在做本课程的教学设计的时候, 就应该改变以前传统做法, 争取达到让学生做到易学易懂易做。在这里仅仅以Java语言为例子说明讲解怎样让学生理解类与对象的思想。
首先, 按照标准定义给出类和对象的概念。类是对事物的抽象和归纳, 是具有相同标准的事物的集合与抽象。对象是由属性 (Attribute) 和行为 (Action) 两部分组成, 属性用来描述对象的静态特征, 行为用来描述对象的动态特征。这两个概念, 对于初次接触面向对象这门课程的学生来说是很抽象的, 而且是很不容易理解的, 所以在讲解的过程中作为教师一定要给出让学生容易理解的例子以及代码, 帮助学生理解这个概念, 而不是一味地去灌输这个抽象的概念。在讲解这个概念的时候也要尽可能地用简单通俗易懂地语言灌输给学生, 也就是要把抽象问题具体化, 复杂问题简单化。比如给两个简单的例子如下, 来帮助学生理解类与对象的概念以及他们之间的联系就一目了然。
对比以上两段代码, 左边这段代码着重培养学生们面向对象的思维, 帮助学生理解“类”这一个非常抽象的概念, 这样就把人“类”这个非常抽象的概念用代码加以具体化, 让学生们更好地加以理解和掌握, “人类”就是一个抽象化的概念, 它把人类所共有的特点以及人类的一些共同的动作行为封装在了一对大括号里面, 所以说“类”是属性和方法的集合。右边这段代码用以帮助理解对象这个概念, “对象”就是对类进行实例化, 在这个例子里面, “张三”就是人类的一个具体实际的例子, 也是学生们用眼睛能够观察体会到的实体, 也就是对“人类”进行的实例化。这两段代码简单详细地解释了“类”是一个抽象化的概念, 而“对象”是该类的一个实体。所以在讲解这两个概念的时候, 要改进以前的方式方法, 不能为了概念而一味地去给学生灌输概念, 更不能把“类”和“对象”这两个概念分开分步骤地去讲解。二是要把这两个有着紧密联系的概念放在一起简单明细地去讲解。
3教学设计的小结
以这样的方式把面向对象程序设计里两个重要的概念理解了, 同时也让学生树立了面向对象程序设计的思想, 那么在后续的课程里, 让学生学习类的三大特征:封装性, 继承性, 多态性, 也就显而易见了。让众多学生进而深入地学习这门课程也就便得简单明了。
摘要:在面向对象程序设计中, 类是一个抽象化的概念, 而对象是该类的实例化。因为类是抽象的, 所以类是不占用内存空间的, 而对象是实例, 所以对象一旦建立就要调用构造函数为其属性和方法分配所占用的内存空间。类是用于创建对象的蓝图, 它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
关键词:类与对象,面向对象程,程序设计
参考文献
[1]姚骏屏, 何桂兰主编.陈素琼, 任姚鹏副主编.Java面向对象程序设计与系统开发[M].西安电子科技大学出版社, ISBN 978-7-5606-3649-8, 2014 (12) .
[3]江开耀.软件工程与开发技术[M].西安电子科大出版社, 2009.
[4]钱银中.java程序设计案例教程[M].机械工业出版社, 2009.
面向对象程序设计实验教学大纲 篇3
关键字:java 教学方法 问题 适应社会
中图分类号:G71 文献标识码:A 文章编号:1672-3791(2014)11(b)-0150-01
当今信息爆炸的时代,互联网软件的开发市场比较火热,从目前计算机编程开发来看大致可分为Java方向以及.net方向,Java的跨平台及高安全性等优点,使它更多地应用在互联网软件开发应用当中。作为计算机专业本科学生将要步入社会做计算机软件开发工作,但是在学校所学知识在实际的工作中可利用比较少,很多东西没有接触到或不了解,没有系统的掌握一门语言,所学知识片面、断章,导致很多计算机专业毕业生,在很长一段时间不能适应,投入软件开发工作。
该文主要分析Java面向对象程序设计课在学校教学环境中存在的问题,通过改进使计算机专业毕业生能更好地适应社会的需要。
1 《Java面向对象程序设计》教学中存在的问题
《Java面向对象程序设计》教学中出现的主要问题如下。
课堂的主要内容为语法,程序只是某一语句语法的示例或验证,而不是在实际当中的应用体现。教师练习的实例脱离实际,这样的教学结构和实例吸引不了学生的视线。大多数学生对程序设计也就毫无兴趣,上课也只作为任务来完成。学得被动,不知所措。主要是由教师多年在教学第一线工作,教学任务繁重,接触面窄导致的。很多老师每周20多节课,两门甚至三门课,整日忙于备课、上课环节当中。
学生兴趣低、无法调动其学习兴趣。在传统的教学中,教材上的例子基本上是一些常规的数学问题,上课用的也没什么变动,导致学生写程序不知道有什么用,学生书写实例代码一味的抄写,不重视、不注意为什么这样写,如果程序出错了,从老师写的代码中对照着查,不去思考,不看整个程序结构,没有主动可言。
学生上机时间少。没能及时巩固所学知识,理论知识学完,等到上机实践的时候很多程序忘得差不多了。当场再翻书查证,既浪费时间,又没效果。
程序调试能力差。许多学生虽拥有自己的电脑,但多数学生只是比较熟悉图形界面操作环境,不熟悉DOS操作环境,容易反写、少写、错写命令。例如javac classname.Java 写成 javac classname 或 classname.Java javac的情况经常出现。
计算机英语水平低。死记命令,看不懂出错提示信息,出错找老师,不去想出了什么错误,怎么解决。
学生实践环节脱离实际。所有实例问题基本是虚构出来的。大众化的理论问题,不能很好地适应我们的学生,学生没有操作感、参与感,只是一个简单的抄写代码过程。
2 教学改革
为了更好地学习《Java面向对象程序设计》课程,培养适应社会的人才,结合学校的实际情况,呼和浩特民族学院针对以上问题作出教学改革从以下几方面进行。
(1)所有程序设计类课程调到计算机机房上课,保证人手一台计算机。在上课的同时学生就能练习验证所学知识,以提高掌握知识的效率。
(2)从新拟定教学计划,将《Java面向对象程序设计》课分为理论及实践两个大环节,学时数各占一半。具体实现过程是把上课时间分成讲授演示和实践练习部分,老师讲授时使用多媒体教学软件实时播放演示内容,所需时间控制在15~25 min之内,其余时间安排学生练习、巩固过程,此时老师可以针对性地辅导、改正学生错误,发现在该内容中容易出现混淆的概念、出现错误的点,修正教学重点,以便更好地教学。
比如调试程序书写的DOS命令,javac及Java命令的错误使用,类的扩展名写不写等问题,都可以在该环节中得到解决。
(3)专门开设《计算机专业英语》课,呼和浩特民族学院是以蒙古族大学生为主,因为英语在高考中考取普通本科院校才算进总分,参加蒙受院校招生中只是参考分,所以高中时得不到足够重视,学生的英语水平普遍比较低下。要想在大学四年学好英语对我们学生有一定的难度,但是开设《计算机专业英语》可以针对性地着重学习计算机领域使用到的英语,提高阅读程序的能力。开设这门课以后,很多学生能理解程序出错的英文提示,修正代码范围就缩小了,能完成简单错误的查找与修改。
(4)开办校企合作专业,请企业工程师讲课。实例不切实际是教学的很大缺点,因为企业工程师与高校教师相比有丰富的软件开发实战经验,从企业工程的讲课中学生能确切知道在企业项目开发中使用java我们可以解决一些什么问题,具体怎么完成的。我们又让学生去企业实习,亲身体验团队开发环境,能快速适应实际软件开发工作。否则我们学生毕业找不着工作或即使找到工作也不适应企业软件开发环境,不能快速投入工作当中。
(5)考核方式多样化。理论课一闭卷纸质题目,主要考概念、关键知识为主,实验课成绩以项目实战结果来评定,开学初期以3~6人组成一队,布置一个项目,让他们按照软件工程的要求完成整个开发的过程,项目的社会调查、可行性报告、需求分析、详细设计、代码撰写、测试等都要形成规范的文档。学生可以在学习过程中不断完善,期末提交项目结果。这样可以培养学生团队合作精神,并能比较系统地掌握一门程序设计语言。
(6)学校、系范围定期举办程序设计大赛,既增加学生的学习兴趣,又对参加全区、全国程序设计大赛打好基础,锻炼学生的实战能力。
3 结语
《Java面向對象程序设计》课程在高校计算机专业占有重要的地位,又是目前软件开发主流软件之一,我们必须紧跟时代的步伐,不断更新教学观念和教学内容,探索新的教学方法和手段提高教学质量,最终达到综合素质高,适应能力强,够适应社会需求的高标准计算机专业人才。
参考文献
[1]李颖.《Java程序设计语言》教学改革的探索与实践[J].中国新技术新产品,2010(1):238.
[2]向模军,刘松青.Java教学的探讨和实践[J].计算机与信息技术,2008(3).
[3]秦靖伟.JAVA教学方法改革与实践[J].产业与科技论坛,2011(11):139-140.
面向对象程序设计实验教学大纲 篇4
一、编写C++程序,要求:(50’)
(1)声明一个类Complex,定义类Complex的两个对象c1和c2,对象c1通过构造函数指定复数的实部与虚
部(类私有数据成员为double型的real和image)为2.5及3.7,对象c2通过构造函数直接指定复数的实部与虚部为4.2及6.5。
(2)编写加法友元函数,以c1,c2对象为参数,调用时能返回两个复数对象相加操作。编写减法友元函数,以c1,c2对象为参数,调用时能返回两个复数对象相减操作;编写取反成员函数,调用时能返回该复数的相反数(实部、虚部分别是原数的相反数)。
(3)定义成员函数print(),调用该函数时,以格式(real,image)输出当前对象。
(4)编写主程序,计算出复数对象c1与c2相减结果,并输出。然后计算c2的相反数与c1相加结果,并输出。
二、编写C++程序,要求:(50’)
(1)建立一个代表空间点的基类Point, 它的数据成员为点的三维坐标,分别用成员变量X、Y和Z表示。建立代表球体的派生类Sphere,继承Point,以该点为球心并增加了数据成员R表示半径。
(2)基类中有计算该点到坐标原点距离的办法,派生类中有计算球体表面积和体积的方法
(3)基类和派生类都有构造函数,并且可以通过构造函数直接设定数据成员。(球体表面积4*3.1415926*R*R,球体体积4*3.1415926*R*R*R/3)
(4)主函数中让用户输入球体中心坐标及半径,然后输出球心到原点的距离、球体表面积和体积。
代码开头部分:
#include
#include
const double PI=3.1415926;
Class Point{
private:
double X,Y,Z;
public:
Point(double x, double y, double z){
X=x;Y=y;Z=z;
}
double distance(){return sqrt(X*X+Y*Y+Z*Z);}
double getX(){return X;}
double getY(){return Y;}
double getZ(){return Z;;}
void setX(double x){X=x;}
void setY(double y){Y=y;}
void setZ(double z){Z=z;}
面向对象程序设计实验教学大纲 篇5
C++ Object Oriented Programming
课程代码:
课程性质:专业基础理论课/必修
适用专业:信息计算、信息安全、统计
开课学期:
2、3 总学时数:10
4总学分数:6.5
编写年月:2000年3月
修订年月:2007年7月 执
笔:刘伟、高学军
一、课程的性质和目的
《面向对象程序设计》是信息与计算科学专业本科生的一门必修课程。面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化的程序数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性。本课程主要介绍面向对象程序设计的方法和C++语言的基本概念。以C++语言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向过程和面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。
二、课程教学内容及学时分配
第一章 面向对象的程序设计方法和C++简介(6学时)
了解面向对象程序设计的基本思想及基本概念;了解面向对象语言的分类和C++中支持面向对象的特点;了解面向对象的软件开发环境;了解Visual C++开发工作台的主要功能。
主要内容:面向对象程序设计的基本思想及基本概念:对程序的的质量要求;程序的模块化和结构化;为什么要面向对象:从面向过程到面向对象C++语言发展的历史:面向对象语言分类;C++中支持面向对象的特点面向对象的软件开发环境与Visual C++。
第二章 程序设计基础(8学时)
通过实例掌握C++程序的程序结构和执行机制;掌握简单的终端输入输出方法;掌握:C++的数据类型、常量和变量的概念;掌握数组类型及数组类型与指针类型的 1 关系;掌握用typedef自定义类型的方法;了解表达式的构成、求值顺序和表达式中的类型转换;掌握常用运算符的使用;了解程序设计风格并在试验中运用。
主要内容:C++的程序结构;C++的数据类型:基本数据类型、复合数据类型和引申数据类型;常量和变量;表达式与操作符;程序设计风格。
第三章 语句与程序流程(1
2掌握程序执行的流程;掌握C++语句结构,包括复合语句、分支语句、迭代语句和转移语句;了解各种迭代语句之间的关系和相互转换的方法;了解转移语句对程序结构的影响。
主要内容:模块化程序设计介绍;函数的一般形式;函数的参数;函数的返回值;递归函数;内联函数;函数和变量作用域;函数重载;函数指针;函数原型与强类型检查。
第四章 类与对象(10学时)
掌握类定义的方法和存取级别;了解结构的概念和结构作为类的定义的方法;了解联合与位域的概念和联合作为类的定义的方法;掌握类的成员变量和成员函数的定义和使用,以及对象的定义;了解友元函数和友元类;掌握构造函数和析构函数;掌握静态类成员变量和成员函数的定义和使用方法;掌握内联函数的定义和使用方法;了解嵌套类与局部类的定义;掌握在函数中对象传递的机制。
主要内容:复合数据类型;类的定义、类的成员变量和成员函数,存取级别,作用域分辨符;对象和类的关系;类的构造函数和析构函数;构造函数的定义;析构函数;类/对象数组;静态类成员:静态成员变量;静态成员函数;内联函数;友元类;this指针;嵌套类与局部类;在函数中对象传递的机制。第五章 数组、指针和引用(10学时)
掌握对象数组及创建初始化和未初始化的数组的方法;掌握指针的概念,包括指针变量、指针表达式、指针数组;掌握指向对象的指针;了解指向函数的指针;掌握引用的概念,包括引用参数、向对象传递引用、返回引用等;了解有关C++的动态存储分配的机制;掌握利用new和delete进行动态空间的申请和释放。
主要内容:对象数组的初始化;数组与指针;数组赋值;对象数组指针的定义、初始化;指针运算;指针数组;指向对象的指针;字符串指针引用;向对象传递引用;返回引用;引用与指针的关系;引用的常用方法;C++的动态存储分配:动态空间的申请与释放。
第六章 继承性与派生类(8学时)
了解类层次的概念及如何将概念和实现转变为类的层次的方法;掌握单继承的 2 定义格式、成员存取控制和向基类构造函数传递参数的方法;了解多继承的定义方式、虚基类和二义性问题。
主要内容:类的层次概念;成员的继承;将概念和实现转变为类的层次;单继承;成员存取控制;受保护基类的继承;向基类构造函数传递参数;多继承;虚基类;二义性问题;多继承的应用。
第七章 多态性和虚函数(8
掌握函数重载的概念;掌握运算符重载的概念;掌握使用friend重载运算符的方法;定义重载某些特殊的运算符的方法;掌握虚函数和纯虚函数的概念;了解抽象类的概念;了解早期和后期联编的概念;
主要内容:函数重载与二义性;重载构造函数;求重载函数的地址;运算符重载;引用在运算符重载中的应用;运算符重载的限制;使用friend重载运算符;虚函数
第八章 C++的I/O系统(8
了解C++的流;掌握格式化I/O的定义格式和定义方法;了解一般I/O流和文件流的关系;了解文件与文件流的关系;了解文件系统的概念;掌握文件类的定义和相关操作的定义、使用方法;掌握利用常用函数进行文件的打开、关闭、读写、定位等操作。
主要内容:流的定义;C++的预定义流;格式化的I/O;创建自己的提取符;创建无参数的操纵符;创建带参数的操纵符;文件与文件流;文件打开和关闭、文件的定位与随机存取、文件的读写。
第九章 面向对象的程序设计环境(6应用程序框架及交互界面的开发。
主要内容:面向对象的软件开发环境;Visual C++开发工作台简述;MFC的结构层次;MFC分层概述
应用程序框架及交互界面的开发;控制类及其编程实现;实现菜单和对话框控制;文档和视;单文档界面;多文档界面。
第十章 用面向对象方法设计应用程序(4学时)
掌握根据给定应用系统的设计要求用面向对象的方法设计实现应用系统;掌握利用Visual C++的界面生成器生成应用程序界面;掌握利用消息机制实现对象之间的交互。
主要内容:综合利用前面所学的内容设计两个具体的应用程序。
了解Visual C++的消息机制;了解Visual C++的基本类库MFC;掌握Visual C++ 3
学时分配:第二学期:72学时,理论课56学时,实验课16学时;
第三学期:32学时,理论课24学时,实验课8学时。
三、课程教学的基本要求
1.了解面向对象的基本概念和使用面向对象技术进行程序设计的基本思想; 2.能比较熟练地用C++语言进行一般面向对象的程序设计; 3.初步掌握面向对象编程环境Visual C++的使用。
该课程实践性较强,需要学员多作练习;主持教师需要有比较熟练的编程经验,对Visual C++环境比较熟悉;针对所留习题,可以组织两到三次讨论,以便学员掌握面向对象设计思想。
总评成绩:平时作业占30%,闭卷考试占70%。
四、本课程与其它课程的联系与分工先修课程:计算机基础训练 后续课程:软件工程
五、建议教材及教学参考书
[1]郑莉、傅仕星编,《C++面向对象程序设计》,清华大学出版社,2003年9月出版 [2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版 [3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版
面向对象程序设计实验教学大纲 篇6
Technology of Object-Oriented Programming 课程编号:30420032 学分数:2 开课单位:计算机技术与自动化学院
课内总时数:40 任课教师姓名及职称:陈勇副教授、柯永振讲师、刘坤良讲师 开课学期:第2学期 教学方式:讲授
一、教学要求及目的:
理解面向对象的基本思想、基本概念;掌握面向对象程序设计语言的基本结构、各种语法成分的作用、语法结构及运用方式;掌握面向对象程序设计的方法和技巧;能比较熟练地用C#语言进行一般面向对象的程序分析、设计,提高编写和调试应用程序的能力。
二、课程的主要内容
1.面向对象方法的历史与现状
面向对象技术的发展历史,主要的面向对象语言介绍。
2..Net Framework概述.Net Framework基本框架,.Net Framework的优点,以及开发平台。3.C#概述
C#的起源和特点,C#源程序的基本构成,C#中非面向对象方面的—些程序特性。4.C#中类和对象
类与对象的基本概念,构造函数,方法与属性,参数传递,静态成员。5.派生、继承、多态性
数据的抽象与封装,派生类的概念,派生类的构造函数,C#中多重继承的处理方法,虚方法的实现,抽象类,重载的实现,接口的实现,代理的实现。6. 基于Windows 与Web的应用程序开发
开发Windows,Web应用程序的基本框架。7.Web Service实现
使用XML的Web Service实现。8.面向对象技术实践
根据所掌握的面向对象技术,分析一个具体案例,利用C#实现其功能。
三、课程教材及主要参考书
1.C#面向对象程序设计,黄聪明,科学出版社,2004年 2.C#程序设计,田原,清华大学出版社,2005 3.C#高级编程,李敏波,清华大学出版社,2005(第3版).4.C#程序设计教程,余安萍,电子工业出版社,2002 5.面向对象的分析与设计,(美)Grady Booch著,机械工业出版社,2005年
6.C#范例解析,朱沭红,电子工业出版社,2002 7.Visual C#程序设计基础教程,邵鹏鸣,清华大学出版社,2005.四、预修课程
C语言程序设计、数据结构、程序设计方法学
五、适用专业、范围
面向对象程序设计实验教学大纲 篇7
关键词:面向对象程序设计,逆向循环教学法,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.
面向对象程序设计实验教学大纲 篇8
1.引言
面向对象分析与设计方法学,代替传统的面向过程的结构化分析与设计方法,已逐渐成为现代软件工程领域中的主流方法。特别是随着90年代末统一建模语言UML的广泛应用,结合UML的面向对象分析与设计方法在国内外学术界和产业界普遍受到重视,成为软件工程三个要素之一。
面向对象分析与设计是软件工程专业开设的一门重要的专业基础课程。该课程主要分为UML基础,面向对象的设计原则和面向对象的设计模式。而统一建模语言UML贯穿于软件开发过程的不同阶段,为软件开发人员建立整个系统的模型 告诉开发人员做什么和怎么做。在软件开发的不同阶段的侧重点又有不同:在需求分析阶段,系统分析师可以用UML来描述用户的业务模型,从而给系统设计师做进一步的设计。在系统设计阶段,系统架构师或系统设计师可以用UML来描述架构模型以便让程序设计师进行实现设计,在详细设计阶段程序设计师可以用UML来描述具体对象模型给编程者来具体实现。由此可以看出UML是用来清晰地描述模型的,它的作用是将计算机软件开发技术和面向对象的设计思想联合起来,对软件生产工业产生了极大的影响。因此,统一建模语言UML课程的重要性显而易见。面向对象设计原则是设计模式的灵魂,它描述了对象设计和职责分配的基本原则。面向对象设计模式是在面向对象设计中针对重复发生的问题的描述和解决办法的统称。综上所述,该课程的主要内容涵盖了软件开发过程中的各个阶段,以及面向对象设计原则和处理常见问题的方法,对软件工程专业的学生是极其重要的。
2.“讲授—案例—互动—实践—考评”五段课堂教学新模式
该教学模式通过“讲授”让学生系统掌握整个知识体系,运用“案例”激起好奇心和引发应用和创新的动力,引导学生自主学习“扩展”知识面和建构自己的新知识,在项目“实践”中综合应用强化创造,最后通过综合“考评”合理评定出学生的成绩。加强工程化的教学内容建设,在课堂教学系统地传授知识的基础上,注重工程性的课程案例和循序渐进的课程项目实践的有机结合,为学生自主性和研究性的扩展学习搭建优良的网络教学环境。
1)“系统讲授”让学生系统地掌握整个知识体系。教学内容强调工程化,适应软件开发技术发展快的特点,不断跟踪国际最新标准和最新技术,及时更新教学内容,反映基于构件、模型驱动和面向服务等现代软件开发技术的最新发展趋势。课堂教学采用启发式教学,指导学生阅读经典学术论文并进行综述、评介和讨论,撰写读书笔记,培养学生阅读、概括、评价、撰写和表达等基本科研能力。
2)“案例教学”让学生置身于模拟的真实环境中,學习如何进行具体实践和问题解决,引发学生研究性学习和创新的动力。案例分为基础-扩展-提高等3个阶段。基础阶段针对UML和OOAD方法等基本内容,着重于单项练习和简单系统设计;扩展阶段着重于架构设计和设计模式、框架设计和复用等现代技术,将基础阶段的简单系统扩展为基于构件和框架复用、支持持久框架的Web系统;提高阶段则结合专题讲座,了解最新技术发展趋势。
3)“网络加自主的互动方式” 创造多元化的教学环境,将课堂上的教学与课堂外的师生互动无缝的进行集成。当今互联网环境为我们提供了便捷、丰富的交互手段,借助其以整合不同的教学要素来提升整体的教学效果,这也符合以学生为中心的教学理念。基于以上的认识,在教学过程中,可以依托网络教学平台提供丰富的互动方式,在网络上共享学习资源、在线讨论、即时沟通,达到了充分调动学生学习热情的目的。在交互的过程中,通过开放性的问题驱动学生自主选择感兴趣的方向做深入的学习和研究,充分地释放学生的个性和创造力。整体而言,课下教学组织在网络加自主的互动方式支持下有力的支持并拓展了传统的课堂教学,不仅对教学效果有明显的提升,而且对培养学生的主动性、协作能力乃至钻研精神和创新意识都有着潜在的不可忽视的帮助。
4) “项目实践”培养学生运用知识、解决问题和团作协作的能力。学生参照课程案例、文档模板、实践指南和参考资料,结合有助教指导的课内上机、课外自由上机和有助教在线指导的网上辅导教室等多种教学手段,以3-5人的小组为单位的团队方式完成一个课程项目,项目题目和需求是在教师指导下由学生自主确定,以鼓励创新。项目进度和课堂教学及课程案例基本同步,循序渐进。
5)“综合考评”从知识、创新、应用等多方面进行评价,根据每节课、每次作业、项目的每阶段评审和考试来综合考核成绩。成绩一般由课堂表现、每周作业、读书笔记、项目阶段审核和项目答辩、期末考试等部分组成。
本课程充分利用信息技术,课堂教学采用多媒体信息技术手段,基于Web的网络教学平台提供论坛、答疑、作业、问卷调查等课程互动功能,网上辅导可提供无时空限制的即时学习、小组讨论和辅导帮助等功能。
课堂教学实施方面,研究启发式、交互式等多种形式的教学方式。建立网络教学平台,同学生充分沟通,不断学习、改革和实践。摈弃了过去只注重书本内容的教授,引进了实际工作的案例。大量的案例分析,促使学生从实际出发,从现实的角度看待问题、分析问题。对项目工程的亲身实践,使得学生把所学转化为所用,并在所用中不断充实。
3.教学内容顺序及对应的学时安排如表1
除本课程的课程项目实践外,还可鼓励学生参加其他实践活动,如大学生学生创新项目的申报,可进一步强化5段式教学新模式中的 “实践”,培养学生解决实际问题的能力和创新能力。
4.课程的重点、难点及解决思路
本课程的设计符合UML最新国际标准,覆盖了国际软件工程知识体系的相关知识点,分析和设计并重,原理和案例兼顾。课程内容的重点主要有UML可视化建模技术、领域建模和面向对象系统分析方法、面向对象系统设计方法、设计模式、框架设计和复用等方面。课程内容的难点主要有对UML的深入理解和运用、领域对象识别和关系分析、架构因素分析和架构设计、分析类与设计元素的区别和联系、设计模式的深入理解和运用等。解决办法主要是通过分阶段的综合性课程案例、循序渐进的工程性课程项目实践等加强实践性教学环节,让学生在实践中学习和领悟。 另外,本课程由于工程性和实践性很强、相关技术发展快、涉及面广,在课程体系建设、教学建设和实施等方面都存在挑战。
5.实践教学的设计思想
循序渐进、手段多样的工程性课程项目实践。学生参照课程案例、文档模板、实践指南和参考资料,结合有助教指导的课内上机、课外自由上机和有助教在线指导的网上辅导教室等多种教学手段,以3-5人的小组为单位的团队方式完成一个课程项目,鼓励创新。进度与课堂教学和课程案例基本同步,循序渐进。
进一步搭建网络教学平台,将部分学生的优秀作品在平台中展示。学生利用课外时间以团队方式完成多个实际软件项目的开发,实验进度和课堂教学基本同步。项目题目和需求是在教师指导下由学生自主确定,以鼓励创新。通过实践,学生能把所学转化为所用,并在所用中不断充实,同时也加强了软件工程规范的训练,培养了学生的团队精神和沟通能力。
6.结束语
通过本课程的教学,使学生掌握面向对象技术原理、面向对象的软件系统分析和设计方法、软件设计模式等,能结合UML和工具进行面向对象的软件系统分析和设计,并具有软件开发实践和项目组织的初步经验、创新意识、团队精神。
面向对象程序设计心得体会 篇9
这次课程设计让我收获到很多,上个学期我们也有过课程设计,但是我们都是从网上下一个程序,连带着报告,看一遍程序,修改修改报告,然后就直接去答辩,都是糊弄糊弄就过去了,自己根本就没有付出过努力,到现在,那个程序的内容是什么全忘光了。但是这次的课程设计,虽然老师您的要求十分严格,但是却是让我切实体会到了自己动手的快乐。要我们自己设计一个管理系统,从定题目,到开始写代码,全部都是自己来。我在开始课程设计前的两周就开始考虑我课设的时候应该做什么内容,想做一般同学都能想到的学生管理系统,但是就怕会有类似的不敢做,冥思苦想了好久,最后才定下的备忘录管理系统,其实所有的管理系统的本质都是一样的,增,删,改,查,但是,这些东看似简单,做起来却难。像我在做增加的时候,就遇到了问题,最后通过老师的调试,才发现原来是我在开始定义字段名的时候就弄错了。我们其他人也一样,中间遇到的问题,也及时的请教同学和老师,原来在寝室,我们都是开着电脑上qq,水人人,看视频,但是当课程设计开始的时候,我们这个寝室都在那做这个管理系统,谁谁谁的查询不好使了,我们也都停下来帮她,当我们都不解决不了的时候,我们就和学得好的男生开语音,让他们教我们,帮我们解决,再解决不了的,我们就来找老师,在机房里大家一起努力,攻克难关。有些时候,困扰我们很长时间的,可能就是一个小小的逗号,或者是被忽略的空格,这些都是我们上课的时候没有注意的,没有好好听课的地方,都在课设的时候碰到了,我在做自己的课程设计的时候,我也经常出错,经常忘了一些细节的东西,比如登陆窗体的时候,忘记了在program.cs里把Form1改成LoginForm,我一直在调试,但是始终出现的是主窗体,登陆窗体始终出不来,最后才想起来忘了这个小步骤,但是这也让我明白,上课的点滴小事,也是非常重要的,除了上课认真听讲之外,下课了还得很认真的看代码,把代码的意思弄明白,渐渐的,像数据库里的表怎么设计,怎么连接数据库,按钮怎么设置,还有很多我都能掌握,所以感觉这次课程设计带给我很多的,课程设计不仅是检查一个人知识掌握了多少,其实更重要的实检测你的实践能力,以及看你是否细心、是否有缜密的思维,所以,我们要在课设的时候加强锻炼,磨练自己,使自己有更高的提高。
面向对象分析与设计课程总结 篇10
课程总结
0923010208 指导老师:庄育飞
这学期学院开设了面向对象分析与设计(UML)这门课,通过老师的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。我觉得学习这门课还是受益匪浅的。
面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。
OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复
用、可扩展、可维护性、弹性。
OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。
面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。
在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。
访问一个聚合对象的内容而无需暴露它的内部表示。
支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象中的。
为遍历不同的聚合结构提供一个统一的接口。根据实现方式的不同,效果上会有差别。同时还简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。
在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
在Java Collection的应用中,提供的具体迭代器角色是定义在容器角色中的内部类。这样便保护了容器的封装。但是同时容器也提供了遍历算法接口,你可以扩展自己的迭代器。至于迭代器模式的使用。客户程序要先得到具体容器角色,然后再通过具体容器角色得到具体迭代器角色。这样便可以使用具体迭代器角色来遍历容器了。
OOA和OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生鸿沟,这是相对结构化思想的好处,因为从功能模块到某块详细控制逻辑设计两者之间的联系不是十分紧密,需要分析人员与设计人员的再沟通。
通过课程的学习与实践,对面向对象的理念,以及相关方法,设计模式有了更为深刻的理解与掌握。针对面向对象的分析与设计课程的授课内容及方法,我个人觉得对我还是有不少的帮助和 提高。结合自己的工作,虽然与开发接触的比较少,但是在运维过程中,如果能了解开发原理,结合实际的工作,会对一些源代码的分析能力以及工作效率的提高起到明显的帮助作用。
庄老师上课经常说一些与课程无关的内容,我已开始并不理解他的作法,后来我慢慢认识到面向对象分析设计的学习就是培养思想的一种过程,这种思维方式还是需要大量的实践才能灵活的运用。目前的阶段,只能说是知道有这样一种设计思想、这种解决问题的方案,至于在何时应该使用、如何去使用,就需要在今后的经验中去累积了。
下面是一些我掌握的基础知识
9种UML图:
类 图:描述类的结构(包括属性以及类之间的相互关系)
对象图:对象以及对象之间的相互关系
构件图:构件及其相互依赖关系
部署图:构件在各节点上的部署
顺(时)序图:强调时间顺序的交互图,用于将系统行为分配给类。一般包含了边界、控制、实体对象
协作图:强调对象协作的交互图,与时序图同构
状态图:类所经历的各种状态,包括状态之间的转换以及触发转变的事件
活动图:对工作流程建模
用例图:与用例文档结合进行需求捕获,测试依据
面向对象设计七个原则:
开-闭 原则、里氏转换原则、依赖倒转原则、接口隔离原则、组合/聚合复用原则、迪米特法则、单一职责
ICONIX开发过程:域模型——用例文档——健壮性分析——健壮图——时序图
设计模式:
1)创建模式: 涉及对象的创建
单例模式, 工厂模式, 建造者模式,原型模式
2)结构模式:涉及类和对象的组合
Facede外观模式, 代理模式, 适配器模式, 装饰模式
3)行为模式: 刻画了类和对象交换及分配职责的方式.主要目标是解耦
观察者模式, 命令模式, 模板模式
本学期学了《面向对象系统分析与设计》课程,本课程我们主要是学习了面向对象的统一建模语言UML,了解面向对象技术的基本概念,掌握面向对象的分析和设计方法,以及与面向对象技术相关的一些软件开发技术,同时掌握在IBM RSA软件环境下用UML进行分析和设计的技术。在《面向对象系统分析与设计》 的上级课程上,我们的实践能力方面着重设计构思和设计技能的得到基本训练,熟练的上机操作能力和分析能力,加深理解、验证、巩固课堂教学内容。
数据库是以信息处理为核心的任何应用系统的基础,数据库设计的质量直接关系到系统开发的成败和优劣。数据库设计的方法与系统使用的开发方法有着密切的关系,同时还与所应用的数据库模型(层次模型、网状模型、关系模型、对象模型)有关。目前经常采用E—R(Entity—Relationship)图的方法设计数据库。但E—R图设计数据库存在的主要问题是只能对资料建模,而不能对行为建模。而UML类图的描述能力更强,UML类图是E—R图的扩充。对于关系模型来说,可以用类图描述数据库模式,用类描述数据库表。
UML是应用面向对象方法进行系统开发的全程建模语言,可用于业务分析、需求分析、系统设计、系统实现与测试等系统开发的各个环节。UML概念设计的基本工作分为两个方面:
· 一是从系统分析和系统设计所建立的各种类图中抽取持久型类。
· 二是确定持久型类之间的关系,并用类图描述这种关系,从而把类图作为数据
库概念设计的结果。
1.抽取持久型类
持久型类是指类的完整信息需要在数据库中存储的类。在UML中,类可以分为
边界类、实体类和控制类三种类型。
· 接口类和控制类的信息一般不需要长久存储。
· 持久型类只可能是实体类,但并不是所有实体类的信息都需要长久地存储,持久型类只需要从那些信息需要长久存储的实体类中抽取。
2.确定类关系
在比较复杂的系统分析和设计中,并没有建立立足于整个系统的整体类图,而只是建立了一个个针对具体用例的类图。也就是说,所提取的持久型类被分散到各个用例类图当中了。因此,需要对抽取的持久型类进行分析,以确定它们之间的相互关系,建立起反映这些类关系的类图。
UML数据建模与E—R图有着本质的区别。在E—R图中,应用型数据库系统的重点是数据库结构。概念设计是应用型数据库系统开发的重点和难点。而UML是用于面向对象系统开发的全程建模语言,可用于需求分析、系统分析与设计、系统实现、系统测试等系统开发的所有环节。由于UML基于面向对象技术,而要保持方法的一致性,最好选择面向对象数据库。但是,目前的面向对象数据库在实现技术上还不十分成熟,即使应用面向对象技术和环境开发应用系统,通常的做法是使用UML进行建模,用关系型数据库储存和管理数据。
通过一学期的学习和实践,我了解到uml具有以下特点[1]:
(1)面向对象。uml支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图形和方法,能简洁明了地表达面向对象的各种概念。
(2)可视化,表示能力强。通过uml的模型图能清晰地表示系统的逻辑模型和实现模型。可用于各种复杂系统的建模。
(3)独立于过程。uml是系统建模语言,独立于开发过程。
(4)独立于程序设计语言。用uml建立的软件系统模型可以用Java、vc++、smalltaik等任何一种面向对象的程序设计来实现。
(5)易于掌握使用。uml图形结构清晰,建模简洁明了,容易掌握使用。使用uml进行系统分析和设计,可以加速开发进程,提高代码质量,支持动态 的业务需求。uml适用于各种规模的系统开发。能促进软件复用,方便地集成已有的系统,并能有效处理开发中的各种风险。
而且uml是一种功能强大的、面向对象的可视化系统分析的建模语言,它采用一整套成熟的建模技术,广泛地适用于各个应用领域。它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。
通过对学籍管理系统的开发可以看到,uml作为软件工程中的建模语言,代表了面向对象方法的软件开发技术的发展方向,具有重大的经济价值和国防价值,并获得了国际上的广泛支持,具有非常好的应用前景。
面向对象程序设计实验教学大纲 篇11
关键词:城乡一体化;地籍测量;数据模型
1.地籍测量对象的描述
在地籍信息系统中,经常使用地籍单元概念来表达地籍空间对象。地籍单元是用来描述地籍管理的主要信息单元,兼有单位性和结构层次性。地籍空间对象本身就包含了地理信息系统传统意义上的地籍单元图形实体以及地籍单元属性。作为一个空间实体,图形是其本身的属性。作为逻辑描述时,不必考虑实体属性本身的存储和表达方式,重要的是将其固有特征以属性来表现。
2.城乡一体化地籍测量对象的建立
2.1基于地籍要素的对象
建立城乡一体化CIS的一个指导思想就是使农村地籍在原来土地利用现状的基础上加强对权属的管理,城镇地籍在原来地籍调查的基础上加大对地类的调查,从而能够在全面整合原有传统模型的基础上,建立一个适用于城乡一体化的地籍数据模型。
城镇地籍数据组织单元街坊和农村地籍数据组织单元村坊可以求交集,得到的将是集城镇和农村的地籍数据,这就意味着这一集合与城镇和农村的地籍认知无关,可以定义为城乡一体化的地籍要素,以实现城镇和农村地籍数据组织的一体化管理。
城乡一体化地籍对象包括城镇和农村的地籍对象,它们在空间上是连续的。根据面向对象的方法,结合地籍空间概念可以得出城乡一体化的地籍对象,包括空间对象和非空间对象。
空间对象有:行政区域、地籍调查区、行政界线、宗地、界址线、界址点、地类、注记。
非空间对象有:土地产权证、地籍调查表、土地登记项目。城乡一体化的地籍对象可以概括为点对象、线对象和面对象以及复杂对象。点对象主要是指界址点,线对象主要指界址线、行政界线及地类界线;面对象主要指行政区、宗地和图斑;复杂对象主要是指对由点对象、线对象、面对象的相互组合而成的复杂地物对象。
2.2城乡一体化地籍数据对象的关系
城乡一体化地籍数据对象之间的关系主要包括空间关系和非空间关系。空间关系包括拓扑关系、顺序关系和度量关系,地籍对象之间最典型的空间关系是宗地、界址点和界址线三者之间的关系。宗地、界址点和界址线也是城乡一体化地籍对象中最重要的三个要素,城乡一体化的各级地籍单元的界线必须最终由宗地逐级汇总而成。
2.2.1界址点对象和界址线对象的关系
界址线是由两个界址点按一定的顺序连接而成,因为界址线是有方向的,所以两宗地共用的界址线根据起始点和终止点的不同而不同。对于界址线的存储一般采用依次记录其相对应的起始界址点和终止界址点即可。但对于农村地区可能存在有多个非界址点的中间点的界址线的存储,可以在记录起始界址点和终止界址点之间再添加记录这些非界址点的中间点坐标。
2.2.2界址线和宗地的关系
宗地是由界址线构成的封闭区域。由于宗地的完备边界系统由界址线来实现,所以界址线和宗地之间不可能出现界址线穿越宗地边线的情况。
界址线和宗地的关系只有两种可能:一种是界址线在宗地上,是宗地边界区域上的一条界址线;另一种就是界址线不在宗地上。对于宗地的存储只需依次存储构成宗地的所有的界址线。
2.2.3宗地与宗地之间的关系
根据拓扑学上的“剖分”概念,宗地与宗地之间是不可能出现任何交叉关系。宗地和宗地的关系可以用以下四种关系表示:
(a)相接,宗地和宗地之间有且只有一个公共界址点;
(b)相邻,宗地和宗地之间有且只有一条公共界址线;
(c)相离,宗地之间没有公共界址点;
(d)套接,宗地之间存在包围与被包围的关系。
2.2.4地籍数据对象之间的非空间关系
非空间关系就是有非空间地籍对象介入时的地籍对象之间的关系,包括图与表的关系和表与表的关系。
图与表的关系:一种图表关系就是宗地与地籍调查表和土地产权证之间的关系。地籍调查表和土地产权证实际可以理解为是宗地的附加属性,地籍调查表通过特定的标志符(单位代码+宗地号)与宗地相对应,来补充说明宗地的属性。土地产权证间接和宗地相关,共同反映宗地的权属状况。
表与表的关系:表与表的关系例如地籍调查表主表和子表的关系,这个关系比较简单,子表是主表的一部分,主表是所有子表的概括。
3.城乡一体化地籍测量概念模型
概念模型是对真实世界中问题域内的事物的描述,不是对软件设计的描述。为了表示地籍概念数据模型,创建一个图表。图表记录了数据库中包括的数据实体,这些实体及其相关域之间存在的关联。数据模型不仅表示了所包括的元素,还表示了这些元素之间,尤其是地籍元素之间的相互联系,拓扑关系,取值域等。
综合上面所描述的地籍对象特点,利用面向对象的建模语言UML对地籍对象进行建模,主要描述地籍、权利对象、地形、地类等概念模型,及相互关系。逻辑数据模型在概念数据模型的基础上创建。逻辑数据建模体现数据的用户视图,逻辑数据模型的设计利用UML进行面向对象建模,采用ESRI提供的Geodatabase建模模板,使创建的模型既符合工业标准,又具有Geodatabase模型的特点。
建立面向对象的城乡一体化地籍测量数据模型是建设城乡地籍数据库的重点。本文通过分析地籍测量对象的描述,建立城乡一体化的地籍对象,从而实现城镇和农村地籍数据组织的一体化管理。最后利用面向对象的建模语言UML建立了城乡一体化的地籍概念模型。
参考文献
[1]詹长根.现代地籍技术[J]测绘信息与工程.2008.29
[2]高延利.我国地籍信息化建设现状与发展[J]国土资源部地籍司.2008
面向对象程序设计实验教学大纲 篇12
关键词:面向对象的程序设计,演示,Vfp6.0,归纳
面向对象的可视化程序设计,最适宜的教学手段是采用演示可视化的方法,使学生通过屏幕上的投影,清晰的看到面向对象程序设计时,各操作阶段所形成的界面,最终得出的目标文件,以及目标文件的运行结果。
Vfp6.0是一种当今比较流行的运用于微机的数据库管理系统,具有很强的命令和语言功能,不仅支持过程化编程技术,还支持面向对象的可视化编程技术[1]。为了真切、形象、生动地教授这门课程,采用演示方法进行教学。
演示教学方式相对于传统教学的课堂板书式的教学方式,存在着新的值得探索的课题,新的值得把握的处理艺术。对于演示教学方式不仅要注意演示的操作及其描述,还特别要注意对演示的内容的归纳总结。演示教学把学生引入了科学的迷宫,而归纳可以使学生走向畅游科学的道路。面向对象的程序设计所涉及的新知识及各个方面的要素很多,对于任何初学者而言,完全如同进入迷宫。所以,如何使用归纳,其作用尤为突出,学生能否掌握面向对象的程序设计的方法,关键就在于此。
在Vfp6.0中,表单设计最完整、集中地体现了面向对象程序设计的方法和特点,单独地讲述面向对象程序设计的方法,存在着枯燥和空洞的问题,学生难于接受。所以,面向对象程序设计方法的教学适宜与表单设计的讲授结合起来,使两者内容并行地深入。
在表单设计的教学中,特别强调对于面向对象程序设计的基本步骤的归纳:
1. 确定对象;
2. 确定对象的属性;
3. 确定某些对象的事件;
4. 编写事件的响应代码。
上述归纳,可以使学生在设计表单时不至于不知方向,避免发生混乱。
在学生把握了面向对象程序设计的基本步骤之后,进一步向学生指明:为了修改表单,为了使设计简明,可以将面向对象程序设计的基本步骤进行穿插,但面向对象的程序设计仍然由四个基本步骤组合而成。在表单设计中,简明化是指先实现功能(核心内容),然后进行美化(外观形式处理)。同时指出,就像使用Office的Word等软件使用中要先“编辑(内容处理)”,“后格式(样式处理)”一样,两者的道理是一样的。这种方法可以避免由于内容犬牙交错所造成的问题复杂化。简明化可以避免混乱,可以把由错误所造成的损失降低到最小。
经观察发现,学生在表单设计的上机操作时,最感兴趣的是对表单行进美化,而最大的困难是编写程序代码,在程序代码这一表单设计的核心内容实现之前,学生已经对表单进行了复杂的美化,而学生在编写代码时又难免出错,由于不注意简明的原则,学生的表单设计极易发生混乱,造成失败,费工多时的美化工作也随之付之东流。所以,所做的“先功能后形式”的归纳对于学生顺利完成表单设计的上机操作产生了良好的效果。
在讲课时,不仅要使学生掌握具体内容,还要通过具体内容掌握一般的处理问题的思想方法。上述的表单设计方法所体现的是,要善于把待处理的对象分解成若干基本的层次,并且按层次处理问题,这样对复杂问题的处理就等同于对若干简单问题的处理。这种思想方法可以有力地提高学生的素质。
对设计表单所作的归纳体现的另一种思想方法是,要认识复杂结构的关键环节。对于利用表单设计器设计表单时,存在表单控件工具栏、布局工具栏、表单设计器工具栏、属性窗口、代码窗口、数据环境生成器、表单生成器………,这些工具构成了创建表单的强大功能,但是面对这么多的工具,怎样合理的使用,最好的方法是从表单设计器工具栏开始,只要打开表单设计器工具栏,就可以通过直接点击工具按钮的方式,方便地打开其它表单设计工具。所以在用表单设计器设计表单时,要意识到首先寻找或者打开表单设计器工具栏,这种意识有利于把握表单的设计,减少周折。本例说明复杂往往是一种表面现象,复杂结构的整个组成部分具有规律性的联系,并且存在着关键环节,从关键环节开始就可以把握整个结构。在计算机教学中,有些要诀似乎是老生常谈,例如说,点击右键可以出现和当前被点击的对象相关联的快捷菜单;在Vfp6.0中,如果当前运行的程序不同,所显示的主菜单和下拉菜单的选项也不同,但是学生未必对这些要诀产生应有的意识。利用Vfp6.0系统,学生进行各种操作时,经常出现不知所措的情况。所以,经常适时适地强调这些学生熟视无睹的要诀及技巧,对于提高学生计算机使用技能是很有益处的。广而论之,对于那些所熟知的道理,究竟有没有意识到去遵循呢?又遵循了多少呢?其实很少,宝库就在身边,不要忘记去利用。
不能给学生提供一堆知识材料,要提供一个科学框架。忘却是难免的,随着时间的推移,材料会丢失,但是框架将保存,在需要时,材料将会被很快地填充到框架中。那么如何形成一各框架,这就要进行归纳,只有通过归纳才能在教学中形成科学的框架。所以,对于利用现代多媒体教学方式,进行可视化演示教学时,不可被形式所局限,不仅要注意演示的操作步骤描述,还要特别注意对于演示内容的归纳总结。
参考文献
【面向对象程序设计实验教学大纲】推荐阅读:
《面向对象程序设计》课程教学大纲05-22
C 面向对象程序设计课程教学大纲05-29
面向对象程序06-11
面向对象分析设计12-24
面向对象的程序设计06-16
面向对象程序设计方法08-27
面向对象程序设计实习报告10-08
java面向对象程序设计教案12-20
面向对象程序设计心得体会01-17
“面向对象的程序设计基础”课程总结07-22