《面向对象分析与设计第二章xg.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计第二章xg.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向面向对象分析象分析与与设计易国洪1第二章 对象的概念 q2.1 对象的概念 q理解软件对象的含义q理解对象使用消息进行交流以完成任务的方式q理解不再需要某对象时会发生什么(垃圾回收机制)q理解类的含义q理解重用代码的2q通常公认的第一个面向对象的语言是1967年由Dahl和Nygaard在挪威开发的Simula-67,虽然该语言从来没有得到大量的拥护者,但是它的概念给后来的语言已很大的启发。qSmalltalk在20世纪80年代早期得到了广泛的使用,20世纪80年代晚期跟着出现了其他的面向对象的语言如 Objective C,C+,Eiffel等 qJava(1995 Oak)1996年1
2、月发布第一个Java编译器qC#(2001)3第二章 对象的概念(续)q2.2 什么是对象q世界上所有的事物都可以称为对象。对象可以是有形的如:一台电视机等。q也可以是无形的如:帐户、一项记录等。q一个对象就是一个独立存在的客观事物,它由一组属性和一组操作构成。42.2 什么是对象52.2 什么是对象q属性和操作是对象的两大要素。属性是对象静态特征的描述,操作是对象动态特征的描述。对象名也称为对象标识。q如电视的属性有:品牌、尺寸、重量等。操作有:收视、选台、音量调节等 q在编程术语中,对象是独立的模块,有自己的知识和行为。q可以把软件对象看作机器人、动物或人。62.2 什么是对象q状态/数据
3、/属性q如果记录一个学生信息,需要哪些数据?q姓名q学号q出生日期q用于描述对象的数据元素称为属性。从整体考虑时,对象的属性值集合定义了对象的状态(或条件)。72.2 什么是对象q行为/操作/方法/服务q学生和课程这两个对象各自的行为q学生的行为(至少是和学院相关的行为):q注册一门课程q取消一门课程q选择一个导师q课程这样没有生命的、概念上的对象具有哪些行为有点困难,但如果把课程想象成有生命的事物,可以认为课程的行为有:82.2 什么是对象q课程对象的行为有:q允许学生注册q确定某个学生是否注册了该课程。q告知迄今为止有多少学生注册该课程q告知该课程的先修课程是什么?q告知该课程需要多少学时
4、?q讨论具体的软件对象时,对象的行为(也称为操作)定义为对象为了访问属性值(数据)和修改/维护属性值所做的事92.2 什么是对象q对象的所有值集合定义了对象的状态,因而可以理解操作能够改变对象状态。q对象操作是将对象行为看作对象作为应用程序可以被请求的服务。qJava语言编程实现对象行为时,表示操作的那部分代码成为方法。然而,严格地说,操作用于指代概念上的行为。102.2 什么是对象11122.2 什么是对象13142.2 什么是对象152.2 什么是对象162.2 什么是对象172.2 什么是对象18192.2 什么是对象202.2 什么是对象212.2 什么是对象222.2 什么是对象23
5、242.2 什么是对象2526272.2 什么是对象282.2 什么是对象292.2 什么是对象302.3相同还是相等312.4 描述对象322.5 封装q封装是指对象在操作中隐藏属性q封装的实质是:当一个对象执行自己的操作时,它对外界隐藏了操作的细节333435362.5 封装37发现并封装变化点38394041424344共同点/变化点/抽象类454647482.6 关联、聚合、组合 q关联是类之间的结构关系,它描述了一组链,链是对象(类的实例)之间的连接。它指明一个事物的对象与另一个事务的对象间的联系。如给定一个连接两个类的关联,可以从一个类的对象联系到另一个类的对象。q聚合是一种特殊类
6、型的关联,它描述了整体和部分间的结构关系。q组合是紧密形式的聚合,它包含一种拥有关系。qSchool与department之间的聚合关系组合聚合。49505152532.7 图和树q图是对象之间连接的一个任意集合,关联之中的对象常常会形成图,q聚合之中的对象常常会形成树。542.9 消息q每个对象都至少与另一个对象联系,孤立的对象对任何人来说,都是没有意义的。q对象一旦建立了联系就可以协作。对象在协作时要相互发送消息。q消息就是向对象发出的服务请求,它应该含有下述信息:提供服务的对象标识,服务标识、输入信息和回答信息。552.10 启动操作q消息启动操作。q事件启动操作。562.11 协作示例
7、572.11 协作示例582.12 面向对象程序的工作原理q面向对象的程序在工作时,要创建对象,把他们连接在一起,让他们彼此发送消息,相互协作。谁启动这个过程?谁创建第一个对象?q为了解决这个问题,面向对象的程序必须有一个入口点(entry point)。59602.13 垃圾收集q当创建对象的程序不再使用该对象了,该怎么办?q每个对象都要占用内存的一个小区域。qJAVA语言,每个程序都有一个运行时系统(run-time System)它在我们编写的代码后面执行,执行内务操作,如垃圾回收q纯面向对象语言JAVA,C#,Eiffel,Smalltalk 都有垃圾收集器。612.14 类q类封装了
8、一组对象的公共属性。q类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。q类是描述一组相似对象共有特征的抽象。622.14 类q类和对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。q对象称作类的实例。q类的描述语言public class Studentprivate String name;private int studnetId;public String getName()return name;6364652.14类662.15类定义的内容672.15类定义的内容68692.16 共享数据共享操作7071
9、2.17 类型722.17 类型732.17 类型q对象和原型的主要区别是,原型可以与对象相同的方式用作值,但不能给原型发送消息,给它提供字段,或者以其他方式把它看作对象。qJAVA提供了byte、short、int、long、float、double、char、boolean作为原型类型742.17 类型q数组在JAVA中用操作符表示,它位于对象和原型之间:它们是特殊的对象,编译器和运行时系统使用它们可提高效率。但是,如果希望语言纯粹一些,就应避免使用数组,而可以使用类List来代替。752.18术语762.19 复用(重用)代码q复用是指多次使用代码q复用的目的是:q开发更快速、简单q维护更容易q代码较少,人为错误就较少q更强壮的代码q每次复用代码时,都会重复测试它,错误就会越来越少772.19 复用(重用)代码q复用可以分为如下类别q重用系统中的函数q重用对象中的方法q重用系统中的类q在系统之间重用函数q在系统之间重用类q在所有系统之间重用类q函数库q类库78设计重用的遵循的原则和建议q设计重用的遵循的原则和建议q总是遵循样式规则q完整的文档说明q准备编写比需要更多的代码q使用模式和框架q设计客户-提供者对象q使每个对象只有一个目标q把接口与业务行为分开q为问题和命令设计对象798081