抽象与封装的实现技术.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抽象与封装的实现技术

第二讲:类、对象、封装 1 抽象与封装的实现技术 实现抽象和封装 ——类和对象 一个对象包含了若干个成员变量和成员方法,它是现实世界中特定实体在程序中的具体体现。其中,成员变量反映实体的属性状态,成员方法反映实体具有的行为能力,这些内容的规格描述将由类承担,类是对具有类似特征的对象的抽象说明,对象是类的实例。 抽象 抽象 忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面 计算机软件开发中所使用的抽象有 过程抽象 数据抽象 过程抽象 将整个系统的功能划分为若干部分,强调功能完成的过程和步骤,而隐藏其具体的实现 任何一个明确定义的功能操作都可被看作单个的实体,尽管这个操作实际上可能由一系列更低级的操作来完成 基于过程抽象的两个标准程序设计技术 过程分解 递归技术 数据抽象 将需要处理的数据和这些数据上的操作结合在一起,抽象成不同的抽象数据类型 每个抽象数据类型既包含了数据,也包含了针对这些数据的操作 相对于过程抽象,数据抽象是更为合理的抽象方法 例: 钟表 数据(属性) int Hour; int Minute; int Second; 方法(行为) SetTime(); ShowTime(); 例: 人 数据(属性) char *name; char *gender; int age; int id; 方法(行为) 生物行为 Eat(), Step(),… 社会行为 Work(), Study(),… 封装 封装 是一种信息隐蔽技术 利用抽象数据类型将数据和基于数据的操作封装在一起 用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的 封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象 封装的定义 清楚的边界 所有对象的内部信息被限定在这个边界内 接口 对象向外界提供的方法,外界可以通过这些方法与对象进行交互 受保护的内部实现 功能的实现细节,不能从类外访问。 封装的意义 在面向对象的程序设计中,类封装了数据及对数据的操作,是程序中的最小模块 禁止了外界直接操作类中的数据,模块与模块之间只能通过严格控制的接口进行交互,这使得模块之间的偶合度大大降低 保证了模块具有较好的独立性,程序维护和修改较为容易 对象体的构成 2 类 1 类的定义 Java语言中, 类主要有两个来源途径 Java类库 用户自定义的类 所有的类都是Object类的子类。如果在自定义类 时,没有写明父类,则默认的父类为Object。从严 格意义上讲,Java程序中定义的所有类都是子类。 类的声明 声明形式 [public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] { 变量成员声明及初始化; 方法声明及方法体; } 关键字 Class 表明其后声明的是一个类。 extends 如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后 implements 如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后 类的声明(续) 修饰符 可以有多个,用来限定类的使用方式 public 表明此类为公有类 abstract 指明此类为抽象类 final 指明此类为终结类 类声明体 变量成员声明及初始化 可以有多个 方法声明及方法体 可以有多个 例:钟表类的java定义 public class Clock { // 成员变量 int hour ; int minute ; int second ; // 成员方法 public void setTime(int newH, int newM, int newS) { hour=newH ; minute=newM ; second=news ; } public void showTime() { System.out.println(hour+:+minute+:+second); } } 类的UML表示 一个类的UML图形表示如图 一个Box类的UML表示 BOX类的UML表示 Box类的定义 public class Box { int long,width, height; void setLong(int longValue){long=longValue;} void setWidth(int widthValue){width=widthValue;} void setHei

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档