- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章封装和抽象
第四章 封装和抽象 沈项军 计算机科学与通信工程学院 内容提要 定义抽象和封装 使用访问指定符实现封装 使用方法 介绍抽象和封装 封装和抽象是任何面向对象编程语言的重要特性。 抽象涉及仅抽取相关的信息。 封装涉及将一个或多个组件打包在一起。 介绍抽象(书上内容) 汽车销售员注意到不同的人有不同的喜好。 某些人对汽车的速度感兴趣,某些人对价格感兴趣,某些人对发动机感兴趣,而某些人对汽车的式样感兴趣。 虽然他们都想买车,但是每个人对汽车的特定属性或功能有不同的兴趣。 销售员了解汽车的所有信息,但是他为有意购买的人仅提供一些相关的信息。 因此,销售员为顾客抽象并显示相关的信息。 介绍抽象(我的解释) 抽象性 抽象(abstraction):去掉研究问题中次要的部分,仅仅抽取主要的、本质的部分进行研究的方法。 过程抽象:面向过程方法使用 数据抽象:面向对象方法使用 抽象数据类型(ADT) 定义封装(书上内容) 封装从字面上解释为“包围或者密封”。 封装定义成将物理或逻辑包中的一个或多个项放入封套的过程。 它防止对不需要的信息的访问。 例子 汽车中的自动传动 自动传动特性封装了关于引擎的几百位的信息,例如速度,表面斜度和变速杆的位置。司机仅使用影响这个复杂封装的一个方法-通过移动变速档。因此,变速档是一个很好定义的自动传动特效的接口。 定义封装(我的解释) 封装 封装(encapsulation):利用ADT将数据和基于数据的操作密封在一起,系统的其它对象只能通过界面与其交互。 封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。 封装的优点 提高了系统灵活性 提高了系统安全性 封装的特点 类型或者对象责任的集合 面向对象程序设计 抽象 封装 继承 多态 后两个特性在书上第7、8章讲解 内容提要 定义抽象和封装 使用访问指定符实现封装 使用方法 使用访问指定符实现封装 访问指定符定义一定范围的类成员。 类成员引用类中的变量和方法。 程序可以有一个或多个类。 您可能希望类的某些成员能够被其他类访问。 但是,您也可能不希望类的某些成员被类之外的其他类访问。 访问指定符的类型 C# 支持以下访问指定符: public private protected internal protected internal 访问指定符 public访问指定符举例 using System; class Point { public int x; public int y; } class MainClass { static void Main() { Point p = new Point(); // Direct access to public members: p.x = 10; p.y = 15; Console.WriteLine(x = {0}, y = {1}, p.x, p.y); } } private访问指定符举例 using System; class Employee { private string name = FirstName, LastName; private double salary = 100.0; public string GetName() { return name; } } class MainClass { static void Main() { Employee e = new Employee(); string n = e.name; // Error double s = e.salary; // Error string n = e.GetName(); } 其他访问指定符 protected、 internal、 protected internal访问指定符将在后面的章节中讲到 活动:使用访问指定符计算面积和体积 问题描述: 编写一个能够计算长方形和矩形面积的程序。 活动:使用访问指定符计算面积和体积 using System; class Area { static int Result; public static void AreaRec() { int Length,Breadth; Console.
文档评论(0)