OOP 01 第1章

上传人:ni****g 文档编号:568766335 上传时间:2024-07-26 格式:PPT 页数:46 大小:281KB
返回 下载 相关 举报
OOP 01 第1章_第1页
第1页 / 共46页
OOP 01 第1章_第2页
第2页 / 共46页
OOP 01 第1章_第3页
第3页 / 共46页
OOP 01 第1章_第4页
第4页 / 共46页
OOP 01 第1章_第5页
第5页 / 共46页
点击查看更多>>
资源描述

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

1、李向阳HQULXY注意事项学习方法听课+读书+写程序+做实验/上机调试挫折是必经之路:理论实践挫折成功;理论实践-成功的历程是否都这样?评分标准:作业与上机25%期末笔试70%其它5%教材:面向对象程序设计(第2版)2009年3月第二版, 叶乃文 王丹实验平台:JDK1.6, NetBeans参考资料NetBeans帮助系统(中文),JDK_API_1_6_zh_CN.CHM (Java开发工具包类库中文文档)Java语言与面向对象程序设计,朱福喜java编程思想(Thinking in java)侯揵译,BurceEkle1.1.1.1.掌握面向对象程序设计的思维模式掌握面向对象程序设计的思

2、维模式掌握面向对象程序设计的思维模式掌握面向对象程序设计的思维模式2.2.2.2.学会应用基本的开发环境编写学会应用基本的开发环境编写学会应用基本的开发环境编写学会应用基本的开发环境编写JavaJavaJavaJava程序:程序:程序:程序:JDK JDK JDK JDK 和和和和 NetBeansNetBeansNetBeansNetBeans3.3.3.3.理解、掌握面向对象编程技术的主要内容。(类的继理解、掌握面向对象编程技术的主要内容。(类的继理解、掌握面向对象编程技术的主要内容。(类的继理解、掌握面向对象编程技术的主要内容。(类的继承和多态性,包,接口和异常)承和多态性,包,接口和异

3、常)承和多态性,包,接口和异常)承和多态性,包,接口和异常), , , ,掌握掌握掌握掌握JavaJavaJavaJava语言对面语言对面语言对面语言对面向对象思想的实现;向对象思想的实现;向对象思想的实现;向对象思想的实现;4.4.4.4.学会运用学会运用学会运用学会运用JavaJavaJavaJava语言实现基本的图形化界面应用程序设语言实现基本的图形化界面应用程序设语言实现基本的图形化界面应用程序设语言实现基本的图形化界面应用程序设计计计计5.5.5.5.能够运用能够运用能够运用能够运用JavaJavaJavaJava语言进行一般应用程序设计和简单的网语言进行一般应用程序设计和简单的网语

4、言进行一般应用程序设计和简单的网语言进行一般应用程序设计和简单的网络程序设计。络程序设计。络程序设计。络程序设计。6.6.6.6.基本的多线程程序设计基本的多线程程序设计基本的多线程程序设计基本的多线程程序设计7.7.7.7.通过通过通过通过JDBCJDBCJDBCJDBC操作数据库操作数据库操作数据库操作数据库学习目的与主要学习内容:学习目的与主要学习内容:第 1 章面向对象程序设计概述-软件开发的思考方法和构造方法1.1 结构化程序设计方法 1.1.1 1.1.1 结构化程序设计思想的提出背景结构化程序设计思想的提出背景 在计算机的发展历程中,软件的发展速度一直滞后于硬件的发展,它在计算机

5、的发展历程中,软件的发展速度一直滞后于硬件的发展,它已经成为制约计算机产业整体发展的瓶颈。已经成为制约计算机产业整体发展的瓶颈。 以下是诸多原因中的两个重要因素:以下是诸多原因中的两个重要因素:l 软件产业非规模化软件产业非规模化( (个体化个体化) )l早期的程序设计没有规则可言,是一种类似艺术创作行为,全凭程早期的程序设计没有规则可言,是一种类似艺术创作行为,全凭程序设计师的个性发挥序设计师的个性发挥( (无招胜有招?无招胜有招?) )l大型的软件系统须许多人,长时间协作完成,面临重大危机:软件大型的软件系统须许多人,长时间协作完成,面临重大危机:软件危机危机(1960(1960年代末年代

6、末) )l 受限于程序设计语言受限于程序设计语言程序设计语言/方法的发展l1945,1945,机器语言机器语言l19501950年代前后年代前后, ,汇编语言汇编语言l19541954年,第一个高级程序设计语言年,第一个高级程序设计语言(FORTRAN)(FORTRAN)发布发布l19601960年代提出结构化程序设计方法,年代提出结构化程序设计方法,70,8070,80年代接受并被年代接受并被广泛应用广泛应用l面向对象程序设计方法,面向对象程序设计方法,6060年代末提出,年代末提出,19901990年代被广泛年代被广泛接受并应用接受并应用l面向组件面向组件l面向服务面向服务1.1.2 结构

