编程思想——面向对象

所有对象——尽管各有特色——都属于某一系列对象的一部分, 这些对象具有通用的特征和
行为
, class 这个关键字, 它为程序引入了一个全新的类型;
强调“类型” 决定了接口,“类” 是那个接口的一
种特殊实现方式。

行出纳员:有一系列出纳员、 客户、 帐号以及交易等。
每类成员(元素) 都具有一些通用的特征: 每个帐号都有一定的余额; 每名出纳都能接收客
户的存款; 等等。 与此同时, 每个成员都有自己的状态; 每个帐号都有不同的余额; 每名出
纳都有一个名字。
独一无二的实体分别表示出纳员、 客户、 帐号
以及交易。 这个实体便是“对象”, 而且每个对象都隶属一个特定的“类”, 那个类具有自己
的通用特征与行为。
建好一个类后, 可根据情况生成许多对象。 随后, 可将那些对象作为要解决问题中存在的元
素进行处理。 事实上, 当我们进行面向对象的程序设计时, 面临的最大一项挑战性就是: 如
何在“问题空间”(问题实际存在的地方) 的元素与“方案空间”(对实际问题进行建模的地
方, 如计算机) 的元素之间建立理想的“一对一” 对应或映射关系。
向对象发出请求, 令其做一些实际
的事情, 比如完成一次交易、 在屏幕上画一些东西或者打开一个开关等等。 每个对象仅能接
受特定的请求。 我们向对象发出的请求是通过它的“接口”(Interface) 定义的, 对象的“类
型” 或“类” 则规定了 它的接口形式。“类型” 与“接口” 的等价或对应关系是面向对象程
序设计的基础。
类创
建者来说, 他们的目标则是从头构建一个类, 只向客户程序员开放有必要开放的东西(接口),
其他所有细节都隐藏起来。
接口”(Interface) 规定了可对一个特定的对象发出哪些请求。 然而, 必须在某个地方存在着一些代码, 以便满足这些请求。 这些代码与那些隐藏起来的数据便叫作“隐藏的实现”。
一种类
型含有与每种可能的请求关联起来的函数。 一旦向对象发出一个特定的请求, 就会调用那个
函数。 我们通常将这个过程总结为向对象“发送一条消息”(提出一个请求)。 对象的职责就
是决定如何对这条消息作出反应(执行相应的代码)。
对于任何关系, 重要一点是让牵连到的所有成员都遵守相同的规则。 创建一个库时, 相当于
同客户程序员建立了一种关系。

控制对成员的访问的原因

1,内部数据类型的设计思想,为了解决特定的问题, 用户只需操作接口
2,允许库设计人员修改内部结构, 我们最开始可能设计了一个形式简单的类, 以便简化开发。 以后又决定
进行改写, 使其更快地运行。 若接口与实现方法早已隔离开, 并分别受到保护, 就可放心做
到这一点, 只要求用户重新链接一下即可。

设置类边界

public, private,
protected 以及暗示性的 friendly。 若未明确指定其他关键字, 则默认为后者。 这些关键字的
使用和含义都是相当直观的, 它们决定了谁能使用后续的定义内容。“public”(公共) 意味
着后续的定义任何人均可使用。 而在另一方面,“private”(私有) 意味着除您自己、 类型的
创建者以及那个类型的内部函数成员, 其他任何人都不能访问后续的定义信息。 private 在您
与客户程序员之间竖起了 一堵墙。 若有人试图访问私有成员, 就会得到一个编译期错误。
“friendly”(友好的) 涉及“包装” 或“封装”(Package) 的概念——即 Java 用来构建库的
方法。 若某样东西是“友好的”, 意味着它只能在这个包装的范围内使用(所以这一访问级
别有时也叫作“包装访问”)。“protected”(受保护的) 与“private” 相似, 只是一个继承的
类可访问受保护的成员, 但不能访问私有成员。

代码或设计方案的重复使用是面向对象的程序设计

“创建一个成员对象”
重复使用一个类, 最简单的办法是仅直接使用那个类的对象。 但同时也能将那个类的一个
对象置入一个新类。
** 新类可由任意数量和类型的其他
对象构成。 **
新类达到了设计要求即可。 这个概念叫作“组织” ——在现有类
的基础上组织一个新类。 有时, 我们也将组织称作“包含” 关系。

对象的组织具有极大的灵活性

新类的“成员对象” 通常设为“私有”(Private), 使用这个
类的客户程序员不能访问它们。 这样一来, 我们可在不干扰客户代码的前提下, 从容地修改
那些成员。 也可以在“运行期” 更改成员, 这进一步增大了灵活性。 后面要讲到的“继承”
并不具备这种灵活性, 因为编译器必须对通过继承创建的类加以限制。
“继承应当随处可见”。 沿这种思路产生的设计将是
非常笨拙的, 会大大增加程序的复杂程度。 相反, 新建类的时候, 首先应考虑“组织” 对象;
这样做显得更加简单和灵活。 利用对象的组织, 我们的设计可保持清爽。 一旦需要用到继承,
就会明显意识到这一点。

继承: 重新使用接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值