面向对象程序设计第1讲java.ppt
2023/10/31,1,面向对象程序设计,张璞重庆邮电大学计算机学院,2023/10/31,2,课程概述,面向对象方法的主要思想、基本概念用Java这门面向对象程序设计语言来实现用面向对象分析与设计方法建立的系统模型面向对象设计(OOD)的基本原则及设计模式UML/OOA/OOD 的简介,2023/10/31,3,课程概述,2023/10/31,4,教材,Java面向对象程序设计(第2版),耿祥义、张跃平遍著,清华大学出版社,2023/10/31,5,OOP参考文献,2023/10/31,6,参考文献,面向对象的系统分析(第2版),邵维忠,杨芙清著,清华大学出版社,2023/10/31,7,参考文献,面向对象的系统设计,邵维忠等著,清华大学出版社,2023/10/31,8,参考文献,UML用户指南 作者 Booch等 译者:邵维忠 等,2023/10/31,9,参考文献,原书名:The Essence of Object-Oriented Programming with Java and UML 原出版社:Addison Wesley 作者:Bruce E.Wampler 译者:王海鹏 丛书名:软件工程系列教材 出版社:人民邮电出版社,2023/10/31,10,参考文献,设计模式:可复用面向对象软件的基础(美)Erich Gamma 等 译者:李英军 等译,2023/10/31,11,本讲总体纲要,Java简介开发环境的建立第一个 Java程序面向对象技术基本概念面向对象方法的发展史及现状简介,2023/10/31,12,Java语言?,Java语言是一种可以编写跨平台应用软件的面向对象的程序设计语言目前已经在各个领域得到广泛应用。,2023/10/31,13,Java的地位,语言地位:一门很好的面向对象语言,主流编程语言网络地位:Java的平台无关性让Java成为编写网络应用程序的佼佼者,而且Java也提供了许多以网络应用为核心的技术,使得Java特别适合于网络应用软件的设计与开发需求地位:良好的就业前景,2023/10/31,14,2023/10/31,15,2023/10/31,16,Java语言 特点,简单性:Java的语法比 C/C+简单网络特性面向对象平台无关性:在操作系统之上再提供一个Java运行时环境(由Java虚拟机、类库以及一些核心文件组成)只要平台提供了Java运行环境,Java编写的软件就能在其上运行安全性多线程性,2023/10/31,17,Java历史简介,1)由Sun公司的詹姆斯高斯林(James Gosling)等人于1990年代初开发。它最初被命名为Oak,是用于家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。James Gosling,“绿色项目”,2023/10/31,18,Java历史简介,2)由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月以“Java”的名称正式发布了。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。,2023/10/31,19,2023/10/31,20,Java已发展成为计算平台,2023/10/31,21,2023/10/31,22,三种平台简介,目前Java平台主要分为下列3个版本:(1)Java SE(曾称为J2SE)称为Java标准版或Java 标准平台。(2)Java EE(曾称为J2EE)称为Java企业版或Java企业平台。(3)Java ME(曾称为J2ME)称为Java微型版或Java小型平台。,2023/10/31,23,2023/10/31,24,下载与安装指南,例如,安装:Java SDK,Standard Edition版本操作系统,2023/10/31,25,本讲总体纲要,Java简介开发环境的建立第一个 Java程序面向对象技术基本概念面向对象方法的发展史及现状简介,2023/10/31,26,建立Java开发环境,1)下载J2SE安装程序2)运行J2SE安装程序,安装J2SE3)设置环境变量:运行路径(path)类路径(classpath,初学时不必设置)4)下载J2SE的在线帮助文档,2023/10/31,27,本讲总体纲要,Java简介开发环境的建立第一个 Java程序面向对象技术基本概念面向对象方法的发展史及现状简介,2023/10/31,28,例 1:HelloWorld,2023/10/31,29,Java程序的工作原理,2023/10/31,30,本讲总体纲要,Java简介开发环境的建立第一个 Java程序面向对象技术基本概念面向对象方法的发展史及现状简介,2023/10/31,31,对象的基本概念,对象(Object)是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。,2023/10/31,32,属性:用来描述对象静态特征的一个数据项。操作:用来描述对象行为的一个动作序列。,对象的要素,2023/10/31,33,建立一个复数对象模型,对象的理解,2023/10/31,34,对象是现实世界中某个实际存在的事物,它可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。对象是构成世界的一个独立单位。它具有自己的静态特征和动态特征。,对象的理解,2023/10/31,35,类的基本概念,类是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。,2023/10/31,36,类的理解,2023/10/31,37,类的理解,2023/10/31,38,类的理解,2023/10/31,39,类与对象的比较“同类对象具有相同的属性和服务”是指它们的定义形式相同,而不是说每个对象的属性值都相同。类是静态的,类的存在、语义和关系在程序执行前就已经定义好了。对象是动态的,对象在程序执行时可以被创建和删除。,在面向对象的系统分析和设计中,并不需要逐个对对象进行说明,而是着重描述代表一批对象共性的类。,2023/10/31,40,封装的概念,封装 把对象的属性和服务结合成一个独立的系统单位。并尽可能隐蔽对象的内部细节。,2023/10/31,41,封装性,2023/10/31,42,封装的重要意义:,使对象能够集中而完整地描述并对应一个具体事物。体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“交叉感染”。,2023/10/31,43,封装的重要意义:,对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的操作隐藏起来。,2023/10/31,44,编程的麻烦执行效率的损失解决办法:不强调严格封装,实行可见性控制。(混合型OOPL)例如:C+,封装带来的问题:,2023/10/31,45,消息,2023/10/31,46,消息,对象通过它对外提供的操作在系统中发挥作用。在OO方法中,把向对象发出的服务请求称为消息。当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如C+程序中的main函数)请求这个对象,执行某个服务时,该对象就响应这个请求,完成该服务。,2023/10/31,47,聚合,一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚合。这种关系的语义是“has a”或“is a part of”,2023/10/31,48,继承的概念,继承(Inheritance)是指子类可以自动拥有父类的全部属性和服务。,2023/10/31,49,继承,2023/10/31,50,继承意味着自动地拥有,或隐含地复制子类从父类中继承属性和操作,根据需要添加自己的属性和方法。继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一。,继承,2023/10/31,51,多态性是指同一个命名在不同的语境下具有不同的语义。OO技术中,常指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。,多态性,2023/10/31,52,多态性,2023/10/31,53,不同人对play()请求的响应,多态性机制为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。,2023/10/31,54,关联,两个或多个类之间的关系称作关联。,2023/10/31,55,2023/10/31,56,本讲总体纲要,Java简介开发环境的建立第一个 Java程序面向对象技术基本概念面向对象方法的发展史及现状简介,2023/10/31,57,面向对象方法的发展史及现状简介,2023/10/31,58,面向对象方法的发展史及现状简介,2023/10/31,59,面向对象方法的发展史及现状简介,2023/10/31,60,面向对象方法的发展史及现状简介,2023/10/31,61,面向对象方法的发展史及现状简介,2023/10/31,62,面向对象的软件工程,面向对象分析(Object Oriented Analysis,OOA)分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA 模型。面向对象设计(Object Oriented Design,OOD)将OOA 模型直接变成OOD 模型,并且补充与一些实现有关的部分,如人机界面、数据存储、任务管理等。面向对象编程(Object Oriented Programming,OOP)用一种面向对象的编程语言将OOD 模型中的各个成分编写成程序,由于从OOAOODOOP实现了无缝连接和平滑过渡,因此提高了开发工作的效率和质量。,2023/10/31,63,面向对象的软件工程,面向对象测试(Object Oriented Testing,OOT)面向对象测试是指对于运用OO 技术开发的软件,在测试过程中继续运用OO 技术进行以对象概念为中心的软件测试。以类作为基本测试单位,集中检查在类定义之内的属性、服务和有限的对外接口,大大减少了错误的影响范围。面向对象软件维护(Object Oriented Software Maintenance)在面向对象方法中,各阶段采用的表示是一致的,从而大大降低了理解的难度,无论是从程序中的错误追溯到问题域,还是需求的变化都要从问题域追溯到程序,整个过程都是平坦的。另外,对象的封装性使得一个对象的修改对其他对象的影响很小,不至于牵一发而动全身。,2023/10/31,64,