7、化程序设计方法结构化程序设计方法n自顶向下、逐步求精的开发方法自顶向下、逐步求精的开发方法n 模块化的组织方式模块化的组织方式n 结构化的语句结构结构化的语句结构自顶向下、逐步求精 将编写程序看成是一个逐步演化的过程。将编写程序看成是一个逐步演化的过程。 所谓自顶向下是指将所谓自顶向下是指将分析问题的过程分析问题的过程划分成划分成若干个层次,每一个新的层次都是上一个层若干个层次,每一个新的层次都是上一个层次的细化,即步步深入,逐层细分。次的细化,即步步深入,逐层细分。 ( (大事化小,小事化了大事化小,小事化了 ?) ?) 模块化u将整个系统分解成若干个模块,每个模将整个系统分解成若干个模块,

8、每个模块实现特定的功能,块实现特定的功能,u最终的系统将由这些模块组装而成。最终的系统将由这些模块组装而成。u模块之间通过接口传递信息,模块之间通过接口传递信息,u模块具有良好的独立性。模块具有良好的独立性。 语句结构化ABTAB顺序结构顺序结构分支结构分支结构YN结构化程序设计的特点程序设计数据结构算法程序设计数据结构算法程序内容过程过程调用程序内容过程过程调用结构化程序设计的基本过程软件开发的基本过程:软件开发的基本过程:n需求分析需求分析n系统设计系统设计n系统实现系统实现n系统测试系统测试n系统维护系统维护当结构化思想贯穿于每个过程时,当结构化思想贯穿于每个过程时,其基本过程:分解和组

9、装其基本过程:分解和组装MM1M2M3M4MnM31M32M33分解过程组装过程组装过程面向对象技术面向对象(Object Oriented)技术,是结构化方法是结构化方法的发展的发展,是更高层次、更精微的软件开发技术,包括OOA/OOD/OOP。面向对象编程(Object Oriented Programming, OOP),是面向对象方法在编程中的应用面向对象的设计( Object Oriented Designing,OOD)是面向对象方法在(软件)设计中的应用面向对象的系统分析( Object Oriented Analysis,OOA)是面向对象方法在(软件)设计中的应用1.2 面向

10、对象程序设计方法1.2.1 面向对象程序设计的产生背景:面向对象程序设计的产生背景:u 审视问题域的视角审视问题域的视角 (横看成岭侧成峰横看成岭侧成峰)u 抽象级别(用概括、分类机制,实现通用性)抽象级别(用概括、分类机制,实现通用性)u 封装体封装体(系统由若干独立、自治的个体相互协作系统由若干独立、自治的个体相互协作而成而成)u 可重用性可重用性(DRY原则原则,Dont Repeat Yourself)1.2.2 面向对象程序设计面向对象程序设计u面向对象程序设计方法是指用面向对象的面向对象程序设计方法是指用面向对象的方法指导程序设计的整个过程,方法指导程序设计的整个过程,u面向对象是

11、指面向对象是指以对象为中心以对象为中心,分析、设计,分析、设计及构造应用程序的机制。及构造应用程序的机制。 面向对象程序设计应该具有的特征l所有待处理的所有待处理的内容都表示成对象内容都表示成对象;l对象间对象间依靠相互发送依靠相互发送消息消息或响应消息实现或响应消息实现通信通信;l每个对象都每个对象都有有自己的自己的惟一标识惟一标识,以便区别属于同,以便区别属于同一个类的不同对象;一个类的不同对象;l对象一定对象一定属于某个类属于某个类,我们又将这个对象称为所,我们又将这个对象称为所属类的一个实例;属类的一个实例;l类是将具有共同属性的对象进行抽象的结果,它类是将具有共同属性的对象进行抽象的

12、结果,它可以具有层次关系,即一个类既可以通过继承其可以具有层次关系,即一个类既可以通过继承其他类而来,也可以被其他类继承。他类而来,也可以被其他类继承。举例:快速拼写检查程序。举例:快速拼写检查程序。 应用传统应用传统面向过程面向过程的思维方式:的思维方式: 快速拼写检查程序将对用户快速拼写检查程序将对用户提供提供的单词进行拼写的单词进行拼写检查检查,如果在字典中找到,如果在字典中找到,输出输出“拼写正确拼写正确”的字样,否则的字样,否则输出输出“拼写不正确拼写不正确”的字样。的字样。要点是什么?要点是什么?面向过程面向过程 = = 以动作以动作( (动词动词) )为中心为中心结构化程序设计方

13、法Spelling_CheckInputSpellingOutput检查拼写检查拼写输入输入检查检查输出输出举例:快速拼写检查程序。举例:快速拼写检查程序。 快速拼写检查程序将对用户提供的快速拼写检查程序将对用户提供的单词单词进行进行拼写拼写检查,如果在检查,如果在字典字典中中找到,输出找到,输出“拼写正确拼写正确”的的字样字样,否则输出否则输出“拼写不正确拼写不正确”的的字样字样。 面向对象的程序设计方法DictionaryDictionarySetWord面向对象程序面向对象程序= =对象对象+ +消息消息字典字典单词单词集合集合面向对象程序的中的对象与消息Dictionary用户提供单词

14、(w)在集合中查找w报告检查结果(正确/错误)拼写检查程序拼写检查程序请求查w查询结果(有/无)面向对象程序设计的优点1 1能够实现对现实世界客体的能够实现对现实世界客体的自然描述自然描述2 2可控制程序的复杂性,可控制程序的复杂性,( (对于相同规模的系统,对于相同规模的系统,结构更清晰结构更清晰,更易理解,更易理解) )3 3可增强程序的模块性可增强程序的模块性4 4可提高程序的可提高程序的重用重用性性5 5可改善程序的可改善程序的可维护性可维护性6 6可适应新型的硬件环境可适应新型的硬件环境1.3 基本概念 1.3.1抽象抽象 u抽象抽象是对一个事物群体共性的概括,舍弃个别是对一个事物群

15、体共性的概括,舍弃个别的、非本质的属性,抽取出共同的、本质的属的、非本质的属性,抽取出共同的、本质的属性的过程,它是形成概念的必要手段。性的过程,它是形成概念的必要手段。 u是解决任何问题的基本策略,是解决任何问题的基本策略,u是人类认识世界的本能方式。是人类认识世界的本能方式。 抽象主要包括抽象主要包括过程抽象过程抽象和和数据抽象数据抽象两个部两个部分。分。u过程抽象过程抽象是指功能抽象,即舍弃个别的功能,是指功能抽象,即舍弃个别的功能,抽取共同拥有的功能抽取共同拥有的功能 数据抽象数据抽象比过程抽象的级别更高,比过程抽象的级别更高,u将现实或虚拟的客体将现实或虚拟的客体(Object)作为

16、抽象单元,用作为抽象单元,用属性特征属性特征和和行为特征行为特征两大部分来刻画某个客体。两大部分来刻画某个客体。u是面向对象程序设计所采用的核心方法。是面向对象程序设计所采用的核心方法。u模块化模块化和和信息隐蔽信息隐蔽是数据抽象过程的两种主要途径。是数据抽象过程的两种主要途径。u任何事物都可抽象为对象任何事物都可抽象为对象(Every thing is object!)1.3.1类,抽象类,抽象抽象与分类抽象与分类(Abstract and classification):忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,叫做抽象抽象;把具有共同性质的事物划分为一

17、类类,得出一个抽象的概念,叫做类类。类是对象抽象的结果.类之间主要存在三种关系。它们是:类之间主要存在三种关系。它们是:关联、聚合和泛化。关联、聚合和泛化。1.3.1 类的UML图形化表示格式类的名称类的名称类的名称类的名称属性属性属性属性属性属性属性属性 : : : :数据类型数据类型数据类型数据类型属性属性属性属性 : : : :数据类型数据类型数据类型数据类型 = = = = 初值初值初值初值操作操作操作操作操作操作操作操作( ( ( (参数表参数表参数表参数表):):):):结果类型结果类型结果类型结果类型CustomerCustomername:Stringname:Stringna

