面向对象课程设计

2024-05-11

面向对象课程设计(精选6篇)

篇1:面向对象课程设计

面向对象分析与设计

课程总结

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作为软件工程中的建模语言,代表了面向对象方法的软件开发技术的发展方向,具有重大的经济价值和国防价值,并获得了国际上的广泛支持,具有非常好的应用前景。

由于明年需要参加考研,复习很紧张,所以这学期面向对象分析与设计这门课程我并没有深入地去学习,但这无法影响我对UML的喜爱,老师上课很生动,不光在学习上教导我,在生活和做人理念上也对我有所帮助。这篇学习总结写得比较乱,但我都有用心,在以后的学习过程中我会继续努力,再次多谢庄老师的教诲。

篇2:面向对象课程设计

关键词:面向对象程序设计 教学设计 能力引言

“面向对象程序设计”是大多数高等院校计算机专业的一门专业基础课,该课程是为“以面向对象技术为核心思想”的后继专业课程奠定一个扎实的专业基础。但对面向对象思想方法的抽象性和复杂性以及载体语言的高难度,使之成为一门比较难以学习和掌握的课程,学生学习效果不佳,应用能力不强。因此在教学过程中应注重知识体系规划和教学过程设计,提高教学效果,促进学生面向对象技术应用能力的形成。

明确教学目标和教学内容

2.1教学目标

“面向对象程序设计”课程是计算机科学与技术专业教学计划中的专业必修课,也是人才培养计划中的专业基础课程。按照学科根本特征的要求,课程中对学生进行基础理论教育,强化学生“计算思维能力”和“面向对象思维能力”的培养;通过选择适当的知识载体,循序渐进地向学生传授包括基本问题求解过程和基本思路在内的学科方法论的内容,将流行的开发系统作为学生学习过程中的实践环境和学生自我扩展的内容来处理,使得学生既有基础,又有必要的实践经验,完成对后续课程教学的铺垫和引导作用。

2.2教学内容

根据专业的培养目标和课程在专业中的地位,将教学内容规范为三个部分。

①基础部分。主要讲授面向对象分析和设计的基础理论,课程用到的语言工具中的必要技术。

②核心部分。阐述面向对象技术的抽象性、封装性、继承性和多态性四个特征的设计规范,以及采用支持面向对象技术的语言实现这些特征的设计技术。

③提高部分。讲授面向对象核心技术的一些实际应用领域。

注重教学设计,培养学生分析、解决问题的能力

3.1激发学生兴趣

“面向对象程序设计”课程难度大,被学生列为最难学的课程之一。建立学生的学习信心很重要。法国教育家卢梭曾说:“教育的艺术是使学生喜欢你所教授的东西”,学生对教师教授的知识产生了兴趣,就有学习的积极性和主动性。为此,将学生的学习兴趣越早地融合到课程之中,就越会对他们能力的形成产生积极的促进作用。

要使学生感觉不太难,树立他们的学习信心,讲课时一定要抓重点,教学上有重点与没有重点是大不相同的,平均使用学生的精力和学时是绝对不可取的。本课程的重点是面向对象程序设计的关键技术,包括完善的封装、派生、多态、模板、异常处理机制和在构造函数中动态分配资源以及在析构函数中释放资源,这是面向对象程序设计的精髓。因此在教学中不是泛泛介绍描述工具的语法和框架,而是突出关键技术“精讲多练”,学生可花较少的精力获得较强的编程能力。另外,处理编程大局与编程细节的关系,教学中要给学生一个明确的设计规范,即采用什么样的准则和思路及运用怎样的工具去解决问题,采用业界普遍采用的三步方法:面向对象分析、面向对象设计、面向对象编程,来确定宏观思维,重点讲解程序的整体构造。此前提下,再讲解怎样用描述工具阐述算法,需要注意的是,课程的前几次课要讲清编程的细节,以后随着教学的推进而逐步淡化,防止学生陷入描述工具的语法现象之中不能自拔。通过这样的处理方式,一方面引发了学习兴趣,提高了学生的宏观思维能力和自学能力,另一方面也达到了将学生快速融入课程的目的。

3.2注重学生能力培养

“面向对象程序设计”课程应采用多媒体课堂授课的方式进行教学,在采用这种教学方式的教学过程中,教与学的矛盾在一段时间内也出现过。一方面,作为主讲教师在有限的学时内将知识体系传授给学生,必须借助一定的工具,投影仪器是首选工具,它能够很好的宏观展示程序整体结构,又能够很好地微观剖析局部算法,这对课堂教学中发挥教师的主导作用是非常有利的。另一方面,这种方式学生的反映是幻灯片切换快,笔记记不清楚,影响听课效果。经过摸索,较好做法是:

①优化多媒体资源

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

②以问题驱动课堂

课堂中,案例教学不好运作,案例太小,学生认为是教师自己编的假案例而没有兴趣思考和完成,案例太大,一次课的时间又讲不清楚,分几次课讲解又涉及到教学安排,牵扯太多的事情。问题驱动相比案例驱动,具有灵活的优点。因此,在教学中将问题有目的、有组织地提出,启发、引导学生的思维方向,迫使学生动脑思考解决办法,使他们逐渐习惯以专业的思维思考问题和解决问题。应当注意的是,问题的提出不仅仅在于正面,有时教师也会故意误导学生思维,当然要留有破绽,让学生去发现老师讲错了,这时学生一般马上会指出教师的错误,对学生的自信心和判断力培养有很好的帮助,当然这种氛围并不是在所有班级都能够达到良好效果,相比之下,集体素养较为活跃的班级更适合这种方式。

