1、第一讲第一讲 概论概论本讲要点本讲要点计算机软件的简史计算机软件的简史面向对象技术的基础面向对象技术的基础JavaJava体系结构体系结构最简单的最简单的JavaJava实例实例解决问题的求解过程解决问题的求解过程计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮分布式网络计算模式对软件开发分布式网络计算模式对软件开发技术的挑战技术的挑战CORBA CORBA 标准对软件业界的影响标准对软件业界的影响计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮基于主机的计算模式基于主机的计算模式:特征:应用程序,数据,特征:应用程序,数据,界面
2、集为一体。界面集为一体。在主机上运行。在主机上运行。计算机软件的简史计算机软件的简史客户机客户机/服务器服务器(C/S)(C/S)的计算模式的计算模式:特征:特征:C C界面本地数据,界面本地数据,S S应用逻辑共享数据应用逻辑共享数据 在客户机和服务器上运行。在客户机和服务器上运行。计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮分布式网络分布式网络(B/S)(B/S)计算模式计算模式特征:特征:B B界面表示层,界面表示层,S S业务逻辑层数据访问层业务逻辑层数据访问层 存储数据层存储数据层 在异地、异构机上运行。在异地、异构机上运行。计算机软件的简史计算机
3、软件的简史分布式网络计算模式对软件技术的分布式网络计算模式对软件技术的挑战挑战:软件开发的软件开发的4A4A目标目标 跨平台的互操作性跨平台的互操作性(CORBA(CORBA标准标准)计算机软件的简史计算机软件的简史分布式网络计算模式对软件技术的分布式网络计算模式对软件技术的挑战挑战:Any OneAny One Any While Any While Any Time Any Time Any Device Any Device计算机软件的简史计算机软件的简史分布式网络计算模式对软件开发技分布式网络计算模式对软件开发技术的挑战术的挑战:跨平台的互操作性跨平台的互操作性(CORBA(CORBA
4、标准出现标准出现)CORBACORBA标准模型标准模型:IDLIDL应 用 程应 用 程序对象序对象公用设施(公用设施(CORBAFACILITIESCORBAFACILITIES)垂直公用设施垂直公用设施水平公用设施水平公用设施对象请求中介(对象请求中介(ORB)公用对象服务(公用对象服务(CORBAservicesCORBAservices)金融金融 税务税务 保险保险命名命名集合集合计时计时安全性安全性交易器交易器特许特许查询查询并发并发关系关系具体化具体化持久性持久性事件事件生命期生命期事务处理事务处理属性属性系统系统设施设施信息信息设施设施任务任务设施设施界面界面管理管理CORBAC
5、ORBA模型模型:四层四层:1.:1.应用程序对象层是与应用程序接口应用程序对象层是与应用程序接口.2.2.水平公用设施层是各行各业的公共设水平公用设施层是各行各业的公共设 施服务施服务.如用户管理如用户管理,信息管理信息管理,系统系统 管理管理,ftp,ftp之类之类.3.3.垂直公用设施层是专业公共设施服务垂直公用设施层是专业公共设施服务.如金融业的清算系统如金融业的清算系统.电子商务的银电子商务的银 行服务行服务.CORBACORBA模型模型:4.CORBA4.CORBA服务层是软件框架服务服务层是软件框架服务.如系统管理如系统管理:命名命名,生命期生命期,交易交易,许许 可证可证,安全
6、安全,计时等服务计时等服务;事物管理事物管理:事件事件,并发并发,事务等事务等;信息管理信息管理:属性属性,关系关系,查询查询,持久性持久性.具体化具体化,集合等服务集合等服务.CORBACORBA模型模型:服务层共服务层共1515项项.目前还在不断改进目前还在不断改进.5.5.模型中的模型中的ORBORB主要负责主要负责CORBACORBA四层四层 的通信的通信.相当于软件总线的作用相当于软件总线的作用.6.6.IDLIDL(Interfaces Definttion(Interfaces Definttion Language)Language)接口定义语言接口定义语言 参考书参考书:周之
7、英著周之英著“现代软件工程现代软件工程(下下)”.)”.CORBACORBA标准标准:IDLIDLIDLIDL接口定义语言编译器机制接口定义语言编译器机制:桩桩(stub)stub)、骨架骨架(skeleton)skeleton)IDLIDL编译器机制结构编译器机制结构:ORBORB核心核心DIIDII动态动态调用调用IDLIDL桩桩ORBORB接口接口静态静态IDLIDL骨架骨架动态动态骨架骨架对象对象适配器适配器对象实现对象实现客户客户IDLIDL编译器机制编译器机制:DIIDII动态调用动态调用:运行时的动态接口在运行时的动态接口在 客户端接受静态不能确定的请求客户端接受静态不能确定的请
8、求.IDLIDL桩桩(stub):(stub):静态接口静态接口,接受本地请接受本地请 求求,向向ORBORB提交请求提交请求.IDLIDL编译器机制编译器机制:SkeletonSkeleton骨架骨架:用于远程客户与用于远程客户与ORB ORB 通信通信.静态骨架静态骨架:IDL:IDL编译时的骨架接口编译时的骨架接口.动态骨架动态骨架:运行时动态骨架接口运行时动态骨架接口.IDLIDL编译器机制编译器机制:ORBORB接口接口:不同不同ORBORB实现的连接接口实现的连接接口.对象适配器对象适配器:不同执行对象共享不同执行对象共享ORBORB 服务的基本接口服务的基本接口.CORBACOR
9、BA标准对软件业界的影响标准对软件业界的影响观念上的影响观念上的影响 应用软件体系结构的影响应用软件体系结构的影响 对软件产业的影响对软件产业的影响 对软件开发方法的影响对软件开发方法的影响CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对观念上的影响对观念上的影响:4A4A目标目标,文档按国际标准统一文档按国际标准统一以以“开发为主开发为主”转向以转向以“服务为服务为主主”利用第三方软件集成利用第三方软件集成企业文化企业文化:团队精神团队精神,和谐氛围和谐氛围人才素质人才素质:创新创新,责任责任,协作协作,诚信诚信CORBACORBA标准对象软件业界的影响标准对象软件业界的影
10、响应用软件体系结构的影响应用软件体系结构的影响 多层应用软件体系结构的诞生多层应用软件体系结构的诞生:界面层界面层:浏览器浏览器表示层表示层:Web:Web服务器服务器业务层业务层,数据访问层数据访问层:应用服务器应用服务器存储数据层存储数据层(包括原来应用系统包括原来应用系统):):数据数据 库服务器库服务器多层应用软件体系结构的诞生多层应用软件体系结构的诞生 界面层界面层 浏览器浏览器 分布逻辑层分布逻辑层 客户界面控客户界面控件件 表示层表示层 (JSP,ASP,CGI(JSP,ASP,CGI等)等)代理层代理层 产生产生:HTML,XMLHTML,XML DHTML,WML DHTML
11、,WML等等 业务层业务层 业务对象和规则,数据操纵和信息转业务对象和规则,数据操纵和信息转换换 数据访数据访 数据库连接,数据库连接,数据数据I/OI/O接口接口 问层问层 存储数存储数 数据库系统,数据库系统,XMLXML库等库等 据层据层 查询,存储优化和性能协调查询,存储优化和性能协调多层应用软件体系结构的诞生多层应用软件体系结构的诞生WINDOWSWINDOWS窗口窗口,CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对软件产业的影响对软件产业的影响:软件中间件提供商软件中间件提供商软件平台提供商软件平台提供商服务器软件提供商服务器软件提供商构件提供商构件提供商软件服
12、务软件服务(咨询咨询)CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对软件开发方法的影响对软件开发方法的影响基于构件的开发方法流行基于构件的开发方法流行:构件定义构件定义构件特征构件特征构件优势构件优势构件的定义构件的定义1:1:构件是一个几乎独立的可替换的系构件是一个几乎独立的可替换的系 统部件。它在有明确定义的体统部件。它在有明确定义的体 系结构上下文中,完成指定功系结构上下文中,完成指定功 能。它提供一组接口作为构件能。它提供一组接口作为构件 与外界联系的契约与外界联系的契约。构件的定义构件的定义2 2:软件构件是一个组合单位,它包软件构件是一个组合单位,它包 括合同声
13、明的接口及明确说括合同声明的接口及明确说 明的上下文相关性。它可以明的上下文相关性。它可以 被独立部署且服务于第三方被独立部署且服务于第三方 所做的组合。所做的组合。构件特征构件特征:有用性有用性:构件是将功能逻辑与实现构件是将功能逻辑与实现封装为一体的部件。对外界是透明封装为一体的部件。对外界是透明不可视但功能明确的组件不可视但功能明确的组件独立性独立性:构件相对于其他构件是独构件相对于其他构件是独立的立的,但它又很少单个存在但它又很少单个存在,它总是它总是由第三方对它进行组合由第三方对它进行组合,放到某个放到某个指定体系结构的上下文中运行。指定体系结构的上下文中运行。构件特征构件特征:适应
14、性适应性:构件是一个可替换的单元,构件是一个可替换的单元,它通过契约式接口与外界联系它通过契约式接口与外界联系.只只要接口相同要接口相同,就可以相互替换。就可以相互替换。易用性易用性:构件是即插即用的部件构件是即插即用的部件,无需做任何加工就可以组合运行无需做任何加工就可以组合运行.构件特征构件特征:商业性商业性:构件接口按国际标准定义构件接口按国际标准定义,可由开发商开发可由开发商开发,通过市场发行销售通过市场发行销售.递归性递归性:构件可以自包含构件可以自包含,因此构件定义因此构件定义实际上具有递归性实际上具有递归性,即组合好的构件本身即组合好的构件本身,还可以作为构件元素与其他构件组合。
15、还可以作为构件元素与其他构件组合。这种构件称为容器。这种构件称为容器。构件优势:缩短开发周期缩短开发周期,提高软件生产率提高软件生产率提高软件灵活性和可靠性提高软件灵活性和可靠性降低软件开发成本和维护费用降低软件开发成本和维护费用有利于软件生产工业化有利于软件生产工业化认识到软件的本质特性是认识到软件的本质特性是构造性和演构造性和演化性化性:软件是人对知识的提炼、知识的固化、软件是人对知识的提炼、知识的固化、是人类知识和经验的抽象。为使软件能是人类知识和经验的抽象。为使软件能简洁、精确的描述客观事务,软件的多简洁、精确的描述客观事务,软件的多层应用建立在公共的体系结构上是构件层应用建立在公共的
16、体系结构上是构件技术的基本出发点,构件体系结构是构技术的基本出发点,构件体系结构是构造软件的基石,它体现了软件的构造性造软件的基石,它体现了软件的构造性本质。所有软件都可用构件集成而得本质。所有软件都可用构件集成而得.软件是对客观世界中问题求解的具体描述。软件是对客观世界中问题求解的具体描述。而客观世界是在不断发展,不断地变化。而客观世界是在不断发展,不断地变化。软件系统也不可能一成不变,新需求、新软件系统也不可能一成不变,新需求、新技术不断的出现,要求软件系统不断升级。技术不断的出现,要求软件系统不断升级。这就是软件的演化性本质。这就是软件的演化性本质。JavaJava语言语言、XMLXML
17、 语言语言、Web ServicesWeb Services、SOASOA开发软件开发软件:强调集成、部署强调集成、部署 强调面向强调面向WebWeb应用应用 强调个性化服务强调个性化服务面向对象技术的基础面向对象技术的基础对象定义对象定义:对象是从客观事物中抽象出与系统相对象是从客观事物中抽象出与系统相关的关的,能反映事物本质的一个实体能反映事物本质的一个实体,它它是构成系统的基本单位是构成系统的基本单位;如如:一个手机、一辆自行车、一台电一个手机、一辆自行车、一台电视机、一本书等视机、一本书等.也可以是一些抽象也可以是一些抽象的概念的概念:银行账号、邮政编码、电话银行账号、邮政编码、电话号
18、码等号码等 对象具备两个特征:状态和行为。对象具备两个特征:状态和行为。如手机状态有品牌、颜色、号码、如手机状态有品牌、颜色、号码、价格等;行为有打电话、接电话、价格等;行为有打电话、接电话、发短信、设闹钟、设音乐等。发短信、设闹钟、设音乐等。对象对象所包含本质的特征称为属性,对象所包含本质的特征称为属性,对象的行为描述称为方法。的行为描述称为方法。对象是问题域中事物的抽象对象是问题域中事物的抽象.它反它反映了事物在系统中要保存的信息和映了事物在系统中要保存的信息和所发挥的作用所发挥的作用.系统中的一个对象系统中的一个对象在软件生命周期的各个阶段可以有在软件生命周期的各个阶段可以有不同的形式不
19、同的形式.它要经历若干演化阶它要经历若干演化阶段段.对象只描述客观事物本质的对象只描述客观事物本质的,与系与系统目标相关的特征统目标相关的特征;对象将属性和对象将属性和方法封装为一体方法封装为一体.属性值只能由方属性值只能由方法访问和修改法访问和修改.它被隐藏在封装体它被隐藏在封装体内内.使软件体系结构的复杂本质可使软件体系结构的复杂本质可隐藏于对象的单纯性中隐藏于对象的单纯性中.对象在程序中定义对象在程序中定义:一个对象是变量和相关方法的软件一个对象是变量和相关方法的软件封装包封装包:存款存款帐目余额帐目余额计算余额计算余额 取款取款帐目余额帐目余额存存款款计算余额计算余额取取款款消消息息消
20、消息息 消息消息类是对象的抽象定义,对象是类的类是对象的抽象定义,对象是类的实例。类允许用其他类来定义而形实例。类允许用其他类来定义而形成树结构成树结构.类的嵌套关系分为一般类的嵌套关系分为一般类类(父类父类)和特殊类和特殊类(子类子类).).类的继承是面向对象方法的继承性类的继承是面向对象方法的继承性体现体现.它给软件开发带来的优势是:它给软件开发带来的优势是:利用类继承,程序可实现代码重用。利用类继承,程序可实现代码重用。利用抽象类定义普通行为,无需编写利用抽象类定义普通行为,无需编写实现代码。其实现代码由它的子类编实现代码。其实现代码由它的子类编写。写。面向对象程序是一组对象类组成面向对
21、象程序是一组对象类组成.对象对象之间通过接口请求与其他对象协同工之间通过接口请求与其他对象协同工作作,通过类确定传递消息去调用方法通过类确定传递消息去调用方法,实现一定的功能实现一定的功能.Java Java编程注重于类和接口,程序的开编程注重于类和接口,程序的开发实质上就是将问题明确分成多个类,发实质上就是将问题明确分成多个类,再从这些类中创建对象。利用类来实再从这些类中创建对象。利用类来实现程序代码的重用,这是面向对象编现程序代码的重用,这是面向对象编程最有魅力的成就。程最有魅力的成就。接口是对象所能接收请求内容的规接口是对象所能接收请求内容的规范范.接口由类定义接口由类定义.接口接口是一
22、种抽象类,只定义了变量是一种抽象类,只定义了变量和方法,没有规定方法的具体实现。和方法,没有规定方法的具体实现。接口的特征接口的特征接口给软件开发带来的好处是:接口给软件开发带来的好处是:接口可以实现不相关类有相同的接口可以实现不相关类有相同的行为行为.接口可指明多个类需要实现的方接口可指明多个类需要实现的方法法.接口可了解对象的交互界面,而接口可了解对象的交互界面,而不需要了解对象所对应的类不需要了解对象所对应的类.向对象发出方法请求称为消息向对象发出方法请求称为消息.对对象通过消息进行通信象通过消息进行通信.类定义了对象的所有消息模式,也类定义了对象的所有消息模式,也定义了该对象的所有方法
23、定义了该对象的所有方法.消息包含信息有消息包含信息有:提供方法的对象提供方法的对象名名,方法名方法名,输入信息和应答信息输入信息和应答信息.使用对象只需了解其消息格式使用对象只需了解其消息格式.消息给软件开发带来的好处是:消息给软件开发带来的好处是:消息将程序的数据流和控制流统一消息将程序的数据流和控制流统一.可用消息实现数据传递可用消息实现数据传递.相同处理的对象之间,无需消息传递相同处理的对象之间,无需消息传递.封装性封装性对象的封装有两个方面:对象的封装有两个方面:一方面表示对象的属性和方法是不一方面表示对象的属性和方法是不可分隔的结合体可分隔的结合体.一方面表示对象内部细节的隐蔽性一方
24、面表示对象内部细节的隐蔽性.描述客观事务对象的独立单元描述客观事务对象的独立单元.外界只能与方法联系外界只能与方法联系.属性只能被对象的方法访问属性只能被对象的方法访问.封装性的优势封装性的优势对象的属性和方法封装为一体对象的属性和方法封装为一体,意味着意味着对象确实反映了客观事物的静态特征对象确实反映了客观事物的静态特征和动态特征融为一体的普遍规律和动态特征融为一体的普遍规律.把对象的属性和行为结合产生新的数把对象的属性和行为结合产生新的数据类型据类型.实现细节隐蔽实现细节隐蔽,接口与实现的接口与实现的分离分离.使对象的使用者和设计者分离使对象的使用者和设计者分离 封装性的优势封装性的优势既
25、可以防止外界的干扰,又可以简化既可以防止外界的干扰,又可以简化复杂性。在复杂性。在JavaJava语言中,对象、类和语言中,对象、类和包是不同层次上的封装,为管理大量包是不同层次上的封装,为管理大量的对象和类提供了方便,也增强了语的对象和类提供了方便,也增强了语言的安全性言的安全性.封装也符合软件工程的模块化原则,封装也符合软件工程的模块化原则,满足软件重用的策略,降低了软件开满足软件重用的策略,降低了软件开发成本,缩短开发周期,使软件的开发成本,缩短开发周期,使软件的开发和维护得到根本性的改善发和维护得到根本性的改善.继承性是面向对象技术赋予类的一继承性是面向对象技术赋予类的一种特征,即先定
26、义一个具有一定意种特征,即先定义一个具有一定意义的类(父类),再给此类添加一义的类(父类),再给此类添加一些特性以派生出一个新类些特性以派生出一个新类(子类子类).).子类对象重复运用其父类的接口子类对象重复运用其父类的接口继承可实现子类重用继承可实现子类重用继续可建立新类库继续可建立新类库将多个类型视为同类型将多个类型视为同类型.同一份程同一份程序代码可作用于多个类型上序代码可作用于多个类型上.可提可提高系统的可重用性和可扩性高系统的可重用性和可扩性.一个类是多个父类的子类,这种继一个类是多个父类的子类,这种继承被称为多重继承承被称为多重继承.Java.Java语言可利语言可利用接口实现类的
27、多重继承。用接口实现类的多重继承。对象的多态性,是同一个属性名或对象的多态性,是同一个属性名或方法名在父类,及其子类中具有不方法名在父类,及其子类中具有不同语义同语义.相同类名可引用不同的方法定义子类相同类名可引用不同的方法定义子类方法的覆盖可实现多态方法的覆盖可实现多态.方法的重载可在同类中定义多个同名方法的重载可在同类中定义多个同名的参数不同的方法来实现多态的参数不同的方法来实现多态.多态也称为动态绑定或后期绑定多态也称为动态绑定或后期绑定.利用利用多态性提高了程序的抽象程度和简洁多态性提高了程序的抽象程度和简洁性性.减少类和程序模块之间的耦合性减少类和程序模块之间的耦合性,可实现程序良好
28、的扩展性可实现程序良好的扩展性.动态多态性体现了面向对象编程中代动态多态性体现了面向对象编程中代码的重用和健壮性。码的重用和健壮性。JavaJava是强类型语是强类型语言,运行时对动态类型自动保留全部言,运行时对动态类型自动保留全部多态引用的标记,并在运行时对动态多态引用的标记,并在运行时对动态类型进行检查。类型进行检查。面向对象程序设计包括两大任务:面向对象程序设计包括两大任务:一是考虑客观问题中的哪些数据与操作一是考虑客观问题中的哪些数据与操作进行封装,即将客观实体与程序的对象、进行封装,即将客观实体与程序的对象、类进行对应。类进行对应。二是考虑对象间需要哪些消息传递才能二是考虑对象间需要
29、哪些消息传递才能完成需求的功能。完成需求的功能。在编程之前,对问题进行面向对象的分析,在编程之前,对问题进行面向对象的分析,要与客户进行很好的沟通,努力了解问题要与客户进行很好的沟通,努力了解问题域中所涉及的对象、对象之间的关系以及域中所涉及的对象、对象之间的关系以及对象需要完成哪些操作对象需要完成哪些操作.再利用抽象原则,寻找对象共同特性创建再利用抽象原则,寻找对象共同特性创建出该问题的若干个类,由对象之间的关系出该问题的若干个类,由对象之间的关系定义出类的消息和方法。利用消息建立问定义出类的消息和方法。利用消息建立问题的模型,使模型尽可能接近问题的原意。题的模型,使模型尽可能接近问题的原意
30、。具体建模过程中通过对问题做不同层具体建模过程中通过对问题做不同层次的抽象。利用类的继承性,将类进次的抽象。利用类的继承性,将类进行改造,定义出父类和子类。使问题行改造,定义出父类和子类。使问题中类的总数目不要太多。中类的总数目不要太多。编程单元是类编程单元是类,Java,Java中中,注意力放在构注意力放在构造新类和复用已有类上造新类和复用已有类上,而不是方法上而不是方法上.JavaJava的体系结构的体系结构JavaJava的体系结构的体系结构JavaJava的实现机制的实现机制JDKJDK的下载和使用的下载和使用JavaJava的体系结构的体系结构应用程序(应用程序(Applection
31、Applection&Applet&Applet),编译器编译器 JavaJava基本基本API JavaAPI Java标准扩展标准扩展APIAPI Java Java基本类基本类 JavaJava标准扩展类标准扩展类 JavaJava虚拟机,解释器虚拟机,解释器 移植接口移植接口 操作系统操作系统 JavaJava的体系结构的体系结构最上一层是应用程序和最上一层是应用程序和AppletApplet小程序小程序.它们它们通过编译器完成程序到字节代码的转换通过编译器完成程序到字节代码的转换.下一层是基本下一层是基本APIAPI和标准扩展和标准扩展API.API.它们都是它们都是为应用程序和编译
32、器服务为应用程序和编译器服务.下层是下层是JavaJava基本类和基本类和JavaJava标准扩展类标准扩展类.最下层是移植接口最下层是移植接口,由适配器和由适配器和Java OSJava OS组组成成.保证保证JavaJava体系结构可跨平台体系结构可跨平台.与各种操与各种操作系统连接作系统连接.JavaJava的体系结构的体系结构解释执行字节代码解释执行字节代码虚拟机把字节代码程序与各操作系统和虚拟机把字节代码程序与各操作系统和硬件分开,使硬件分开,使JavaJava程序独立于平台程序独立于平台.JavaJava的实现机制的实现机制JavaJava虚拟机虚拟机 垃圾回收机制垃圾回收机制 代
33、码安全检测代码安全检测JavaJava的实现机制的实现机制垃圾回收机制:JavaJava用一个垃圾收集线程用一个垃圾收集线程对内存的使用进行跟踪对内存的使用进行跟踪,该线程能在虚拟机该线程能在虚拟机空闲周期时空闲周期时,检查并释放那些不用的内存。检查并释放那些不用的内存。在在JavaJava程序的生命周期中自动进行程序的生命周期中自动进行,这使编这使编程者不要求考虑分配存储器,避免了存储器程者不要求考虑分配存储器,避免了存储器引起的漏洞。引起的漏洞。JavaJava的实现机制的实现机制代码安全检测代码安全检测:在编译层在编译层:有语法检查有语法检查在解释层在解释层:有字节码校验器有字节码校验器
34、,测试代码段格式测试代码段格式 和规则检查和规则检查;访问权限和类型转换合法性检查访问权限和类型转换合法性检查;操作数堆栈的上溢或下溢操作数堆栈的上溢或下溢;代码参数类型合法性代码参数类型合法性.在平台层上在平台层上:通过配置策略通过配置策略,设定访问资源域设定访问资源域.无需区分本地或远程无需区分本地或远程.JDKJDK的下载和使用的下载和使用JDKJDK的下载的下载进入进入http:/http:/点击左侧点击左侧“Download”Download”连接,进入下连接,进入下载页面载页面点击页面中间的点击页面中间的“Java 2 Platform,Java 2 Platform,Standa
35、rd Edition(J2SE)for Standard Edition(J2SE)for Windows”Windows”连接,进入连接,进入J2SEJ2SE页面页面 点击页面右侧点击页面右侧“J2SE 1.5”J2SE 1.5”连接,进连接,进入入J2SE 1.5J2SE 1.5页面页面 JDKJDK的下载的下载选择选择“Download JDK”Download JDK”栏目点击,进栏目点击,进入入“license agreement”license agreement”文件的下载文件的下载页面页面选择选择“accept”accept”,接受,接受SunSun的协议的协议点击页面中的点击
36、页面中的“Download jdkDownload jdk-1_5_0-1_5_0-windows-i586.exe windows-i586.exe.”.”下载链接,自下载链接,自 动进行浏览器下载,也可使用下载工动进行浏览器下载,也可使用下载工具进行下载具进行下载 JavaJava语言的编译器。命令语法语言的编译器。命令语法:javac javac 选项选项 源文件名源文件名JavaJava语言的解释器,命令语法是语言的解释器,命令语法是:java java 选项选项 class class 命令行参数命令行参数 .Java APIJava API文档生成器文档生成器,命令语法命令语法:j
37、avadocjavadoc 选项选项 包名包名/文件名文件名Java applet Java applet 浏览器浏览器,命令语法命令语法:appletviewerappletviewer-debug URL-debug URLJavaJava程序的调试器程序的调试器,命令语法命令语法:jdb jdb 选项选项 类名类名Bin:Bin:编译器、解释器和工具编译器、解释器和工具 Demo:Demo:各种演示例子各种演示例子 Docs:Docs:文档文档Include:Include:本地方法文件本地方法文件 JreJre:JavaJava程序运行用环境的根目录程序运行用环境的根目录 Lib:Li
38、b:库文件库文件 java.langjava.lang包包 :基本类基本类java.awtjava.awt包包:是封装抽象窗口工具包是封装抽象窗口工具包 java.appletjava.applet包包:为为AppletApplet提供的所有类提供的所有类 java.iojava.io包包:程序输入程序输入/输出文件操作的类输出文件操作的类.java.utiljava.util包包:提供实用程序类和集合类提供实用程序类和集合类 javaxjavax.swing.swing包包:提供构建和管理应用程序提供构建和管理应用程序的图形界面的轻量级的构件的图形界面的轻量级的构件 最简单的最简单的Java
39、Java实例实例:1/1/例例1.1 1.1 DisplayWindom DisplayWindom.java.java2/2/*目的:邓小平的一句名言的显示目的:邓小平的一句名言的显示*/3 34 4 public class DisplayWindom public class DisplayWindom 5/main():5/main():应用程序入口应用程序入口最简单的最简单的JavaJava实例实例:6 public static void main(String 6 public static void main(String argsargs)7 System.out.print
40、(7 System.out.print(邓小平说:邓小平说:););8 System.out.println8 System.out.println(“(“不管白猫、黑猫,不管白猫、黑猫,能捉老鼠的就是能捉老鼠的就是 好猫好猫.);.);9 9 10 10 注释注释:JavaJava语言有语言有3 3种注释语句种注释语句,其形式为其形式为:双斜杠分隔符双斜杠分隔符“/”/”表示本行是单行注表示本行是单行注释。释。“/”/”可出现在一行的开始或中间可出现在一行的开始或中间.“/“/*/”/”表示是多行注释。多行注表示是多行注释。多行注释以释以“/*”和和“*/”/”为界限符。这二个为界限符。这二
41、个界限符必须成对出现。界限符必须成对出现。文档注释以文档注释以“/*”和和“*/”/”为界限符。为界限符。文档注释语句是为文档工具文档注释语句是为文档工具JavadocJavadoc生成生成APIAPI文档时,使文档和程序同步实现。程文档时,使文档和程序同步实现。程序序javajava的第的第1 1、2 2、5 5都是注释语句都是注释语句.例题说明类定义类定义:关键词关键词classclass指明了类定义的开始指明了类定义的开始,后跟后跟类名类名,然后是一对花括号然后是一对花括号,用来划定类体范围用来划定类体范围.对于本例对于本例,行行4 41010包含了包含了DisplayWindomDis
42、playWindom类的类类的类体体.Java.Java允许在关键词允许在关键词classclass之前加修饰符,用来之前加修饰符,用来对所定义类的性质加以限定。对所定义类的性质加以限定。类名类名DisplayWindomDisplayWindom是是JavaJava的合法标识符,并要的合法标识符,并要求首字母大写求首字母大写.在一个在一个.java.java文件中最多只能有一个文件中最多只能有一个publicpublic类。类。publicpublic后紧跟的是所定义类的名称。后紧跟的是所定义类的名称。JavaJava要求要求publicpublic类的名称与程序文件名一致,因类的名称与程序
43、文件名一致,因此,本例为此,本例为DisplayWindomDisplayWindom.java.java文件文件。例题说明JavaJava的的ApplicationApplication必须要求有必须要求有mainmain()方法,()方法,该方法要求一个该方法要求一个StringString类型的单一参数,类型类型的单一参数,类型StringString是字符串列表的数组。圆括号后面的一是字符串列表的数组。圆括号后面的一对花括号是方法体。在本例的对花括号是方法体。在本例的main()main()方法中,第方法中,第6 6,7 7,8 8,9 9行的语句代码段构成方法体。行的语句代码段构成方
44、法体。例题说明本例第本例第7 7行和第行和第8 8行是利用行是利用System.outSystem.out表示从表示从SystemSystem类中选出类中选出outout变量值。通过这个值,程变量值。通过这个值,程序可以访问显示窗口的文字对象。这个对象序可以访问显示窗口的文字对象。这个对象被称为输出流被称为输出流.访问访问SystemSystem的一个成员的一个成员out,out,程序使用点(程序使用点(.)把它从把它从SystemSystem中选出来,点是中选出来,点是JavaJava的选择器的选择器机制。机制。SystemSystem是是是是java.langjava.lang包中的标准包
45、中的标准I/OI/O类,它类,它提供许多系统信息。用它编程者在与设备打提供许多系统信息。用它编程者在与设备打交道的时,不用关心设备的底层操作细节交道的时,不用关心设备的底层操作细节JavaJava语言的特点语言的特点简单易学简单易学 面向对象面向对象支持分布式计算支持分布式计算 跨平台跨平台健壮性健壮性 安全性强安全性强可移植可移植 解释执行解释执行高性能高性能 多线程多线程AppletApplet的特殊用途的特殊用途 动态动态性性解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理面向对象编程语言的步骤面向对象编程语言的步骤解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理
46、分析分析 设计设计 编程编程 测试测试 维护维护解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理:分析:分析:与用户交流,与用户交流,了解问题领域知了解问题领域知 识识.并确定用户的需求和目标。并确定用户的需求和目标。(做什么做什么)解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理:编程:写出实现解决问题的程序代编程:写出实现解决问题的程序代码。码。(具体实现具体实现)测试:对程序代码,进行单元测试测试:对程序代码,进行单元测试和集成测试。和集成测试。(实现周期实现周期)维护维护:交付使用后的不断改错交付使用后的不断改错,改进改进和完善和完善.(.(终身服务终身服务)(
47、反复迭代过程反复迭代过程!)!)解决问题的求解过程解决问题的求解过程由用户、业务专家和软件开发者组成由用户、业务专家和软件开发者组成 团队团队问题的需求的描述问题的需求的描述确定类确定类确定变量和方法确定变量和方法确定系统的体系结构确定系统的体系结构确定开发工具并编写程序确定开发工具并编写程序解决问题的求解过程解决问题的求解过程自动取款机自动取款机(ATM)(ATM)软件求解过程软件求解过程:需求描述需求描述确定类确定类确定业务流程确定业务流程(变量和方法变量和方法)确定用户界面确定用户界面确定软件最终的体系结构确定软件最终的体系结构解决问题的求解过程解决问题的求解过程ATMATM软件求解过程
48、软件求解过程:需求描述需求描述:顾客持卡取款顾客持卡取款.对使用对使用ATMATM的事务都留记录的事务都留记录,每天报告每天报告.软件有适当的安全措施软件有适当的安全措施.暂时不考虑支付暂时不考虑支付 每个账户能同时在多个每个账户能同时在多个ATMATM上查询和取款上查询和取款 考虑未来扩展考虑未来扩展,增加出纳点和网络客户机增加出纳点和网络客户机ATMATM软件求解过程软件求解过程:需求描述限制需求描述限制:ATM ATM软件由银行拥有软件由银行拥有 ATMATM软件在服务器中运行软件在服务器中运行 卡由银行发行卡由银行发行,并保留客户信息并保留客户信息 ATMATM界面由银行确定界面由银行
49、确定 所有所有ATMATM的用户界面相同的用户界面相同ATMATM软件求解过程软件求解过程:确定候选对象类确定候选对象类:TransactionTransaction事务事务(查账查账,取款等取款等)Session Session使用期使用期 CardCard取款卡取款卡 DailyLogDailyLog日志日志,ATM,ATM自动取款机自动取款机ATMATM软件求解过程软件求解过程:确定候选对象类确定候选对象类:Cashier Cashier出纳点出纳点 NetCleintNetCleint网络客户机网络客户机 ATMManagerATMManager 管理管理ATMATM软件软件 Bank
50、InfoBankInfo银行资料银行资料ATMATM软件求解过程软件求解过程:确定对象类确定对象类BankInfo ATMManagerDailyLogSession Card Agent ATMCashies Net客户客户Transaction111*1*1*11*ATMATM软件求解过程软件求解过程:确定对象类属性确定对象类属性:ATMManagerATMManager类属性类属性:adminPasswordadminPassword:String /:String /系统管理员口令系统管理员口令bankInfosbankInfos:Container /:Container /银行信息