18、me:Stringname:Stringaddress :Stringaddress :Stringaddress :Stringaddress :Stringphone :Longphone :Longphone :Longphone :Longmove(x:String,y:Stringmove(x:String,y:Stringmove(x:String,y:Stringmove(x:String,y:Stringadd():booleanadd():booleanadd():booleanadd():booleanisEmpty():booleanisEmpty():booleanis

19、Empty():booleanisEmpty():booleangrow():booleangrow():booleangrow():booleangrow():boolean1.3.2 封装封装u是将客体的是将客体的属性属性和和行为行为聚集聚集在一个逻辑单在一个逻辑单元内部,形成一个可供访问的基本单元。元内部,形成一个可供访问的基本单元。u对外对外隐藏局部信息隐藏局部信息,外界只能够通过所提,外界只能够通过所提供的特定行为接口供的特定行为接口( (方法方法/ /函数函数) )改变或获取改变或获取其属性状态。其属性状态。属性属性行为行为1行为行为2行为行为3行为行为4行为行为5行为行为6行为行

20、为8行为行为71.3.3 对象对象 对象是用来描述领域世界中客体的部对象是用来描述领域世界中客体的部件,是面向对象软件系统在运行时刻件,是面向对象软件系统在运行时刻的基本单位。的基本单位。 对象都有一个惟一的标识,通过它区对象都有一个惟一的标识,通过它区分属于同一个类的不同对象。分属于同一个类的不同对象。对象应该具有下面对象应该具有下面5 5个基本特性:个基本特性:n自治性,指对象具有一定的独立操作能力;自治性,指对象具有一定的独立操作能力;n封闭性,指对象具有信息隐蔽的能力;封闭性,指对象具有信息隐蔽的能力;n通信性,指对象具有与其他对象通信的能力;通信性,指对象具有与其他对象通信的能力;n

21、被动性,指对象的状态转换需由外界刺激引发;被动性,指对象的状态转换需由外界刺激引发;n暂存性,指对象的动态创建与消亡。暂存性,指对象的动态创建与消亡。1.3.5 消息消息u消息消息是是一个对象要求另一个对象实施某项一个对象要求另一个对象实施某项操作的操作的请求请求。u消息包含消息包含接收者接收者和要求和要求接收者接收者执行哪项操执行哪项操作的作的请求请求,但不指定应该怎样做,具体的,但不指定应该怎样做,具体的操作过程由接收者自行决定。操作过程由接收者自行决定。u消息传递是消息传递是对象对象之间相互之间相互联系联系的的惟一途径惟一途径。u发送者发送消息,接收者通过发送者发送消息,接收者通过调用相

22、应的方法响调用相应的方法响应消息应消息,u这个过程被不断地重复,使得应用程序在人的有这个过程被不断地重复,使得应用程序在人的有效控制下运转起来,最终得到相应的结果。效控制下运转起来,最终得到相应的结果。u可以说,可以说,面向对象程序是消息驱动而实现运转面向对象程序是消息驱动而实现运转。u消息传递可简单理解为类似消息传递可简单理解为类似C语言的函数调用。语言的函数调用。对象间消息传递示例(UML时序图)1.3.6继承继承u是类之间的一种常见关系。是类之间的一种常见关系。u提供了一种共享数据和操作的提供了一种共享数据和操作的机制。机制。u通过继承,一个类的定义可以通过继承,一个类的定义可以基于另外

23、一个已经存在的类。基于另外一个已经存在的类。u继承是面向对象程序设计方法继承是面向对象程序设计方法的一个重要标志,利用继承机的一个重要标志,利用继承机制可以大大提高程序的制可以大大提高程序的可重用可重用性性和和可扩充性可扩充性。 父类父类子类子类生物生物动物动物植物植物细菌细菌类的继承举例及图示1.3.7 多态性多态性 不同的类型的对象不同的类型的对象对收到的对收到的同一种消息同一种消息可以可以产生完全产生完全不同的响应效果不同的响应效果,这种现象叫做多,这种现象叫做多态。态。 利用多态机制,用户可以发送一个通用的消利用多态机制,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定,这息

24、,而实现的细节由接收对象自行决定,这样,样,同一个消息可能会导致调用不同的方法同一个消息可能会导致调用不同的方法, ,实现不同功能实现不同功能。 聚合:聚合:一个(较复杂的)对象由其他若干(较简单的)一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称作聚合。对象作为其构成部分,称作聚合。分为紧密、固定的和松散、灵活的两种方式。分为紧密、固定的和松散、灵活的两种方式。聚合刻画了现实事物之间的构成关系聚合刻画了现实事物之间的构成关系整体整体- -部分结构:部分结构:由一组具有聚合关系的类所形成的结构称作整体由一组具有聚合关系的类所形成的结构称作整体- -部分结部分结构。它是一个以类为

25、结点,以聚合关系为边的连通有向图。构。它是一个以类为结点,以聚合关系为边的连通有向图。聚合关系又称整体聚合关系又称整体- -部分关系,它是对象实例之间的一种关部分关系,它是对象实例之间的一种关系。有时说两个类之间存在着整体系。有时说两个类之间存在着整体- -部分关系,是指一个类部分关系,是指一个类的对象实例以另一个类的对象实例作为组成部分。的对象实例以另一个类的对象实例作为组成部分。这种关系的语义是这种关系的语义是“has ahas a”或或“is a part ofis a part of”1.3.8 UML关联:关联:对象之间的静态联系(即通过对象属性体现对象之间的静态联系(即通过对象属性

26、体现的联系)称作关联。的联系)称作关联。关联的表示符号称作关联的表示符号称作实例连接。实例连接。UMLUML其它图元素(其它图元素(P18-19P18-19)小结:面向对象的4+2个特性p 抽象性抽象性p 封装性封装性p 继承性继承性p 多态性多态性p可组合性可组合性p关联性关联性1.4 面向对象程序设计语言 1.4.1 面向对象程序设计语言面向对象程序设计语言OOPL (Object-Oriented Programming Language) 提供描述面向对象方法所涉及到的类、对象、提供描述面向对象方法所涉及到的类、对象、继承和多态等基本概念的程序设计语言。继承和多态等基本概念的程序设计语

27、言。 它应该具有下列特征:识别它应该具有下列特征:识别(标识标识)性、分类性、性、分类性、继承性和多态性。继承性和多态性。 1.4.2 几种有代表性的OOPLnSimula67,支持单继承、一定含义上的多态和部分动支持单继承、一定含义上的多态和部分动态联编。态联编。nSmalltalk,支持单继承、多态和动态联编。支持单继承、多态和动态联编。nEiffel,支持多继承、多态和动态联编。支持多继承、多态和动态联编。nC+,支持多继承、多态和部分动态联编。支持多继承、多态和部分动态联编。nJava,提供了类机制,以及有效的接口模型。支持单提供了类机制,以及有效的接口模型。支持单继承、多态和动态联编

28、。继承、多态和动态联编。nC# 与与Java类似,由类似,由MicroSoft公司推出公司推出传统结构化方法传统结构化方法数据结构数据结构+算法算法=程序设计程序设计以对象为中心组织数据与操作以对象为中心组织数据与操作数据数据对象的属性对象的属性操作操作对象的服务对象的服务/方法方法类型与变量类型与变量类与对象实例类与对象实例函数(过程)调用函数(过程)调用消息传送消息传送类型与子类型类型与子类型一般类与特殊类,继承一般类与特殊类,继承构造类型构造类型整体整体-部分结构,聚合部分结构,聚合指针指针关联关联不同点不同点 思想观念:思想观念:从对象出发认识问题域;构造策略:构造策略:以对象作为构成

29、系统的基本单位,将对象的数据与操作紧密结合;保证机制:保证机制:由支持封装、继承、多态的机制保证其原则的实现。1.4.3 面向对象方法与传统面向对象方法与传统结构化结构化方法的比较方法的比较面向对象方法面向对象方法面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流 面向对象是软件方法学的返朴归真面向对象是软件方法学的返朴归真软件科学的发展历程中软件科学的发展历程中出现过许多出现过许多“面向面向”软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。面向对象面向对象小结面向对象是一种主流的软件开发方法是一种思维范式,是一种软件系统的构造模式有四种基本特性:抽象性、封装性、抽象性、封装性、继承性、多态性继承性、多态性可复用,可组合是面向对象方法的最可复用,可组合是面向对象方法的最重要特性!重要特性!作业课本P23-24.下载并安装JDK1.6,编写HelloWorld java程序,应用JDK编译、运行。下载并安装NetBeans 6.7 了解NetBeans环境,在NetBeans环境下编写并运行HelloWorld.java程序

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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