③作业内容要慎重

让学生去完成作业不是目的,也不是完成教学环节的任务。作业内容要考究,一定要留那种教材能够看到影子,可又看不到全部面目的题材,要迫使学生去图书馆或者到互联网上查阅资料,要求必须在作业上体现出查阅资料的特征。这样可以减少作业的抄袭,促进学生学习能力的提高。

④掌控实验进程,实现因材施教

面向对象程序设计中的理论需要语言工具将其在机器上实现出来。如果学生少做练习或是少上机实践,就只能算是学过知识,有经历,并不能形成能力。只有多阅读程序、多编写程序、多上机调试,才能将知识掌握并完成能力转化。实验教学中应逐步提高设计类和综合类实验的比例,以“任务”和“课题”的形式提出实验要求和具体的实验成果,事先没有参考答案可供借鉴,要求学生通过阅读教材和相关资料,掌握实验所涉及到的知识,通过综合利用这些知识来设计、开发并最终完成实验项目。实验项目的布置时间为实验课开始前的理论课,以便学生能够有充足的时间查阅资料,使学生通过这个查阅过程,提高针对问题域选材的能力。考虑到学生的层次,在每次实验课结束前的20分钟,教师都将本次实验项目的设计思路和设计方法进行快速讲解。让完成项目的学生对比一下自己的程序和教师的程序有没有差别,如果有,那么差别在那里,是优于教师的还是不如教师的;让没有完成任务(不论所做工作离项目的解决差多远)的学生听听解决问题的思路,看看完成任务的技法。这样能够兼顾不同层次的学生需求。真正地提高学生对理论知识的理解能力和应用能力。

课堂教学只能满足大部分处于中间段的同学,处于上游和下游的学生对课堂知识的理解会表现出饥饿和剩余现象。针对于这种情况,最好的解决方法就是充分利用实验课时间。针对学生调试程序过程中出现的问题答疑解惑,对尖子学生点拨即可,并可以追加选做题目,让他更进一步。一方面起榜样作用,刺激同学、引领同学;另一方面,要尽可能地发掘和培养尖子学生,保证专业竞赛人才的选拔。

3.3教师与学生的互动

教师与学生的互动体现在两个方面:

一方面,教师与学生间心灵和人格的沟通。教师们常说“教书育人”,可是学生不愿意听大道理,他们更愿意看教师的言行。学生会从任课教师对他们的课堂考勤是否严格、教学准备是否充分和教师对课堂的主导作用等方面观察教师。大学生一般都是上进的,如果教师做的好,那么学生会跟老师学.“教书育人”要从细节做起。

另一方面,师生互动的形式要体现出趣味性和鼓励性。由于知识含量和生活背景的不同,学生回答问题时肯定会对同一个问题有着不同的判断,应由教师来主导课堂的舆论倾向,找持有不同意见的代表来阐述自己的观点和理由,让学生知道每种判断的根据是什么,然后大家表决,自己支持哪一种观点,这时会发现有些同学对哪一种观点都没有支持。教师采取的做法应该是鼓励表达观点的,而不论你支持那种观点,施压于无观点的学生。促使学生思考问题,培养学生求真到底的科学精神。通过这样的方式,师生之间确立了良好的学术关系,也会使学生相信这个老师有着严肃的做人做事原则,学生就会对老师逐渐地建立信任感,进而愿意学习老师教授的知识。科学设置课程设计,提高应用能力

课程设计为学生提供一个既动手又动脑的独立实践机会,使学生将课本上的理论知识和实际有机地结合起来。

由于课程设计实践性比较强,而且还需要按照软件工程的标准去做,因此设计的时间就相对短些。考虑这些因素,“面向对象程序设计”的课程设计应注意以下几个方面。

4.1任务早布置

授课内容超过三分之二时,布置设计题目和要求,也可让学生自选题目。将学生分成小组,选出负责人,由负责人进行分工和协调。学生在后面的学习中,边学习,边完成分配的设计任务,逐渐实现课程设计的功能。从而在课程设计的时间内节省出大量的查阅资料时间,为程序整体设计和调试及撰写设计说明书赢得时间,为高质量地完成设计奠定基础。

4.2题目难度适中

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

4.3开发工具任选

可以使用实验课上使用的开发工具进行课程设计的项目开发,也可使用其它开发工具完成课程设计。在项目完成情况相同或接近的条件下,使用其它或免费开发工具完成课程设计的学生要酌情加分,以鼓励学生的创新精神。

结束语

具有合理知识架构和较强应用能力的计算机专业应用人才为培养的最终目标,“面向对象程序设计”课程的教学效果在很大程度上决定了这一目标的实现。

