Java笔记(1)

恨台上卿卿,或台下我我,不是我跟你。

——似是故人来

jshell

jdk9开始就,是一个REPL得工具。

按照道理这个东西是在bin下得,不知道为什么没有


啊这。。。我不弄了先。继续往下看。

结构化程序设计非常强调实现某个功能的算法,而算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构。

1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构。

类是具有共同属性、共同方法的一类事物。类是对象的抽象;对象则是类的实例。

消息是一个实例与另一个实例之间相互通信的机制。

在面向对象方法中,类之间共享属性和操作的机制称为继承。继承具有传递性。继承可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)与多继承(一个类允许有多个直接父类)。

注意:

由于多继承可能引起继承结构的混乱,而且会大大降低程序的可理解性,所以Java不支持多继承。

在编程语言领域,还有一个“基于对象”的概念,这两个概念极易混淆。通常而言,“基于对象”也使用了对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说,“基于对象”没有继承的特点;而“多态”则更需要继承,没有了继承的概念也就无从谈论“多态”。面向对象方法的三大基本特征(封装、继承、多态)缺一不可。

例如,JavaScript语言就是基于对象的,它使用一些封装好的对象,调用对象的方法,设置对象的属性;但是它们无法让开发者派生新的类,开发者只能使用现有对象的方法和属性。

判断一门语言是否是面向对象的,通常可以使用继承和多态来加以判断。“面向对象”和“基于对象”都实现了“封装”的概念,但是面向对象实现了“继承和多态”,而“基于对象”没有实现这些。

面向对象编程的程序员按照分工分为“类库的创建者”和“类库的使用者”。使用类库的人并不都是具备了面向对象思想的人,通常知道如何继承和派生新对象就可以使用类库了,然而他们的思维并没有真正地转过来,使用类库只是在形式上是面向对象的,而实质上只是库函数的一种扩展。

类之间有三种基本关系:

➢ 关联(包括聚合、组合)

➢ 泛化(与继承同一个概念)

➢ 依赖

1.关联

客观世界中的两个实体之间总是存在千丝万缕的关系,当把这两个实体抽象到软件系统中时,两个类之间必然存在关联关系。

关联具有一定的方向性:如果仅能从一个类单方向地访问另一个类,则被称为单向关联;如果两个类可以互相访问对象,则被称为双向关联。一个对象能访问关联对象的数目被称为多重性,例如,建立学生和老师之间的单向关联,则可以从学生访问老师,但从老师不能访问学生。关联使用一条实线来表示,带箭头的实线表示单向关联。

在很多时候,关联和属性很像,关联和属性的关键区别在于:类里的某个属性引用到另外一个实体时,则变成了关联。

关联关系包括两种特例:聚合和组合,它们都有部分和整体的关系,但通常认为组合比聚合更加严格。当某个实体聚合成另一个实体时,该实体还可以同时是另一个实体的部分.

2.泛化

泛化与继承是同一个概念,都是指子类是一种特殊的父类,类与类之间的继承关系是非常普遍的,继承关系使用带空心三角形的实线表示如果一个类的改动会导致另一个类的改动,则称两个类之间存在依赖。

3.依赖

如果一个类的改动会导致另一个类的改动,则称两个类之间存在依赖。依赖关系使用带箭头的虚线表示,其中箭头指向被依赖的实体。依赖的常见可能原因如下:

➢ 改动的类将消息发给另一个类。

➢ 改动的类以另一个类作为数据部分。

➢ 改动的类以另一个类作为操作参数。

通常而言,依赖是单向的,尤其是当数据表现和数据模型分开设计时,数据表现依赖于数据模型。

演化图的5要素如下:

➢ 状态:状态是对象响应事件前后的不同面貌,状态是某个时间段对象所保持的稳定态,目前的软件计算都是基于稳定态的,对象的稳定态是对象的固有特征,一个对象的状态一般是有限的。有限状态的对象是容易计算的,对象的状态越多,对象的状态迁移越复杂,对象状态可以想象成对象演化过程中的快照。

➢ 事件:来自对象外界的刺激,通常的形式是消息的传递,只是相对对象而言发生了事件。事件是对象状态发生改变的原动力。

➢ 动作:动作是对象针对所发生事件所做的处理,实际上通常表现为某个方法被执行。

➢ 活动:活动是动作激发的后续系统行为。

➢ 条件:条件指事件发生所需要具备的条件。

对于激发对象状态改变的事件,通常有如下两种类型。

➢ 内部事件:从系统内部激发的事件,一个对象的方法(动作)调用(通过事件激活)另一个对象的方法(动作)。

➢ 外部事件:从系统边界外激发的事件,例如用户的鼠标、键盘动作。

对象实现了数据和操作的结合,对象把数据和对数据的操作封装成一个有机的整体,因此面向对象提供了更大的编程粒度,对程序员来说,更易于掌握和使用。

具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。

对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此,可以把类理解成某种概念、定义,它规定了某类对象所共同具有的数据和行为特征。

在客观世界中有若干类,这些类之间有一定的结构关系。通常有如下两种主要的结构关系。

➢ 一般→特殊关系:这种关系就是典型的继承关系,Java语言使用extends关键字来表示这种继承关系,Java的子类是一种特殊的父类。因此,这种一般→特殊的关系其实是一种“is a”关系。

提示:

在讲授面向对象时经常提的一个概念—一般→特殊的关系也可代表大类和小类的关系。比如水果→苹果,就是典型的一般→特殊的关系,苹果is a水果,水果的范围是不是比苹果的范围大呢?所以可以认为:父类也可被称为大类,子类也可被称为小类。

➢ 整体→部分结构关系:也被称为组装结构,这是典型的组合关系,Java语言通过在一个类里保存另一个对象的引用来实现这种组合关系。因此,这种整体→部分结构关系其实是一种“has a”关系。

开发者定义了Java类之后,就可以使用new关键字来创建指定类的对象了,每个类可以创建任意多个对象,多个对象的成员变量值可以不同—这表现为不同对象的数据存在差异。

(0)

相关推荐