第一篇:PHP中面向对象设计的经验总结
PHP中面向对象设计的经验总结
你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。-----Arthur J.Riel
1.所有数据都应该隐藏在所在的类的内部。
2.类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。3.尽量减少类的协议中的消息。
4.实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。
5.不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。6.不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。
7.类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。
8.类应该只表示一个关键抽象。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响。9.把相关的数据和行为集中放置。设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。
10.把不相关的信息放在另一个类中(也即:互不沟通的行为)。朝着稳定的方向进行依赖。11.确保你为之建模的抽象概念是类,而不只是对象扮演的角色。
12.在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。13.在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。规划一个接口而不是实现一个接口。
14.对公共接口中定义了大量访问方法的类多加小心。大量访问方法意味着相关数据和行为没有集中存放。
15.对包含太多互不沟通的行为的类多加小心。这个问题的另一表现是在你的应用程序中的类的公有接口中创建了很多的get和set函数。
16.在由同用户界面交互的面向对象模型构成的应用程序中,模型不应该依赖于界面,界面则应当依赖于模型。
17.尽可能地按照现实世界建模(我们常常为了遵守系统功能分布原则、避免全能类原则以及集中放置相关数据和行为的原则而违背这条原则)。
18.从你的设计中去除不需要的类。一般来说,我们会把这个类降级成一个属性。19.去除系统外的类。系统外的类的特点是,抽象地看它们只往系统领域发送消息但并不接受系统领域内其他类发出的消息。
20.不要把操作变成类。质疑任何名字是动词或者派生自动词的类,特别是只有一个有意义行为的类。考虑一下那个有意义的行为是
否应当迁移到已经存在或者尚未发现的某个类中。
21.我们在创建应用程序的分析模型时常常引入代理类。在设计阶段,我们常会发现很多代理没有用的,应当去除。
22.尽量减少类的协作者的数量。一个类用到的其他类的数目应当尽量少。23.尽量减少类和协作者之间传递的消息的数量。
24.尽量减少类和协作者之间的协作量,也即:减少类和协作者之间传递的不同消息的数量。25.尽量减少类的扇出,也即:减少类定义的消息数和发送的消息数的乘积。26.如果类包含另一个类的对象,那么包含类应当给被包含的对象发送消息。也即:包含关系总是意味着使用关系。
27.类中定义的大多数方法都应当在大多数时间里使用大多数数据成员。
28.类包含的对象数目不应当超过开发者短期记忆的容量。这个数目常常是6。当类包含多于6个数据成员时,可以把逻辑相关的数据成员划分为一组,然后用一个新的包含类去包含这一组成员。
29.让系统功能在窄而深的继承体系中垂直分布。
30.在实现语义约束时,最好根据类定义来实现。这常常会导致类泛滥成灾,在这种情况下,约束应当在类的行为中实现,通常是在构造函数中实现,但不是必须如此。31.在类的构造函数中实现语义约束时,把约束测试放在构造函数领域所允许的尽量深的包含层次中。
32.约束所依赖的语义信息如果经常改变,那么最好放在一个集中式的第3方对象中。33.约束所依赖的语义信息如果很少改变,那么最好分布在约束所涉及的各个类中。34.类必须知道它包含什么,但是不能知道谁包含它。
35.共享字面范围(也就是被同一个类所包含)的对象相互之间不应当有使用关系。36.继承只应被用来为特化层次结构建模。
37.派生类必须知道基类,基类不应该知道关于它们的派生类的任何信息。
38.基类中的所有数据都应当是私有的,不要使用保护数据。类的设计者永远都不应该把类的使用者不需要的东西放在公有接口中。
39.在理论上,继承层次体系应当深一点,越深越好。
40.在实践中,继承层次体系的深度不应当超出一个普通人的短期记忆能力。一个广为接受的深度值是6。
41.所有的抽象类都应当是基类。42.所有的基类都应当是抽象类。
43.把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端。
44.如果两个或更多个类共享公共数据(但没有公共行为),那么应当把公共数据放在一个类中,每个共享这个数据的类都包含这个类。
45.如果两个或更多个类有共同的数据和行为(就是方法),那么这些类的每一个都应当从一个表示了这些数据和方法的公共基类继承。
46.如果两个或更多个类共享公共接口(指的是消息,而不是方法),那么只有他们需要被多态地使用时,他们才应当从一个公共基类继承。
47.对对象类型的显示的分情况分析一般是错误的。在大多数这样的情况下,设计者应当使用多态。
48.对属性值的显示的分情况分析常常是错误的。类应当解耦合成一个继承层次结构,每个属性值都被变换成一个派生类。
49.不要通过继承关系来为类的动态语义建模。试图用静态语义关系来为动态语义建模会导致在运行时切换类型。
50.不要把类的对象变成派生类。对任何只有一个实例的派生类都要多加小心。
51.如果你觉得需要在运行时刻创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。
52.在派生类中用空方法(也就是什么也不做的方法)来覆写基类中的方法应当是非法的。53.不要把可选包含同对继承的需要相混淆。把可选包含建模成继承会带来泛滥成灾的类。54.在创建继承层次时,试着创建可复用的框架,而不是可复用的组件。
55.如果你在设计中使用了多重继承,先假设你犯了错误。如果没犯错误,你需要设法证明。56.只要在面向对象设计中用到了继承,问自己两个问题:(1)派生类是否是它继承的那个东西的一个特殊类型?(2)基类是不是派生类的一部分?
57.如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。
58.在面向对象设计中如果你需要在包含关系和关联关系间作出选择,请选择包含关系。59.不要把全局数据或全局函数用于类的对象的薄记工作。应当使用类变量或类方法。60.面向对象设计者不应当让物理设计准则来破坏他们的逻辑设计。但是,在对逻辑设计作出决策的过程中我们经常用到物理设计准则。61.不要绕开公共接口去修改对象的状态。
第二篇:PHP程序员要养成7个面向对象的好习惯
PHP程序员要养成7个面向对象的好习惯
在 PHP 编程早期,PHP 代码在本质上是限于面向过程的。过程代码 的特征在于使用过程构建应用程序块。过程通过允许过程之间的调用提供某种程度的重用。
但是,没有面向对象的语言构造,程序员仍然可以把 OO 特性引入到 PHP 代码中。这样做有点困难并且会使代码难于阅读,因为它是混合范例(含有伪 OO 设计的过程语言)。使用 PHP 代码中的 OO 构造 — 例如能够定义和使用类、能够构建使用继承的类之间的关系以及能够定义接口 — 可以更轻松地构建符合优秀 OO 实践的代码。
虽然没有过多模块化的纯过程设计运行得很好,但是 OO 设计的优点表现在维护上。由于典型应用程序的大部分生命周期都花费在维护上,因此代码维护是应用程序生命周期的重要部分。并且在开发过程中代码维护很容易 被遗忘。如果在应用程序开发和部署方面存在竞争,那么长期可维护性可能被放在比较次要的地位。
模块化 — 优秀 OO 设计的主要特性之一 — 可以帮助完成这样的维护。模块化将帮助封装更改,这样可以随着时间的推移更轻松地扩展和修改应用程序。
总的来说,虽然构建 OO 软件的习惯不止 7 个,但是遵循这里的 7 个习惯可以使代码符合基本 OO 设计标准。它们将为您提供更牢固的基础,在此基础之上建立更多 OO习惯并构建可轻松维护与扩展的软件。这些习惯针对模块化的几个主要特性。有关独立于语言的 OO 设计优点的更多信息,请参阅 参考资料。个优秀 PHP OO习惯包括:
保持谦虚
做个好邻居。
避免看到美杜莎。
利用最弱的链接。
您是橡皮;我是胶水。
限制传播。
考虑使用模式。
保持谦虚
保持谦虚指避免在类实现和函数实现中暴露自己。隐藏您的信息是一项基本习惯。如果不能养成隐藏实现细节的习惯,那么将很难养成任何其他习惯。信息隐藏也称为封装。
直接公开公共字段是一个坏习惯的原因有很多,最重要的原因是让您在实现更改中没有应有的选择。使用 OO 概念隔离更改,而封装在确保所作更改在本质上不是病毒性(viral)更改方面扮演不可或缺的角色。病毒性 更改是开始时很小的更改 — 如将保存三个元素的数组更改为一个只包含两个元素的数组。突然,您发现需要更改越来越多的代码以适应本应十分微不足道的更改。
开始隐藏信息的一种简单方法是保持字段私有并且用公共访问方法公开这些字段,就像家中的窗户一样。并没有让整面墙都朝外部开放,而只打开一两扇窗户(我将在 “好习惯:使用公共访问方法” 中介绍访问方法的更多信息)。
除了允许您的实现隐藏在更改之后外,使用公共访问方法而非直接公开字段
将允许您在基本实现的基础上进行构建,方法为覆盖访问方法的实现以执行略微不同于父方法的行为。它还允许您构建一个抽象实现,从而使实际实现委托给覆盖基本实现的类。
坏习惯:公开公共字段
在清单 1 的坏代码示例中,Person 对象的字段被直接公开为公共字段而非使用访问方法。虽然此行为十分诱人,尤其对于轻量级数据对象来说更是如此,但是它将对您提出限制。
清单 1.公开公共字段的坏习惯 classPerson { public$prefix;public$givenName;public$familyName;public$suffix;}
$person=newPerson();$person->prefix=“Mr.”;$person->givenName=“John”;
echo($person->prefix);echo($person->givenName);?>
如果对象有任何更改,则使用该对象的所有代码也都需要更改。例如,如果某人的教名、姓氏和其他名字被封装到 PersonName 对象中,则需要修改所有代码以适应更改。
第三篇:学习心得《面向对象》
面向对象课程学习心得
这学期的面向对象课程对我来说是收获匪浅的一门课。通过老师课件的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。
面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复用、可扩展、可维护性、弹性。
OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。
面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。
在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。
访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象中的。
为遍历不同的聚合结构提供一个统一的接口。根据实现方式的不同,效果上会有差别。同时还简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
在Java Collection的应用中,提供的具体迭代器角色是定义在容器角色中的内部类。这样便保护了容器的封装。但是同时容器也提供了遍历算法接口,你可以扩展自己的迭代器。至于迭代器模式的使用。客户程序要先得到具体容器角色,然后再通过具体容器角色得到具体迭代器角色。这样便可以使用具体迭代器角色来遍历容器了。
OOA和OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生鸿沟,这是相对结构化思想的好处,因为从功能模块到某块详细控制逻辑设计两者之间的联系不是十分紧密,需要分析人员与设计人员的再沟通。
通过课程的学习与实践,对面向对象的理念,以及相关方法,设计模式有了更为深刻的理解与掌握。针对面向对象的分析与设计课程的授课内容及方法,我个人觉得对我还是有不少的帮助和 提高。结合自己的工作,虽然与开发接触的比较少,但是在运维过程中,如果能了解开发原理,结合实际的工作,会对一些源代码的分析能力以及工作效率的提高起到明显的帮助作用。
第四篇:《面向对象程序设计》教学大纲
《面向对象程序设计》教学大纲
课程名称:信息内容安全 课程代码:042504 总 学 时:64 学
分:2
课程类型:专业必修课 适用专业: 信息安全专业 制 订 人:徐雪飞 审 定 人:肖
文 制订日期:2015年3月
《面向对象程序设计》教学大纲
一、课程性质、目的和任务
C#语言是.NET平台上的核心开发语言,具有简单易学、类型安全、完全面向对象等特性,是一门面向现代软件工程的主流程序设计语言。本课程系统地介绍C#语言的结构化设计、面向对象、泛型、商业开发等功能要素,使学生在掌握程序设计的基本方法和技巧,培养利用计算机解决实际问题的能力,以满足专业课应用和继续学习的需要。
二、教学基本要求
通过学习本课程,要求学生能够熟悉C#语言的语法和类型系统,掌握面向对象程序设计和泛型程序设计的基本方法,并具有商业应用开发的基本能力,能灵活地使用C#语言及Visual Studio.NET开发环境解决一般性编程问题。
三、教学内容
1、绪论(教学2学时,上机2学时)
教学内容:
(1).NET技术和框架结构简介(2)C#语言概貌
(3)面向对象的基本概念
教学目的:使学生对.NET平台和C#有一个综合性的了解。
2、C#语法基础(教学6学时,上机4学时)
教学内容:(1)数据类型(2)值和方法(3)表达式(4)控制语句
教学目的:使学生基本掌握C#语言的类型系统和基本语法结构。
3、类和继承(教学4学时,上机4学时)
教学内容:
(1)类的数据成员和各种函数成员(2)继承和多态(3).NET常用类型(4)接口与实现
教学目的:使学生进一步掌握类型的定义和使用方法,掌握.NET类库中一些典型类的用法;深入理解继承和多态性的概念,从而掌握面向对象软件可重用性的关键技术。
4、Windows窗体界面(教学2学时,上机2学时)
教学内容:
(1)Windows Form编程技术(2)WPF编程技术
(3)绘图、动画和媒体 教学目的:使学生掌握Windows程序界面设计的基本要素,能够使用Windows Form和WPF编程技术开发交互式图形界面应用程序。
5、泛型(教学4学时,上机2学时)
教学内容:
(1)泛型的定义与使用(2)元组和可空类型的用法(3)泛型集合与循环遍历
(4)匿名方法和Lambda表达式
教学目的:使学生掌握泛型程序设计的基本概念,能够利用类型抽象和操作抽象开发出高可适的软件程序。
6、异常处理(教学1学时)
教学内容:
(1)C#异常处理结构
(2)主动引发异常和自定义异常
教学目的:使学生能够通过异常处理来提高程序可靠性。
7、文件操作(教学1学时,上机1学时)
教学内容:
(1)驱动器、目录和文件(2)文件流和数据流
教学目的:使学生掌握在C#程序中进行磁盘文件存取的基本技术。
8、数据库访问(教学2学时,上机1学时)
教学内容:
(1)ADO.NET联机数据访问(2)ADO.NET脱机数据访问
教学目的:使学生掌握C#程序中进行数据库存取的基本技术。
9、综合练习(教学2学时,上机8学时)教学内容:
(1)进程和线程
(2)ASP.NET网络程序设计
(3)采用案例驱动的方式,综合运用C#编程技术开发较为完整的软件程序。教学目的:提高学生软件设计的综合能力。
五、教学方法与手段
讲授法、讨论法、多媒体教学、实验教学。
六、考核方式
考试成绩占70%,平时成绩占30%。闭卷考试。
七、推荐教材和教学参考书
教
材:《C#程序设计基础》第3版,郑宇军,石海鹤,王卫红,清华大学出版社,2014年。参考书:
1、《C#应用开发与实践》,曾宪权、李梅莲 等,清华大学出版社,2015年
2、《C#编程实战宝典》,付强、丁宁 等,清华大学出版社,2014年。
第五篇:面向对象程序设计教学大纲
面向对象程序设计(专业限选课)Object-Oriented Programming 【课程编号】XZ26175 【学分数】3 【学时数】60=38+22
【课程类别】专业限选 【编写日期】2010.3.30 【先修课程】C语言程序设计、计算机应用基础
【适用专业】通信工程
一、教学目的、任务
通过学习,使学生深刻理解和领会面向对象的基本思想和基本特征,掌握面向对象程序设计语言C++语言的基本概念、基本语法以及面向对象程序设计的基本方法;使学生养成面向对象的编程思维习惯。
二、课程教学的基本要求
1.理解面向对象的基本概念和使用面向对象技术进行程序设计的基本思想 2.能比较熟练地用C++语言进行一般面向对象的程序设计
3.初步掌握面向对象编程环境Visual C++的使用
三、教学内容和学时分配(2 + 5 + 14 + 9 + 12 + 7 + 6 + 5 = 60)第一章 面向对象程序设计概述 2 学时(课堂讲授学时2)主要内容:
1.什么是面向对象程序设计 2.对象与类 3.封装 4.继承性 5.多态性
6.面向对象程序设计的语言 教学要求:
了解什么是面向对象程序设计;掌握对象和类的基本概念;理解面向对象程序设计的基本特征。其它教学环节:
安排课外了解面向对象程序设计方面的基本概念。第二章 C++概述 5学时(课堂讲授学时2+课程实验学时3)主要内容:
1.C++的起源和特点 2.C++源程序的构成
3.C++在非面向对象方面的一些特性 教学要求:
cin和cout的使用;new和delete的运算符的使用;函数的重载;带缺省参数的函数;引用; VC++的使用。其它教学环节:
实验1: C++程序设计基础练习。实验目的和要求:
1.掌握C++程序的基本格式和规范,学会编写简单的C++程序。2.掌握C++程序结构的特点。
3.熟悉C++程序基本的输入输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。5.熟悉作用域运算符的功能和基本使用方法。6.掌握C++内存的动态分配和释放方法。7.理解引用的概念,掌握引用的使用方法。
第三章 类和对象 14学时(课堂讲授学时8+课程实验学时6)主要内容:
1.类与对象的基本概念 2.构造函数与析构函数 3.对象数组与对象指针 4.向函数传递对象 5.静态成员 6.友元
7.类对象作为成员 8.常类型 教学要求:
类的声明;对象定义;对象的成员的访问。访问属性的理解和运用;构造函数和析构函数的定义;对象数组的定义和使用;this的指针的理解和使用;类的成员类型为其他类时如何理解和使用;静态成员的理解和运用。提供友元机制的目的;友元声明方法;提供常类型机制的目的;各种不同的常类型运作方式。其它教学环节:
实验2:类和对象。实验目的和要求:
1.掌握类、类的数据成员、类的成员函数的定义方式。2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。5.掌握重载构造函数的方法。6.了解拷贝构造函数的方法。实验3:对象数组和对象指针。实验目的和要求:
1.掌握对象数组的定义和使用方法。
2.理解对象指针的概念,学会用指针引用对象。3.了解this指针的工作方式。
4.掌握静态数据成员和静态成员函数的基本使用方法。5.理解友元与友元函数的作用,掌握其使用方法。
第四章 派生类和继承 9学时(课堂讲授学时6+课程实验学时3)主要内容:
1.派生类的概念
2.派生类的构造函数和析构函数 3.基类成员的访问 4.多重继承 5.赋值兼容规则 教学要求:
基类和派生类的基本概念;继承成员的访问规则;派生类构造函数和析构函数的运行规则;多重继承的基本概念;多重继承中同名二义性如何消除;引入虚基类的目的;继承类和派生类之间相互赋值规则用。
其它教学环节:
实验4:派生类与继承。实验目的和要求:
1.理解类的继承的概念,能够定义和使用类的继承关系。2.掌握派生类的声明和定义方法。
3.掌握公有派生和私有派生的访问特性。4.学习虚基类在解决问题中的作用。
第五章 多态性 12学时(课堂讲授学时8+课程实验学时4)主要内容:
1.编译时的多态性与运行时的多态性 2.函数重载 3.运算符重载 4.类型转换 5.虚函数 教学要求:
多态的基本概念;实现运算符重载的方法(成员函数);实现运算符重载的方法(友元函数);静态联编和动态联编的基本概念;虚函数的作用;虚函数的运用。其它教学环节:
实验5:虚函数和多态性。实验目的和要求:
1.理解编译时的多态性和运行时的多态性。2.掌握运算符重载的基本方法。3.掌握虚函数的定义和使用方法。
第六章 模板 7学时(课堂讲授学时4+课程实验学时3)主要内容:
1.模板的概念
2.函数模板与模板函数 3.类模板和模板类 教学要求:
模板的基本概念;为什么要使用模板;函数模板和模板函数的基本概念;函数模板的声明和使用;类模板和模板类的基本概念。其它教学环节:
实验6:函数模板与类模板。实验目的和要求:
1.掌握函数模板及其声明方法。2.掌握模板函数及其生成方法。3.学习类模板的声明与使用方法。
第七章 C++的I/O流类库 6学时(课堂讲授学时3+课程实验学时3)主要内容:
1.C++建立类类库的目的 2.预定义类型的输入输出
3.用户自定义类型的输入和输出 教学要求:
掌握在各种情况下的<<和>>运算符的重载。其它教学环节:
实验7:I/O流类库。实验目的和要求:
1.掌握流及流类库的作用。
2.掌握流类库中常用的类及其成员函数的使用方法。3.掌握重载“<<”和“>>”的方法。
4.掌握控制输出宽度的函数width和setw。
5.掌握函数setosflags和resetiosflags设置和恢复对齐方式、精度、大小写等。
研究教学内容 5学时(课程讲解和讨论学时)
程序综合设计:按照面向对象程序开发的原则和方法,利用一个实例来讲解面向对象程序设计的整个过程,然后要求学生根据自己的开发经验进行分组讨论,从而帮助学生进一步理解和熟悉面向对象程序设计方法。
四、教学重点、难点及教学方法
重点:类和对象的基本概念;对象定义;对象的成员的访问。访问属性的理解和运用;构造函数和析构函数的定义;对象数组的定义和使用;this的指针的理解和使用。基类和派生类的基本概念;继承成员的访问规则;派生类构造函数和析构函数的运行规则。多态的基本概念;函数的重载。
难点:多重继承;虚函数;模板。
教学方法:课堂授课采用多媒体教学和分组讨论的方法,实验采用任务驱动方式。通过未来愿景描述和学以致用的方法来提高学生的学习兴趣,通过分组交流和师生积极互动的方式提高学生学习本门课程的学习能力。
五、考核方式及成绩评定方式:考试
六、教材及参考书目
推荐教材:
[1] 《C++面向对象程序设计》,陈维兴,林小茶,清华大学出版社,第2版,2004 参考书:
[1] 《C++面向对象程序设计习题解析与上机指导》,陈维兴,清华大学出版社,2003 [2] 《C++程序设计基础》,周霭如,电子工业出版社,2003 [3] 《C++语言程序设计》,郑莉,清华大学出版社,2005 修(制)订人: 审核人:
2010年 3 月30
日