将课程内容融入到理论课、实验课和课程设计三个教学环节的设计给出了提高和保证 “面向对象程序设计”课程教学效果的方法,同时也为其它计算机专业课程的教学提供了一定的借鉴。在面向对象程序设计课程的教学中,还有许多具体的环节需要分析和解决,如教学过程中科研成果的引入对学生的影响,学生成绩的科学评定,课程教学与国际先进认证培训体系的结合等都是值得研究的问题。这也是教学设计中需要进一步研究和实践的问题

参考文献:

[1] 李秉璋,罗 烨,景征骏,黄海军,“面向对象程序设计”课程实践教学改革探索[j].计算机教育, 2009年18期,p12~13

[2] 葛建芳,在面向对象程序设计教学过程中培养学生面向对象编程思想[j].电脑知识与技术,2008年17期, p1493-1495

作者简介:

篇3:面向对象课程设计

开放教育计算机本科的学生都是专科升本科的, 有部分学生专科阶段读的并非计算机专业, 这部分学生都没有学过《面向对象程序设计》这门课程的前导基础课, 如C语言、程序设计基础等, 这就给该课程教学带来了相当大的难度。

“面向对象程序设计”的思想是当前一种全新的程序设计理念。它具有传统结构化程序设计思想不能比拟的优点。

面向对象程序设计思想的基本概念

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

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

消息和方法对象之间进行通信的结构叫做消息。在对象的操作中, 当一个消息发送给某个对象时, 消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名 (即对象名、方法名) 。一般还要对参数加以说明, 参数可以是认识该消息的对象所知道的变量名, 或者是所有对象都知道的全局变量名。类中操作的实现过程叫方法, 一个方法有方法名、参数、方法体。

面向对象设计的核心思想

面向对象的核心就是类的继承, 可让类的代码以非常方便的方式的重使用。有时候, 为设计合理的面向对象的编程, 都是围绕继承来进行设计的, 这里面最为重要的就是方法的继承, 于是有了.net中的许多关键字, 如virtual, override, new, abstract等。

设计的过程其实就是对现实世界事物建立合理的关系, 使得处于这些事物中的人 (用户) 可以合理、简单、高效地工作。所以我觉得最重要的就是处理事物和关系, 面向过程的核心是功能调用, 这并不能很好地应对现实的变化需求, 而面向对象的建模真正体现了现实世界的这种特征。

任何事物都有共性与个性, 并且不是孤立的。分类后找出共性就是类和接口的模型。关系自然就是类之间的通信。所以说, 面向对象是把自然界的物体和概念直接映射到程序界的一种比较优雅的手段。

面向对象就是把数据及对数据的操作方法放在一起, 作为一个相互依存的整体———对象。对同类对象抽象出其共性, 形成类。类中的大多数数据, 只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系, 对象与对象之间通过消息进行通信。这就是面向对象的大概思想。

通过以上内容的介绍, 我们不难发现《面向对象程序设计》这门课程理论性与实践性很强, 学生要循序渐进地理解书本内容, 逐步掌握各个知识点, 教师要分过程、分阶段引导学生学习, 主要抓好以下几个步骤。

(一) 课程导学

课程一体化导学开学初的面授课, 针对学生对课程缺乏了解的情况, 教师应对学生进行该课程的性质、学习目的和任务、学习重点内容和要求、多种媒体资源的配置情况、教学活动整体安排等内容的教育和指导。讲解课程使用的软件工具和安装、使用方法, 要求学生学会在自己的机器上安装和使用。另外, 辅导教师要进行网上资源建设与整合、面授辅导、指导小组协作学习、实践教学、网上教学、作业批改讲评、课程教研、课程教学质量与效果分析及维持正常的教学秩序等。指明每章的重点、难点, 给出导学提纲:明确应该理解哪些基本概念, 熟记哪些语法结构, 会编写哪些程序, 学员自学中有疑点, 可以带着问题利用录像、网上资源学习, 也可以在辅导课中解决或进行网络、电话答疑。其实辅导教师不仅仅是导观念、导课程内容, 更要导技能、导方法。

课程章节导学在教学过程中, 课程辅导教师应针对某一门课程中某一章节对学生进行预习指导。让学生了解本章的基本概念、基本知识、基本技能和重点、难点以及教学要求的层次、网上资源的地址等。

课程考核导学课程辅导教师对本课程形成性考核、自评自测、期中考试、期末考试等进行指导并提出要求。

(二) 自主学习

自主学习是远程教育教学过程中主要的学习阶段, 是在完整的学习支持服务体系下的主动学习。但由于学生学习的基础和自主性参差不齐, 学习过程中会遇到的问题各异, 所以, 需要教师进行“助学”, 这就要求教师既要注意学生的整体水平, 又要照顾个体差异, 体现个性化助学服务, 提高学生学习效率, 保证学习质量。具体的实施方式如下。

个体自主学习学生根据自己的个别化学习计划, 结合相应的教学资源和教学支持服务体系, 实现个体自主学习。在自主学习过程中, 辅导教师提供的学习过程设计及相应的资源使用建议均只起参考作用, 在总体完成学习任务的前提下, 学生可以依据自身知识结构、学习偏好和学习时间, 自主选择学习进程和学习资源。《面向对象程序设计》课程第九、十、十二章的内容都可以纳入学生自主学习, 教师只需要对这些章节内容简单讲解, 学生就可以根据网上视频资源和电子教案自主学习。

