第1章_概述

上传人:oq****t 文档编号:1979516 上传时间:2017-07-18 格式:PPT 页数:56 大小:1.16MB
返回 下载 相关 举报
第1章_概述_第1页
第1页 / 共56页
第1章_概述_第2页
第2页 / 共56页
第1章_概述_第3页
第3页 / 共56页
第1章_概述_第4页
第4页 / 共56页
第1章_概述_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第1章_概述》由会员分享,可在线阅读,更多相关《第1章_概述(56页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计概述,长春理工大学董元方,2017/7/19,长春理工大学,2,本课程要求,课上讲授和课后练习相结合期末总成绩期末考试成绩80%平时成绩10% 实验课成绩10%平时成绩:出勤情况、作业完成情况、提问回答情况实践课成绩:实践课出勤情况、实践内容完成情况,最好的学习方法莫过于实践、实践、再实践!,2017/7/19,长春理工大学,3,本课程的重要性,为其他编程语言的学习打基础为以后的课程设计和毕业设计打基础为将来的就业打基础,对计算机专业的学生来讲:实践理论编程实现,2017/7/19,长春理工大学,4,面向对象程序设计,Object-Oriented Programming(OO

2、P)一种软件工程方法与结构化程序设计相对,2017/7/19,长春理工大学,5,软件危机的由来,2017/7/19,长春理工大学,6,计算机编程的早期CPU速度不足够快、内存不足够大编程的人只是计算机领域专家编程的目的只是要验证算法随着CPU速度加快、存储技术不断进步,人们开始关注让计算机做更多的事情参与编程的人不只是计算机领域专家,更多的是其它领域的专家,甚至普通人计算机领域专家让计算机可以识别高级编程语言这些高级编程语言更贴近我们的自然语言,这种情况下,没有大型程序,2017/7/19,长春理工大学,7,汇编语言和自然语言,汇编语言(1) mov eax, DWORD PTR a_$ebp

3、(2) lea eax, DWORD PTR eax+eax*2(3) mov ecx, DWORD PTR b_$ebp(4) add ecx, ecx(5) sub eax,ecx(6) inc eax(7) mov DWORD PTR a_$ebp, eax,自然语言a=3*a-2*b+1,机器语言8b 45 fc8d 04 408b 4d f803 c92b c14089 45 fc,2017/7/19,长春理工大学,8,C+前史,FORTRANCOBOLALGOLBASICLispLOGOSimula67CPascalC+,Backus(1977年图灵奖得主)Grace Murray

4、 Hopper (电脑之母)D.Ritchie,K.Thompson (1983年图灵奖得主) Niklaus Wirth (1984年图灵奖得主),高级语言,2017/7/19,长春理工大学,9,Grace Hopper电脑之母,被誉为“电脑之母”1952年,她开发出世界上第一套编译器A-0,是现代编译技术的原型。人们终于可以用类自然语言编写程序了。1956年她在第一台储存程序的商业电子计算机UNIVAC I、II上开发出B-0,之后叫做FLOW-MATIC,它导致了计算机商用语言COBOL(COmmon Business Oriented Language)的诞生。在COBOL产生之前,大

5、家一直都在用汇编语言编写程序。 创造了“BUG”和“DEBUG”这两个计算机史上著名的两个名词传说她办公室有一个倒着走的钟,以及一面绣着骷髅头的海盗旗她还是推动电脑普及化的功臣。被同事称为是个“数学家、电脑科学家、社会学家、企业政治家、行销专家、电脑系统及程序设计家还有,永远都是个预知者”,A ship in port is safe, but that is not what ships are built for.,2017/7/19,长春理工大学,10,Niklaus Wirth,瑞士计算机科学家,1984年的图灵奖得主发明了Pascal等多种影响深远的程序设计语言,在C语言问世以前,P

6、ASCAL是风靡全球、最受欢迎的语言之一,不但创下了发行拷贝数最多的世界记录,而且成为当时大学数据结构教学的“惟一官方指定”语言提出了结构化程序设计这一革命性概念又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,成为程序开发的一个标准方法,尤其是在后来发展起来的软件工程中获得广泛应用他的学生Phillipe Kahn,毕业后创立了Borland公司,凭借拳头产品Turbo PASCAL成为百万富翁。Borland公司的产品:从最早的Turbo PASCAL、Turbo C、Turbo PROLOG等Turbo系列,到如今的Delphi、C+ Builder、JBuilder、C

7、# Builder系列,无一不是举足轻重的开发工具。该公司在开发者心目中有着崇高的地位,2017/7/19,长春理工大学,11,高级语言使软件业蓬勃发展,用现代高级语言编制的软件,机器可执行的代码,通过编译器转换,高级语言使生产效率大大提高使用精确的形式语言来定义程序语言本身通过对硬件的抽象使得程序与计算机平台无关维护费用降低计算机软件业终于得以蓬勃发展,2017/7/19,长春理工大学,12,软件危机的出现,软件危机出现:软件大规模的应用程序的开发方法和管理手段逐渐无法跟上软件规模的膨胀结果产生了一堆问题:程序质量低下,错误频出,进度延误,费用剧增例:19631966年间的IBM 360系统

8、该系统有100万行的代码量IBM每年动用5000人来维护该系统每个版本都是从上一个版本找出1000个以上的错误而修订的结果但是,越改错误越多,根本没有改善的迹象有人把IBM 360系统形容为一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深,最后仍然无法逃脱灭顶的灾难,2017/7/19,长春理工大学,13,请理解这个工具,2017/7/19,长春理工大学,14,反思,人们不得不停下脚步思考,到底哪里出了问题?想到每个人做事情,都是列举重点,然后细化并逐个完成。制造自行车把自行车按照功能分块先造车架两个车轮踏板等传动装置坐垫、车铃等零件而制造车轮要分别制造钢圈、钢丝、轮胎,而轮胎有分内外

9、胎如果软件开发能够遵循这种从大到小、逐步精确的思想,是不是能够解决这个软件危机呢?这种结构化的抽象分析方法,导致了结构化程序设计方法(基于过程的程序设计)的诞生,2017/7/19,长春理工大学,15,结构化程序设计1,描述任何实体的操作序列只需用三种基本控制结构,2017/7/19,长春理工大学,16,结构化程序设计2,程序中的各个过程体和组成部分应以模块表示每个模块,其内聚性越强,外联性越少,则模块独立性越好对数据的分离与归类:将过程中的数据分离出来,独立地用数据结构去描述其数据和处理程序算法数据结构在不大的程序规模上,起到了良好的效果容易编程,容易验证程序的正确性,内聚性强:功能单一;外

10、联性少:独立性强、依赖少。,2017/7/19,长春理工大学,17,软件规模继续增大人们需要能够使软件开发周期缩短、再缩短人们需要能够管理和理解大型软件人们需要能够随时对大型软件加以维护和更新,OOP,2017/7/19,长春理工大学,18,OOP体现了人们认识世界的法则,人们认识世界的法则: 区分事物及其属性(类) 区分整体对象及其组成部分(组合)不同对象类的形成及其区分(类和子类),2017/7/19,长春理工大学,19,面向对象程序开发思想的由来,心理学研究表明,把客观世界由许多对象组成,对象具有其属性和行为,之间存在着各种联系,这样能够更好的刻画问题域,也更接近人类的自然思维方式,对象

11、,对象,对象,对象,2017/7/19,长春理工大学,20,OOP,面向对象程序设计如果你只写Hello-World这样的应用程序,那你的确不需要用OOP、模板、名字空间、异常处理但是如果你想写复杂而逻辑清晰的程序时,这些性能就有用了,2017/7/19,长春理工大学,21,比较,结构化程序设计方法程序算法数据结构面向对象程序设计方法程序对象对象对象算法数据结构,由于突破了软件设计思想的障碍,程序规模迅速扩大,软件产业得以飞速发展。,程序就是许多对象在计算机中相继表现自己,而对象又是一个个程序实体。,2017/7/19,长春理工大学,22,类和对象的含义,2017/7/19,长春理工大学,23

12、,对象和类,对象的概念最早出现于五十年代人工智能的早期著作中OO(面向对象)的实际发展始于1966年开发的Simula语言比如:在银行出纳问题中你可以创建若干个对象所有出纳员对象,除了各自的状态不同,都是属于出纳员这个抽象类别面向对象设计程序,主要就是设计抽象的类,2017/7/19,长春理工大学,24,类和对象的定义,类(class)用户定义的类型(User-defined type,UDT)包含属性和操作对象(object)用类来创建的,是系统分配存储区的实体如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计,2017/7/19,长春理工大

13、学,25,类,用UML建模为左图洗衣机的职责是输入脏衣服,输出洗干净的衣服,2017/7/19,长春理工大学,26,同属“人”类的两个人(对象):张三和李四张三和李四有什么不同?张三头发长些、李四头发短些-头发长度张三说话慢些、李四说话快些-说话语速张三脾气温和些、李四脾气暴燥些-性格脾气类中的所有对象都可以进行一系列相同的操作,只不过操作的对象不同,操作的结果也不同如果把关系数据库中的“表”看成是“类”,那么每个“记录”就是一个“对象”,对每个记录可以进行的操作是相同的对象关系数据库系统(ORDBS),区分对象的抽象属性,2017/7/19,长春理工大学,27,例子类和对象,我们属于人类,而

14、真实存在的是一些具体的“某个人”我们可以创建类-“人”由类可以生成对象”某个人”,人们之间有共同点,但是每个人又都独具特色人们之间有共同点所以能归为一类:吸收氧气?-植物也能。有四肢?能跑能跳?-动物也能。能使用和创造工具?能直立行走?能使用语言文字?每个人的特点,所以可以抽象出类的属性:相貌不同、性格不同、爱好不同、经历不同,2017/7/19,长春理工大学,28,类和子类,“人”类又可以创建子类,子类具有父类的共性,也具有自身的特点共同点:能使用和创造工具?吸收氧气?有四肢?能跑能跳?能使用和创造工具?能直立行走?每个子类的特点:中国人肤色是黄色的,美国人肤色是白色的,非洲人肤色是黑色的国

15、籍不同身体素质不同父类和子类都可以分别创建对象,2017/7/19,长春理工大学,29,目的不同,找到的类也不同,2017/7/19,长春理工大学,30,2017/7/19,长春理工大学,31,一件事物,可能有多种用途,2017/7/19,长春理工大学,32,是箱子,还是椅子?,2017/7/19,长春理工大学,33,可见,创建类是很灵活的根据软件的需要,编程者的主观判断,可以创建尽可能符合客观现实的类和模式,2017/7/19,长春理工大学,34,怎样识别类?,假设你是一个系统分析员,要建立篮球比赛模型。现在你要会见一名教练员来了解比赛规则记住你的问题:找出其中可能的类。每个类可有哪些属性和

16、操作?下面是你们的对话:,2017/7/19,长春理工大学,35,为一次篮球比赛建模,教练,请大致介绍一下篮球比赛?比赛的目标是要把篮球投入篮筐并且要尽量比对手得更多的分。每个篮球队由5名队员组成:两名后卫、两名前锋和一名中锋。每个队要将球推进到篮筐附近,将篮球投中篮筐。如何将球推进?通过运球和传球。但是某一方必须在规定的进攻时间内投篮。规定的进攻时间?是的,在某一方获得控球权后,必须在规定的进攻时间内投篮。美国职业篮球比赛规定的进攻时间是24秒,国际篮球比赛是30秒,美国大学篮球比赛是35秒。如何计算篮球比赛得分?三分线之内每投中一次篮筐得两分,三分线之外投中一次得三分。一次罚球得一分。顺便说一下,罚球是对方犯规后判罚的投球。如果某一个队员犯规,则比赛暂停,由被侵犯的队员在罚球线处罚球。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号