“面向对象的程序设计基础”课程总结(共10篇)
“面向对象的程序设计基础”课程总结 篇1
《面向对象的程序设计基础》课程总结
2014~2015学年第一学期基本结束,“面向对象的程序设计基础”课程的教学任务圆满完成。下面对本学期教学情况进行总结。
1.授课班级为14软件一班、14软件二班两个班级,平均每班授课学时96,两个班总课时量为192。
2.两个班级整体良好。积极努力、勤于思考,学习气氛比较浓厚;上课过程均未出现迟到早退现象。课堂秩序良好,和教师积极互动,发言踊跃,课堂气氛较活跃。
3.本学期两个班施行“翻转课堂”的教学模式,以任务链为载体,同学们通过完任务而掌握相关的知识点,该教学模式可以充分的锻炼同学们自主学习和结对学习的能力,教学效果很明显,教学质量得到了提高。整个学期的学习过程中,通过教师参与检查,学习内容及进度基本按照学期授课计划进行,作业按照作业计划基本完成,完成情况良好,而且部分同学的进度超前。期中考试以测试同学们的一些经典例题的基本程序思想为主,由于大部分题目同学们练习过,所以基本所有同学基本到达测试目的。
4.期末考试以测试同学们的基本知识和经典程序的设计为目的,因为面向对象的程序编写需要编译和运行,采用上机考试。考试成绩偏低,分析原因可能是因为同学们的注意力在解决问题上,对于问题相关的知识点没有系统的掌握,在以后的教学中一定要加强。
5.总评成绩的评定:出勤情况占5%,课堂表现占10%,平时作业占20%,阶段测试占20%,期末考试成绩占45%的比例完成。结果符合要求:85分以上占27%,84~75分占33%,74~60分占33%,60分以下占7%。
6.存在的问题:班风还有待进一步建立和加强。
李志芳
2015年1月13日
“面向对象的程序设计基础”课程总结 篇2
高职计算机软件专业培养面向实际应用的高等技术应用型人才, 他们是处在“金字塔”结构塔底生产第一线的编程人员, 教学质量的好坏直接关系到金字塔基础的坚固性。高职学生的现状是:进入学校起点低, 学习任务与本科差不多, 但课程时间少。当高职学生跨入社会求职时, 社会需求的情况是:知识结构要跟上潮流, 上岗即有实际的动手能力。为此, 我们根据多年的教学体会, 在面向对象程序设计的课程教学中使用感性化教学方法, 总结了一些方法和手段以刺激学生对编写程序产生兴趣, 从不懂到会读懂, 再到会改, 直到会自己动脑思考来设计程序, 充分发挥学生的主观能动性, 达到学有所用的教育目的。
一、课程要求与现状
我们的培养目标是面向软件产业需求, 培养既有一定理论基础, 又有较强实际操作能力的实用型技术人才。面向对象程序设计是一门专业核心课程, 虽然学生接触过其他高级语言 (C语言) , 但它与面向过程程序设计具有完善的系统知识结构, 语法规则, 与理论密切配合的实践操作部分使用的应用软件是VC++, 所涉及的内容庞大, 关系复杂。教学要完成三大方面内容:C++语法, 面向对象程序设计方法, VC++应用程序具体设计, 学生掌握这些知识后, 具有现代软件工程思想, 了解软件开发的一般方法, 熟悉软件开发的一般过程, 精通一些实用的软件开发工具;具有较强的代码编制能力, 同时有一定的软件测试能力。要在有限的时间里完成教学, 但是内容多, 时间紧。我们采用感性化教学方法后, 提高了学生的学习兴趣和效率, 增强了实际运用的知识能力。
二、感性化教学策略
分析授课对象大都是只有较少程序设计基础的大学学生, 加之教科书内容的组织一般比较抽象化, 有些概念难以理解, 如果照本宣科, 容易使学生产生厌倦、畏惧心理, 难以收到好的教学效果, 因此采用传统的教学方法授课是不现实的。
我们的总体思路是:对教学内容中枯燥的语言法则, 知识结构进行感性化的处理, 形成有趣的知识点, 串成一条教学主轴线:“教”的思维空间与“学”的思维空间紧密围绕这条主轴线交互行进, 形成以学生为主体, 以感性化教学为主导的知识探索和应用创新的立体空间, 注重系统地组织本学科的知识点, 结合其他学科形成有机的知识网络;培养学习者在知识点上的其本应用能力;锻炼学习者借助信息工具掌握“自学习”的方法;提高学习者探索知识, 应用创新以及解决实际问题的能力。
三、感性化教学方法
从掌握知识的角度来看, 可将知识分为两种:与已有知识相类似或者截然不同, 前者采用横向列表比较法, 后者采用纵向特征延伸法。实际讲授时, 常常是这两种情况交替出现, 相互渗透, 具体分析教授知识的特点, 不同类型采用不同方式加以处理, 以帮助学习者提高获取知识的兴趣与效率。感性化教学是一种将新知识并入学习者知识网络体系中的手段, 在学习者认识思维活动的高峰期, 要及时切入知识创新应用的理念, 形成知识升华重组, 实现知识创新应用的最终目的。
1、横向列表比较法
将要讲授的新知识与学生已学过, 结构相似, 内容相访的知识相对比, 并以列表的方式展现出来, 其特点是学生接受新知识数量大, 速度快, 理解深刻, 便于以点带面拓展知识网络, 建立新知识生长点。
如将高级语言 (C语言) 与面向对象编程语言 (C++语言) 作对比进行教与学, 把表中留出空余由学生课外“处学习”补充完成, 有助于学生温故而知新。
2、纵向特征点延伸法
展示讲授的新知识特征或兴趣点, 围绕新知识基本概念, 由浅入深剖析知识点。如在教授如何理解与设计面向对象程序应用程序的流程及其各部分之间的关系时, 我们把知识分成有机的三部分:数据输出部分, 数据输入部分和数据处理部分, 按下述方式从易到难进行讲解, 理顺相互关系。
提出问题。编程序的最终目的是什么?输出结果。要求学生举例说明实际情况中见到的输出结果。并讨论其类型。
展示特征点。教师提供直观“感性化”环境:用摄影机展现VC++程序图形化输出结果, 如图所示。学生观察后, 在脑子里形成第一直观印象。与面向过程程序设计结果相对比, 会产生新鲜感, 激发学习兴趣。此阶段学生处于行为主义学习方式。
理论阐述, 教师进一步提供列表, 分析输出程序及原理。此时, 学生的思绪进入获解的期望中, 经过一个认识主义的学习过程, 让学生按部就班地操作练习。
融合新旧知识, 探索知创新应用。这里将几种简单的知识有机结合。举个例子, 设计画出颜色渐变的“抛物线”, 它是由循环画点组成, 是结合作点函数 (新知识) 与计算机语言的语法结构 (旧知识) , 形成组合知识再创新应用。为此, 特别要留出问题, 提示学生课外从相应软件的“帮助”中找到所需要的函数, 进一步探索新旧知识的重新认识组合, 目的是要学生拓展知识空间, 超出课本的局限, 培养知识应用的能力
3、知识的升华重组
在透彻讲解每个知识点后, 及时展现本知识点与整个知识网络的关系及其生长点。有助于学生将新知识有机的融入已有的知识体系中, 站在新高度审视应用新知识。例如在上述阐明知识点“输出部分”的细节部分后, 指出“输出部分”在有关的知识网络即它在整个应用程序流程中的位置关系, 功能作用, 同时承上启下为讲授下一个知识点“输入部分”, “数据处理”作准备。
4、知识重新应用
教师在教学中应发挥指导作用, 引导学生将所接触到的知识自我消化, 再重新组合探索创新应用。做到课堂内有意识渗透, 课外布置设计作品。教师提出基本要求, 作品用途, 由学生自选题材创作。这一阶段学生体验建构主义的学习方式, 用所学的知识, 探索创新应用, 把知识升华到应用解决实际问题上。
允许学生结合本人的兴趣, 从实际应用中选择有具体应用背景的实验题目, 充分发挥学生的主动性或由教师结合实际给学生布置一些较大的设计课题, 学生也可以统一组织成若干个学习小组, 协作共同完成这样一方面锻炼了学生的自己动手能力, 也加强了他们交流与团结协作的精神;另一方面确实能将理论与实践相结合, 从而大大激发了学生的学习热情, 为其今后的学习和工作打下良好的基础。
四、结束语
本人通过对3届共9个班的学生在教学过程中按照感性化教学方案执行之后, 受到了学生的普遍欢迎和肯定, 学生学习的积极性高, 接受知识快, 应用知识时思维活跃。教学效果有了很大提高, 尤其在掌握运用面向对象的思想进行分析设计解决现实问题方面效果显著。面向对象的程序设计课程实践性强, 还需要我们进一步深入拓宽。总之, 教学中结合开发软件VC++, 注重挖掘感性化的知识, 从学生的实际情况出发设计实验内容与要求, 切实培养学生融会贯通应用知识进行创新的能力, 更好提高学生对面向对象的程序设计思路的掌握水平。H
摘要:面向对象程序设计类教学中存在课程内容零散、难度大、考核内容与教学重点不尽吻合, 学生兴趣不浓、动手能力较差等诸多问题, 有必要对其进行改革。本文从着重培养学生的动手能力和再学习能力等方面介绍如何用感性化教学进行面向对象程序设计课程教学的改革。
“面向对象的程序设计基础”课程总结 篇3
摘 要:本系统把"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
“面向对象的程序设计基础”课程总结 篇4
《Java面向对象程序设计语言》课程设计(实验)指导书
一、对学生的基本要求:
1、理论联系实际、严肃认真、实事求是的科学态度和勇于探索的创新精神。
2、运用所学基础理论与专业知识分析和解决实际问题,培养独立思考完成任务的能力。
3、运用Java面向对象程序设计方法、标准与规范开发小型应用软件系统。
二、设计的要求及内容及要求:
应用Java面向对象程序设计语言开发小型应用软件系统。可以从给定的选题中选择一个课题或自拟课题(自拟课题需经指导教师批准),完成系统分析、设计和开发。
具体要求如下:
(1)针对你所选择的系统进行需求分析,写出系统的功能要求,设计的应用程序应具有的功能要素。
(2)程序代码应符合教学中应该具有的规范要求,类名、方法名,属性名称应与设计中实际的应用含义相符,程序中具有相应的注释。(3)程序的界面要合理、美观。
(4)每人最终提交一个可行的应用软件程序和规范的课程设计说明书。说明书应严格按照说明书的要求,格式清晰、规整。并提交所设计程序的电子文档。
三、设计进度: 1、17周周一~周二:选题,系统的需求分析。分析并规划你所设计的系统应达到的功能,满足什么样的要求。2、17周周二~周四:系统设计。分析要达到你所要求的功能需要编写什么类,规划类的层次结构,设定好类明、方法名、属性名;规划你所设计的系统应具有什么样的界面布局。查阅资料帮助自己规划好你的系统。3、17周周五~18周周二:程序设计。根据自己所规划的程序进行具体代码设计,代码设计要符合程序设计的规范要求,注意程序的编写格式。4、18周周三:程序测试。对自己所规划的程序进行测试,看是否有异常及程序Bug出现,并进行调试修正程序代码。5、18周周三:编写课程设计说明书。按照本指导书要求格式编写程序设计报告(见附件)。6、18周周四上午交所设计程序的电子文档,和课程设计说明书的电子文档。7、18周周四~周五:成绩评定。等待指导老师提问答辩。
四、选题
根据自己的爱好从以下题目中选择一个题目进行设计。
1、设计题目:学籍管理系统
设计目的:设计一个学籍管理系统,保存所有学生信息。
第1页 设计要求:学籍管理系统一般包括学生的基本信息,如,学号、姓名、班级、籍贯、联系电话、学生成绩等;能够添加、查找、删除学生信息等功能;程序执行时候,需要从文件中导入数据,程序推出后再将数据保存到文件中。
2、设计题目:出版物管理
设计目的:对出版物书籍、CD或者磁带进行管理。
设计要求:使用图形界面的方式,对书籍、CD或者磁带的基本信息进行管理。
书籍界面包括:书籍的名称、书籍的价格、书籍的出版社、书籍的作者、书籍的ISBN、及书籍的出版日期等;可以通过选择菜单来进行书籍信息的添加、修改和删除等,所有的书籍信息会显示在一个列表组件中,当某本书籍的信息改变时,列表中会相应的进行改变。CD界面包括:CD的名称、CD的价格、CD的出版社、CD的演唱者、CD的发行者、CD的ISRC等;可以通过选择菜单进行CD信息的添加、修改和删除,所有CD信息会显示在一个列表组件中,当某张CD的信息改变时,列表中会相应的进行改变。
磁带界面包括:磁带的名称、磁带的价格、磁带的出版社、磁带的演唱者、磁带的ISRC等;可以通过选择菜单进行磁带信息的添加、修改和删除,所有磁带信息会显示在一个列表组件中,某张磁带的信息改变时,列表中信息会相应的进行改变。
3、设计题目:Java程序编辑器
设计目的:设计一个Java程序编辑器,能够进行简单的文字处理。
设计要求:类似一个Windows系统的记事本,能够实现打开、保存文件;查找、替换字符串;定时自动更新文件,并创建备份文件;将Java的关键字以不同颜色或不同字体显示。
4、设计题目:设置日期时间属性
设计目的:设计类似Windows系统中“设置日期时间属性”的窗口及功能,综合运用各种组件、日期类、日历类、线程等内容。
设计要求:设计类似Windows系统中“设置日期时间属性”的窗口及功能,设计相似界面,实现日期和时间的多种运算和显示,保证运算正确性。
5、设计题目:交通信号灯的线程设计
设计目的:使用多线程设计,同步机制设计一个交通信号灯。
设计要求:设计线程;设计路口信号灯示意图界面;进一步将两个方向的信号灯分成3种车道灯:左转、直行和右转;根据车流量进行时间的模糊控制。
6、设计题目:聊天程序
设计目的:图形界面与Socket通信及输入/输出流的综合运用。
设计要求:设计一个图形界面,以Socket通信机制实现类似QQ的网络聊天程序,该聊天程序最少可以达到两个人聊天,并可以保存聊天的内容。
7、银行贷款多种还款方式的计算
设计目的:图形界面与算法设计。
设计要求:设计一个图形界面,在界面上能够实现的实际贷款和还款的一般规则(参照教材P409)。
第2页
8、日历组件
设计目的:图形界面与算法设计。
设计要求:自定义一个日历组件:显示当月日历、当前日期、上/下日历等,界面样子参照教材P409。
9、地址薄管理器
设计目的:图形界面与输入/输出流和文件操作。
设计要求:设计一个存储朋友电子邮件地址及电话号码的地址薄应用程序,界面自行设计(也可参照教材P411)。
(1)设计一个人员类,成员变量包括类别、姓名、电话号码和邮件地址等,成员方法包括插入、移动、删除、更改类别等。所有人员信息保存在以对象为单位的记录文件中,以对象流实现数据读取和保存功能。
(2)设计图形用户界面,在此界面上可实现针对朋友电子邮件和电话号码的各种操作(可参照教材P411)。
(3)添加主菜单和快捷菜单,实现插入、删除、移动等功能,快捷菜单会根据当前组件自动执行不同对象的插入、删除、移动等操作。
10、搜索文件
设计目的:图形界面与输入/输出流和文件操作。
设计要求:参照Window的资源管理器,给特定搜索文件名的部分字符,在制定的范围内搜索文件,显示搜索结果的文件名列表、文件路径及文件属性。
其他选题,需征求指导教师同意,由指导教师根据拟定的题目难度给予相应的评分标准。
五、考核内容及分值分配
1、课程设计说明书。(30分)1)正文:(手写课程设计报告4页以上)(20分)(1)、概述
包括项目背景、编写目的、软件定义、开发环境、所用的知识等内容。
(2)、功能说明
问题陈述、需完成的功能。
(3)、程序类说明
定义的类、接口等的名称,并将其在程序中起到的作用进行简要说明,并根据面向对象程序设计的原则画出类的层次关系图。(4)、软件系统测试说明
对你所设计的软件进行使用测试,列举该软件出现的问题和不完善的地方。
(5)、用户使用说明
将所设计的软件能够达到的功能进行描述。2)结束语:(5分)
第3页 写出完成本课程设计的心得,有哪些收获。软件还需要哪些改进。3)参考文献:按照要求格式写出你所参考的文献资料。(5分)
2、开发的应用软件系统(60分)1)程序代码的格式(10分)
代码格式是否规范,是否有相应的注视,程序类名、方法名、属性名是否具有可读性。2)程序界面设计(10分)
界面设计布局是否合理美观,操作是否简单方便。3)程序功能(40分)
程序功能是否达到了你所选系统的要求。基本满足可得24~28分;完全满足可得28~32分;完全满足并能够进行相应的异常处理可得32~40分;如果在此基础上还能进行相应创新可根据创新的程度进行适当加分。
3、答辩及课程设计说明书资料归档规范性(10分)
注:每个学生都要独立完成一个题目,如发现雷同者,对所有雷同学生按照不及格处理。
附件:说明书(论文)格式(可以参照论文范例)2.说明书(或论文)结构及要求
(1)封面(由商学院统一发课程设计封面纸)(2)任务书(由指导教师填写)(3)目录
以上内容由指导教师统一下发。(4)正文:(4页课程设计报告纸以上)1)、概述
2)、功能说明 3)、程序类说明
4)、软件系统测试说明 5)、用户使用说明(5)结束语
(6)参考文献(资料)
参考文献必须是学生在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。各类文献的书写格式如下: a.图书类的参考文献
序号 作者名·书名·(版次)·出版单位,出版年:引用部分起止页码。b.翻译图书类的参考文献
序号 作者名·书名·译者·(版次)出版单位,出版年:引用部分起止页码。c.期刊类的参考文献
序号 作者名·文集名·期刊名·年,卷(期):引用部分起止页码。
第4页
(7)附件
可以根据说明需要将设计界面及相关其他材料附在此处,也可以没有。
“面向对象的程序设计基础”课程总结 篇5
第一章
1、什么是分析与设计?
1、分析强调对问题和需求的调查研究
2、设计强调的是满足需求的概念上的解决方案
2、什么是面向对象分析与设计?
1、在面向对象分析过程中,强调的是在问题领域内发现和描述对象(或概念)
2、在面对对象设计过程中,强调的是定义软件对象以及它们如何协作以实现需求。
3、简单示例:
1、定义用例(use case)
需求分析可能包括人们如何使用应用的情节或场景,这些情节或场景可以被编写成用例。
2、定义领域模型(domain model)
面向对象分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念或对象。需要注意的是,领域模型并不是对软件对象的描述,它使真实世界领域中的概念和想象可视化。(也被称为概念领域模型—conceptual object model)
3、定义交互图
关注的是软件对象的定义—它们的职责和协作。顺序图(sequence diagram)是描述协作的常见方法。它展示对象之间的信息流,和由消息引起的方法调用。
4、定义设计类图
除了在交互图中显示对象协作的动态视图外,还可以用设计类图(design class diagram)来有效的表示类定义的静态视图。这样可以描述类的属性和方法。
与领域模型表示的是真实世界的类,设计类图表示的是软件类
要注意的是,尽管设计类图不同于领域模型,但是其中的某些类名和内容还是相似的。
第二章
1、什么是UML?
统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言。
UML表示法的基础是UML元模型,它描述建模元素的语义,UML元模型对模型驱动架构(Model Driven Architecture, MDA)CASE工具供应商具有影响。开发者并不需要对其进行学习。
2、三种UML应用方式
1、UML作为草图—非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的负责部分。
2、UML作为蓝图—相对详细的设计图。用于:①逆向工程;②代码生成。
3、UML作为编程语言—用UML完成软件系统可执行规格说明。
3、什么是UP?
软件开发过程(software development process)描述了构造、部署以及维护软件的方式。统一过程(UP)已经成为一种流行的构造面向对象系统的迭代软件开发过程。
4、迭代(iterative)、进化(evolutionary)和敏捷(agile)
1、迭代开发是UP和大多数其他现代方法中的关键实践。每次迭代都具有各自的需求分析、设计、实现和测试活动。
2、迭代进化开发
小步骤、快速反馈和调整是迭代开发的重要思想。短时迭代为上。迭代的一个关键时光可见
第 1 页
2013-3-31 OOAD总复习
思想是时间定量,或者时长固定。
3、瀑布生命周期
在瀑布(或顺序)生命周期过程中,试图在编程之前(详细)定义所有或大部分需求。而且通常于编程之前创建出完整的设计(或模型集)。
4、什么是敏捷模型?
1、采用敏捷方法并不意味着不进行任何建模,这是错误理解。
2、建模和模型的目的主要用于理解和沟通,而不是构建文档
3、不要对所有或大多数软件建模或者应用UML。
4、尽可能使用最简单的工具。
5、UP所倡导的核心思想是:短时间定量迭代、进化和可适应性开发。
6、UP的四个阶段:初始(inc)、细化(elaboration)、构造(construction)、移交(transition)
第五章
1、进化式需求
1、需求就是系统(广义的说法是项目)必须提供的能力和必须遵从的条件。
2、需求分析的最大挑战是寻找、沟通和记住(通常是指记录)什么事真正需要的,并能够清楚的讲解给客户和开发团队的成员。
3、需求变更是不可避免的,因此有效的管理和关键
4、进化式需求VS瀑布式需求:„„
5、需求按照“FURPS+”模型进行分类:
1、功能性:特性、功能、安全
2、可用性:人性化因素、帮助、文档
3、可靠性:故障频率、可恢复性、可预测性
4、性能:响应时间、吞吐量、准确性、有效性、资源利用率
5、可支持性:适应性、可维护性、国际化、可配置性
6、一些次要因素:实现、接口、操作、包装、授权
6、UP制品如何组织需求:
1、用例模型:一组使用系统的典型场景。
2、补充性规格说明:基本上是用例之外的所有内容。
3、词汇表:词汇表以最简单的形式定义重要的术语。
4、设想:概括了高阶需求,项目的业务案例。
5、业务规划(领域规划):通常描述了凌驾于某一软件项目的需求或政策,这些规则是领域或者业务所要求的,并且许多应用应该遵从这些规则。
第六章
1、用例是文本文档,而非图形;用例建模主要是编写文本的活动,而非制图。
2、用例常用的三种形式:
1、摘要(brief):简洁的一段式概要,主要用于主成功场景。
2、非正式(casual):非正式的段落格式。
3、详述(fully-dressed):详细编写所有步骤及各种变化,同时具有补充部分,如前置条件和保证成功。
3、参与者(actor)、场景(scenario)、用例(use-case)
1、参与者是某些具有行为的事物,可以是人、计算机系统或者组织。
2、场景是参与者与系统之间的一系列特定的活动和交互,也称为用例实例
时光可见
第 2 页
2013-3-31 OOAD总复习
3、用例是一组相关的成功和失败场景的集合,用来描述参与者如何使用系统来实现其目标。
4、准则:如何发现用例?
1、选择系统边界
2、辨别主要参与者
3、辨别每个参与者的目标
4、定义用例以满足目标
5、准则:什么样的测试有助于发现有用的用例?
1、老板测试(the boss test):老板的一问一答
2、EBP测试(the ERP test)基本业务过程
3、规模测试(the size test)
6、示范:应用上述测试
1、就供应者合同进行协商:
比ERP更广泛,用时更长。更适合作为业务用例,而非系统用例。
2、处理退货
能够通过老板测试。看上去与ERP类似。规模适合3、登陆
如果你一整天都在登陆,老板不会满意
4、在游戏板上移动棋子
单一步骤,不能通过规模测试
第八章
1、迭代1的需求和重点:OOA/D技术的核心
2、过程:初始(inception)和细化(elaboration)
初始阶段是迈向细化阶段的一小步。在该阶段决定基本的可行性、风险和范围,对项目是否值得进行更深入的调查进行决策。
细化是一般项目中最初的一些列迭代,其中包括:
1、对核心、有风险的软件架构进行编程和测试
2、发现并稳定需求的主要成分
3、规避主要风险
第九章
1、领域模型是对领域内的概念类或现实世界中对象的可视化表示。领域模型也称为概念膜性能高、领域对象模型和分析对象模型。
2、应用UML表示法,领域模型被描述为一组没有定义操作(方法的特征标记)的类图(class diagram):
1、领域对象或者概念类
2、概念类之间的关联
3、概念类的属性
3、准则:如何创建领域模型?
1、寻找概念类
2、将其绘制成UML类图中的类
3、添加关联和属性
4、准则:如何找到概念类?
时光可见
第 3 页
2013-3-31 OOAD总复习
1、重用和修改现有的模型
2、使用分类列表
3、确定名词短语
5、准则:何时需要描述类?
1、需要有关商品或者服务的描述,独立于任何商品或服务的现有实例
2、删除其所描述事物的实例后,导致信息丢失,而这些信息也是需要维护的,但是被错误地与所删除的事物关联起来
3、减少冗余或重复信息
6、关联(association)是类(更精确的说,是这些类之间的实例)之间的关系,表示有意义和值得关注的连接
7、准则:在UML中如何对关联命名?
以“类名—动词短语—类名”的格式为关联命名,其中的动词短语构成了可读和有意义的顺序。
8、准则:任何属性都不表示外键
第十章
1、系统顺序图(SSD)是为阐述与讨论系统相关的输入和输出事件而快速、简单地创建制品。它们是操作契约和(最重要的)对象设计的输入
2、SSD中的操作可以在操作契约中进行分析,在词汇表中被详细描述,并且作为设计协作对象的起点。
3、对于用例中一系列特定事件,SSD展示了直接与系统交互的外部参与者、系统(作为黑盒)以及由参与者发起的系统事件。
4、什么是系统顺序图?
系统顺序图表示的是,对于用例的一个特定场景,外部参与者产生的事件,其顺序和系统之间的事件,所有系统被视为黑盒,该图强调的是从参与者到系统的跨越系统边界的事件。
第十一章
1、操作契约可以视为UP用例模型的一部分,因为它对用例指出的系统操作的效用提供了更详细的分析。
2、定义:契约有哪些部分?
1、操作:操作的名称和参数
2、交叉引用:会发生此操作的用例
3、前置条件:执行操作之前,对系统或领域模型对象状态的重要假设。
4、后置条件:最重要的部分。完成操作后,领域模型对象的状态。
3、什么是系统操作?
系统操作是作为黑盒构件的系统在其公共接口中提供的操作。系统操作可以在绘制SSD草图时确定。
4、后置条件描述了领域模型内对象状态变化。领域模型状态变化包括创建实例、形成或消除关联以及改变属性。
5、准则:契约在何时有效?
在UP中,用例是项目需求的主要知识库。用例可以为设计提供大部分或全部所需细节。这中情况下,契约就没什么用处。
6、准则:如何创建和编写契约?
1、从SSD图中确定系统操作
时光可见
第 4 页
2013-3-31 OOAD总复习
2、如果系统操作复杂,其结果可能不明显,或者在用例中不清楚,则可以为其构造契约
3、使用以下几种类表来描述后置条件:
1、创建或删除实例
2、属性值的变化
3、形成或消除关联(UML连接)
第十三章
1、什么是逻辑架构和层?
逻辑架构是软件类的宏观组织结构,它将软件类组织为包(或命名空间)、子系统和层等。之所以称之为逻辑架构,是因为并未决定如何在不同的操作系统进程或网络中物理计算机上对这些元素进行部署。
层是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的职责。
OO系统中通常包括的层有:
1、用户界面
2、应用逻辑和领域对象
3、技术服务
2、什么是软件架构?
架构是一组重要的决策,其中涉及软件系统的组织,对结构元素及其组成系统所籍接口的选择,这些元素特定于其相互协作的行为,这些结构和行为元素到规模更大的子系统的组成,以及指导该组织结构的架构风格。
第十五章
1、交互图这一术语是对以下两种更为特化的UML图的统称
1、顺序图:以一种栅栏格式描述交互,其中在右侧添加新创建的对象。
2、通信图:以图或者网络格式描述对象交互,其中对象可以置于图中的任何位置。
2、顺序图的基本表示法:
1、消息:实心箭头
2、应答或返回:在活动条末端使用应答(或返回)消息线
3、异步调用:虚线
3、通信图的基本表示法:
1、链是连接两个对象的路径,它指明了对象间某种可能的导航和可见性。链是关联的实例。
2、消息:对象间的每个消息都可以使用消息表达式和指明消息方向的小箭头表示。
3、消息的顺序编号:
1、不为第一个消息编号
2、使用合法编号方案来表示后续消息的顺序和嵌套,其中的嵌套消息要使用附加的数字
4、可以在顺序编号后使用带有方括号[]的条件句子来表示有条件消息。为真时发送消息
5、互斥的有条件路径:在顺序编号后面加上字母,第一个字母是a
6、迭代或循环:在顺序编号后面加*
第十六章
时光可见
第 5 页
2013-3-31 OOAD总复习
1、表示UML属性的方法:属性文本和关联线
2、在DCD中使用关联表示属性时的风格:导航性箭头、角色名、3、对于领域模型使用类图的时候,需要表示关联名称,但是要避免使用导航箭头,因为领域模型不是软件透视图。
3、对数据类型对象使用属性文本表示法,对其他对象使用关联线。
4、依赖用从客户到提供者的虚线箭头表示(AB,B发生变化会影响A)
5、比较常见的依赖类型:
1、拥有提供者类型的属性
2、向提供者发送消息
3、接收提供者类型的参数
4、提供者是超类或者接口
6、依赖标签
7、插座法表示接口
8、限定关联
第十七章
1、GRASP:基本OO设计的系统方法
2、GRASP:使用职责进行OO设计的学习工具
3、RDD(responsibility-driven design):职责驱动设计。
4、UML把职责定义为“类元的契约或义务”。就对象的角色而言,职责与对象的义务和行为相关。职责分为以下两种类型:行为和认知。
1、行为职责:
1、自身执行一些行为,如创建对象或计算。
2、初始化其他对象中的动作
3、控制和协调其他对象中的活动
2、认知职责:
1、对私有封装数据的认知
2、对相关对象的认知
3、对其能够导出或计算的事物的认知
5、对于软件领域对象来说,由于领域模型描述了领域对象的属性和关联,因此其通常产生与“认知”相关的职责。
6、职责的粒度会影响职责到类和方法的转换。
7、什么是模式?
如果以结构化形式对这些问题、解决方案和命名进行描述使其系统化,那么这些原则和习惯用法就可以称为模式。
在OO设计中,模式是对问题和解决方案的已命名描述,它可以用于新的语境。
8、使用GRASP进行对象设计的简短示例
1、创建者
2、信息专家
3、低耦合4、控制器
5、高内聚
9、创建者:谁创建了A?
解决方案:(有一个为真即可)
时光可见
第 6 页
2013-3-31 OOAD总复习
1、B“包含”或组成聚集了A
2、B记录A
3、B紧密地使用A
4、B具有A的初始化数据
10、信息专家:如果给定键值,谁知道Square对象的信息?
解决方案:把职责分配给具有完成该职责所需信息的那个类
11、低耦合:为什么是Board而不是Dog?如何减少变化产生的影响?
解决方案:分配职责以使耦合保持在较低的水平。用该原则对可选方案进行评估
12、控制器:在UI层之上首先接受和协调系统操作的对象是什么?
解决方案:把职责分配给能代表下列选择之一的对象:
1、代表全部“系统”、“根对象”、运行软件的设备或主要的子系统
2、代表发生系统操作的用例场景(用例或会话)
13、高内聚:怎样使对象保持有内聚、可理解和可管理,同时具有支持低耦合的附加作用?
解决方案:职责分配应保持高内聚,依此来评估备选方案
第十八章
1、用例实现描述某个用例基于协作对象如何在设计模型中实现。更精确的说,设计者能够描述用例的一个或多个场景的设计,其中的每一个设计都称为用例实现。
2、下面说明了一些制品之间的关系:
1、用例指出了SSD中所示的系统操作
2、系统操作可以称为输入到领域层交互图的控制器中的起始消息
3、领域层交互图阐述了对象如何交互完成所需任务—用例实现
第十九章
1、可见性是一个对象看见其他对象或引用其他对象的能力
2、实现对象A到对象B的可见性通常有四种方式:
1、属性可见性—B是A的属性
2、参数可见性—B是A中方法的参数
3、局部可见性—B是A中方法的局部对象(不是参数)
4、全局可见性—B具有某种方法的全局可见性
第二十章
1、用OO语言(java或者C#)创建代码并不是OOA/D的一部分,它是最重的目标
2、在UP中具有实现模型。源代码、数据库定义、JSP/XML/HTML页面等都是实现制品
3、面向对象语言中的实现需要以下元素编写源代码:
1、类和接口的定义
2、方法的定义
第二十三章
1、在迭代1结束的时候,应该已经完成以下任务:
1、所有软件都已经被充分地测试
2、客户定期地参与对已完成部分的评估
3、已经对系统进行了完成的集成和固化,使其成为基线化的内部版本
2、迭代2的需求和重点:对象设计和模式
时光可见
第 7 页
2013-3-31 OOAD总复习
1、支持第三方外部服务的变化
2、复杂的定价规则
3、需要进行设计,使得在销售总额变化时刷新GUI窗口
第二十五章
1、之前介绍了5个GRASP模式:信息专家、创建者、高内聚、低耦合、控制器
2、下面介绍最后4个GRASP模式:多态、间接性、纯虚构、防止变异
3、多态:如何处理基于类型的选择?如何创建可插拔的软件构件?
解决方案:当相关选择或行为随类型(类)有所不同时,使用多态操作作为变化的行为类型分配职责。推论:不要测试对象的类型,也不要使用条件逻辑来执行基于类型的不同选择
4、纯虚构:当你并不想违背高内聚和低耦合或者其他目标,但是基于专家模式所提供的方案又不合适时,哪些对象应该承担这一职责?
解决方案:对人为制造的类分配一组高内聚的职责,该类并不代表问题领域的概念—虚构的事物,用以支持高内聚、低耦合和复用。这种类是凭空虚构的。
5、间接性:为了避免两个或多个事物之间直接耦合,应该如何分配职责?如何使用对象解耦合,以支持低耦合并提高复用性潜力?
解决方案:将职责分配给中介对象,使其作为其他构件或服务之间的媒介,以避免它们之间的直接耦合。中介实现了其他构件之间的间接性
6、防止变异:如何设计对象、子系统和系统,使其内部的变化或不稳定不会对其他元素产生不良影响?
解决方案:识别预计变化或不稳定之处,分配职责用以在这些变化之外创建稳定接口
第二十六章
1、适配器(GoF):如何解决不相容的借口问题,或者如何为具有不同接口的类似构件提供稳定的借口?
解决方案:通过中介适配器对象,将构件的原有接口转换为其他接口。增加一层间接性对象,通过这些对象将不同的外部接口调整为在应用程序内使用的一致接口
2、工厂:当有特殊考虑(例如存在复杂创建逻辑,为了改良内聚而分离创建职责等)时,应该由谁来负责创建对象?
解决方案:创建称为工厂的纯虚构对象来处理这些创建职责
3、单实例类:只有唯一实例的类即为“单实例类”。对象需要全局可见性和单点访问
解决方案:对类定义静态方法用以返回单实例
4、策略:如何设计变化但相关的算法或政策?如何设计才能使这些算法或政策具有可变更能力?
解决方案:在单独的类中分别定义每种算法/政策/策略,并且使其具有共同接口
5、组合:如何能够像处理非组织(原子)对象一样,(多态地)处理一组对象或具有组合解耦股的对象呢?
解决方案:定义组合和原子对象的类,使它们实现相同的接口
6、外观:对一组完全不同的实现或接口需要公共、统一的接口。可能会与子系统内部的大量事物产生耦合,或者子系统的实现可能会改变,怎么办?
解决方案:对子系统定义惟一的接触点—使用外观对象封装子系统。该外观对象提供了惟一和统一的接口,并负责与子系统构件进行协作
7、观察者(发布—订阅):不同类型的订阅者对象关注于发布者对象的状态变化或事件,并时光可见
第 8 页
2013-3-31 OOAD总复习
且想要在发布者产生事件时以自己独特的方式作出反应。此外,发布者想要保持与订阅者的低耦合。如何对此进行设计呢?
解决方案:定义“订阅者”和“监听器”接口。订阅者实现此接口。发布者可以动态注册关注某事件的订阅者,并在事件发生时通知它们
第三十章
1、包含关系:多个用例中存在部分相同的行为,这是常见的现象
2、如下情形可以分解出子功能用例并使用包含关系:
1、用例在其他用例中重复使用
2、用例非常复杂并冗长,将其分解为子单元便于理解
3、具体用例是由参与者发起,完成了参与者所期望的完整行为。它们通常是基本业务过程用例
4、抽象用例永远不能被自己实例化,它是其他用例的子功能用例
5、包含其他用例的用例,或者是被其他用例扩展或者泛化的用例被称为基础用例
6、被其他用例包含的用例,或者扩展、泛化其他用例的用例被称为附加用例
7、扩展关系的思路是,创建扩展或附加用例,并且在其中描述:在何处何何种条件下该用例扩展某基础用例的行为
8、事实上,直接更新基础用例的扩展部分是推荐的方法,这样避免了创建复杂的用例关系
9、扩展关系的UML表示法:
1、扩展用例指向基础用例
2、在线上可以表示条件和扩展点
第三十一章
1、泛化是在多个概念中识别共性和定义超类(普通概念)与子类(具体概念)关系的活动
2、概念超类与子类之间是什么关系?
3、概念超类的定义较子类的定义更为概括或包含范围更广
4、泛化和类集的关系:概念子类集合的所有成员都是其超类集合的成员 5、100%规则:概念超类的定义必须100%适用于子类,子类必须100%与超类一致:属性、关联
6、Is-a规则:子类集合的所有成员必须是其超类集合的成员
7、什么是正确的概念子类?
潜在的子类应该遵守下述规则:
1、100%规则(定义的一致性)
2、Is-a规则(集合成员关系的一致性)
8、在下述几种情形下创建概念类的子类
1、子类有额外的有意义的属性
2、子类有额外的有意义的关联
3、子类概念的操作、处理、反应或使用的方式不同于其超类或其他子类,而这些方式是我们所关注的4、子类概念表示了一个活动体(例如动物、机器人等),其行为与超类或者其他子类不同,而这些行为是我们所关注的
9、在下述情形下可以创建与子类具有泛化关系的超类
1、潜在的概念子类表示的是相似概念的不同变体
2、子类满足100%和Is-a规则
时光可见
第 9 页
2013-3-31 OOAD总复习
3、所有子类都具有相同的属性,可以将其解析出来并在超类中表达
4、所有子类都具有相同的关联,可以将其解析出来并与超类关联
10、在领域模型中,如果类C可能同时有多个相同的属性A,则不要将属性A置于C至中,应该将属性A放在另一个类中,并且将其与C关联
11、在领域模型中增加关联类的可能线索有:
1、有某个属性与关联有关
2、关联类的实例具有依赖于关联的生命期
3、两个概念之间有多对多关联,并且存在于关联自身相关的信息
12、在下述情况下,可以考虑组合关系:
1、部分的生命期在组成生命期界限之内,部分的创建和删除依赖于整体
2、在物理或逻辑组装上,整体—部分关系很明确
3、组成的某些属性会传递给部分
4、对组成的操作可能传递给部分
13、在关联中可能会
“面向对象的程序设计基础”课程总结 篇6
1. 基本概念
面向对象的程序设计是通过对类、子类和对象等的设计来体现的,类是面向对象程序设计技术的核心,
类:定义了对象特征以及对象外观和行为的模板。
类的特征:
封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。
继承性:
任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。体现了面向对象设计方法的共享机制。
多态性:相同的操作可作用于多种类型的对象上,并获得不同的结果。
抽象性:提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
基类:
系统本身提供的类称为基类。基类包括容器类和控件类。容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框。
子类:
以其他类定义为起点,对某一对象所建立的新类。新类将继承任何对父类所做的修改。
类库:
存储类的文件,每一个以可视方式设计的类都存储在一个类库中,
电脑资料
类库文件的扩展名为 .VCX 。
对象:是类的一个实例,包括了数据和过程。具有所在类所定义的全部属性和方法。
VFP有两种对象:容器对象和控件对象。
属性:控件、字段或数据库对象的特性。
事件:由对象识别的一个动作。
方法:与对象相联系的由程序执行的一个处理过程,即处理事件的一组代码。
用户不可以为对象创建新的事件,但可以创建新的方法程序。
2. Visual FoxPro 基类
从下述 Visual FoxPro 基类中,可以派生子类或创建对象。
容器命令组控件微调标签表单命令按钮复选框OLE 容器控制线条表单集选项组列表框OLE 绑定型控制分隔符 #表格选项按钮 #文本框自定义形状标头 #页框组合框工具栏图象列#页面#编辑框计时器
注:# 这些类是父容器的集成部分,在类设计器中不能子类化。
基类事件的最小集合
事件
“面向对象的程序设计基础”课程总结 篇7
为了这个培养目标,在进行课程体系设置时,主要是从三个方面考虑:一是电子技术知识,既有模电也有数电;二是计算机编程知识,即软件开发这一块,实现嵌入式程序的设计;三是计算机硬件这一块,能对单片机及一些控制芯片进行应用。其中编程知识的学习,包括第一学年的主干课程《C语言程序设计》,第二学年开设《面向对象编程技术》课程。在嵌入式专业人才培养方案中,并没有限定面向对象编程课程具体讲授哪一种面向对象编程语言,在教学内容上,有这样几种常用的语言是可以选择的:Java语言,这是一种典型的面向对象编程语言,现在应用也比较广泛;再就是C#语言,与C语言有一定的衔接,同样也是面向对象编程,应用也比较多。这两种语言语法简洁、实用,易学好懂,学生容易产生兴趣,教学效果较好。另外一个选择是C++语言。
那么,在这3种语言中,该以哪种语言作为嵌入式专业学生学习面向对象程序设计的样板呢?不妨从如下几个方面作一个比较:
1 与C语言的关系
嵌入式系统编程不同于一般形式的软件编程,它是建立在特定的硬件平台上,其编程语言应具备较强的硬件直接操作能力。当然,汇编语言具备这样的特质。但是,由于汇编语言开发的复杂性,它并不是嵌入式系统开发的一般选择。与之相比,C语言—一种“高级的低级语言”,则成为嵌入式系统开发的最佳选择。
C++和C#,以及Java这3种语言都是面向对象(OOP)的,都使用了类似C语言风格的语法,但C++并不是纯面向对象的,它保留了很多模块化的东西。C++与C的关系更紧密一些。它是基于C发展起来的程序设计语言,是C的一个面向对象的解释。C++为C扩充了大规模工程应用,复杂的系统结构和掌控方法,对C有着很好的兼容性,而C#和Java对C语言没有任何兼容性。
2 语法
Java和C#相对于C++的不同最大的有两点:第一点是他们运行在一个虚拟环境之中,第二点就是语法简单。前二者非常相似,都抛弃了最灵活,同时也是应用起来最复杂的指针问题,不再深入地址单元去执行相关操作,对内存的管理完全自动化,这样虽然带来了程序的稳定性和安全性,但是在某种程序上丢失了效率。
除了语法的相对简单,Java还提供了丰富的类库帮助你解决应用问题———因为它是面向应用的语言,包括多线程标准、JDBC标准、GUI标准,而这些标准在C++中是不存在的。C#没有宏和模板,不允许多重继承,而这些都是C++的重要应用方面。C++语言的强大功能和灵活性是建立在其复杂的语法之上的,因此对于初学者来说,不象C#、Java语言那样容易上手。
3 应用领域
目前,在Web开发上,C++没有多大的市场。在企业级应用软件的开发上,以Java、C#居多,正是这两种语言的简洁实用,使软件的开发周期大大缩短,但这个领域C++仍占有一席之地。在系统级的开发上,C/C++应用居多。这3种语言各有特色。总的来说,C++的应用集中在如下主要领域:
高级系统程序设计:包括操作系统核心、网络管理系统、编译系统、文字排版系统、图像和声音的编排系统、通讯系统、数据库系统等等。在网络软件的设计方面,C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一。操作系统编程中,C语言是主要使用的编程语言,但C++凭借其对C的兼容性,以及面向对象的性质在该领域也崭露头角。
嵌入式系统:近5年来,C语言在嵌入式软件开发中使用最多,同时,C++在嵌入式软件设计领域维持27%左右的占有率。
视频游戏:C++的效率是一个很重要的原因。
在科学计算领域,FORTRAN是使用最多的语言之一。但是近年来,C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多,包括仿真、实时数据获取和数据库访问等等。
另外,在设备驱动程序、分布式应用、移动(手持)设备等领域,C++语言也占据着比较重要的地位。
就Java和C#二者单独来看,C#更像是微软公司和SUN公司进行商业斗争的产物。历史上,微软公司是支持过Java语言的,代表性的产品有Visual J++和WFC。后来因为众所周知的原因,微软公司推出了C#,其目的很明确,就是和Java竞争。
实际上C#和Java在特性上也非常类似(不仅仅是语法)。二者都是为了更加方便地解决应用问题,在GUI、数据库访问、网络通信、多线程等和实际应用密切相关的点上都有成熟的解决方案。C++更多地靠第三方的库来实现这些功能,因为C++是一个国际标准,要在C++中加入这些语言之外的、面向应用的特性还需要很长一段路要走。而C#、Java的拥有者是商业化公司,各种动作自然要敏捷得多。
4 结论
C++可以说是全世界应用最广泛的语言,主流语言中功能最强大,开发平台多,同时它在嵌入式系统开发的作用也是不容忽视的。对于嵌入式专业的学生来说,C++是他们学习面向对象编程课程的最佳选择。
摘要:目前高职高专院校的计算机嵌入式专业,在开设《面向对象程序设计》课程时,选择何种具有面向对象编程特点,同时切合嵌入式专业的编程语言作为教学内容,是设置该课程需要考虑的问题。在对C#、Java以及C++3种面向对象编程的语言进行比较后,选择C++语言最合适。
关键词:面向对象程序设计,Java,C#,C++
参考文献
[1]强锋科技,朱洪波.Visual C++完全自学宝典[M].北京:清华大学出版社,2008.
[2]王斌.常用嵌入式高级编程语言比较[J].蒙自师范高等专科学校学报,2002,4(6).
“面向对象的程序设计基础”课程总结 篇8
关键词 面向对象技术UML 课程 教学改革 教学实践
中图分类号:G633.67 文献标识码:A
0 引言
面向对象技术UML是当前最为流行的软件设计技术,在实际工程有着广泛的应用。在大学教育中该课程一直受到教师和学生的关注,也是学生专业发展的基础,诸多学生对于该课程有着浓厚的学习兴趣。①在面向对象技术UML课程教学中,需要根据课程特点实施不同的教学方法,教师要掌握课程教学的主动权,积极发挥课程引导者的作用。②然而,实际中却由于部分教师缺乏教学经验或者不能采用有效地教学方法,学生不能领悟到教师的教学意图,也不能掌握课程内容,导致了诸多学生对教学的不满,产生强烈的排斥课程现象,影响正常的教学秩序。③因此,面向对象技术UML课程教学改革势在必行。本文探索了当前面向对象技术UML课程教学中存在主要问题,并提出了诸多改进措施,改善当今面向对象技术UML课程教学面貌。
1 面向对象技术UML课程教学存在问题分析
面向对象技术UML课程教学在过去有了重要的改变,尤其是采用多媒体教学以来,在教学效果上有了很大的提高,但该课程开始历史较短,仍然存在诸多问题,具体如下:(1)教材内容。由于面向对象技术UML课程涉及较多的专业知识,这些知识又随着计算机技术变化出现新的变化,这就导致教材内容不能满足课程教学需求,教材内容也在部门知识设置上也缺乏足夠深度。(2)课程授课缺乏规范。面向对象技术UML课程的教学案例设计没有形成一个有机的整体,不能很好地把每个知识点前后贯穿,如用于需求分析建模的案例不能延续到系统分析及设计,学生在学习中难度较大,造成学生学习疲倦,对面向对象技术UML课程产生消极情感,从而不能很好地学好该课程。(3)课程教学水平较为落后。面向对象技术UML课程需要很强的实践,不仅需要课堂系统的讲解,部分教师缺乏实践意识,过多的灌输理论知识,不能提高学生的应用能力,在教学的有效性上缺乏足够的考虑。教师在授课中往往较为单一,这与该课程的开设时间和难度有着重要的联系,并且在实际中也缺乏足够的参考资料,教师教学能力也受到挑战。
2 面向对象技术UML课程改进分析
面向对象技术UML课程改革需要根据学生的需求,按照课程发展特点,及实际经验进行研究具体的实施过程,提高面向对象技术UML课程的有效性,帮助学生发展计算机软件设计能力,具体的改进分析如下:
2.1 教学目标改革
面向对象技术UML课程需要完善教学目标,建立有效地改革体制,制定良好的教学方针,在实施改革主要从以下方面分析:(1)基于教师能力的目标改革。面向对象技术UML课程确实存在较大的教学难度,这就需要重点分析教师教学中存在的困难点,由成立专门的研究小组进行讨论,通过采纳广泛有经验教师的观点形成解决方案,突破现有教学资源限制。同时,进行制定教师教学任务,细化到每节课程内容,给教师制定相应的目标,提高教师教学的主动性。(2)基于学生学习能力的目标改革。学生的学习情况是面向对象技术UML课程的最终核心,需要统计学生的学习情况,根据具体情况调整教学方针,按照学生在课堂的需求制定相应的教学措施,提高学生在课堂中的积极性。同时,针对学生的学习情况要落实检查,督促学生的学习。
2.2 教学过程改革
面向对象技术UML课程需要从教学细节中探索切实可行的改革措施,这是该课程获得发展的基础,也进行改革的关键,主要内容如下:(1)实施先进教学模式。面向对象技术UML课程的改革需要从整体上制定教学模式,先进的模式能够保证该课程教学整体策略,按照先进的思想完善教学体系。基于项目驱动教学法就是典型的教学模式,在其他课程中获得良好的推广,面向对象技术UML课程也可以采取该方式,根据该理论制定详细的教学过程,在教学中研究能够提升教学空间的内容,达到教学方法的先进性。(2)推广实践教学,增加实践内容。面向对象技术UML课程是一门应用技术,在课程设置上教师要注重引入实践内容,即使课堂时间有限,也可以根据课程给学生布置课外作业,引导学生的学习兴趣,通过实践来检验课程的学习效果,并让学生获得学习的成就感。
3 总结
面向对象技术UML课程需要根据教学实际情况展开改革,改革的主题方针也要围绕学生的学习需求。在实际课堂中落实各种改革方针,达到提高教学效果的目的。此外,未来教学中应提高学生的主体参与时间,给学生更多自我学习的时间,促进其自学能力的发展。
注释
① 王艳萍,李海燕,许波. UML实例化教学改革初探[J]. 实验室研究与探索,2011(09).
② 吉逸,陈国庆,曹玖新.研究生创新型学习的教学研究与实践[J].计算机工程与科学,2011(S1).
面向对象程序设计-实验报告2 篇9
广东海洋大学学生实验报告书
实验名称 实验2:构造函数和析构函数 课程名称 面向对象程序设计
学院(系)
学生姓名
成绩信息学院学号 专业 计算机科学与技术实验地点 科423 班级 实验日期 一.实验目的1.掌握构造函数和析构函数的定义的基本格式。
2.掌握利用构造函数对对象的数据成员进行初始化的方法。
3.了解构造函数的使用方法。
二.实验内容
1.定义一个关于日期时间的类,并在类中定义构造函数、析构函数。
2.定义一个圆柱体类Cylinder。成员中有私有数据半径及高,要求有构造函数、析
构函数以及求圆柱体体积的成员函数。定义此类的两个对象,编写一个主函数进行测试。
“面向对象的程序设计基础”课程总结 篇10
实验一 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。 【“面向对象的程序设计基础”课程总结】推荐阅读: 《面向对象程序设计》课程教学大纲05-22 C 面向对象程序设计课程教学大纲05-29 面向对象的程序设计06-16 面向对象程序06-11 面向对象程序设计方法08-27 石河子大学 信息学院 面向对象的设计与分析 OOAD考试总结06-14 面向对象程序设计实验教学大纲09-06 面向对象的思想05-30 他们为什么说面向对象有问题,探讨面向对象的一些缺陷06-03 面向对象的单元测试06-10