协作学习协作学习有两种类型, 一种是学生自行开展的小组协作学习, 一种是教师直接组织的主题性小组活动。开放教育教学实质是一种基于网络的教学, 需要做到现实与虚拟两个课堂相结合, 充分利用适应个别化需求的虚拟课堂开展交互教学, 是提高开放教育教学质量的有效途径。为此, 教师应从引导入手, 认真组织学员开展网上交互教学活动。以网络为媒介组成网上学习小组, 消除学员协作学习中交通和场所的制约;小组长事先在QQ群上发布小组学习活动的安排, 确定时间与交流主题, 然后, 各成员准时上网进行协作学习。通过小组协作学习不仅能解决学习中的问题, 强化学习效果, 而且能相互交流学习体会和经验, 提高自主学习能力。成人学习特别是网络学习往往是“孤独”的学习, 而协作学习可以克服这一不足, 有利于发展学生个体的思维能力、增强学生个体之间的沟通能力以及对学生个体之间差异的包容能力。

(三) 重点与难点讲解

《面向对象程序设计》课程整个教学量是非常大的, 整个教材实际上由三个部分组成:C++过程化语言基本概念和方法 (第一章到第六章) ;基本数据结构 (第七章、第八章) ;面向对象的概念、方法和技巧 (第九章到第十四章) 。因此, 对于教师来说, 进行教学内容改革首先必须仔细分析这门课程各章节的特点、全书重点章节、考试考点范围、平台已有资源情况等等内容, 从而能在不影响专业计划培养要求及考试前提下, 对全书教学内容进行分解, 部分内容弱化, 部分内容重点讲, 需要说明的是弱化不等于不讲, 而是选择重点、难点内容进行讲解, 只是一个讲解点密度问题。对于C++过程化语言的基本概念和方法部分, 由于其本身难度小, 并且有完整的直播课堂资源, 所以, 这部分的内容就可以弱化介绍, 将第一章C++编程基础、第二章基本C++程序结构、第三章数据类型、第四章程序流程控制以及第六章简单程序设计的主要学习任务与内容留给学生自主学习。这部分内容教师只需要告诉学生每章节的重点是什么, 难点是什么。

可以准备几个简单实用的经典案例, 通过VC++环境实际运行给学生看。让他们觉得C++程序用有实用价值, 并且也不复杂。然后, 详细介绍VC++的开发环境使用的几个关键步骤, 包括项目建立、关闭、打开、程序调试 (错误定位及常见的错误提示信息) 。这个环节应该走在课程教学的前面, 这样学生在边看教材、边看直播录像的自主学习中遇到的很多感兴趣或困惑的内容, 都可以放到VC++下去测试, 这既能有效地帮助他们克服自学中的问题, 又能帮助他们锻炼动手能力。

对第一部分的第五章函数需要教师重点讲解。函数编写及函数调用也是考试的主要考点之一, 但同时也要给学生准备一些编程习题。教材的第二部分所涉及的两个章节:数组与结构、指针与引用都是重点章节, 建议教师重点讲解, 并补充链表的建立和遍历。第三部分是全书的重点、难点部分, 整个面向对象部分内容包括六个章节, 由于面向对象表示方法的特殊性, 建议学生自主学习第九章, 教师重点讲解第十、十一、十二、十三及十四章。

教师上课最好要用生动的电子讲义, 并配以一定的实例。因为是本科课程, 教材内容多, 每节课要讲授的内容多, 跨越的章节也多, 如果采用传统的板书形式来讲授, 会浪费很多书写的时间。同时, 用多媒体上课可以实时用电脑演示一些程序实例, 学生即时看到运行的结果, 学习效果非常好。用动态的电子讲义来讲解, 配以实时运行的程序, 学生既有理性的认识, 亦有感性的认识, 教学效果可达到事半功倍。

(四) 练习测试

学生都是业余学习, 在校时间不长, 与教师见面的机会不多, 课后如果不配以一定的练习, 学生很容易将堂上讲授过的内容忘记。所以, 必须给出每一章要做的习题, 这些习题可以是教材上的, 但最好是教师自己准备的一些更具有综合性的问题。另外, 本课程亦是动手能力很强的一门课, 编程能力的提高必须配以大量的练习, 才能提高学生的编程能力和算法分析能力。很多学生在堂上能听懂教师的讲授, 但考试时很多类似的编程题不会做, 这就是平时缺少练习的原因。所以, 最好在每次课堂讲授结束之前, 布置一些相关的测试题, 测试题的题型、难度, 辅导教师要根据学习者的学习水平来设置, 要达到检测和激励的作用。学生按时完成测试后, 教师要及时进行批阅, 找出学生共性的错误, 在课堂上进行讲评, 这样有针对性的讲评对学生有很大的帮助。

(五) 答疑解惑

教师通过答疑能够监控学生短期学习行为, 引导学生承上启下, 同时, 及时纠正其产生的偏差。答疑的形式可以采用以下方式。

