第一讲java概论课件

上传人:博****1 文档编号:567523994 上传时间:2024-07-21 格式:PPT 页数:133 大小:316.51KB
返回 下载 相关 举报
第一讲java概论课件_第1页
第1页 / 共133页
第一讲java概论课件_第2页
第2页 / 共133页
第一讲java概论课件_第3页
第3页 / 共133页
第一讲java概论课件_第4页
第4页 / 共133页
第一讲java概论课件_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《第一讲java概论课件》由会员分享,可在线阅读,更多相关《第一讲java概论课件(133页珍藏版)》请在金锄头文库上搜索。

1、第一讲第一讲 概论概论本讲要点本讲要点计算机软件的简史计算机软件的简史面向对象技术的基础面向对象技术的基础JavaJava体系结构体系结构最简单的最简单的JavaJava实例实例解决问题的求解过程解决问题的求解过程7/21/20247/21/20241 1计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮分布式网络计算模式对软件开发分布式网络计算模式对软件开发技术的挑战技术的挑战CORBA CORBA 标准对软件业界的影响标准对软件业界的影响7/21/20247/21/20242 2计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮基

2、于主机的计算模式基于主机的计算模式: :特征:应用程序,数据,特征:应用程序,数据, 界面集为一体。界面集为一体。 在主机上运行。在主机上运行。7/21/20247/21/20243 3计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次浪潮客户机客户机/ /服务器服务器( (C/S)C/S)的计算模式的计算模式: : 特征:特征:C C界面本地数据,界面本地数据, S S应用逻辑共享数据应用逻辑共享数据 在客户机和服务器上运行。在客户机和服务器上运行。7/21/20247/21/20244 4计算机软件的简史计算机软件的简史计算机计算模式的三次浪潮计算机计算模式的三次

3、浪潮分布式网络分布式网络( (B/S)B/S)计算模式计算模式 特征:特征:B B界面表示层,界面表示层, S S业务逻辑层数据访问层业务逻辑层数据访问层 存储数据层存储数据层 在异地、异构机上运行。在异地、异构机上运行。7/21/20247/21/20245 5计算机软件的简史计算机软件的简史分布式网络计算模式对软件技术的分布式网络计算模式对软件技术的挑战挑战: : 软件开发的软件开发的4 4A A目标目标 跨平台的互操作性跨平台的互操作性( (CORBACORBA标准标准) )7/21/20247/21/20246 6计算机软件的简史计算机软件的简史分布式网络计算模式对软件技术的分布式网络

4、计算模式对软件技术的挑战挑战: :软件开发的软件开发的4 4A A目标目标 Any OneAny One Any While Any While Any Time Any Time Any Device Any Device7/21/20247/21/20247 7计算机软件的简史计算机软件的简史分布式网络计算模式对软件开发技分布式网络计算模式对软件开发技术的挑战术的挑战: :跨平台的互操作性跨平台的互操作性( (CORBACORBA标准出现标准出现) )7/21/20247/21/20248 8CORBACORBA标准模型标准模型: :IDLIDL应应 用用 程程序对象序对象公用设施公用设施

5、(CORBAFACILITIESCORBAFACILITIES)垂直公用设施垂直公用设施水平公用设施水平公用设施对象请求中介(对象请求中介(ORB)公用对象服务(公用对象服务(CORBAservicesCORBAservices) ) 金融金融 税务税务 保险保险命名命名集合集合计时计时安全性安全性交易器交易器特许特许查询查询并发并发关系关系具体化具体化持久性持久性事件事件生命期生命期事务处理事务处理属性属性系统系统设施设施信息信息设施设施任务任务设施设施界面界面管理管理7/21/20247/21/20249 9CORBACORBA模型模型: :四层四层:1.:1.应用程序对象层是与应用程序接

6、口应用程序对象层是与应用程序接口. . 2. 2.水平公用设施层是各行各业的公共设水平公用设施层是各行各业的公共设 施服务施服务. .如用户管理如用户管理, ,信息管理信息管理, ,系统系统 管理管理, ,ftpftp之类之类. . 3. 3.垂直公用设施层是专业公共设施服务垂直公用设施层是专业公共设施服务. . 如金融业的清算系统如金融业的清算系统. .电子商务的银电子商务的银 行服务行服务. .7/21/20247/21/20241010CORBACORBA模型模型: :4.4.CORBACORBA服务层是软件框架服务服务层是软件框架服务. . 如系统管理如系统管理: :命名命名, ,生命

7、期生命期, ,交易交易, ,许许 可证可证, ,安全安全, ,计时等服务计时等服务; ; 事物管理事物管理: :事件事件, ,并发并发, ,事务等事务等; ; 信息管理信息管理: :属性属性, ,关系关系, ,查询查询, ,持久性持久性. . 具体化具体化, ,集合等服务集合等服务. .7/21/20247/21/20241111CORBACORBA模型模型: : 服务层共服务层共1515项项. .目前还在不断改进目前还在不断改进. . 5.5.模型中的模型中的ORBORB主要负责主要负责CORBACORBA四层四层 的通信的通信. .相当于软件总线的作用相当于软件总线的作用. . 6. 6.

8、IDLIDL(Interfaces(Interfaces Definttion Definttion Language)Language)接口定义语言接口定义语言 参考书参考书: :周之英著周之英著“现代软件工程现代软件工程( (下下)”.)”.7/21/20247/21/20241212CORBACORBA标准标准: :IDLIDLIDLIDL接口定义语言编译器机制接口定义语言编译器机制: : 桩桩( (stub)stub)、 骨架骨架( (skeleton)skeleton)7/21/20247/21/20241313IDLIDL编译器机制结构编译器机制结构: :ORBORB核心核心DII

9、DII动态动态调用调用IDLIDL桩桩ORBORB接口接口静态静态IDLIDL骨架骨架动态动态骨架骨架对象对象适配器适配器对象实现对象实现客户客户7/21/20247/21/20241414IDLIDL编译器机制编译器机制: :DIIDII动态调用动态调用: :运行时的动态接口在运行时的动态接口在 客户端接受静态不能确定的请求客户端接受静态不能确定的请求. .IDLIDL桩桩( (stub):stub):静态接口静态接口, ,接受本地请接受本地请 求求, ,向向ORBORB提交请求提交请求. .7/21/20247/21/20241515IDLIDL编译器机制编译器机制: :SkeletonS

10、keleton骨架骨架: :用于远程客户与用于远程客户与ORB ORB 通信通信. .静态骨架静态骨架: :IDLIDL编译时的骨架接口编译时的骨架接口. .动态骨架动态骨架: :运行时动态骨架接口运行时动态骨架接口. .7/21/20247/21/20241616IDLIDL编译器机制编译器机制: :ORBORB接口接口: :不同不同ORBORB实现的连接接口实现的连接接口. .对象适配器对象适配器: :不同执行对象共享不同执行对象共享ORBORB 服务的基本接口服务的基本接口. .7/21/20247/21/20241717CORBACORBA标准对软件业界的影响标准对软件业界的影响 观念

11、上的影响观念上的影响 应用软件体系结构的影响应用软件体系结构的影响 对软件产业的影响对软件产业的影响 对软件开发方法的影响对软件开发方法的影响7/21/20247/21/20241818CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对对观念上的影响观念上的影响: :4 4A A目标目标, ,文档按国际标准统一文档按国际标准统一以以“开发为主开发为主”转向以转向以“服务为服务为主主”利用第三方软件集成利用第三方软件集成企业文化企业文化: :团队精神团队精神, ,和谐氛围和谐氛围人才素质人才素质: :创新创新, ,责任责任, ,协作协作, ,诚信诚信7/21/20247/21/2

12、0241919CORBACORBA标准对象软件业界的影响标准对象软件业界的影响应用软件体系结构的影响应用软件体系结构的影响多层应用软件体系结构的诞生多层应用软件体系结构的诞生: :界面层界面层: :浏览器浏览器表示层表示层: :WebWeb服务器服务器业务层业务层, ,数据访问层数据访问层: :应用服务器应用服务器存储数据层存储数据层( (包括原来应用系统包括原来应用系统):):数据数据 库服务器库服务器7/21/20247/21/20242020多层应用软件体系结构的诞生多层应用软件体系结构的诞生 界面层界面层 浏览器浏览器 分布逻辑层分布逻辑层 客户界面控件客户界面控件 表示层表示层 (

13、(JSP,ASP,CGIJSP,ASP,CGI等)等) 代理层代理层 产生产生: :HTML,XMLHTML,XML DHTML,WML DHTML,WML等等 业务层业务层 业务对象和规则,数据操纵和信息转换业务对象和规则,数据操纵和信息转换 数据访数据访 数据库连接,数据库连接, 数据数据I/OI/O接口接口 问层问层 存储数存储数 数据库系统,数据库系统,XMLXML库等库等 据层据层 查询,存储优化和性能协调查询,存储优化和性能协调7/21/20247/21/20242121多层应用软件体系结构的诞生多层应用软件体系结构的诞生界面层界面层: : HTML,Applet,WindowsH

14、TML,Applet,Windows等等. . 客户界面控件客户界面控件: : WINDOWSWINDOWS窗口窗口, , Java AWT,SwingJava AWT,Swing等等7/21/20247/21/20242222CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对对软件产业的影响软件产业的影响: :软件中间件提供商软件中间件提供商软件平台提供商软件平台提供商服务器软件提供商服务器软件提供商构件提供商构件提供商软件服务软件服务( (咨询咨询) )7/21/20247/21/20242323CORBACORBA标准对象软件业界的影响标准对象软件业界的影响对软件开发方法

15、的影响对软件开发方法的影响基于构件的开发方法流行基于构件的开发方法流行: :构件定义构件定义构件特征构件特征构件优势构件优势7/21/20247/21/20242424构件的定义构件的定义1:1:构件是一个几乎独立的可替换的系构件是一个几乎独立的可替换的系 统部件。它在有明确定义的体统部件。它在有明确定义的体 系结构上下文中,完成指定功系结构上下文中,完成指定功 能。它提供一组接口作为构件能。它提供一组接口作为构件 与外界联系的契约与外界联系的契约。7/21/20247/21/20242525构件的定义构件的定义2 2: :软件构件是一个组合单位,它包软件构件是一个组合单位,它包 括合同声明的

16、接口及明确说括合同声明的接口及明确说 明的上下文相关性。它可以明的上下文相关性。它可以 被独立部署且服务于第三方被独立部署且服务于第三方 所做的组合。所做的组合。7/21/20247/21/20242626构件特征构件特征: :有用性有用性: :构件是将功能逻辑与实现构件是将功能逻辑与实现封装为一体的部件封装为一体的部件。对外界是透明对外界是透明不可视但功能明确的组件不可视但功能明确的组件。独立性独立性: :构件相对于其他构件是独构件相对于其他构件是独立的立的, ,但它又很少单个存在但它又很少单个存在, ,它总是它总是由第三方对它进行组合由第三方对它进行组合, ,放到某个放到某个指定体系结构的

17、上下文中运行。指定体系结构的上下文中运行。 7/21/20247/21/20242727构件特征构件特征: :适应性适应性: :构件是一个可替换的单元,构件是一个可替换的单元,它通过契约式接口与外界联系它通过契约式接口与外界联系. .只只要接口相同要接口相同, ,就可以相互替换。就可以相互替换。易用性易用性: :构件是即插即用的部件构件是即插即用的部件, ,无需做任何加工就可以组合运行无需做任何加工就可以组合运行. . 7/21/20247/21/20242828构件特征构件特征: :商业性商业性: :构件接口按国际标准定义构件接口按国际标准定义, , 可由开发商开发可由开发商开发, ,通过市

18、场发行销售通过市场发行销售. .递归性递归性: :构件可以自包含构件可以自包含, ,因此构件定义因此构件定义实际上具有递归性实际上具有递归性, ,即组合好的构件本身即组合好的构件本身, ,还可以作为构件元素与其他构件组合。还可以作为构件元素与其他构件组合。这种构件称为容器。这种构件称为容器。 ( ( ( (参考书参考书参考书参考书: : : :王克宏主编王克宏主编王克宏主编王克宏主编“电子商务软件技术教程电子商务软件技术教程电子商务软件技术教程电子商务软件技术教程” ” ” ” 清清清清华出版社华出版社华出版社华出版社) ) ) )7/21/20247/21/20242929构件优势:缩短开发

19、周期缩短开发周期, ,提高软件生产率提高软件生产率提高软件灵活性和可靠性提高软件灵活性和可靠性降低软件开发成本和维护费用降低软件开发成本和维护费用有利于软件生产工业化有利于软件生产工业化7/21/20247/21/20243030计算机软件简史小结认识到软件的本质特性是认识到软件的本质特性是构造性和演构造性和演化性化性: :软件是人对知识的提炼、知识的固化、软件是人对知识的提炼、知识的固化、是人类知识和经验的抽象。为使软件能是人类知识和经验的抽象。为使软件能简洁、精确的描述客观事务,软件的多简洁、精确的描述客观事务,软件的多层应用建立在公共的体系结构上是构件层应用建立在公共的体系结构上是构件技

20、术的基本出发点,构件体系结构是构技术的基本出发点,构件体系结构是构造软件的基石,它体现了软件的构造性造软件的基石,它体现了软件的构造性本质。所有软件都可用构件集成而得本质。所有软件都可用构件集成而得. .7/21/20247/21/20243131计算机软件简史小结软软件件是是对对客客观观世世界界中中问问题题求求解解的的具具体体描描述述。而而客客观观世世界界是是在在不不断断发发展展,不不断断地地变变化化。软软件件系系统统也也不不可可能能一一成成不不变变,新新需需求求、新新技技术术不不断断的的出出现现,要要求求软软件件系系统统不不断断升升级级。这就是软件的演化性本质。这就是软件的演化性本质。7/

21、21/20247/21/20243232计算机软件简史小结引来新的软件技术引来新的软件技术: :JavaJava语言语言、XMLXML 语言语言、Web ServicesWeb Services、SOASOA开发软件开发软件: : 强调集成、部署强调集成、部署 强调面向强调面向WebWeb应用应用 强调个性化服务强调个性化服务7/21/20247/21/20243333面向对象技术的基础面向对象技术的基础 面向对象方法的基本概念面向对象方法的基本概念 面向对象方法的基本特性面向对象方法的基本特性 面向对象的程序设计面向对象的程序设计7/21/20247/21/20243434面向对象技术的基础

22、面向对象技术的基础面向对象方法的基本概念面向对象方法的基本概念对象对象类类接口接口方法与消息方法与消息7/21/20247/21/20243535对象定义对象定义: :对象是从客观事物中抽象出与系统相对象是从客观事物中抽象出与系统相关的关的, ,能反映事物本质的一个实体能反映事物本质的一个实体, ,它它是构成系统的基本单位是构成系统的基本单位; ; 如如: :一个手机、一辆自行车、一台电视一个手机、一辆自行车、一台电视机、一本书等机、一本书等. .也可以是一些抽象的也可以是一些抽象的概念概念: :银行行账号、号、邮政政编码、电话号号码等等 7/21/20247/21/20243636对象特征对

23、象具备两个特征:状态和行为。对象具备两个特征:状态和行为。如手机状态有品牌、颜色、号码、如手机状态有品牌、颜色、号码、价格等;行为有打电话、接电话、价格等;行为有打电话、接电话、发短信、设闹钟、设音乐等。发短信、设闹钟、设音乐等。对象对象所包含本质的特征称为属性,对象所包含本质的特征称为属性,对象的行为描述称为方法。的行为描述称为方法。 7/21/20247/21/20243737对象特征对象是问题域中事物的抽象对象是问题域中事物的抽象. .它反它反映了事物在系统中要保存的信息和映了事物在系统中要保存的信息和所发挥的作用所发挥的作用. .系统中的一个对象系统中的一个对象在软件生命周期的各个阶段

24、可以有在软件生命周期的各个阶段可以有不同的形式不同的形式. .它要经历若干演化阶它要经历若干演化阶段段. .7/21/20247/21/20243838对象特征对象只描述客观事物本质的对象只描述客观事物本质的, ,与系与系统目标相关的特征统目标相关的特征; ;对象将属性和对象将属性和方法封装为一体方法封装为一体. .属性值只能由方属性值只能由方法访问和修改法访问和修改. .它被隐藏在封装体它被隐藏在封装体内内. .使软件体系结构的复杂本质可使软件体系结构的复杂本质可隐藏于对象的单纯性中隐藏于对象的单纯性中. .7/21/20247/21/20243939对象在程序中定义对象在程序中定义: :一

25、个对象是变量和相关方法的软件一个对象是变量和相关方法的软件封装包封装包: : 存款存款帐目余额帐目余额计算余额计算余额 取款取款帐目余额帐目余额存存款款计算余额计算余额取取款款消消息息消消息息 消息消息7/21/20247/21/20244040类定义类是具有相同属性和方法的一组对类是具有相同属性和方法的一组对象的集合象的集合, ,它的作用是定义对象它的作用是定义对象. .类是对象的抽象定义,对象是类的类是对象的抽象定义,对象是类的实例。类允许用其他类来定义而形实例。类允许用其他类来定义而形成树结构成树结构. .类的嵌套关系分为一般类的嵌套关系分为一般类类( (父类父类) )和特殊类和特殊类(

26、 (子类子类).).7/21/20247/21/20244141类的特征类的继承是面向对象方法的继承性类的继承是面向对象方法的继承性体现体现. .它给软件开发带来的优势是:它给软件开发带来的优势是:利用类继承,程序可实现代码重用。利用类继承,程序可实现代码重用。利用抽象类定义普通行为,无需编写利用抽象类定义普通行为,无需编写实现代码。其实现代码由它的子类编实现代码。其实现代码由它的子类编写。写。7/21/20247/21/20244242类的特征面向对象程序是一组对象类组成面向对象程序是一组对象类组成. .对象对象之间通过接口请求与其他对象协同工作之间通过接口请求与其他对象协同工作, ,通过类

27、确定传递消息去调用方法通过类确定传递消息去调用方法, ,实现实现一定的功能一定的功能. . JavaJava编程注重于类和接口,程序的开编程注重于类和接口,程序的开发实质上就是将问题明确分成多个类,发实质上就是将问题明确分成多个类,再从这些类中创建对象。利用类来实现再从这些类中创建对象。利用类来实现程序代码的重用,这是面向对象编程最程序代码的重用,这是面向对象编程最有魅力的成就。有魅力的成就。 7/21/20247/21/20244343接口的定义接口是对象所能接收请求内容的规范接口是对象所能接收请求内容的规范. .接口由类定义接口由类定义. .接口接口是一种抽象类,只定义了变量和是一种抽象类

28、,只定义了变量和方法,没有规定方法的具体实现。方法,没有规定方法的具体实现。7/21/20247/21/20244444接口的特征接口的特征接口给软件开发带来的好处是:接口给软件开发带来的好处是:接口可以实现不相关类有相同的接口可以实现不相关类有相同的行为行为. .接口可指明多个类需要实现的方接口可指明多个类需要实现的方法法. .接口可了解对象的交互界面,而接口可了解对象的交互界面,而不需要了解对象所对应的类不需要了解对象所对应的类. .7/21/20247/21/20244545消息定义向对象发出方法请求称为消息向对象发出方法请求称为消息. .对对象通过消息进行通信象通过消息进行通信. .类

29、定义了对象的所有消息模式,也类定义了对象的所有消息模式,也定义了该对象的所有方法定义了该对象的所有方法. .消息包含信息有消息包含信息有: :提供方法的对象提供方法的对象名名, ,方法名方法名, ,输入信息和应答信息输入信息和应答信息. .7/21/20247/21/20244646消息特征使用对象只需了解其消息格式使用对象只需了解其消息格式. .消息给软件开发带来的好处是:消息给软件开发带来的好处是:消息将程序的数据流和控制流统一消息将程序的数据流和控制流统一. . 可用消息实现数据传递可用消息实现数据传递. .相同处理的对象之间,无需消息传递相同处理的对象之间,无需消息传递. . 7/21

30、/20247/21/20244747面向对象方法的基本特性面向对象方法的基本特性: :封装性封装性( (encapsulation)encapsulation)继承性继承性( (inheritance)inheritance)多态性多态性( (polymorphism)polymorphism) 7/21/20247/21/20244848封装性封装性对象的封装有两个方面:对象的封装有两个方面:一方面表示对象的属性和方法是不一方面表示对象的属性和方法是不可分隔的结合体可分隔的结合体. .一方面表示对象内部细节的隐蔽性一方面表示对象内部细节的隐蔽性. .描述客观事务对象的独立单元描述客观事务对象

31、的独立单元. .外界只能与方法联系外界只能与方法联系. .属性只能被对象的方法访问属性只能被对象的方法访问. .7/21/20247/21/20244949封装性的优势封装性的优势对象的属性和方法封装为一体对象的属性和方法封装为一体, ,意味着意味着对象确实反映了客观事物的静态特征对象确实反映了客观事物的静态特征和动态特征融为一体的普遍规律和动态特征融为一体的普遍规律. .把对象的属性和行为结合产生新的数把对象的属性和行为结合产生新的数据类型据类型. .实现细节隐蔽实现细节隐蔽, ,接口与实现的接口与实现的分离分离. .使对象的使用者和设计者分离使对象的使用者和设计者分离 7/21/20247

32、/21/20245050封装性的优势封装性的优势既可以防止外界的干扰,又可以简化既可以防止外界的干扰,又可以简化复杂性。在复杂性。在JavaJava语言中,对象、类和语言中,对象、类和包是不同层次上的封装,为管理大量包是不同层次上的封装,为管理大量的对象和类提供了方便,也增强了语的对象和类提供了方便,也增强了语言的安全性言的安全性. .封装也符合软件工程的模块化原则,封装也符合软件工程的模块化原则,满足软件重用的策略,降低了软件开满足软件重用的策略,降低了软件开发成本,缩短开发周期,使软件的开发成本,缩短开发周期,使软件的开发和维护得到根本性的改善发和维护得到根本性的改善. . 7/21/20

33、247/21/20245151继承性继承性是面向对象技术赋予类的一继承性是面向对象技术赋予类的一种特征,即先定义一个具有一定意种特征,即先定义一个具有一定意义的类(父类),再给此类添加一义的类(父类),再给此类添加一些特性以派生出一个新类些特性以派生出一个新类( (子类子类).).子类对象重复运用其父类的接口子类对象重复运用其父类的接口继承可实现子类重用继承可实现子类重用继续可建立新类库继续可建立新类库7/21/20247/21/20245252继承性将多个类型视为同类型将多个类型视为同类型. .同一份程同一份程序代码可作用于多个类型上序代码可作用于多个类型上. .可提可提高系统的可重用性和可

34、扩性高系统的可重用性和可扩性. .一个类是多个父类的子类,这种继一个类是多个父类的子类,这种继承被称为多重继承承被称为多重继承. . JavaJava语言可利语言可利用接口实现类的多重继承。用接口实现类的多重继承。 7/21/20247/21/20245353多态性对象的多态性,是同一个属性名或方对象的多态性,是同一个属性名或方法名在父类,及其子类中具有不同语法名在父类,及其子类中具有不同语义义. .相同类名可引用不同的方法定义子类相同类名可引用不同的方法定义子类方法的覆盖可实现多态方法的覆盖可实现多态. .方法的重载可在同类中定义多个同名方法的重载可在同类中定义多个同名的参数不同的方法来实现

35、多态的参数不同的方法来实现多态. .7/21/20247/21/20245454多态性多态也称为动态绑定或后期绑定多态也称为动态绑定或后期绑定. .利用利用多态性提高了程序的抽象程度和简洁性多态性提高了程序的抽象程度和简洁性. .减少类和程序模块之间的耦合性减少类和程序模块之间的耦合性, ,可实可实现程序良好的扩展性现程序良好的扩展性. .动态多态性体现了面向对象编程中代码动态多态性体现了面向对象编程中代码的重用和健壮性。的重用和健壮性。JavaJava是强类型语言,是强类型语言,运行时对动态类型自动保留全部多态引运行时对动态类型自动保留全部多态引用的标记,并在运行时对动态类型进行用的标记,并

36、在运行时对动态类型进行检查。检查。7/21/20247/21/20245555面向对象的程序设计面向对象的程序设计: :面向对象程序设计包括两大任务:面向对象程序设计包括两大任务:一是考虑客观问题中的哪些数据与操作一是考虑客观问题中的哪些数据与操作进行封装,即将客观实体与程序的对象、进行封装,即将客观实体与程序的对象、类进行对应。类进行对应。二是考虑对象间需要哪些消息传递才能二是考虑对象间需要哪些消息传递才能完成需求的功能。完成需求的功能。 7/21/20247/21/20245656面向对象的程序设计面向对象的程序设计: :在编程之前,对问题进行面向对象的分析,在编程之前,对问题进行面向对象

37、的分析,要与客户进行很好的沟通,努力了解问题要与客户进行很好的沟通,努力了解问题域中所涉及的对象、对象之间的关系以及域中所涉及的对象、对象之间的关系以及对象需要完成哪些操作对象需要完成哪些操作. .再利用抽象原则,寻找对象共同特性创建再利用抽象原则,寻找对象共同特性创建出该问题的若干个类,由对象之间的关系出该问题的若干个类,由对象之间的关系定义出类的消息和方法。利用消息建立问定义出类的消息和方法。利用消息建立问题的模型,使模型尽可能接近问题的原意。题的模型,使模型尽可能接近问题的原意。 7/21/20247/21/20245757面向对象的程序设计面向对象的程序设计: :具体建模过程中通过对问

38、题做不同层具体建模过程中通过对问题做不同层次的抽象。利用类的继承性,将类进次的抽象。利用类的继承性,将类进行改造,定义出父类和子类。使问题行改造,定义出父类和子类。使问题中类的总数目不要太多。中类的总数目不要太多。 编程单元是类编程单元是类, , JavaJava中中, ,注意力放在构注意力放在构造新类和复用已有类上造新类和复用已有类上, ,而不是方法上而不是方法上. .7/21/20247/21/20245858面向对象的程序设计面向对象的程序设计“引用引用”是操纵对象的钥匙是操纵对象的钥匙对象需要编程者创建对象需要编程者创建建立新类都从类库中的类继承建立新类都从类库中的类继承方法方法, ,

39、参数参数, ,返回值返回值7/21/20247/21/20245959JavaJava的体系结构的体系结构JavaJava的体系结构的体系结构JavaJava的实现机制的实现机制JDKJDK的下载和使用的下载和使用7/21/20247/21/20246060JavaJava的体系结构的体系结构应用程序(应用程序(ApplectionApplection&Applet&Applet), ,编译器编译器 JavaJava基本基本API JavaAPI Java标准准扩展展APIAPI Java Java基本基本类 JavaJava标准准扩展展类 JavaJava虚虚拟机,解机,解释器器 移植接口移

40、植接口 操作系统操作系统 7/21/20247/21/20246161JavaJava的体系结构的体系结构最上一层是应用程序和最上一层是应用程序和AppletApplet小程序小程序. .它们它们通过编译器完成程序到字节代码的转换通过编译器完成程序到字节代码的转换. .下一层是基本下一层是基本APIAPI和标准扩展和标准扩展API.API.它们都是它们都是为应用程序和编译器服务为应用程序和编译器服务. .下层是下层是JavaJava基本类和基本类和JavaJava标准扩展类标准扩展类. .最下层是移植接口最下层是移植接口, ,由适配器由适配器和和Java OSJava OS组组成成. .保证保

41、证JavaJava体系结构可跨平台体系结构可跨平台. .与各种操与各种操作系统连接作系统连接. . 7/21/20247/21/20246262JavaJava的体系结构的体系结构核心核心: :虚拟机虚拟机解释执行字节代码解释执行字节代码. .可以用软件系可以用软件系统模拟实现统模拟实现, ,也可用硬件芯片实现也可用硬件芯片实现. .虚拟机把字节代码程序与各操作系统和虚拟机把字节代码程序与各操作系统和硬件分开,使硬件分开,使JavaJava程序独立于平台程序独立于平台. .字节字节代码也是一种二进制文件,但不能直接代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作为虚拟机在操作系统上

42、运行,它可看作为虚拟机的机器码的机器码7/21/20247/21/20246363JavaJava的实现机制的实现机制JavaJava虚拟机虚拟机 垃圾回收机制垃圾回收机制 代码安全检测代码安全检测7/21/20247/21/20246464JavaJava的实现机制的实现机制垃圾回收机制:JavaJava用一个垃圾收集线程用一个垃圾收集线程对内存的使用进行跟踪对内存的使用进行跟踪, , 该线程能在虚拟机该线程能在虚拟机空闲周期时空闲周期时, ,检查并释放那些不用的内存。检查并释放那些不用的内存。在在JavaJava程序的生命周期中自动进行程序的生命周期中自动进行, ,这使编程者这使编程者不要

43、求考虑分配存储器,避免了存储器引起不要求考虑分配存储器,避免了存储器引起的漏洞。的漏洞。7/21/20247/21/20246565JavaJava的实现机制的实现机制代码安全检测代码安全检测: :在编译层在编译层: :有语法检查有语法检查在解释层在解释层: :有字节码校验器有字节码校验器, ,测试代码段格式测试代码段格式 和规则检查和规则检查; ; 访问权限和类型转换合法性检查访问权限和类型转换合法性检查; ; 操作数堆栈的上溢或下溢操作数堆栈的上溢或下溢; ; 代码参数类型合法性代码参数类型合法性. .在平台层上在平台层上: :通过配置策略通过配置策略, ,设定访问资源域设定访问资源域.

44、.无需区分本地或远程无需区分本地或远程. . 7/21/20247/21/20246666JDKJDK的下载和使用的下载和使用 JDKJDK的下载的下载 JDKJDK的命令的命令 JDKJDK目录结构目录结构 JavaJava的的APIAPI结构结构 7/21/20247/21/20246767JDKJDK的下载的下载进入进入http:/http:/点击左侧点击左侧“Download”Download”连接,进入下连接,进入下载页面载页面点击页面中间的点击页面中间的“Java 2 Platform, Java 2 Platform, Standard Edition (J2SE)for Sta

45、ndard Edition (J2SE)for Windows”Windows”连接,进入连接,进入J2SEJ2SE页面页面 点击页面右侧点击页面右侧“J2SE 1.5”J2SE 1.5”连接,进连接,进入入J2SE 1.5J2SE 1.5页面页面 7/21/20247/21/20246868 JDKJDK的下载的下载选择选择“Download JDK”Download JDK”栏目点击,进栏目点击,进入入“license agreement”license agreement”文件的下载文件的下载页面页面选择选择“accept”accept”,接受接受SunSun的协议的协议点击页面中的点击

46、页面中的“DownloadDownload jdk jdk-1_5_0-1_5_0-windows-i586.exe windows-i586.exe .”.”下载链接,自下载链接,自 动进行浏览器下载,也可使用下载工动进行浏览器下载,也可使用下载工具进行下载具进行下载 7/21/20247/21/20246969JDK命令JavaJava语言的编译器。命令语法语言的编译器。命令语法: : javac javac 选项选项 源文件名源文件名JavaJava语言的解释器,命令语法是语言的解释器,命令语法是: : java java 选项选项 class class 命令行参数命令行参数 . .

47、Java APIJava API文档生成器文档生成器, ,命令语法命令语法: : javadocjavadoc 选项选项 包名包名/ /文件名文件名Java applet Java applet 浏览器浏览器, ,命令语法命令语法: : appletviewerappletviewer -debug URL -debug URLJavaJava程序的调试器程序的调试器, ,命令语法命令语法: : jdbjdb 选项选项 类名类名7/21/20247/21/20247070JDK目录Bin:Bin:编译器、解释器和工具编译器、解释器和工具 Demo:Demo:各种演示例子各种演示例子 Docs:

48、Docs:文档文档Include:Include:本地方法文件本地方法文件 JreJre: :JavaJava程序运行用环境的根目录程序运行用环境的根目录 Lib:Lib:库文件库文件 7/21/20247/21/20247171JDK的API结构java.java.langlang包包 : :基本类基本类java.java.awtawt包包: :是封装抽象窗口工具包是封装抽象窗口工具包 java.appletjava.applet包包: :为为AppletApplet提供的所有类提供的所有类 java.java.ioio包包: :程序输入程序输入/ /输出文件操作的类输出文件操作的类. .

49、java.java.utilutil包包: :提供实用程序类和集合类提供实用程序类和集合类 javaxjavax.swing.swing包包: :提供构建和管理应用程序提供构建和管理应用程序的图形界面的轻量级的构件的图形界面的轻量级的构件 7/21/20247/21/20247272最简单的最简单的JavaJava实例实例: :1 /1 /例例1.1 1.1 DisplayWindomDisplayWindom.java.java2 /*2 /*目的:邓小平的一句名言的显示目的:邓小平的一句名言的显示*/*/3 34 4 public classpublic class DisplayWind

50、om DisplayWindom 5 /main():5 /main():应用程序入口应用程序入口7/21/20247/21/20247373最简单的最简单的JavaJava实例实例: :6 6 public public static static void void main(String main(String argsargs) ) 7 System.out.print(7 System.out.print(邓小平说:邓小平说:););8 8 System.out.System.out.printlnprintln(“(“不不管管白白猫猫、黑黑猫猫,能能捉捉老老鼠鼠的的就就是是 好猫好

51、猫.);.);9 9 10 10 7/21/20247/21/20247474例题说明注释注释: :JavaJava语言有语言有3 3种注释语句种注释语句, ,其形式为其形式为: :双斜杠分隔符双斜杠分隔符“/”“/”表示本行是单行注表示本行是单行注释。释。 “/” “/”可出现在一行的开始或中间可出现在一行的开始或中间. .“/* */”“/* */”表示是多行注释。多行注表示是多行注释。多行注释以释以“/*”“/*”和和“*/”“*/”为界限符。这二个为界限符。这二个界限符必须成对出现。界限符必须成对出现。文档注释以文档注释以“/*”“/*”和和“*/”“*/”为界限符。为界限符。文档注释

52、语句是为文档工具文档注释语句是为文档工具JavadocJavadoc生成生成APIAPI文档时,使文档和程序同步实现。程文档时,使文档和程序同步实现。程序序javajava的第的第1 1、2 2 、5 5都是注释语句都是注释语句. .7/21/20247/21/20247575例题说明类定义类定义: :关键词关键词classclass指明了类定义的开始指明了类定义的开始, ,后跟后跟类名类名, ,然后是一对花括号然后是一对花括号, ,用来划定类体范围用来划定类体范围. .对于本例对于本例, ,行行4 41010包含了包含了DisplayWindomDisplayWindom类的类类的类体体.

53、.JavaJava允许在关键词允许在关键词classclass之前加修饰符,用来之前加修饰符,用来对所定义类的性质加以限定。对所定义类的性质加以限定。类名类名DisplayWindomDisplayWindom是是JavaJava的合法标识符,并要的合法标识符,并要求首字母大写求首字母大写. . 在一个在一个. .javajava文件中最多只能有一个文件中最多只能有一个publicpublic类。类。publicpublic后紧跟的是所定义类的名称。后紧跟的是所定义类的名称。JavaJava要求要求publicpublic类的名称与程序文件名一致,因类的名称与程序文件名一致,因此,本例为此,本

54、例为DisplayWindomDisplayWindom.java.java文件文件。7/21/20247/21/20247676例题说明JavaJava的的ApplicationApplication必须要求有必须要求有mainmain()()方法,该方法,该方法要求一个方法要求一个StringString类型的单一参数,类型类型的单一参数,类型StringString是字符串列表的数组。圆括号后面的一对花括是字符串列表的数组。圆括号后面的一对花括号是方法体。在本例的号是方法体。在本例的main()main()方法中,第方法中,第6 6,7 7,8 8,9 9行的语句代码段构成方法体。行的语

55、句代码段构成方法体。分号(;)分号(;)分号(;)分号(;)是是是是JavaJavaJavaJava语言的语句结束符。当语言的语句结束符。当语言的语句结束符。当语言的语句结束符。当JavaJavaJavaJava解解解解释器开始运行释器开始运行释器开始运行释器开始运行ApplicationApplicationApplicationApplication程序时,流程控制管理程序时,流程控制管理程序时,流程控制管理程序时,流程控制管理器就转向执行应用程序的器就转向执行应用程序的器就转向执行应用程序的器就转向执行应用程序的main()main()main()main()方法,而方法,而方法,而方法

56、,而main()main()main()main()中的语句是按顺序执行。因此,当程序中的语句是按顺序执行。因此,当程序中的语句是按顺序执行。因此,当程序中的语句是按顺序执行。因此,当程序DisplayWindomDisplayWindomDisplayWindomDisplayWindom运行时,首先执行第运行时,首先执行第运行时,首先执行第运行时,首先执行第6 6 6 6行的语句,行的语句,行的语句,行的语句,然后执行第然后执行第然后执行第然后执行第7 7 7 7行和第行和第行和第行和第8 8 8 8行的语句。行的语句。行的语句。行的语句。7/21/20247/21/20247777例题说

57、明本例第本例第7 7行和第行和第8 8行是利用行是利用System.outSystem.out表示从表示从SystemSystem类中选出类中选出outout变量值。通过这个值,程变量值。通过这个值,程序可以访问显示窗口的文字对象。这个对象序可以访问显示窗口的文字对象。这个对象被称为输出流被称为输出流. .访问访问SystemSystem的一个成员的一个成员out,out,程序使用点(程序使用点(. .)把它从把它从SystemSystem中选出来,点是中选出来,点是JavaJava的选择器的选择器机制。机制。SystemSystem是是是是java.java.langlang包中的标准包中的

58、标准I/OI/O类,它类,它提供许多系统信息。用它编程者在与设备打提供许多系统信息。用它编程者在与设备打交道的时,不用关心设备的底层操作细节交道的时,不用关心设备的底层操作细节7/21/20247/21/20247878JavaJava语言的特点语言的特点简单易学简单易学 面向对象面向对象支持分布式计算支持分布式计算 跨平台跨平台健壮性健壮性 安全性强安全性强可移植可移植 解释执行解释执行高性能高性能 多线程多线程AppletApplet的特殊用途的特殊用途 动态动态性性7/21/20247/21/20247979解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理面向对象编程语言的步

59、骤面向对象编程语言的步骤7/21/20247/21/20248080解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理 分析分析 设计设计 编程编程 测试测试 维护维护7/21/20247/21/20248181解决问题的求解过程解决问题的求解过程软件工程原理软件工程原理: :分析:分析:与用户交流,与用户交流,了解问题领域知了解问题领域知 识识. .并确定用户的需求和目标。并确定用户的需求和目标。 ( (做什么做什么) )设计:描述解决问题所需要的信息和设计:描述解决问题所需要的信息和 方法。方法。( (怎样做怎样做) )7/21/20247/21/20248282解决问题的求解过

60、程解决问题的求解过程软件工程原理软件工程原理: :编程:写出实现解决问题的程序代编程:写出实现解决问题的程序代码。码。( (具体实现具体实现) )测试:对程序代码,进行单元测试测试:对程序代码,进行单元测试和集成测试。和集成测试。( (实现周期实现周期) )维护维护: : 交付使用后的不断改错交付使用后的不断改错, ,改进改进和完善和完善.(.(终身服务终身服务) ) ( (反复迭代过程反复迭代过程!)!)7/21/20247/21/20248383解决问题的求解过程解决问题的求解过程面向对象编程语言的步骤面向对象编程语言的步骤由用户、业务专家和软件开发者组成由用户、业务专家和软件开发者组成

61、团队团队问题的需求的描述问题的需求的描述确定类确定类确定变量和方法确定变量和方法确定系统的体系结构确定系统的体系结构确定开发工具并编写程序确定开发工具并编写程序7/21/20247/21/20248484解决问题的求解过程解决问题的求解过程自动取款机自动取款机( (ATM)ATM)软件求解过程软件求解过程: :需求描述需求描述确定类确定类确定业务流程确定业务流程( (变量和方法变量和方法) )确定用户界面确定用户界面确定软件最终的体系结构确定软件最终的体系结构7/21/20247/21/20248585解决问题的求解过程解决问题的求解过程ATMATM软件求解过程软件求解过程: :需求描述需求描

62、述: : 顾客持卡取款顾客持卡取款. . 对使用对使用ATMATM的事务都留记录的事务都留记录, ,每天报告每天报告. . 软件有适当的安全措施软件有适当的安全措施. .暂时不考虑支付暂时不考虑支付 每个账户能同时在多个每个账户能同时在多个ATMATM上查询和取款上查询和取款 考虑未来扩展考虑未来扩展, ,增加出纳点和网络客户机增加出纳点和网络客户机7/21/20247/21/20248686ATMATM软件求解过程软件求解过程: :需求描述限制需求描述限制: : ATMATM软件由银行拥有软件由银行拥有 ATMATM软件在服务器中运行软件在服务器中运行 卡由银行发行卡由银行发行, ,并保留客

63、户信息并保留客户信息 ATMATM界面由银行确定界面由银行确定 所有所有ATMATM的用户界面相同的用户界面相同7/21/20247/21/20248787ATMATM软件求解过程软件求解过程: :确定候选对象类确定候选对象类: : TransactionTransaction事务事务( (查账查账, ,取款等取款等) ) SessionSession使用期使用期 CardCard取款卡取款卡 DailyLogDailyLog日志日志, ,ATMATM自动取款机自动取款机7/21/20247/21/20248888ATMATM软件求解过程软件求解过程: :确定候选对象类确定候选对象类: : C

64、ashierCashier出纳点出纳点 NetCleintNetCleint网络客户机网络客户机 ATMManagerATMManager 管理管理ATMATM软件软件 BankInfoBankInfo银行资料银行资料7/21/20247/21/20248989ATMATM软件求解过程软件求解过程: :确定对象类确定对象类BankInfo ATMManagerDailyLogSession Card Agent ATMCashies Net客户客户Transaction111*1*1*11*7/21/20247/21/20249090ATMATM软件求解过程软件求解过程: :确定对象类属性确定

65、对象类属性: :ATMManagerATMManager类属性类属性: :adminPasswordadminPassword:String /:String /系统管理员口令系统管理员口令bankInfosbankInfos:Container /:Container /银行信息库银行信息库sessions:Container /sessions:Container /使用期容器使用期容器dailyLogsdailyLogs:Container /:Container /日志容器日志容器agents:Container /agents:Container /代理容器代理容器7/21/2024

66、7/21/20249191ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :BankInfoBankInfo类属性类属性: :name:String /name:String /名字名字prefix:Integer /prefix:Integer /前缀前缀serverNameserverName:String /:String /服务器名字服务器名字cards:Container /cards:Container /取款卡取款卡7/21/20247/21/20249292ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :CardCard类属

67、性类属性: :number:Integer /number:Integer /编号编号name:String name:String / /名字名字accountNameaccountName:Integer /:Integer /账号账号sessions:Session* /sessions:Session* /使用期变数据使用期变数据7/21/20247/21/20249393ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :SessionSession类属性类属性: :startTimestartTime:Time /:Time /起始时间起始时间 endTim

68、eendTime:Time /:Time /结束时间结束时间card:Card /card:Card /取款卡取款卡agent:Agent /agent:Agent /代理代理/ / /事务可变数组事务可变数组transactions:Transaction*transactions:Transaction*7/21/20247/21/20249494ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :TransactionTransaction类属性类属性: :time:Time /time:Time /时间时间content:String /content:Stri

69、ng /内容内容7/21/20247/21/20249595ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :DailyLogDailyLog类属性类属性: :date:Date date:Date / /日期日期sessions:Container /sessions:Container /使用期容器使用期容器7/21/20247/21/20249696ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :AgentAgent类属性类属性: :id:String /id:String /标识符标识符name:String /name:Strin

70、g /名字名字sessions:Container /sessions:Container /使用期容器使用期容器7/21/20247/21/20249797ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :ATMATM类属性类属性: :location:String /location:String /地点地点CashierCashier类属性类属性: :String /String /分店名分店名NetClientNetClient类属性类属性: : urlurl:URL /:URL /网站网站7/21/20247/21/20249898ATMATM软件求解过程软

71、件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :涉及对象涉及对象: : 顾客顾客( (取款卡取款卡),),ATMATM客户机客户机, ,ATMATM管理器管理器, ,银行银行. .两对两对C/S: ATMC/S: ATM客户机客户机/ /ATMATM管理器管理器 A ATMTM管理器管理器/ /银行银行银行界面银行界面ATMATM管理器界面管理器界面 7/21/20247/21/20249999ATMATM软件求解过程软件求解过程: :涉及到的变量涉及到的变量: :cardInforcardInfor卡信息卡信息 accountaccount账户账户 amo

72、untamount金额金额accountNameaccountName账户名账户名 accountInforaccountInfor账户信息账户信息receiverreceiver收款人收款人7/21/20247/21/2024100100ATMATM软件取款过程序列图软件取款过程序列图插入卡插入卡问问口令口令键入口令键入口令选择事务选择事务 问问金额金额输入金额输入金额提供现金提供现金ATM查证命令查证命令检查账号资料检查账号资料口令正确口令正确口令正确口令正确请求处理事务请求处理事务处理银行事务处理银行事务事务完成事务完成数据记录数据记录确认事务已完成确认事务已完成 ATMManagerB

73、ank7/21/20247/21/2024101101ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATMManagerATMManager类中的方法类中的方法: :/构造方法构造方法 ATMManagerATMManager()() ATMManagerATMManager( (adminiPassword adminiPassword String) String)7/21/20247/21/2024102102ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATM

74、ManagerATMManager类中的方法类中的方法: :/注册系统方法注册系统方法login(login(cardInfocardInfo: :CardInfoCardInfo) )logout()logout()7/21/20247/21/2024103103ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATMManagerATMManager类中的方法类中的方法: :/访问方法访问方法: : getBankInfosgetBankInfos():():BankInfoBankInfo* getSessionsgetSess

75、ions():Session*():Session* getDailyLogsgetDailyLogs():():DailyLogDailyLog*7/21/20247/21/2024104104ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATMManagerATMManager类中的方法类中的方法: : getAgentsgetAgents():Agent*():Agent* addBankInfoaddBankInfo(name:String):(name:String):BankInfoBankInfo removeBan

76、kInfo removeBankInfo(name:String):(name:String):BankInfoBankInfo addSession addSession( (startTimestartTime,card,agent),card,agent) removeSessionremoveSession(session):Session(session):Session7/21/20247/21/2024105105ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATMManagerATMManager类中的方法类中的方

77、法: : addDailyLogaddDailyLog(date):(date):DailyLogDailyLog removeDailyLog removeDailyLog(date)(date) addAgentaddAgent(agent)(agent) removeAgentremoveAgent(id)(id) 7/21/20247/21/2024106106ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :BankInfoBankInfo类中的方法类中的方法: : BankInfoBankInfo(name,prefix,

78、(name,prefix,serverNameserverName) ) getNamegetName():String():String getServerNamegetServerName():String():String7/21/20247/21/2024107107ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :BankInfoBankInfo类中的方法类中的方法: :getCardgetCard():Card*():Card*addCardaddCard(number,name,(number,name,accountN

79、umberaccountNumberremoveCardremoveCard(number)(number)7/21/20247/21/2024108108ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :BankInfoBankInfo类中的方法类中的方法: : Card(number,name,Card(number,name,accountNumberaccountNumber) ) getNumbergetNumber()() getNamegetName()()7/21/20247/21/2024109109ATMATM软件

80、求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :BankInfoBankInfo类中的方法类中的方法: : getAccountNumbergetAccountNumber()() getSessionsgetSessions()() addSessionsaddSessions(session)(session)7/21/20247/21/2024110110ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :SessionSession类中的方法类中的方法: : Session(Sess

81、ion(startTimestartTime,card,agent),card,agent) getStartTimegetStartTime()() getEndTimegetEndTime()() getCardgetCard()()7/21/20247/21/2024111111ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :SessionSession类中的方法类中的方法: : getAgentgetAgent()() getTransactionsgetTransactions:Transaction*:Transacti

82、on* addSessionaddSession( (endTimeendTime) ) addTransactionaddTransaction(time,content)(time,content)7/21/20247/21/2024112112ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :TransactionTransaction类中的方法类中的方法: : Transaction(time,content)Transaction(time,content) getTimegetTime():Time():Time getC

83、ontentgetContent():String():String7/21/20247/21/2024113113ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :DailyLogDailyLog类中的方法类中的方法: : DailyLogDailyLog(date) /(date) /构造方法构造方法 getDategetDate()() getSessionsgetSessions()() addSessionaddSession()()7/21/20247/21/2024114114ATMATM软件求解过程软件求解过程: :确

84、定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :AgentAgent类中的方法类中的方法:(:(抽象类无构造方法抽象类无构造方法) ) getIdgetId()() getNamegetName()() getSessionsgetSessions()() addSessionaddSession()()7/21/20247/21/2024115115ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :ATMATM类中的方法类中的方法: : ATM(id,name,location) /ATM(id,name,loca

85、tion) /构造方法构造方法 getLocationgetLocation():String():String7/21/20247/21/2024116116ATMATM软件求解过程软件求解过程: :确定对象类属性确定对象类属性: :确定变量和方法确定变量和方法: :CashierCashier类中的方法类中的方法: : Cashier(id,name,branch)/Cashier(id,name,branch)/构造方法构造方法 getBranchgetBranch():String /():String /获取分店名获取分店名7/21/20247/21/2024117117ATMATM

86、软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面: :AccountMgrInfAccountMgrInf 接口接口AccountInfAccountInf 接口接口AccountMgrImplAccountMgrImplAccountImplAccountImpl管理管理实施实施实施实施1*7/21/20247/21/2024118118ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面AccountIFAccountIF接口定义方法接口定义方法: : getBalancegetBalance():Float

87、/():Float /提取结余提取结余/ / /提取帐户信息提取帐户信息 getAccountInfogetAccountInfo():():AccountInfoAccountInfo/提取账户历史提取账户历史 getHistorygetHistory():String():String7/21/20247/21/2024119119ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面AccountIFAccountIF接口定义方法接口定义方法: :deposit(amount:Float):Float /deposit(amount:Float)

88、:Float /存入金额存入金额withdraw(amount:Float):Float /withdraw(amount:Float):Float /提取金额提取金额transferTotransferTo( (amountNameStringamountNameString,amount:Float),amount:Float) Float / Float /转账转账payBillpayBill(receiver:String,amount:Float):(receiver:String,amount:Float): Float Float/付款付款7/21/20247/21/202412

89、0120ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面AccountMgrIFAccountMgrIF接口方法接口方法: :login(login(accountInfoaccountInfo: :AccountInfAccountInf):): AccountIF AccountIFlogout(account:logout(account:AccountIFAccountIF): ): AccountIF AccountIFopen(open(accountInfoaccountInfo: :AccountInfoAccountInfo,

90、, initialAmount initialAmount:Float): :Float): AccountIFAccountIFremove(remove(accountInfoaccountInfo: :AccountInfoAccountInfo) ) showAccountsshowAccounts():String ():String 7/21/20247/21/2024121121ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面AccountImplAccountImpl实施类定义实施类定义: : balance:Float /bal

91、ance:Float /余额属性余额属性/账户信息属性账户信息属性 accountInfoaccountInfo: :AccountInfoAccountInfo history:String /history:String /账户历史属性账户历史属性 方法方法: :与与AccountIFAccountIF接口的方法相同接口的方法相同7/21/20247/21/2024122122ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: :银行用户界面银行用户界面AccountMgrImplAccountMgrImpl实施实施类类: :login:String login:Stri

92、ng AccountInfoAccountInfo: :AccountInfo AccountInfo 方法方法: :与与AccountMgrIFAccountMgrIF接口方法相同接口方法相同7/21/20247/21/2024123123ATMATM软件求解过程软件求解过程: :确定用户界面确定用户界面: : ATMATM管理器界面管理器界面SessionMgrIf SessionMgrIf 接口接口SessionIf SessionIf 接口接口SessionSessionMgrImplMgrImpl SessionSessionIfImpl IfImpl AccountIfAccoun

93、tIf 接口接口 11实施实施实施实施管理管理*7/21/20247/21/2024124124ATMATM软件求解过程软件求解过程: :ATMATM管理器界面管理器界面: :SessionIFSessionIF接口定义方法接口定义方法: :getBalancegetBalance():Float /():Float /提取余额提取余额/提取账户信息提取账户信息getAccountInfogetAccountInfo():():AccountInfoAccountInfo/提取账户历史提取账户历史getHistorygetHistory():String():String7/21/20247/

94、21/2024125125ATMATM软件求解过程软件求解过程: :ATMATM管理器界面管理器界面: :SessionIFSessionIF接口定义方法接口定义方法: :/存入金额存入金额deposit(account:Float):Floatdeposit(account:Float):Float/提取存入金额提取存入金额withdraw(amount:Float):Floatwithdraw(amount:Float):FloattransferTotransferTo( (amountNameStringamountNameString, ,amoun amoun t:Float):F

95、loat t:Float):Float /转账转账payBillpayBill(receiver:String,amount:(receiver:String,amount: Float):Float Float):Float /付款付款7/21/20247/21/2024126126ATMATM软件求解过程软件求解过程: :ATMATM管理器界面管理器界面: :SessionMgrIFSessionMgrIF接口定义方法接口定义方法: :/进入系统进入系统login(login(cardInfocardInfo: :CardInfoCardInfo):):SessionIFSessionIF

96、/退出系统退出系统logout(session:logout(session:SessionIFSessionIF) )7/21/20247/21/2024127127ATMATM软件求解过程软件求解过程: :确定软件最终的体系结构确定软件最终的体系结构ATM客户机客户机ATMCentralServerBankServerATMATM中央服中央服务器务器银行服务器银行服务器银行数据库结点银行数据库结点7/21/20247/21/2024128128第一讲第一讲 概论概论小结小结: :求解问题过程求解问题过程功能分解功能分解数据流数据流信息建模信息建模面向对象面向对象7/21/20247/21/

97、2024129129第一讲第一讲 概论概论小结小结: :求解问题过程求解问题过程功能分解功能分解 系统 = = 子功能子功能 + + 功能接口功能接口7/21/20247/21/2024130130第一讲第一讲 概论概论小结小结: :求解问题过程求解问题过程数据流数据流 系统系统 = = 数据流数据流 + + 处理说明处理说明 + + 数据字数据字7/21/20247/21/2024131131第一讲第一讲 概论概论小结小结: :求解问题过程求解问题过程信息建模信息建模: : 模型模型 = = 实体实体 + + 属性属性 + + 关系关系 + + 关联关联 父类型父类型/ /子类型子类型7/21/20247/21/2024132132第一讲第一讲 概论概论小结小结: :求解问题过程求解问题过程面向对象面向对象: :系统系统 = = 对象对象, ,类类 + + 接口接口+ + 消息消息 + + 体系结构体系结构 7/21/20247/21/2024133133

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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