OOP定义
1 一切都是对象。
2 计算通过对象间相互通信,请求其他对象执行动作来实现。对象间通过发送和接收消息来通信。
3 每个对象都有自己的内存,其中可能包括了其他的对象。
4 每一个对象都是某个某个类的实例。类就是一组相似的对象。
5 类是对象相关行为的存储库。也就是说,同一个类的所有对象都能执行同样的动作。
6 类被组织成有单个根节点的树状结构,被称为继承层次结构。与类实例相关的内存和行为都会被树结构中的后代自动继承。面向对象基本概念
1 任何事物都是对象,对象有属性和方法。复杂对象可以由相对简单的对象以某种方式构成。
2 通过类比发现对象间的相似性,即对象间的共同属性,是构成对象类的依据。
3 对象见的相互联系是通过传递“消息”来完成的。通过对象之间的消息通信驱动对象执行一系列的操作从而完成某一任务。面向对象主要特点:类、对象、继承、封装、聚合、关联、消息、多态
对象
- 对象是独立存在的客观事物,它由一组属性和一组操作构成。
属性和操作是对象的两大要素。属性是对象静态特征的描述,操作是对象动态特征的描述。
属性一般只能通过执行对象的操作来改变。
操作又称为方法或服务,它描述了对象执行的功能。通过消息传递,还可以为其他对象使用。 - 对象是指一个实体:能够保存一个状态(又称信息或数据);能提供一系列操作(或称行为),这些操作或能检查或影响对象的状态
能够表示现实或抽象的事物:具有良好定义的责任和良好定义的行为;具有良好定义的接口 - 对象的性质:封装性、自治性、通信性、暂存性、持久性
- 对象标识(OID)
是将一个对象和其他对象加以区别的标识符
一个对象标识和对象永久结合在一起,不管这个对象状态如何变化,一直到该对象消亡为止
用变量名充当标识
可寻址性和标识这两个概念做了混合
强类型变量,像C++,Java Employ emp = new Employ();
非强类型的变量 var emp =new Employ()
直接标识就是变量的值即为要标识的对象
间接标识指变量的值不是要标识的对象而是该对象的指针 - 复合对象
指一个对象的一个属性或多个属性引用了其他对象
委托:是复合对象的一个特例,在委托方式下可有两个对象参与处理的一个请求,接受请求的对象将责任委托给它的代理者
组合:一个对象可以由其他对象构造
聚合:描述对象间具有相互关系的另一种方式
组合和聚合的区别:
- 组合:
语义规则: a-part-of
整体负责部分
每个部分对象也仅与一个整体对象联系
是更强形式的聚合 - 聚合:
同质的
语义规则:has-a
部分可以脱离整体存在,例如摄影协会和会员的关系
- 组合:
- 对象持久化
要长久保存的对象,也就是持久对象。持久对象不随着创建它的进程结束而消亡,在外村中存贮
不需要长期保存的,被称为暂存对象
类
类就是这些具有相同或相似行为或数据结构的对象的共同描述
类是若干对象的模板,并且能够描述这些对象内部的构造
属于同一个类的对象具有相同数据结构及行为类与对象的关系:
对象按照不同的性质划分为不同的类
同类对象在数据和操作性质方面具有共性
把一组对象的共同特性加以抽象并存贮在一个类中
类是对象之上的抽象,有了类之后,对象则是类的具体化,是类的实例(类是对象的抽象,对象是类的实例)
类是静态概念,对象是动态概念类的性质:
类的名标识一个类
在同一个系统环境中,类的名能够唯一标识一个类
类必须有一个成员集合:属性、方法、方法的操作接口
类的属性的域:基本类、用户定义的类
支持信息隐藏类的实例
一个实例是从一个类创建而来的对象
属于某个类的对象称为该类的一个实例,每个实例具有一个对象标识
类和对象间有instance-of关系
类描述了这个实例的行为(方法)及结构(属性)
每个实例可由该类上定义的操作(方法)来操纵类及实例的特征
同一个类的不同实例:- 具有相同的值
- 承受的是同一方法集合所定义的操作,因而具有相同的行为
同一个类的不同实例可以持有不同的值,因而可以有不同的