电话、电子邮件可作为上机辅导的辅助手段。电话使用方便, 但不是免费的, 有的问题也很难用语言表达清楚;电子邮件是免费的, 但交互太慢, 效率不高。通过电话和电子邮件与学生交流, 适合解决一些简单的问题。

课程论坛可作为解决公共问题的发布点。在学校的教学平台上, 每门课程都有论坛, 教师和学生要充分利用这个交流平台。有一些问题具有公共性, 教师要具有预见性, 将这些问题摘出放在论坛的显要位置, 这样既可方便学生, 又可减轻自己回答学生问题的工作量。

建立课程的QQ学习群。QQ聊天工具几乎每个学生都会使用, 教师可以用QQ申请一个学习群, 开学初就将QQ学习群的号码公布给学生, 所有学习这门课程的学生都可以加入群。大家在群里共同讨论学习的问题, 不管认识的、不认识的, 都可以发表见解, 有很好的学习氛围, 学生可以相互解答问题, 也能大大减轻教师的答疑工作量。

推荐一些优秀的学习网站给学生。要学好程序设计类课程, 在个人努力的同时, 要与别人多交流。学生可以经常访问一些专业的学习网站, 与全国各地甚至国外的编程高手交流, 以达到自主学习、提高水平的目的。

(六) 作业讲评

作业讲评可达到系统指导与全面复习的目的。具体实施方式有: (1) 课后作业讲评。在对章节小结时, 以课后习题来验证分析方法与计算步骤, 加强学生的应用能力。 (2) 形成性考核册讲评。重在对本课程知识点的融会贯通, 以点带面达到综合复习的目的。

(七) 复习指导

开放教育期末考试成绩是衡量学习效果的主要依据, 期末复习工作的质量直接关系到考试的效果和考风考纪的优劣。所以, 期末复习工作应作为重点来抓, 本人主要采用以下方式对该课程进行复习指导。

充分利用网络上的期末复习资源, 在巩固知识的基础上增加复习的针对性, 同时, 鼓励学生参与在线测试, 认真做模拟试题和往年的试题, 起到熟悉题型、自查和摸底的作用。中央电大和省电大的该课程教学辅导栏目中提供了单选题、填空题、程序填充、写出算法运行结果排序、写出算法功能和改错及程序设计等综合练习题, 通过这些综合题的下载练习, 可使复习更具有针对性。完成这些综合题后, 可以下载历年的试题进行模拟测试, 从而可以找到自己复习过程中的不足。

学生复习要抓基础, 抓重点, 大胆放下部分难点。笔者对往年考试的试卷进行分析、筛选, 对考试时经常遇到的问题要有所侧重。通过对以往考试的试卷进行分析, 发现一般基础内容占70~80%, 难点只占20~30%, 复习时就要大胆放下难以弄懂的难点内容, 将精力全部投放到基础内容, 对大部分学生来说, 掌握基础内容并不难, 这样, 大多数学生都能考及格, 虽然这对学生学习来说不是最佳方案, 但对于考试过关来说, 不能不认为是可行的方法。

参考文献

[1]王萍.C++面向对象程序设计[M].北京:清华大学出版社, 2005.

[2]徐孝凯.面向对象程序设计实验[M].北京:中央广播电视大学出版社, 2003.

[3]刘文英.《面向对象程序设计》课程教学模式的探索与实践[J].湖南广播电视大学学报, 2006, (1) .

篇4:面向对象课程设计

摘 要:本系统把"CDIO工程教育理念和教学大纲"整合在网络教学平台中,提出搭建网络平台,需求不仅仅局限在功能和信息方面,而更多的转向于前端的界面表现方面。要设计开发出一套界面美观,交互友好的前端界面所涉及的知识和技能也是很广泛的。本文就基于CDIO的面向对象程序设计课程网络教学平台的前端设计与制作流程做了深入剖析。

关键词:photoshop技术;网页前端设计;HTML技术;CSS技术

传统的在线学习系统往往功能比较单一,有时仅仅是教学资源的采集,发布平台。本项目为教学活动中信息发布,教学管理,操作实践,测评考核,辅导答疑,交流探讨等各种环节都提供了相应的功能模块。教学任务中大多数活动都能在该平台提供的支持下更高效的地展,很大程度上克服了传统教学平台时间,空间的局限性。

本系统充分把“CDIO工程教育理念和教学大纲”整合在网络教学平台中,从产品的构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)等产品研发运行周期的不同阶段入手,旨在使学习者能够体会和适应当代工业生产环境对工程人员的需求。

本项目主要是搭建网络教育平台,主要采用Java EE与

Struts 2框架、Hibernate框架、Spring框架的集成开发。

一、网站定位

本网站为在线教育型网站。建立该网站的主要目的使得学生通过互联网实现自由、自主学习的目的,能够通过网站首页,课程,发现,让学员清楚了解平台所提供的主要信息。 网站栏目清晰明了,网站本身就是平台功能的体现。栏目之间的设定都是在服务于如何让学员更好更方便学习所想要的知识。

二、网站前台建设要求

本网站前台采用css+div,javascript。网页主要体现清爽的感觉,采用白蓝的明色色彩组合,制造出平静恬静的效果,时学生能以一种平和的心情学习知识,特效方面,主要采用js方式进行呈现。让网站的一些展示动起来,让网站更有生机,展现不用的呈现方式,让用户在视觉上产生冲击感,提高学习兴趣。

