第1次课1上升到面向对象_第1页
第1次课1上升到面向对象_第2页
第1次课1上升到面向对象_第3页
第1次课1上升到面向对象_第4页
第1次课1上升到面向对象_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象分析与设计

Object-OrientedAnalysis&Design第01章上升到面向对象一课程的基本信息课程名:

面向对象的系统分析与设计课程性质:

专业核心课程选修学时:

56学时(理论40+实验16)先修课程:

《计算机引论》、《Java程序设计》教学组织形式:课堂讲授、实验、多媒体案例教学课程考核方式:1.总成绩=平时成绩(30分)+考试成绩(70分)2.考试形式:开卷,笔试,百分制平时成绩评定方法:1.由作业、出勤、课堂表现三方面构成。2.采用扣分和奖励分机制。3.无故缺席3次及以上,平时成绩记0分。一课程的基本信息-5-课程介绍第一个案例对象技术对象和类对象技术相关原则上升到面向对象二课程的内容安排本课程:

1.要学些什么?2.为什么要学?3.如何学?问题:(1)面向对象的相关概念;(2)UML统一建模语言;(3)面向对象的分析;(4)面向对象的设计;1要学什么?-8-课程目标三大目标:OO:建立对象的思维方式,对面向对象思想和理论有进一步的理解UML:能够熟练地使用UML表达面向对象的设计思想Model:运用对象技术的一般原则和模式进行应用系统的分析和设计建模-9-课程目标(续)三大目标之间的关系Model:建模是最终目的OO:面向对象技术是一种建模理论UML:统一建模语言是一种体现OO的建模语言,是将OO理论转化为实践的工具(1)课程在学科中的地位;(2)对职业生涯发展的影响;

(3)学生毕业设计的不足;

2为什么要学?-11-关于本课程…本课程是软件工程类专业课程,侧重于工程实践能力的培养,强调分析和设计技能,不关注文档、过程、规范等,重点在建模方法的应用过程驱动:围绕分析和设计过程,关注各阶段建模技术的应用案例驱动:围绕具体案例,讲解面向对象分析和设计的思维方式和解决问题的方法-12-为什么选择本课程?需要理由吗?我们从事软件行业面向对象是最主流的软件开发思想UML是最主流的建模方法UMLOOAD软件工程师的“饭碗”对于今天的软件开发者来说,UML是他们的面包和黄油-13-本课程适合我?基础知识储备:软件工程、面向对象程序设计实践储备:了解工程项目的特点,最好有实际工程项目开发背景定位从事软件相关行业工作:分析、设计、编码、测试或管理、维护工作1.学而不思则罔,思而不学则殆。2.实践出真知,勤于实践!3.善假于物:善于利用各种资源!3如何学?

课程重点不是理论或知识,而是通过实践建立对象思维方式,并培养运用UML来表达这种思维方式的技能,从而完成面向对象分析和设计;通过课外阅读、作业和实践来弥补课堂不足;不考概念,不需死记硬背,在实践中掌握相关理论和方法;-15-课程安排1基础(4):

上升到面向对象2基础(4):

可视化建模技术3起源(4):

业务建模4需求(6):

用例建模5分析(6):

用例分析6设计基础(2):

面向对象设计原则7设计基础(2):

面向对象设计模式8设计(2):

构架设计9设计(2):

构件设计10实现&展望(2):

从模型到代码

模型技术的发展-16-学习路线图OOUMLOOPDP…Case-Study…学习路线图……

……

……

