面向对象编程技术课程设计之方向2-C++综合编程指导书.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:9 大小:256KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

面向对象编程技术课程设计之方向2-C++综合编程指导书.pdf

面向对象编程技术课程设计之方向2-C++综合编程指导书.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++课程设计指导书(二)-C++综合编程与简单设计模式的运用汤亚玲编写2008-5-9一、课程设计的目的与意义学会综合运用C++教材中的基础理论知识,并学习专业编程中广为借鉴的一些经典的编程模式,联系具体事例,解决实际问题,达到深入领会理论,分析解决实际问题,培养一定的编程实践能力的目的。本设计出发点是紧扣教材,灵活运用,加深对教材内容的理解和拓展学习的知识面。注意:本课程题目主要考察学生对课本知识的综合运用能力和基本的C++编程能力,不提供参考源程序。二、课程设计基本要求1.学习设计模式中创建型模式中的Factory模式和Singleton模式,总结对这两种模式的理解和认识。(参见附录1和附录2)2.完成具有以下功能的简单模型系统:系统中有一个唯一(Singleton)的水果生产工厂,能生产成品水果产品,如苹果(Apple)、梨子(Pear)、香蕉(Banana)、桃子(Peach)等等,生产工厂能根据用户的选择或要求(用简单文字选择界面实现)生产指定的水果并提供给客户。3.阐述你自己在实现过程中遇到的问题和解决的过程。4.撰写课程设计报告,总结心得体会。三、课程设计技术要点提示:1.程序中建立水果生产工厂类(参考Factory模式),但保证该类只能实例化唯一的一个水果工厂(参考Singleton模式)。2.建立与各种水果(苹果、香蕉、梨子…等)相对应的类库结果,并设计各种水果的抽象基类(如命名为Fruit类),建立抽象水果类的使用接口,在具体的水果派生类中加以实现,并通过多态的方式在主程序中加以使用。3.在主程序中建立简单文字选择界面,提供给客户使用。四、课程设计试验报告基本格式课程设计试验报告的基本内容包括封面、正文、目录、附录四部分。11.封面:包括“《面向对象编程技术》课程设计试验报告”、专业、班级、学号、姓名、设计时间等基本信息。2.目录:课程设计文档的文档目录。3.正文包括:(1)应用程序名称。(2)应用程序的主体、设计目的。(3)应用程序简介:功能介绍、基本内容、主要技术、运行环境。(4)应用程序的总体设计结构图、类层次图、主要运行界面介绍。(5)创新与难点:阐述个人设计主要成功之处,开发中遇到的困难和解决的方法。(6)课程设计过程的心得体会。4.附录:包括源程序和简易使用说明等。5.课程设计报告用计算机打印。2附录1:Factory模式在面向对象系统设计中经常可以遇到以下的两类问题:为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new×××;的代码。这里带来两个问题:1)客户程序员必须知道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可记忆性,就姑且不论不同程序员千奇百怪的个人偏好了),2)程序的扩展性和维护变得越来越困难。2)还有一种情况就是在父类中并不知道具体要实例化哪一个具体的子类。这里的意思为:假设我们在类A中要使用到类B,B是一个抽象父类,在A中并不知道具体要实例化那一个B的子类,但是在类A的子类D中是可以知道的。在A中我们没有办法直接使用类似于new×××的语句,因为根本就不知道×××是什么。以上两个问题也就引出了Factory模式的两个最重要的功能:1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到了子类中。模式选择通常使用Factory模式来解决上面给出的两个问题。在第一个问题中,我们经常就是声明一个创建对象的接口,并封装了对象的创建过程。Factory这里类似于一个真正意义上的工厂(生产对象)。在第二个问题中,我们需要提供一个对象创建对象的接口,并在子类中提供其具体实现(因为只有在子类中可以决定到底实例化哪一个类)。第一中情况的Factory的结构示意图为:图1:Factory模式结构示意图1图1所以的Factory模式经常在系统开发中用到,但是这并不是Factory模式的最大威力所在(因为这可以通过其他方式解决这个问题)。Factory模式不单是提供了创建对象的接口,其最重要的是延迟了子类的实例化(第二个问题),以下是这种情况的一个Factory的结构示意图:3图2:Factory模式结构示意图1图2中关键中Factory模式的应用并不是只是为了封装对象的创建,而是