《java编程思想》笔记——对象导论(day01)


前言

最近在读《java编程思想》一书,将笔记总结下来,与java基础部分相辅相成,通过本书更加深入理解java的编程机制



1.1抽象过程

抽象

  • 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。
  • 所有编程语言都提供抽象机制
  • 问题的复杂性直接取决于抽象的类型和质量


发展历史

汇编语言:对底层机器的轻微抽象

----》在汇编语言上大幅改进

“命令式”语言(FORTRAN、BASIC、C等)对汇编的抽象,但解决问题基于计算机的结构,而不是基于所要解决的问题的结构

必须建立机器模型与问题模型之间的联系,耗时耗力,维护代价高

----》产生只对待解决问题建模的方式

早期的编程语言,LISP和APL,只考虑特定的视图,PROLOG将所有问题转换成决策链。

解决一些特定问题是不错的方案,但是局限性太强,超出特定领域力不从心

----》面向对象方式产生

将问题空间中的元素以及其在解空间中的表示称为对象,程序可以通过添加新类型的对象使自身适用于某一个特定问题

根据问题来描述问题,而不是根据计算机来描述问题,更灵活更强大。

----》第一个成功的面向对象语言、java所基于的语言之一Smalltalk

基本特征:

  • 万物皆为对象

字面意思,理论上讲任何待求解问题的概念化构件都可以表示成对象,比如:猫、狗、建筑物、服务等等

  • 程序是对象的集合,通过消息来互相请求

字面意思,程序就是由许多对象构成,对象和对象之间通过消息联络,若要调用某个对象的方法就发送消息,即发送调用请求

  • 每个对象都有自己的由其他对象所构成的存储

简单来说,就是可以创建包含现有对象的对象,新建的一个对象中可以包含现有对象,这样就可以构建复杂的程序体系,将复杂的体系隐藏在对象的简单性背后

  • 每个对象都拥有类型

不用怀疑,这里类型就是类的同义词,每个对象都是某个类的实例,每个类都区别于其他的类,都有自己的特征

  • 某一特定类型的所有对象都可以接收同样的消息

比如:动物类型的对象都会收到“吃”这一消息,狗类型的对象同时也是动物类型的,那么狗类型的对象也会收到“吃”的消息

简介描述:对象具有状态、行为和标识,意味着每个对象都拥有内部数据和方法,并有唯一的地址来区分



1.2每个对象都有一个接口

类型

  • 类型,指包含由各特殊的事物或现象抽出来的共通点的抽象概念,也就是说抽象出来的就是类型

  • 为解决“银行出纳员问题”中涉及许多对象,面向对象语言Simula-67中使用class关键字来引入新的类型,相似的对象会被分组到对象的类中

  • 抽象出的数据类型和内置类型几乎完全一致,就可以创建某一类型的变量,其成员都有某种共性

  • 因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以实际上一个类就是一个数据类型

  • 编程系统也接受新的类,并像对待内置类型一样管理和进行类型检查



接口

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。简单说就是,实体和外界沟通的入口,这个入口与内部操作分离,也就是内部操作与外部沟通分离

由此,每个对象只能满足某些请求,而请求由接口定义,接口是对象与外部沟通的入口,有什么样的对象也就会有什么样的接口,对象决定接口

在程序中,对象的请求都有方法与其关联,每当发送请求方法就会被调用。



1.3每个对象都提供服务

  • 对象可以想象为“服务的提供者”
  • 在解决问题的时候,将问题拆分为对象的集合。
  • 将对象看成是服务提供者的好处:有助于提高对象的内聚性,高内聚是软件设计的基本质量要求之一,意味着软件构件的各个方面组合得很好。
  • 每个对象都应该试图很好得完成一项任务,而不是试图让它做更多得事情


1.4被隐藏得具体实现

隐藏具体实现,这种方式在java中被称为封装。

书中设定了场景,将开发人员得角色分为类创建者和客户端程序员,客户端程序员收集各种用来实现快速开发得类,类创建者构建这些类,这种类与外接只暴露接口部分,隐藏实现部分,这样可以在实现客户端程序员能够访问的同时,保证了类创建者可以任意修改被隐藏的部分,并且这些隐藏部分容易被其他人篡改破坏导致bug,所以隐藏起来也可以减少程序的bug。



访问控制

以上这种场景就是我们使用java编程的程序员,java的构建者构建了类库提供给使用者来快速开发应用程序,而我们没有权限修改java中的类库,但并不影响使用这些类库。这便是访问控制的第一个存在原因,让客户端程序员无法触及他们不应该储及的部分。

第二个原因上述场景中也有提及,就是允许类的创建者,类库的设计者改变类的内部,但是却不用担心影响到客户端程序员。

java中用三个关键字,在类的内部设定了边界:public、private、protected

还有一种默认的访问权限,书中称这种默认权限为包访问权限,这种权限下,类可以访问在同一个包中的其他类的成员。



参考书籍:

《java编程思想》第四版

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西风逐白马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值