3 面向对象技术类和对象_第1页
3 面向对象技术类和对象_第2页
3 面向对象技术类和对象_第3页
3 面向对象技术类和对象_第4页
3 面向对象技术类和对象_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、杨海秀 yanghaixiu09,面向对象与UML,第三章 面向对象技术类和对象,类的定义,类和对象,上升到面向对象,类图和对象图,对象集合,3.1 类和对象,对象 (object) 一个对象是一个具有状态、行为和标识符的实体。 现实世界的对象:桌子、书、自行车、电视、狗、文件、表格、按钮、窗口,3.1 类和对象,对象 (object) 我们可以把现实世界的事物抽象成对象。 对象包含三个特性 属性: 指对象本身的信息 方法: 实现对信息的访问/对象的操作 标志: 对象的标识符(标识符是一个对象的属性,它区分这个对象与其他的对象) 软件的对象概念是由现实世界对象抽象而来 。,3.1 类和对象,类

2、 (Class) 类是一组对象,它们拥有共同的结构、共同的行为和共同的语义。 现实世界中,存在很多同类的对象,桌子、书、自行车 一种原型,一种抽象,一种共性,一个模板,把相似的对象划归成一个类。 在软件中,类就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。 类是创建对象的模板,对象是类的实例。,-7-,类和对象的关系,每一个对象都是某一个类的实例 每一个类在某一时刻都有零个或更多的实体 类是静态的;它们的存在、语义和关系在执行前就已经定义好了 对象是动态的; 它们在程序执行时可以被创建和删除,从程序设计的角度看,类是面向对象程序中最基本的程序单元。类实质上定义的

3、是一种数据类型,这种数据类型就是对象类型 。所以我们可以使用类名称来声明对象变量。,面向过程,面向对象,何谓面向对象?,3.2 上升到面向对象,掌握面向对象的困难之处在于思路的转换。 我们通常习惯于考虑解决问题的方法,而不是考虑将问题抽象成对象再去解决它。,3.2 上升到面向对象,一个简单的例子,编写一个驾驶汽车的方法 面向过程的程序设计: 编写一个方法,void drivecar(); 面向对象的程序设计: 将一辆汽车看成一个对象,将所有汽车对象的共性抽取出来,设计一个类Car,类中有一个方法void drive(),用Car这个类实例化一个具体的对象car,调用:car.drive()。,

4、?,问题:求5个长方形(大小不同)的面积之和。,问题:求5个长方形、3个三角形、3个圆形的面积之和。,何谓面向对象?,3.2 上升到面向对象,从现实世界到面向对象世界 现实世界 世界是由对象构成的 一切都是对象 对象具有属性和方法 对象之间可以发送消息,3.2 上升到面向对象,面向对象世界 面向对象世界是现实世界的抽象 一切都是对象 程序是由一组相互发送消息的对象构成的 对象具有属性和方法 一个对象内部可以有其他对象 对象具有类型 同类对象能够接收同样的消息,3.2 上升到面向对象,-15-,类和对象,对象,实体,类,抽象数据类型,计算机世界,实 例 化,抽 象,映 射,映 射,现实世界,现实

5、世界和对象世界之间存在着一道鸿沟抽象。 过程抽象 将系统功能划分为若干部分 强调功能完成的步骤 隐藏具体实现 数据抽象 将系统中需要处理的数据和这些数据上的操作合到一起,抽象成抽象数据类型,3.2 上升到面向对象,面向对象的软件开发方法的主要特点之一就是采用数据抽象的方法来构建程序的类与对象。 把现实世界对象的状态保存在软件对象的变量中;现实世界对象的行为通过软件对象的方法(函数)来实现。,3.2 上升到面向对象,面向对象技术基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 面向对象=对象 + 类 + 消息

6、+ 继承 + 多态 面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动。,3.2 上升到面向对象,-19-,练习:类和对象的实例,现实世界中的学生对象和对Student类的建模,Bob,John,Kate,Beverly,Student 属性 方法,一些学生对象,Student类,面向对象技术优点-1,沟通 顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为,PUSH EBX MOV EBX,EDX MOV EDX,EAX SHR EDX,16 DIV BX,AHare.Run; ALion.Catch(AHare)

7、; ALion.Kill(AHare); AHare.Dead; ALion.Eat; ALion.Happy;,在计算机中模拟现实世界的事和物,面向对象技术优点-2,稳定 较小的需求变化不会导致系统结构大的改变 当需求变化时,功能:最易变 数据:较易变 对象:较稳定,稳定性增加,用较稳定把不稳定的包起来,面向对象技术优点-3,复用 代码重用:类库、框架等重用机制 能提高质量,减少由于编制新的系统代码而产生的成本 通过继承、关联、封装等手段,软件开发组越大,组中每个成员的生产率就越低 -Philippe Kahn, Borland公司创始人,构造大型软件不能靠堆人,面向对象技术优点-4,改善软

8、件结构(模块化与封装),提高软件灵活性 增加可扩展性 支持增量式开发,支持大型软件开发 ,3.3 类的定义,声明 字段(信息隐藏与封装) 构造器 方法 注释,声明,修饰符 class 类名 extends 父类 implements 接口名 类成员变量声明; 构造方法声明; 类方法声明; ,声明Class,类头部分关键字class标志着一个类定义的开始,class后面跟着新定义类的类名,类名由编程者命名,命名原则要遵从Java对标识符的有关规定,并体现该类主要功能或作用。 类名以大写字母开头,声明extends,父类名跟在extends关键字后面,用来说明当前类是已经存在的哪个类的子类。 父类

9、可以是Java类库中定义的类,也可以是同一个程序或其他程序中已定义好的类。 通过定义继承关系,子类可以获得父类的所有属性和方法。,class Employee/雇员类,包含所有雇员都有的属性 int m_EmpNo;/雇员号 int m_DeptNo;/雇员所在部门号 /一般雇员,有上司编号 class CommonEmployee extends Employee int m_ManagerNo;/上司编号 /主管,有秘书编号 class ManagerEmployee extends Employee int m_SecretaryNo;/秘书编号 ,声明implements,接口名跟在i

10、mplements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。 接口是Java语言用来实现多重继承的一种机制。,声明修饰符,类的修饰符用来说明类的特殊性质,分为: 访问控制符 最终类说明符 抽象类说明符,public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类 final:该类不能被继承,不能再被扩展,不能有子类;易于安全性的实现,或用于创建固定功能的类 abstract:该类中有一个或多个abstract方法,必须在子类中重载实现。不能被直接实例,但可以被继承。 无:该类可以被一个“包”内的其它类所访问和继承。(“包装访问”),声明修饰符,例: 类修

11、饰符的声明举例 public abstract class shape class rectangle extends shape final class roundrect extends rectangle ,声明修饰符,字段,一个类的属性描述了该类内部的信息,又称为类的静态属性。 类属性为简单变量: 修饰符 变量类型 变量名 =变量初值 类属性为对象的语法: 修饰符 类名 对象名 =new 类名(实际参数列表) 注:若使用另一个类的对象作为当前所定义的类的属性,则一定要保证这“另一个类”在当前类中是可见的,即它可以被当前类所引用。,字段,修饰符 public:可被所有其他类引用 priv

12、ate:仅可被该类自身引用和修改,不能被其他任何类(包括该类的子类)引用,它提供了最高级别的保护。 protected:该类自身、子类、同一包中的其他类 缺省:本包中的类 引用:对象名.变量名,字段,static 表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。若无static修饰,则是实例方法和实例变量。 实例变量成员变量,其生命周期与对象存在的时间相同。 类变量的生存期不依赖于对象。 引用:类名.变量名,字段,final 由final修饰的成员变量实际是一个常量。它的值在程序运行中不能被改变。 final double PI=3.14159;,构造器,构造方法是一种特殊的成

13、员方法,在创建每个新的类对象时自动执行,以保证新对象的各成员有合法、确定的数值。,构造器,对象的实例化通过构造方法(constructor)来实现 构造方法的名字与类名相同 构造方法没有返回值 构造方法可以有多个,构成方法的重载(overload) 构造方法在创建对象时自动执行,一般不能显式地直接调用。 Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。,构造器,创建对象/实例化对象new 例1: Apple a = new Apple(); (创建对象) 例2: Apple a; (对象的说明) a = new App

