您的位置:首页 > 编程语言 > Java开发

java编程思想笔记01-对象导论

2018-01-15 11:55 295 查看
对象导论
我们之所以将自然界分解,组织成各种概念,并按照其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来......除非赞同这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交谈.

1.1 抽象过程

所有的编程语言都提供抽象机制.可以认为,人们能够解决问题的复杂性直接取决于抽象的类型和质量.所谓的"类型"是指"抽象的是什么".
汇编语言是对机器语言的轻微抽象,c,fortran,basic语言是对汇编语言的抽象,这些语言在设计时主要对于计算机的控制,而不是直接基于解决问题的结构来考虑,程序员必须建立机器模型(位于"解空间",这是你对问题建模的地方,例如:计算机)和问题模型(业务)之间的关联.
另一种对机器建模的方式就是只针对待解决问题建模.
面向对象方式通过向程序员提供表示问题空间中的元素的工具而更进了一步.
这种思想的实质是:程序可以添加新类型的对象使自身适应某个特定的问题.因此,当你在阅读解决问题方案的代码同时,也是在阅读问题的描述.
java语言的5个基本特性
万物皆为对象,将对象视为奇特的变量,它可以存储数据,初次之外,你还可以要求它在自身上执行操作.
程序是对象的集合,它们通过发送消息来告知彼此要做的.
每个对象都有自己的由其他对象构成的存储.
每个对象都有其类型.
某一特定类型的对象可以接收同样的消息.

1.2 每个对象都有一个接口

每个对象都有访问它的方式

1.3 每个对象都提供服务

将对象看作是提供服务者,它有助于提供对象的内聚性.高内聚是软件设计的基本质量要求之一.

1.4 被隐藏的具体实现

类库创建者和客户端程序员之间的约定

1.5 复用具体实现

一旦类被创建并被测试完,那么它就应该代表一个有用的代码单元.事实证明:这种服用型并不容易达到我们希望的那种程度.需要丰富的编码经验和敏锐的洞察力.
最简单的复用类的方式就是直接使用该类的一个对象,此外也可以将那个类的对象置于某个新的类中.我们称为,创建一个成员对象.

1.6 继承

为什么要有继承:在创建一个类之后,即使一个新类与其拥有相似的功能,我们还是需要创建一个新的类.如果我们能够以现有的类为基础,复制它,然后通过添加和修改这个副本来创建新类就要好多了,用过继承便可以达到这种效果.

当源类发生修改时,导出类也会反映出这些修改.

1.6.1 "是一个"和"像是一个"的关系

1.7 伴随多态的可互换对象

动态绑定

1.8 单根继承结构

一个类只能继承一个类,可以实现多个结构

1.9 容器

1.9.1 参数化类型

泛型的引入

1.10 对象的创建和生命期

对象存储的方式:
c++认为效率控制是最重要的议题,所以给程序员提供了选择的权利.为了追求最大的执行速度,对象的存储空间和声明周期可以在编写程序时确定,这可以将对象置于堆栈(他们有时被称为自动变量或限域变量)或静态存储区来实现.这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样的控制非常有价值.但是,也牺牲了灵活性,因为必须在编写程序时直到对象的确切数量,声明周期和类型.
动态方式:在被称为堆的内存池创建对象.在这种方式中,直到运行时才直到有需要多少对象,它们的声明周期如何,以及它们的具体类型是什么.这些问题的答案只有在程序运行时相关代码被执行的时候才能够确定.如果需要对象,可以在需要的时候在堆中创建.因为存储空间是在运行时被动态管理的,所以需要大量的时间在堆中分配存储空间,这可能远远大于堆栈中创建存储空间的时间.在堆栈中创建存储空间和释放存储空间通常需要一条汇编指令即可,分别对应将栈顶指针乡下移动和将栈顶指针向上移动.创建堆存储空间的事件依赖于存储机制的设计.
动态方式有这样一个一般性的逻辑假设:对象趋向于复杂,所以查询和释放存储空间的开销不会对对象的创建造成重打冲击.动态方式所带来更大的灵活性正式解决一般化编程问题的要点所在.

垃圾回收机制被设计用来处理内存释放问题(尽管它不包括清理对象的其他方面).垃圾回收器直到对象何时不再被使用,并自动释放对象所占的内存.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: