JAVA教程第1章(导学).ppt
第1章 导学本章提要 从面向过程到面向对象从面向过程到面向对象 Java Java语言概述语言概述 项目安全说明项目安全说明 本章知识要点v从面向过程到面向对象从面向过程到面向对象 v对象、类和实体对象、类和实体 v面向对象的软件开发面向对象的软件开发 vJavaJava语言历史和特性语言历史和特性vJavaJava语言应用语言应用v项目案例说明项目案例说明 1.1 从面向过程到面向对象软件危机v软件危机(软件危机(Software CrisisSoftware Crisis)由于日益增长的软件系由于日益增长的软件系统的复杂性和软件产业内部愈演愈烈的竞争,需要寻求软件统的复杂性和软件产业内部愈演愈烈的竞争,需要寻求软件设计和开发的新途径设计和开发的新途径 。v为了克服这种要求带来的软件危机,必须解决以下问题:为了克服这种要求带来的软件危机,必须解决以下问题:1 1、在系统设计中,如何表现问题的真实实体?、在系统设计中,如何表现问题的真实实体?2 2、如何以开放的界面(、如何以开放的界面(interfaceinterface)设计系统?)设计系统?3 3、如何保证模块(、如何保证模块(modulemodule)的可重用性()的可重用性(reusabilityreusability)和可扩展性)和可扩展性(extensibilityextensibility)?)?4 4、如何开发能够容忍(、如何开发能够容忍(toleranttolerant)未来可能的变化模块?)未来可能的变化模块?5 5、如何提高软件的生产力和减少软件开销?、如何提高软件的生产力和减少软件开销?6 6、如何管理进度表?、如何管理进度表?7 7、如何提高软件质量?、如何提高软件质量?8 8、如何将软件开发过程工业化?、如何将软件开发过程工业化?软件质量评估指标v对于一个软件,评估其质量的因素包括:对于一个软件,评估其质量的因素包括:正确性(正确性(CorrectnessCorrectness)可维护性(可维护性(MaintainabilityMaintainability)可重用性(可重用性(ReusabilityReusability)开放性(开放性(OpennessOpenness)和可解释性()和可解释性(InterpretabilityInterpretability)可移植性(可移植性(PortabilityPortability)安全性(安全性(SecuritySecurity)完整性(完整性(IntegrityIntegrity)用户友好性(用户友好性(User friendlinessUser friendliness)v面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。五子棋v面向对象的设计思路就是将问题分解为三个对象,:1、玩家,黑白双方,其行为是相同的 2、棋盘系统,负责绘制画 3、规则系统,负责判定诸如犯规、输赢等 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。蛋炒饭碟头饭面向过程与面向对象的比较方面面向过程(OP)面向对象(OO)思想分析问题,划分为多个步骤,用函数实现分析问题,划分为多个功能,并用多个对象实现构成公式程序=算法+数据数据程序=对象+消息消息。特点基于算法,过程驱动基于对象,事件驱动对比可扩展性差可扩展性好对程序员要求要求素质高简单v总之,面向过程和面向对象的区别,在于分析方式不同,最终导致了编码方式的不同。面向对象v对应于软件开发的过程,面向对象(OO)衍生出3个概念:OOA、OOD和OOP采用面向对象进行分析的方式称为OOA采用面向对象进行设计的方式称为OOD采用面向对象进行编码的方式称为OOP v面向对象程序设计的基本思想把数据看作程序开发中的基本元素,并且不允许它们在系统中自由流动。将数据和操作这些数据的函数紧密的连结在一起,并保护数据不会被外界的函数意外的改变。允许我们将问题分解为一系列实体这些实体被称为对象(object),然后围绕这些实体建立数据和函数。面向对象的程序设计v什么是面向对象程序设计(OOP)?将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。定义了一个对象,就隐含的创建了一个新的数据类型。面向对象程序设计特性v程序设计的重点在于数据而不是过程;v程序被划分为所谓的对象;v数据结构为表现对象的特性而设计;v函数作为对某个对象数据的操作,与数据结构紧密的结合在一起;v数据被隐藏起来,不能为外部函数访问;v对象之间可以通过函数沟通;v新的数据和函数可以在需要的时候轻而易举的添加进来;v在程序设计过程中遵循由下至上(bottom-up)的设计方法。面向对象的相关概念v对象(Object)、类(Class)和实体面向对象是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。类和对象的例子v水果类:桔子、苹果、雪梨v动物类:人、狗、猫v请你举例?1.2 Java语言概述Java语言历史及特性vJavaJava语言的诞生语言的诞生1991.4,Sun Microsystems公司的James Gosling博士领导的绿色计划(Green Project)着手于在各种消费性电子产品上运行的一种分布式系统结构研究。该项目开发语言引出了Java前身oak(橡树),并于17个月后完成。1994年下半年,Internet的迅猛发展,首个浏览器Mosaic出现,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求,Java创始人Games Gosling对原有oak进行改造,Java在1995年的3月23日诞生了!Java语言历史及特性vJavaJava语言发展的第一个阶段(语言发展的第一个阶段(1995-19981995-1998 1995.5.23 在SunWorld95上正式发布Java和HotJava浏览器。1996.1.23 发布了JDK1.0,包括两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面 API,发布技术,Java虚拟机(JVM)五个部分。而开发环境还包括了编译Java程序的编译器(即javac)。1997.2.18 发布了JDK1.1,JVM增加了JIT(即时编译)编译器1998年是Java开始迅猛发展的一年。Sun发布了 JSP/Servlet、EJB规范,并将Java分成了J2EE、J2SE和J2ME。Java语言历史及特性1998.12.4 发布JDK1.2(Java2),对Java进行了很多革命性的变化,并沿用至今。JDK1.2将它的API分成了三大类:核心核心API API(Java核心类库)、可选、可选APIAPI(扩充API)、特殊特殊APIAPI(满足特殊要求的API)。增加许多新的特性,其中包括Swing、多线程、集合类等。2000.5.8 发布JDK1.3,主要对一些类库(如数学运算、新的Timer API等)、在JNDI接口方面增加了一些DNS的支持、增加了JNI的支持,这使得Java可以访问本地资源了、支持XML以及使用新的Hotspot 虚拟机。2002.2.13 发布了JDK最为成熟的版本JDK1.4。主要对Java的性能进行了改进,使JDK1.4的性能有了质的飞跃。Java语言历史及特性vJavaJava语言发展的第三个阶段(语言发展的第三个阶段(2004-2004-至今至今 2004.10 发布了JDK1.5,并将JDK1.5改名为J2SE5.0。主要解决Java的复杂性问题。并增加了诸如泛型、增强的for语句、可变数目参数、注释(Annotations)、自动拆箱(unboxing)和装箱等功能。推出EJB3.0规范,JSF(类似于ASP.NET服务器控件)。2006.12.11 发布了J2SE6.0(专为Vista设计),在性能、易用性方面得 到了前所未有的提高,而且还提供了如脚本、全新的API(Swing和AWT等API已经被更新)的支持。2007.9 发布J2SE7.0,新增了Java API,以及相当多的新功能如支持拖放、Java interface definition language(IDL)、Java servlets、Javadoc doclets、Java Virtual Machine Debugger Interface(JVMDI)等等。Java语言历史及特性 vJavaJava语言是语言是Sun MicrosystemsSun Microsystems公司的纯面向对象(公司的纯面向对象(Object-oriented Object-oriented)的程序设计语言。的程序设计语言。vJavaJava特性特性 :简单性简单性 面向对象面向对象 可移植性可移植性(与平台无关性与平台无关性)安全性和稳定性安全性和稳定性 高性能高性能高效字节码,多线程,高效字节码,多线程,JITJIT动态性动态性 分布性分布性 项目案例背景