14、le(); (实例化对象),构造器,new关键字的作用 为对象分配内存空间。 引起对象构造方法的调用。 为对象返回一个引用。,方法,类的方法,又称为成员函数,用来规定类属性上的操作,实现类的内部功能的机制,同时也是类与外界进行交互的重要窗口。 方法的声明 修饰符 方法返回值类型 方法名(形式参数表) throws 异常名 局部变量表; 语句块; ,方法,修饰符 public,private,protected,无访问限定符 static: 静态方法,类方法。 final: 不能被重新定义(override)的方法。 abstract: 只有方法头,而没有具体的方法体和操作实现的方法,要在子类中

15、通过重新定义(override)来实现。,方法,返回值是方法在操作完成后返还给调用它的环境的数据。要指定方法返回值类型。如没有返回值,类型要写 void。 方法名:小写字母。 方法名后的小括号是方法的标志。 形式参数是方法从调用它的环境输入的数据。,方法,在方法中定义的变量称为局部变量 生命周期:执行进入方法体时建立,退出方法时撤消。 局部变量使用之前必须初始化。,方法,调用对象成员方法的语法形式: 对象名.方法名(实际参数列表); 静态方法属于类方法,调用的语法形式可以是: 类名.方法名(实际参数列表);,注释,单行注释 由两个字符“/” 多行注释 由“/* ”开始,由“*/”结束。,注释,

16、类注释,注释,方法注释,单行注释,注释,例子:,求三个长方形、一个圆形的面积之和以及周长之和。 Rec1: 30, 20 Rec2: 25, 10 Rec2: 50, 30 Cir: 20,3.4 对象集合,一般在引用系统中,同一类型的对象通常有很多,需要对这些对象进行组织,把对象成组地放进容器中。,3.4 对象集合,将对象放进不同容器: 固定容量容器(Array) 可变容量容器 Collection(List、Set) Map,接口, 不能实例化,3.4 对象集合,List: ArrayList/LinkedList/Vector Set: HashSet/TreeSet Map: Hash

17、Map/HashTable/TreeMap,3.4 对象集合,数据存放 对象数组:数组的元素可以是对象 Student stu = new Student5; Collection接口是List、Set的父接口,3.4 对象集合,Collection接口常用方法: boolean add(E e) 增加一个元素 boolean remove(Object o) 删除一个元素 void clear() 删除全部元素 int size() 返回元素的个数 boolean isEmpty() 判断是否为空 boolean contains(Object o) 判断给定的对象是否在集合中 Iterat

18、or iterator() 返回集合的迭代器,3.4 对象集合,泛型类(需要一个类型参数的类) eg. ArrayList private ArrayList members;,3.4 对象集合,Set接口 Set是一个不含重复元素的集合,继承了Collection接口。 实现Set接口的类有HashSet和TreeSet。,3.4 对象集合,List接口 实现List接口的类中的元素是有序的,可以包含重复元素,且每个元素都有一个index值(0始)标明元素在列表中的位置。 实现List接口的类有Vector、ArrayList、LinkedList、Stack。,3.4 对象集合,Map接口

19、 Map是从关键字到值的映射(键值对)。 Map中不能有重复的关键字。 每个关键字只能映射到一个值。 Map中常用的方法: V put(K key, V value) 将一对关键字和值放入map中 V get(Object key) 获得指定关键字对应的值,如果该关键字没有对应的值,返回null V remove(Object key) 删除指定关键字和其对应的值 Set keySet() 返回关键字的集合,3.4 对象集合,迭代器(iterator):是一个能遍历容器中所有元素的对象。 遍历容器内的所有元素。(for-each/while) Iterator是定义在java.util包内的类

20、,有两个方法来遍历整个容器:hasNext和next。,3.4 对象集合,Iterator it = myCollection.iterator(); while(it.hasNext() 调用it.next()获取下一个元素,进行处理 ,3.4 对象集合,例子:对interaction文件进行数据预处理。,在UML中使用类图(class diagram)对类及其之间的关系进行描述。 类图是对系统静态结构的描述,包含了类、接口及其关系。 对类图的建模通常贯穿于项目的整个分析和设计阶段。,3.5 类图和对象图,类图基本符号,实现关系,类图,在UML中被划分为3部分,顶部区域显示类的名字(Name),中间区域列出类的属性(Attributes),底部区域列出类的操作(Operations)。,类图,类的属性:属性描述了类所代表的事物的状态和特性。在UML中,属性可以有名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论