📜  OOAD-面向对象的原理

📅  最后修改于: 2020-12-14 04:07:29             🧑  作者: Mango


面向对象系统原理

面向对象系统的概念框架基于对象模型。面向对象系统中的元素分为两类:

主要元素-主要是指如果模型不具有这些元素中的任何一个,则它将不再是面向对象的。四个主要元素是-

  • 抽象化
  • 封装形式
  • 模块化
  • 层次结构

次要元素次要元素是指这些元素是有用的,但不是对象模型中必不可少的部分。三个次要元素是-

  • 打字
  • 并发
  • 坚持不懈

抽象化

抽象意味着专注于OOP中元素或对象的基本特征,而忽略其无关或偶然的特性。基本功能是相对于使用对象的上下文而言的。

Grady Booch对抽象的定义如下-

“抽象表示对象的基本特征,可将其与其他所有类型的对象区分开,从而相对于查看者的视角提供清晰定义的概念边界。”

示例-在设计学生类时,包括属性enrolment_number,名称,课程和地址,而消除了诸如pulse_rate和size_of_shoe之类的特性,因为它们在教育机构的角度上是无关紧要的。

封装形式

封装是将属性和方法绑定到一个类中的过程。通过封装,可以从外部隐藏类的内部细节。该类具有提供用户界面的方法,通过这些用户界面可以使用该类提供的服务。

模块化

模块化是将问题(程序)分解为一组模块的过程,从而降低了问题的总体复杂性。 Booch已将模块化定义为-

“模块化是系统的属性,该系统已分解为一组内聚和松散耦合的模块。”

模块化本质上与封装有关。模块化可以可视化为一种将封装的抽象映射到真实,物理模块中的方法,这些模块在模块内部具有很高的内聚性,并且模块间的交互或耦合很低。

层次结构

用Grady Booch的话说,“层次是抽象的等级或顺序”。通过分层,系统可以由相互关联的子系统组成,这些子系统可以具有自己的子系统,依此类推,直到达到最小级别的组件为止。它使用“分而治之”的原则。层次结构允许代码可重用。

OOA中的两种层次结构是-

  • “ IS–A”层次结构–它定义了继承关系中的层次结构关系,从而可以从超类派生许多子类,这些子类又可以具有子类,依此类推。例如,如果我们从花类中衍生出玫瑰类,则可以说玫瑰是“一朵”花。

  • “ PART-OF”层次结构-它定义聚合中的层次关系,一个类可以通过该层次关系由其他类组成。例如,一朵花由萼片,花瓣,雄蕊和心皮组成。可以说花瓣是花朵的“一部分”。

打字

根据抽象数据类型的理论,类型是一组元素的表征。在OOP中,类可视化为一种类型,具有与任何其他类型不同的属性。键入是对一个对象是单个类或类型的实例的概念的强制实施。它还强制要求通常不能互换不同类型的对象。并且如果绝对需要,只能以非常有限的方式互换。

两种类型的打字是-

  • 强类型输入-这里,在对象编译时会检查对象的操作,就像在编程语言Eiffel中一样。

  • 弱键入-此处,消息可以发送到任何类别。像编程语言Smalltalk一样,仅在执行时检查操作。

并发

操作系统中的并发允许同时执行多个任务或进程。当系统中存在单个进程时,可以说存在单个控制线程。但是,大多数系统具有多个线程,其中一些处于活动状态,一些在等待CPU,一些处于挂起状态,而有些则终止。具有多个CPU的系统本质上允许并发控制线程。但是在单个CPU上运行的系统使用适当的算法为线程分配相等的CPU时间,以启用并发性。

在面向对象的环境中,存在活动和不活动的对象。活动对象具有独立的控制线程,可以与其他对象的线程同时执行。活动对象彼此同步,也与纯顺序对象同步。

坚持不懈

对象占用一个存储空间并存在特定的时间段。在传统编程中,对象的生命周期通常是创建该对象的程序执行的生命周期。在文件或数据库中,对象寿命比创建对象的过程持续时间更长。即使对象的创建者不再存在,该对象仍然存在的属性称为持久性。