……12345678910-17-二课程的内容安排课程介绍第一个案例对象技术对象和类对象技术相关原则上升到面向对象-18-素数问题素数的定义:除了1与本身之外,不能被其他正整数整除的数,叫作素数,也叫质数按照习惯规定,1不算素数,最小的素数是2,其余的是3、5、7、11、13、17、19……等等由定义判断素数对于数n,从i=2,3,4,5…到n-1判断n能否被i整除,如果全部不能整除,则n是素数,只要有一个能除尽,则n不是素数,为了压缩循环次数,可将判断范围从2~n-1改为2~sqrt(n)-19-筛选法求素数序列筛选法:生成2<i<n的素数序列,设n=50筛掉2的倍数:234567891011121314151617…筛掉3的倍数:2357911131517192123252729…筛掉5的倍数:23571113171923252931353741…筛掉7的倍数:2357111317192329313741434749留下素数序列:23571113171923293137414347-20-结构化实现//PrimerNumber.cmain(){int*sieve,n;intiCounter=2,iMax,i;printf("Pleaseinputmaxnumber:");scanf(“%d",&n);sieve=malloc((n-1)*sizeof(int));for(i=0;i<n-1;i++){sieve[i]=i+2;}iMax=sqrt(n);while(iCounter<=iMax){for(i=2*iCounter-2;i<n-1;i+=iCounter)sieve[i]=0;iCounter++;}for(i=0;i<n-1;i++)if(sieve[i]!=0)printf("%d",sieve[i]);}-21-结构化设计作业挨个检查的方法实现求素数C语言程序。-23-结构化小结通过流程图(结构化建模)可以更清楚表达设计思想针对过程的抽象过程(函数)是系统的核心,通过过程实现系统功能数据是静态的,由过程来控制对数据的访问面向对象的方法如何解决呢?-24-Java实现-是对象思维吗?importjava.lang.Math;publicclassPrimerNumber{publicstaticvoidmain(Stringargs[]){intn=50;intsieve[]=newint[n-1];intiCounter=2,iMax,i;for(i=0;i<n-1;i++){sieve[i]=i+2;}iMax=(int)Math.sqrt(n);while(iCounter<=iMax){for(i=2*iCounter-2;i<n-1;i+=iCounter)sieve[i]=0;iCounter++;}for(i=0;i<n-1;i++)if(sieve[i]!=0)System.out.println(sieve[i]);}}-25-用对象思维解决问题?筛选法:生成2<i<n的整数序列,设n=50筛掉2的倍数:234567891011121314151617…筛掉3的倍数:2357911131517192123252729…筛掉5的倍数:23571113171923252931353741…筛掉7的倍数:2357111317192329313741434749留下素数序列:23571113171923293137414347筛子:存储源数据过滤器:表明当前过滤因子计数器:记录当前正在筛选的数据什么是对象?对象在哪?-26-这才是对象思维!抽象基类,为程序提供多态-27-面向对象的编程—C++语法classItem{public: Item*source; Item(Item*src){source=src;}

virtualintout(){return0;}};classCounter:publicItem{ intvalue;public:

intout(){returnvalue++;} Counter(intv):Item(0){value=v;}};-28-面向对象的编程-过滤器classFilter:publicItem{ intfactor;public:

intout(){ while(1){ intn=source->out(); if(n%factor)returnn; } } Filter(Item*src,intf):Item(src){factor=f;}};-29-面向对象的编程-筛子classSieve:publicItem{public: intout(){ intn=source->out(); source=newFilter(source,n); returnn; } Sieve(Item*src):Item(src){}};-30-验证设计方案voidmain(){ Counterc(2); Sieves(&c); intnext,n; cin>>n; while(1){

next=s.out(); if(next>n)break; cout<<next<<""; } cout<<endl;}关键代码只有一行,

筛子自己知道如何找出素数-31-对象方法小结通过UML类图(面向对象建模)可以更清楚表达设计思想,并为代码实现提供框架针对数据的抽象:类类拥有自己的数据和行为,能够完成自身的工作职责过程是类的组成部分,为类提供行为通过类的对象之间的协作完成系统功能-32-对象技术的思考对象思维具有更大的灵活性,更好的模块化,可以进行更大规模的设计面向对象设计和开发的难度更大,面临着对象识别、职责分配、多态抽象等一系列问题学习更多知识和技术,并掌握一系列面向对象的设计原则和模式图形化工具(UML)有助于表达和交流设计思想,并简化实现的过程-33-总结:结构化VS面向对象结构化思维用过程刻画数据间关系对象思维直接用类表达数据间关系结构化中,数据是死的,全部依赖算法操作对象思维中,数据是活的,“她”知道自己的信息(属性),并能完成自己的工作(操作)结构化思维更像是一个人在解决所有问题对象思维更像是一个团队的分工协作-34-面向对象VS结构化-1扬弃,不是否定-35-面向对象VS结构化-2(程序)实现角度数据结构+算法=程序设计以对象为中心组织数据与操作数据对象属性操作对象的行为类型与变量类与对象实例函数(过程)调用消息传递类型与子类型一般类与特殊类,继承构造类型整体-部分结构,聚合指针关联-36-面向对象VS结构化-3传统结构化方法面向对象方法(UML)需求模型输入I、处理P、输出O的视角,面向功能的文档(用户需求规格说明书)需求变化,其功能变化,所以系统的基础不稳固从用户和整体角度出发使用系统抽象出用例图、活动图,获取需求;如需求变化,对象的性质相对功能稳定,系统基础稳定分析模型面向过程的数据流图DFD、实体—关系图ERD、数据字典DD表示分析模型功能分解,数据和功能/过程分开把问题作为一组相互作用的实体,显式表示实体间的关系数据模型和功能模型一致类、对象图表示分析模型,状态、顺序、通信、活动图细化说明设计模型功能模块(SC图),模块之间的连接/调用是模块的附属形式类和对象实现,类/对象的关联、聚集、继承等连接、连接规范和约束作为显式定义实施模型体系结构设计构件图,部署图测试模型根据文档进行单元测试,集成测试,确认测试单元测试采用类图,集成测试用实现图和交互图,确认测试采用用例图-37-课程介绍第一个案例对象技术对象和类对象技术相关原则上升到面向对象二课程的内容安排-38-对象技术是一种看待计算机软件系统的观点是一种系统分析和设计的思想是一种编程方法是一组设计原则和模式是实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论