网站的前台框架如下:

主页:以网页静态的方式展示,需要有登陆功能、注册功能、密码找回功能。课程的动态及相关信息在第一时间呈现给学生,提高关注度。

登陆功能:放置在最显眼的位置,让用户第一时间找到登陆位置,曾加用户体验度。

注册功能:放置在登陆功能之后,第二视觉强度,便于用户注册帐号。

产品介绍:本模块主要展示网站的在线产品,产品的相关视频,点击之后就可以观看视频,更多的视屏跳转到新页面。关于我们:每个模块对应网站的相关内容。

注册页面:网站的帐号以邮箱的方式为帐号注册。

登陆页面:网站的帐号以邮箱的方式登陆。

产品介绍页面:本模块主要展示网络课程的相关视频,点击之后就可以观看视频,更多的视屏跳转到新页面。

三、设计说明

本教育网络平台采用AI在WEB前端的开发与应用,对网页的矢量图形进行快速又精确地进行设计。采用PS做WEB美工。首先,建立WEB图,新建文件长度一般都是1920象素这样刚好部满目前最高分辨率的苹果电脑的显示, 高度可以自己按需求定。其次,作图,先打开辅助标尺以保证作图布局的规范行,然后设计WEB布局。WEB页的布局采用平整和层次两种类型。平整布局使得整个页面做出的效果图就像画在纸上一样的画平整。层次布局应用在PS的混合模式中,对整个布局有把握再设计效果图 LOGO BANNER和内容。最后,采用切割技术对Web页面进行调整。在进行储存时WEB格式注意储存为GIF格式,这样文件才会更小。

(一)设计效果。整个页面布局运用上下分栏的方式呈现,采用绝对定位和浮动定位。绝对定位的优势在于,可以精确控制任何元素的位置。浮动定位将块元素和独占一行的元素并列起来,不会让整行只有一个元素。

本网站的亮点在于banner,以简单多变的文字表达出该网络学习平台的学习理念,提高网络关注度,添加了JS特效来展现课程推荐专栏,图片变化的效果使浏览增添了许多乐趣。

在设计首页时,起初JS代码在不同浏览器兼容性出现了问题,最后采用了jquery框架。布局主要采用分栏的方式,以各个板块展示不同的内容信息。导航搜索框采用js特效进行自动伸缩,当鼠标选中搜索框时,搜索框自动变长,网站风格简约,导航醒目,分栏的布局使条理清晰明了。

(二)列表页设计说明。列表页的重点在内容部分,以图文混合的形式进行排版,另外添加了显示全部的链接,用户可以选择浏览更多的内容。布局主要采用通栏的方式,以各个板块展示不同的内容信息。内容展示分左右两栏,

四、兼容方案的设计

用户通常会使用浏览器访问该网络平台。各浏览器解译网站代码的方式略有不同,这意味着。为了避免网站在不同浏览器中显示的效果会有所差异,依赖于浏览器特定的行为本次设计采用一些方式来确保网站在不同的浏览器中都能正确显示。

(一)使用有效的 HTML 和 CSS 编写网页。有效、易解译的 HTML 可保证网页得以正确显示,而 CSS 可以将网页的外观和内容分离开来,使网页可以更快速地载入和呈现给访问者。本设计使用有效的 HTML 和 CSS 编写网页,然后在尽可能多的浏览器中测试这些网页显示的效果,并使用W3 Consortium 免费提供的在线 HTML 和 CSS 验证工具验证网页,使用HTML Tidy 的工具快捷地清理代码。

(二)指定字符编码,编码置于文档(或框架)的顶部。为使浏览器可以呈现您网页上的文字,本设计始终为相应的文档指定编码。为了避免某些浏览器无法识别文档深处的字符集声明,本设计还将此编码置于文档(或框架)的顶部。此外,为了确保网络服务器不发送相冲突的 HTTP 标头。使用content-type:

text/html; charset=utf-8 之类的标头替代网页中的所有字符集声明。

(三)使用Flash和富媒体指南,使网页易于访问。本设计按照 Flash 和其他富媒体使用指南进行操作,然后在 Lynx 这样的纯文本浏览器中对网站进行测试。提供针对富媒体内容和功能的纯文本浏览方式,有助于搜索引擎更方便地抓取本网站并将其编入索引,同时也大大方便了使用屏幕读取器等技术访问。

结束语:好的开端是成功的一半,通过本次的大学生创新计划,让我体会到要做好一个网站,前期的规划是最重要的,准备充分才能事半功倍,而不是毫无目的的随心所欲,这是网站开发中要特别注意的问题之一。而在网站规划过程中搜集相关资料,并从中分析有用的信息进行整理,这锻炼了我对信息收集整理的能力,将对我以后的学习和工作是有益的。虽然创新设计项目仍有一些不足,但过程中的体验却让我受益匪浅,那对我而言将是一种宝贵的财富,让我在今后的学习及工作中有所借鉴,不断地提高和完善自我。

参考文献:

[1] 曾静娜著 CSS+DIV[M] 北京希望电子出版社 2010.3

