面向对象程序设计Object-OrientedProgramming授课教师:赵永安电子邮箱:zhaoas01@163.com第一讲Java语言与面向对象程序设计第1讲面向对象程序设计z课程类型:专业基础课z先导知识:了解操作系统(Linux/Window)一门高级语言数据结构关系数据库z教学目的:掌握基于OOP的思想利用java技术,实现OOP程序设计方法Java语言与面向对象程序设计第1讲【教学目标】面向对象程序设计技术的成功应用,是IT领域技术的重要成果和发展趋势之一,拥有广阔的市场前景z通过本课程学习,掌握面向对象程序设计的基本思想、重要概念和基础方法z以Java语言为载体,深入理解和掌握面向对象思想方法和编程技术,并能运用Java语言进行基本的面向对象程序设计z通过相应的实验,提高学生的实践动手技能Java语言与面向对象程序设计第1讲目标与方法z学习目标:1.掌握OOP的设计思想2.掌握Java程序设计基本方法3.初步建立基于OOP开发GIS的专业思想及技术方法.zz学习方法学习方法::1.学习OOP的设计思想2.了解基于OOP的API基本原理和体系结构3.掌握OOP程序设计的基本方法Java语言与面向对象程序设计第1讲面向对象程序设计z根据教学大纲,学习内容为三个层次:1.熟练掌握-专业思想2.基本掌握-基本方法3.原理性介绍-基本原理和体系结构z专业知识水平:1.满足基本应用需求2.技术方法适度超前Java语言与面向对象程序设计第1讲【教材与参考资料】1.Java语言与面向对象程序设计(第2版)印旻等清华大学出版社,2007年11月2.BruceEckel.ThinkinginJava,4thEdition.PrenticeHall,Feb.20063.语言与面向对象程序设计第1讲教材目录第一章面向对象程序设计概论第二章java概述第三章java语言基础第四章抽象、封装与类第五章继承与多态第六章工具类与算法第七章图形用户界面的设计与实现第八章java高级编程第九章java数据库编程接口第十章java开发环境与工具Java语言与面向对象程序设计第1讲【课程内容】z第一部分:面向对象软件开发概述(ch1)zOOP思想等z第二部分:Java及语言基础(ch2,ch3)zJava运行环境和开发环境,Java数据类型、运算符和表达式,Java三大流程控制语句z第三部分:Java面向对象技术(ch4,ch5)核心内容z类和对象、抽象、封装、继承、多态、重载、包、接口等z第四部分:标准类库和GUI(ch6,ch7)zJava标准类库、数据结构和算法、GUI设计与实现z第五部分:Java高级编程(ch8,ch9)z异常处理、I/O、多线程、网络编程、数据库编程Java语言与面向对象程序设计第1讲【主要内容】z面向对象程序设计思想(重点)zJava语言基础zJava面向对象技术(核心)z图形用户界面(GUI)z异常、多线程、I/Oz网络编程、数据库编程Java语言与面向对象程序设计第1讲学习Java的三个阶段用Java语言写OO程序掌握Java面向对象思想用Java语言写Java程序培养目标Java语言与面向对象程序设计第1讲【学时】总学时=9-18周(本学期总周数)?周(期末考试)72学时(56学时理论+16学时上机)Java语言与面向对象程序设计第1讲课程表W1W2W3W4W51-29-18S12069-18S12063-45-612-19class17-812-19class29-109-16S1205Java语言与面向对象程序设计第1讲【其它】z书面作业:4~6次z上机作业:16次实验z学期成绩:期中成绩*0.4+期末成绩*0.6z答疑z时间:择机待定z周期:2次/周Java语言与面向对象程序设计第1讲基本要求zForyou:z保证上课课时(56课时理论、16课时实习)z交互式教学,掌握学科思想和主要知识内容z认真做好实习,按时提交实习报告Forme:TohavetodomybestforteachingthecourseofOOPJava语言与面向对象程序设计第1讲为什么要学习面向对象程序设计z面向对象技术的意义z人的大脑与计算机的思维差异z解决软件危机的有效途径z学习面向对象的紧迫性z适应客观世界的认知进化z程序的设计思想与实现技术与时俱进现实世界Java语言与面向对象程序设计第1讲面向对象技术意义z现代计算机功能很强大,但应用缺乏合理性z最大的不合理:来自人观察问题的认识空间与计算机处理问题的方法空间二义性,存在着较大的隔阂z面向对象技术有助于减小这一隔阂、并使这两个空间尽量趋于一致z面向对象技术应用的普遍性z软件复用z类库(可重用的标准化的模块)z实现类的继承Java语言与面向对象程序设计第1讲面向对象技术-人人受益zFormanager更迅速和经济地开发和维护软件系统。zForanalystsanddesigners模块化的过程将变的简单,并能获得一个清晰的、易于管理的设计方案。zzForprogrammers规范的对象模型、丰富的类库资源、多样化的开发工具,是提高程序设计效率和高质量软件产品的保障。Java语言与面向对象程序设计第1讲第1章面向对象概述1.1面向对象问题求解的提出1.2面向对象问题求解概述1.3对象、类与实体1.4对象的属性和相互关系1.5面向对象的软件开发过程1.6面向对象程序设计方法的优点Java语言与面向对象程序设计第1讲1.1面向对象问题求解的提出面向机器的程序面向过程的程序面向对象的程序专为特定硬件系统设计,运行速度和效率很高,但可读性和可移植性极差将描述和表达解决现实世界的问题及其解决过程转化为用计算机能理解的逻辑程序=数据结构+算法不足以将一个包含了多个相互关联的过程的复杂系统表述清楚利用计算机逻辑模拟现实世界的问题将数据和相关操作集成到一起程序=状态+行为程序设计和问题求解力求符合类日常自然的思维习惯,降低、分解问题的难度和复杂性Java语言与面向对象程序设计第1讲【程序设计语言】过程式语言函数式语言逻辑式语言面向对象语言特点是命令驱动、面向语句,如Fortran、C、Pascal、Ada等语言更注重程序所表示的功能,如LISP、ML等语言利用类结构,实现对象的属性与方法。如Simula、Smalltalk、C++、Java等检查一定的条件,当它满足时则执行适当的动作,如Prolog等语言Java语言与面向对象程序设计第1讲传统的程序设计语言z20世纪60年代开发的Simula67,这是面向对象语言的鼻祖,提出了对象、类和继承等概念。z70年代出现的Ada语言,是支持数据抽象类型的最重要的语言之一。但是,Ada语言不是全面的支持继承,因此称它一种基于对象的语言。z80年代Smalltalk语言是最有影响的面向对象的语言之一。并入了Simula语言的面向对象的特征,丰富了面向对象的概念。在该语言中,信息的隐藏更加严格,每种实体都是对象。Java语言与面向对象程序设计第1讲z1969年贝尔实验室设计B语言,开发UNIX操作系统z1971年贝尔实验室扩展更改B语言的结构,并重写B语言编译器,改称为C语言。z1983年,出现了许多C语言的版本z1989年美国国家标准化协会(ANSI)颁布标准的C语言,称之为ANSIC。z贝尔实验室在C语言基础上,为UNIX系统设计创建了C++,增强了C语言的能力,使之能够改进编写程序质量,易于程序代码的复用。C++语言的ISO标准已在1997年11月被一致通过,1998年8月被正式批准。传统的程序设计语言Java语言与面向对象程序设计第1讲计算机程序设计语言的发展机器语言汇编语言BSimula1Smaltank80ObjectPascalC++Java194619501960198019902000Fortran1970CJava语言与面向对象程序设计第1讲Java语言与面向对象程序设计第1讲面向过程程序设计z在面向过程的程序设计中,核心是:z数据结构是利用计算机的离散逻辑来量化表达需要处理的数据对象;z而算法则是研究如何快捷、高效地组织解决问题的具体过程。z面向过程本质上是面向机器,而不是面向问题算法+数据结构算法+数据结构Java语言与面向对象程序设计第1讲z系统以功能为中心z将求解目标划分为功能块z功能块细划分解为子功能块z递归进行,直至到可以规定出明确的定义面向过程程序设计Java语言与面向对象程序设计第1讲程序分析将功能块和子功能块转换为模块单元,作为程序设计的逻辑单元程序的逻辑单元包括实现功能/子功能所需要的数据结构和算法面向过程程序设计Java语言与面向对象程序设计第1讲面向对象程序设计z面向对象的程序设计的编程思路z放弃将程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作又彼此独立的对象的集合。z每个对象就像一个微型程序,有自己的数据、操作和功能。z在许多系统中,解空间中的对象可以直接模拟我们实际接触的对象。Java语言与面向对象程序设计第1讲面向对象技术意义z减少人脑和电脑之间的隔阂z长期以来,人与计算机之间仍存在着较大的隔阂:z人认识问题时的认识空间和计算机处理问题时的方法空间的不一致;z而面向对象技术有助于减小这一隔阂、并使这两个空间尽量趋于一致。z软件复用z类库的使用(可重用的标准化的模块)z类的继承z面向对象技术应用的普遍性Java语言与面向对象程序设计第1讲StandingonShouldersofGiants,Letusforwardtogether面向对象的程序设计面向对象语言组成:语法规则+类库Java语言与面向对象程序设计第1讲面向对象的方法解决问题的基本过程面向对象的方法解决问题的基本过程面向对象的方法解决问题的基本过程对象实体类抽象类抽象①①①计算机逻辑的实现②②②实例化③③③Java语言与面向对象程序设计第1讲1.2面向对象问题求解概述z面向过程的程序设计以具体的求题过程为研究和实现的主体z面向对象的程序设计以需解决的问题中所涉及的各种对象为主要矛盾z对象:现实世界的实体或概念在计算机逻辑中的抽象表示具有唯一对象名和一组属性和操作的集合。z对象名:区别于其它对象的标志。z对象属性:表示了它所处的状态。z对象操作:用来改变对象的状态达到特定的功能。Java语言与面向对象程序设计第1讲面向对象的求解形成具有广泛联系的可扩充、可维护、接近于实际问题的动态模型系统1.从现实世界中抽象出封装数据与操作的对象2.定义数学与操作表述其特征与功能3.定义接口表述对象的地位以及与其它对象的关系Java语言与面向对象程序设计第1讲面向对象程序设计OOPOOP旨在在计算机程序中模拟现实世界中的概念在OOP中,现实世界的所有事物全都被视为对象能够在计算机程序中用类似的实体模拟现实世界中的实体能够在计算机程序中用类似的实体模拟现实世界中的实体设计和实现软件系统的方法设计和实现软件系统的方法Java语言与面向对象程序设计第1讲1.2面向对象问题求解概述z面向对象程序设计的特点:程序以对象为中心对象以数据为中心消除传统结构的数据与操作分离的问题实现私有数据与公有数据的分离保护私有数据的安全Java语言与面向对象程序设计第1讲1.2面向对象问题求解概述z面向对象程序设计的优点:z对象的数据封装特性:提高程序的可复用性和可维护性,降低程序员保持数据和操作的负担降低程序复杂性,提高可控性z对象的自洽性对象操作的两类功能:修改自身状态;向外发布信息。需要影响其它对象时,必须其它对象自身的方法处理之z黑箱机制隐藏数据和操作的细节,仅有一个接口与外界联系z继承性:提高程序可复用性Java语言与面向对象程序设计第1讲1.3对象、类与实体z对象(Object):现实世界中某个具体的物理实体(Entity)或概念在计算机逻辑中的映射和体现。具备一定的属性和行为z类(Class):同种