# 第一章 对象导论
## 1.1 抽象过程
1. 所有的编程语言都提供抽象机制。
2. 五个基本特性,这些特性表现了一种纯粹的面向对象程序设计方式:
1. 万物皆为对象。将对象视为奇特的变量,他可以存储数据,除此之外,你还可以要求他在自身上执行操作。理论上讲,你可以抽取待求解问题的任何概念化构件,将其表示为程序中的对象。
2. 程序是对象的集合,他们通过发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条消息。更具体地说,可以把消息想象为对某个特定对象的方法的调用请求。
3. 每个对象都有自己的由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象。因此,可以在程序中构建复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
4. 每个对象都拥有其类型。按照通用的说法,"每个对象都是某个类(class)的一个实例(instance)"。每个类最重要的区别于其它类的特性就是"可以发送什么样的消息给他"。
5. 某一特定类型的所有对象都可以接受同样的消息。这是一句意味深长的表述,这种可替代性(substitutability)是OOP中最强有力的概念之一。
3. 对象有一个更加简洁的描述:对象具有状态、行为和标识。
## 1.2 每个对象都有一个接口
1. 所有的对象都是唯一的,但同时也是具有相同特性和行为的对象所归属的类的一部分。
2. 我们在面向对象程序设计中实际上进行的是创建新的数据类型。
3. 因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。
## 1.3 每个对象都提供服务
1. 当正在试图开发或理解一个程序设计时,最好的办法之一就是将对象想象为"服务提供者"。程序本身将向用户提供服务,他将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建(或最好就是在现有代码库中寻找)能够提供理想的服务来解决问题的一系列对象。
2. 将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性。高内聚是软件设计的基本质量要求之一:这意味着一个软件构件的各方面"组合"得很好。
3. 将对象最为服务提供者看待是一件伟大的简化工具,这不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,如果他们看出了这个对象所提供的服务的价值,它会使调整对象以适应其设计的过程变得简单得多。
## 1.4 被隐藏的具体实现
1. 将程序开发人员按照角色分为类创建者(那些创建新数据类型的程序员:架构)和客户端程序员(那些在其应用中使用数据类型的类消费者:业务开发人员)是大有裨益的。
2. JAVA使用三个关键字在类的内部设定边界:public、private、protected。这些访问指定词(access specifier)决定了紧跟其后被定义的东西可以被谁使用。public表示紧跟在其后的元素对任何人都是可用的,而private这个关键字表示除类型创建者和内部方法之外的任何人都不能访问的元素。protected和private作用相当,差别仅在于继承的类可以访问protected成员,但是不能访问private成员。
3. JAVA还有一种默认的访问权限,当没有使用前面提到的任何访问指定词时,他将发挥作用。这种权限通常被称为包访问权限,因为在这种权限下,类可以访问在同一个包(库构件)中的其他类的成员,但是在包之外,这些成员如同指定了private一样。
java 编程思想 第五版 java编程思想第五版pdf
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java编程思想 第五版 pdf java编程思想第五版下载
在网上找到的高清版,分享一下,里面可以网页看,觉得可以自己下载。
java编程思想 第五版 pdf .net 下载地址 -
esp32 lvgl优化
先看效果,创建两个线段式仪表,一个通过LVGL动画对象控制动态显示,一个为静态镜像显示一、开发板简介 二、开发环境搭建 windows 三、基础示例 四、LVGL控件使用示例 LVGL_Arc_Test &
esp32 lvgl优化 学习 Test 控件 List