[2] 阮文江主编 JavaScript程序设计基础教程[M] 人名邮电出版社 2010.8

篇5:面向对象课程设计

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

一、课程的地位、教学目的和基本要求

C++语言是一种高效实用的程序设计语言,既可进行过程化的程序设计,也可进行面向对象程序设计。本课程以介绍C++语言的基本语法为基础逐步向学生渗透面向对象的程序设计思想,要求学生掌握类的封装、数据隐藏、继承及多态等特性,领会面向对象程序设计,掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。

二、主要教学环节

1、理论教学 学时数:60 占全部学时数:75 %

2、实验 学时数:20 占全部学时数:25 %

3、实训 学时数:二周

三、课程内容 Ⅰ.理论部分

第一章 C++入门 2学时(1)教学目的、要求

本章要求学生掌握源程序的编辑、编译、连接和执行。了解C++程序设计语言的发展过程以及支持环境。(2)重点与难点

本章的重点和难点是源程序的编辑、编译、连接和执行。

第一节 从C到C++ 第二节 程序与语言 第三节 结构化程序设计 第四节 面向对象程序设计 第五节 程序开发过程 第六节 函数

第二章 基本数据类型与输入输出 2学时(1)教学目的、要求

本章要求学生掌握C++语言数据类型,变量及常量的声明和赋值以及输入输出函数。了解I/O流及printf和scanf输入输出的作用。(2)重点与难点

本章的重点和难点是C++语言数据类型,变量及常量的声明和赋值以及输入输出函数。

第一节 字符集与保留字 第二节 基本数据类型 第三节 变量定义 第四节 常量及常量定义 第五节 I/O流控制 第六节 Printf与scanf 第三章 表达式和语句 2学时(1)教学目的、要求

本章要求学生掌握C++各运算符与常用表达式内容,及if语句的应用。(2)重点与难点

C++各运算符与常用表达式内容,及if语句的应用。

第一节 表达式 第二节 算术运算和赋值 第三节 算术类型转换 第四节 增量和减量 第五节 关系与逻辑运算 第六节 if语句 第七节 条件运算符 第八节 逗号表达式 第九节 求值次序与副作用

第四章 过程化语句 2学时(1)教学目的、要求

本章要求学生掌握switch,while, do…while, for结构的应用,了解描述算法和穷举、迭代算法。(2)重点与难点

本章的重点和难点是循环型程序设计,即switch,while, do…while, for 2 结构的应用。

第一节 while 语句 第二节 do…..while 语句 第三节 for语句 第四节 switch 语句 第五节 switch 语句 第六节 过程应用: 求兀 第七节 过程应用: 判明素数 第八节 过程应用: 求积分

第五章 函数 2学时(1)教学目的、要求

本章要求学生掌握函数的概念、定义、调用机制,和递归、内联、重载函数的概念,以及全局、局部变量。(2)重点与难点

本章的重点和难点是函数的概念、定义、调用机制,以及全局、局部变量。

第一节 函数概述 第二节 函数原型

第三节 全局变量和局部变量 第四节 函数调用机制 第五节 静态局部变量 第六节 递归函数 第七节 内联函数 第八节 重载函数 第九节 默认参数的函数

第六章 程序结构 2学时(1)教学目的、要求

本章要求学生掌握变量的存储类型,作用域,可见性,生命期等概念。(2)重点与难点

本章的重点和难点是变量的存储类型,作用域,可见性,生命期。

第一节 外部存储类型 第二节 静态存储类型 第三节 作用域 第四节 可见性 第五节 生命期 第六节 头文件 第七节 多文件结构 第八节 编译预处理

第七章 数组 2学时(1)教学目的、要求

本章要求学生掌握数组的概念、元素的访问,及数组的应用。(2)重点与难点

本章的重点和难点是数组元素的访问,及数组的应用。

第一节 数组定义 第二节 访问数组元素 第三节 初始化数组 第四节 向函数传递数组 第五节 二维数组 第六节 数组应用: 排序

第七节 数组应用: Josephus问题 第八节 数组应用: 矩阵乘法

第八章 指针 2学时(1)教学目的、要求

本章要求学生掌握指针的概念、运算,以及指针与数组和函数的应用。(2)重点与难点

本章的重点和难点是指针的运算,以及指针与数组和函数的关系及应用。

第一节 指针概念 第二节 指针运算 第三节 指针与数组 第四节 堆内存分配 第五节 const指针 第六节 指针与函数 第七节 字符指针 第八节 指针数组 第九节 命令行参数 第十节 函数指针

第九章 引用 2学时(1)教学目的、要求

本章要求学生掌握引用的概念、操作,以及引用作为函数参数的应用。(2)重点与难点

本章的重点和难点是引用的操作,以及引用作为函数参数的应用。

第一节 引用的概念 第二节 引用的操作 第三节 什么能被引用 第四节 用引用传递函数参数 第五节 返回多个值 第六节 用引用返回值 第七节 函数调用作为左值 第八节 用const限定引用 第九节 返回堆中变量的引用

第十章 结构 2学时(1)教学目的、要求

本章要求学生掌握结构体概念及其定义,结构体变量和结构体数组的引用,指向结构体变量和数组的指针。(2)重点与难点

本章的重点和难点是结构体数组的引用,指向结构体变量和数组的指针。

第一节 结构 第二节 结构与指针

第三节 结构与数组 第四节 传递结构参数 第五节 返回结构 第六节 链表结构 第七节 创建与遍历链表 第八节 删除链表结点 第九节 插入链表结点

第十节 结构应用: Josephus问题

第十一章 类 4学时(1)教学目的、要求

本章要求学生掌握类的概念、类的定义,及成员函数的调用。了解保护成员和软件方法的发展必然。(2)重点与难点

本章的重点和难点是类的概念、类的定义,及成员函数的调用。

第一节 从结构到类 第二节 软件方法的发展必然 第三节 定义成员函数 第四节 调用成员函数 第五节 保护成员 第六节 屏蔽类的内部实现 第七节 再论程序结构

第十二章 构造函数 6学时(1)教学目的、要求

本章要求学生掌握构造、析构函数的使用,以及构造类成员和构造对象的顺序。了解重载和默认构造函数的概念(2)重点与难点

本章的重点和难点是构造、析构函数的使用,以及构造类成员和构造对象的顺序。

第一节 类与对象

第二节 构造函数的需要性 第三节 构造函数的使用 第四节 析构函数

第五节 带参数的构造函数 第六节 重载构造函数 第七节 默认构造函数 第八节 类成员初始化困惑 第九节 构造类成员 第十节 构造对象的顺序

第十三章 面向对象程序设计 4学时(1)教学目的、要求

本章要求学生掌握结构化和面向对象方法的实现。了解程序效率和维护。(2)重点与难点

本章的重点和难点是结构化和面向对象方法的实现。

第一节 抽象 第二节 分类 第三节 设计和效率 第四节 讨论Josephus问题 第五节 结构化方法 第六节 结构化方法的实现 第七节 第八节 第九节

面向对象方法 面向对象方法实现 程序维护

第十四章 堆与拷贝构造函数 6学时(1)教学目的、要求

本章要求学生掌握堆的概念,堆对象,拷贝构造函数及浅拷贝与深拷贝的应用。了解临时和无名对象。(2)重点与难点

本章的重点和难点是堆的概念,堆对象,拷贝构造函数及浅拷贝与深拷贝的 7 应用。

第一节 关于堆

第二节 需要new和delete的原因 第三节 分配堆对象 第四节 拷贝构造函数 第五节 默认拷贝构造函数 第六节 浅拷贝与深拷贝 第七节 临时对象 第八节 无名对象

第九节 构造函数用于类型转换

第十五章 静态成员与友员 2学时(1)教学目的、要求

本章要求学生掌握懂得怎样声明一个静态数据成员,怎样使用静态成员函数以及静态成员函数为什么与特定对象无关。(2)重点与难点

本章的重点和难点是静态数据成员和静态成员函数的使用,以及友元的概念。

第一节 静态成员的需要性 第二节 静态成员的使用 第三节 静态数据成员 第四节 静态成员函数 第五节 需要友员的原因 第六节 友员的使用

第十六章 继承 8学时(1)教学目的、要求

本章要求学生掌握继承的概念,工作方式,以及多态性和虚函数的概念。了解抽象类和类的冗余。(2)重点与难点

本章的重点和难点是继承的概念,工作方式,以及多态性和虚函数的概念。

第一节 继承的概念 第二节 继承的工作方式 第三节 派生类的构造 第四节 继承与组合 第五节 多态性

第六节 多态的思考方式 第七节 多态性如何工作 第八节 不恰当的虚函数 第九节 虚函数的限制 第十节 类的冗余

第十一节 克服冗余带来的问题 第十二节 类的分解 第十三节 抽象类

第十四节 由抽象类派生具体类 第十五节 纯虚函数的需要性

第十七章 多重继承 6学时(1)教学目的、要求

本章要求学生掌握多继承的概念,工作方式以及多继承的构造顺序和访问控制。了解虚拟继承、保护和私有继承。(2)重点与难点

本章的重点和难点是多继承的概念,工作方式以及多继承的构造顺序和访问控制。

第一节 多继承如何工作 第二节 继承的模糊性 第三节 虚拟继承

第四节 多继承的构造顺序 第五节 继承的访问控制 第六节 保护继承与私有继承

第十八章 运算符重载 4学时(1)教学目的、要求 本章要求学生掌握运算符重载的需要性和应用。了解增量运算符的重载。(2)重点与难点

本章的重点和难点是运算符重载的需要性和应用。

第一节 运算符重载的需要性 第二节 如何重载运算符 第三节 值返回与引用返回 第四节 运算符作成员函数 第五节 重载增量运算符 第六节 转换运算符 第七节 赋值运算符

四、主要教科书和参考书

1、《C++程序设计教程》

2、《C++程序设计题解与上机指导》

3、《C++语言程序设计》

4、《C++语言与面向对象程序设计》

5、《C++语言程序设计》

钱能 钱能

潭浩强 郑莉

吕凤翥清华大学出版社

清华大学出版社 清华大学出版社 清华大学出版社

清华大学出版社

篇6:面向对象课程设计

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月出版

上一篇:个人英雄主义下一篇:格林童话的作者是谁