`
longsy
  • 浏览: 138182 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OO概念常识

阅读更多

人们所能够解决的问题的复杂性直接取决于抽象的类型和质量
  抽象类型:把问题抽象成了什么(元素)
  抽象质量:元素的层次与关系(关联)

传统编程语言的缺点:
  依赖解空间域的环境(计算机),基于计算机结构,不是基于问题的结构。

必须在解空间(机器模型)与问题空间(问题模型)之间建立起映射关系。

有部分语言是专门对问题空间进行建模而设计。但专业领域依赖性太强,无法通用。所抽象的类型过于局限性。

面向对象的优点:
    不受限于特定类型。通用性更强。

对象:具有状态,行为,标识
  状态:对象在任何时刻都存在自己特定形态(对象本身就是一个数据和行为的携带者)
  行为:对象都有改变自己的形态和为其它对象提供服务的操作行为(对象都自己的能力都非常了解)
  标识:对象在其所在的世界或领域内都是唯一被标识的

万物皆对象:OO将所有存的事物(实体或概念)都当作一个特定的对象。
程序是对象的集合:OOP将对象按某种关系组合在一起,形成一个具有一定逻辑和存储数据的代码集合体。
每个对象都有自己的由其他对象所构成的存储:一个对象可能是其他的对象的组合。就像生物是由细胞组成,而细胞是包含细胞核一样。这样

  包含对象能够使用被包含对象的所有数据和行为。
每个对象都有其类型:每一个对象都对映着一个实体。而每个实体都存在一个概念上的描述。这个描述就是对象的类型。根据描述环境和角度

  的不同,多个不同可能相似的对象可以拥有相同的描述,即多个对象属于同一个类型。根据这个类型,可以创建该类型的特定对象。对象

  拥有其所对象类型所描述的行为和数据。
某一个特定类型的所有对象都可以接收同样的消息:对于由同一个类型所创建的所有特定对象,都拥有类型所描述的相同行为。

对象接收消息的理解:除了改变自己状态以外,对象存在的价值就是为其它对象提供服务。提供服务体现在对象所具体的行为上。一个对象A为

另外一个对象B提供服务时,我们可以认为B在向A请求提供服务的消息,而A在接收B所请求的服务的消息。

每个对象都有一个接口:接口是对象的对外提供服务的行为集合。接口就是对象与对象之间沟通的通道。接口确定了对某一特定对象所能发出

  的请求(行为)

每个对象都提供服务:在OOA/P时,目的就是去创建能够提供理想的服务来解决问题的一系列对象。将问题分解成对象的集合是一种合理的方式


  优点:将对象看作是服务提供者有助于提高对象的内聚性和可复用。

隐藏具体实现:增加对象访问的安全性,避免其内部重要数据被外部对象所破坏
  优点:让客户端程序无法触及他们不应该触及的部分(部分类型的内部操作是必须的,但并不是用户解决问题所需接口的一部分)
     允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序

复用具体实现:新的类可以由任意数量,任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。

继承:也是复用实现的另一种方式
  如果一个新类B与已存在类A很相似(接口相似),或者说"B是一种A","B像一种A",为了不必要的重复创建功能相似的类,可以使用继承。
  当B继承(extends)A时,B同时也就是具备了所有A特性和行为(A的状态和行为)。同时B还可以自己扩展特性和行为。
  A称为父类或基类或超类,B称为子类或继承类或导出类或扩展类。
  子类可以通过改变由A默认继承过来的行为(覆盖overriding)。

多态:对于向基类发送同一消息请求,其子类对象可以做出不同的行为。也就是说,凡是所有基类能够接收的消息,其子类都均能接收。子类

  接收消息请求后,会根据其自身的特性和行为表现出不同的形态。

向上转型:子类向基类转换(安全的)
向下转型:基类向子类转换(不安全的)

单根继承结构:所有类的最终基为均是Ojbect
  优点:保证所有对象都具有类型,同时也就具备某些功能。因此不会因为对象无法确认类型而陷入僵局

容器:一种新的对象类型,持有其他对象的引用。将一组具有相同或相似类型的对象引用存放在一起,便于管理和使用。在访问对象引用时,

  由于不同容器的实现策略不同,对象引用的存放方式和访问方式有所不同,所有访问对象引用的效率有所不同。根据使用环境,选择适当

  的容器。

参数化类型:在使用容器时,为了过滤加入容器的对象类型。一般采用参数化类型。指定容器中只能存放的某类型或其子类型的对象。
  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics