UML(二)——面向对象的基本概念

1、对象的基本特征

  • 每个对象都有自己的唯一标识。
  • 对象之间通过消息进行通信。
  • 对象总是处于一定的状态。
  • 对象有若干种行为,分为三类:创建新对象,与其他对象通信,改变自身状态。
  • 对象的状态只能被自身的行为所改变。
  • 某个对象的状态可以又多个其他对象的状态构成。

2、对象的不同抽象层次

1)类:静态,在程序中定义。

2)对象:动态,存在与进程中。

3)抽象数据类型ADT

  • 是对一组对象的更高层次的抽象。
  • ADT=数据+操作。
  • ADT的四个段落:
    • TYPES
    • FUNCTIONS
    • AXIOMS(公理)
    • PRECONDITONS(先决条件)
  • ADT  VS.  类
    • 类=ADT+实现
    • 类的“瘦极限”(即未进行任何实现)=ADT
    • 类的“胖极限”(即完全实现),有效类
  • ADT——>类
    • ADT的规格说明
    • 选择一种物理表示法
    • 将ADT的功能映射为具体的物理实现

3、基本的类间关系

1)继承:高度抽象方式。

  • 空心三角箭头,实线,子类指向父类。

2)聚合

  • 性质:传递性,逆对称性。
  • 空心菱形箭头,实线,组元类指向组合类。

3)关联

  • 链:对象实例之间的物理或概念联结。
  • 关联:对一组语义与结构相似的链的抽象。
  • 链是关联的实例,关联是链的抽象。
  • 关联会破坏封装性。

4)聚合VS.集成

  • 聚合:与,is part of
  • 继承:或,is a

5)聚合VS.关联

  • 聚合是关联的一种特殊形式

4、消息与事件

1)消息:对象之间进行通信的构造或结构。

  • 分为请求消息和完成消息两种(按消息模式)。
    • 消息模式:发送对象,接收对象,内容。

2)事件:对象之间一次消息的传递。

  • 多个事件按照时间顺序可构成时间序列。

3)消息VS.事件:静VS.动。

4)消息与对象

  • 一个对象能接受不同形式不同内容的多个消息。
  • 相同形式的消息可以送往不同的对象。
  • 对于相同形式的消息,不同对象有不同对象的解释,可以做出不同的反应。

5)消息与方法

  • 对象接收到有效消息后,总会以某种行为做出适当反应。期间,对象行为复用了类操作的代码实现。
  • 在某种程度上,消息与方法可视为同义词。但是:消息与代码无关,方法是操作的代码实现。

6)消息传递VS.过程调用

  • 消息传递
    • 当同一发送对象在不同时刻想同一接收对象多次发送相同消息是,接受对象按照其当前状态不同作出不同反应。
    • 消息传递可以异步进行,从而允许并行与分布执行。
  • 过程调用
    • 如果过程体中只有局部变量,当同一调用者用相同参数值调用同一过程时,其调用结果在任何时刻都必然相同。
    • 过程调用只能同步,其本质是串行执行。

5、多态性

1)含义

  • 同一操作对象可以是多个不同类的行为。
  • 不同对象接收到同一消息后,可产生完全不同的反映。
  • 同一消息可调用不同的方法。

2)目的:允许每个对象以自己最合适的方式去响应共同的消息,增强软件的灵活性和可复用性。

6、面向对象的特性与主题

1)特性

  • 标识唯一性
  • 分类性
  • 多态性
  • 继承性

2)主题

  • 抽象
  • 封装
  • 归并数据与行为
  • 共享/复用
  • 强调对象结构而不是程序结构
  • 协同

3)面向对象=对象+分类+继承+消息

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 19:36:29

UML(二)——面向对象的基本概念的相关文章

二维数组 面向对象编程的概念、 类、对象以及引用 和成员方法

1.二维数组(熟悉)1.1 基本概念 一维数组本质上就是一段连续的存储单元,用于存放多个类型相同的数据内容. 二维数组本质上就是由多个一维数组组成的数组,也就是说二维数组中的每个元素都是一维数组,而一维数组的每个元素才是具体数据内容. 1.2 二维数组的声明(1)语法格式 数据类型[][] 数组名称 = new 数据类型[行数][列数];如: int[][] arr = new int[2][5]; - 声明一个具有2行5列元素类型为int的二维数组 其中行下标的范围是:0 ~ 1: 其中列下标

(Object-C)学习笔记(二) --OC语言面向对象和基本概念

现在的高级编程语言大部分都是面向对象编程的. 那么什么是面向对象呢?我用我的见解举个例子:假设你正在用word编辑这么两件事 1.一个人走到桌子前面(1)拿起可乐(2)打开盖子(3)喝光(4)放下瓶子(5). 2.一个人走到桌子前面(1)拿起点心(2)吃了(3). 那么如果是用面向过程的方式来编程,第一件事是一个大括号,里面写着这5步.第二件事是一个大括号,里面写着3步.写这么两件事全部手写,不允许黏贴复制,一共8步. 如果使用面向对象的方式来编程,把这个过程分为了动作和物品,把这些步骤写出来但

C#面向对象的核心概念

一.面向对象的核心概念 (一)抽象--面向对象的根基 讲到抽象,不得不涉及到现代科学技术的基础--数学. 数学是一门抽象的科学,面对着纷繁复杂的世间万物,数学不理会各种事物的独特特性,而只抽取它们在数量上的特性,深刻揭示了"世间万物"在数量上表现出的共同规律,抽象正是数学的本质特征. 数学的一个分支--离散数学是计算机科学的根基之一,因此,计算机科学从诞生之日起,就与数学有着密不可分的联系,抽象思维也是计算机科学的主要思维方法之一. 在使用面向对象的方法设计一个软件系统时,首先就要区分

java面向对象的基本概念

面向对象的基本概念 这里先介绍面向对象程序设计的一些关键概念,并开始使用类,你需要学习一些术语,我们尽量用比较浅显的语言来介绍,因为这些内容都比较重要,所以希望大家好好好理解. 一.什么是对象和面向对象的编程. 对象就是存在的具体实体,具有明确定义的状态和行为,是面向对象编程的核心,用来描述现实世界中的实体,为计算机应用程序提供实体基础,也是完成特定任务一个封装.这样描述对象却是有点罗嗦.因为与传统的C语言不通,C语言是过程语言,而java语言是面向对象的语言,所以对象是java语言的核心. 那

面向对象的核心概念

1.面向对象的核心概念 从理论上说,面向对象技术拥有四大基本特性. (1)封装 这是一种隐藏信息的特征.封装这一特性不仅大大提高了代码的易用性,而且还使得类的开发者可以方便的更换新的算法,这种变化不会影响使用类的外部代码.可以用以下公式展示类的封装特性: 封装的类=数据+对此数据所进行的操作(即算法) 通俗的说,封装就是:包起外界不必需要知道的东西,只向外界展露可供展示的东西. 在面向对象理论中,封装这个概念拥有更为宽广的含义.小到一个简单的数据结构,大到一个完整的软件子系统,静态的如某软件系统

攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍

一.IoC的概念: IoC(控制反转)是Spring容器的核心.另一种解释是DI(依赖注入),即让调用类对某一个接口的依赖关系由第三方注入,以移除调用类对某一个接口实现类的一览. 定义如此,由此可见,在面向接口编程的情况下,IoC可以很好的实现解耦,可以以配置的方式为程序提供所需要的接口实现类. 在实际程序开发中,我们只需要提供对应的接口及实现类,然后通过Spring的配置文件或者注解完成对依赖类的装配.二.IoC的类型: 1.通过构造函数: 此种方式的缺点是,在构造函数中注入之后一般会作为一个

PHP从零开始-面向对象编程的概念

面向对象变成的概念 需要一一种不同的方式来考虑如何构造应用程序.通过对象可以在对应用程序所处理的显示任务.过程和思想进行编码是,实施更贴切的建模.OOP方法并不是将应用程序考虑成一个将大量数据从一个函数传递给下一个函数的控制线程,而是允许将应用程序建模成一组相互协作的对象,并且这些对象可以独立的处理某些活动. 吐槽:和js挺像的 OPP的优点 可以轻松地将单个的业务需求转换为单个的代码模块. 代码重用 类的模块化 吐槽:以后问OPP的优点就这样了 opp的组成 类(class)一个对象的“蓝本”

Python基础08 面向对象的基本概念

Python基础 面向对象的基本概念 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢逆水寒龙,topmad和Liqing纠错 Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程. 面向对象的最主要目的是提高程序的重复使用性.我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的.了解OOP是进一步学习Python

js 面向对象的基本概念和基本使用方法

js 面向对象的基本概念和基本使用方法 -> js 是不是一个面向对象的语言? 不是:与传统面向对象的理论语言有矛盾.C#,Java. 是:js里面到处都是对象,数组,时间,正则- 和 DOM.也可以像传统面向对象的语言那样用 new 的方式创建对象 -> js是一个基于对象的多范式编程语言. 面向过程的方式 面向对象的方式 函数式 递归与链式 例: Jquery 链式编程 面向对象的概念 对象的定义:无序属性的集合,其属性可以包含基本值,对象或是函数 1. 面向:将脸朝向- -> 关注

1.1 js 面向对象的基本概念和基本使用方法

js 面向对象的基本概念和基本使用方法 -> js 是不是一个面向对象的语言? 说不是:因为与传统面向对象的理论语言有矛盾.C#,Java. 说是:因为js里面到处都是对象,数组,时间,正则- 和 DOM.也可以像传统面向对象的语言那样用 new 的方式创建对象 -> 其实js是一个基于对象的多范式编程语言.  面向过程的方式 面向对象的方式 函数式 递归与链式 例: Jquery 链式编程 面向对象的概念 对象的定义:无序属性的集合,其属性可以包含基本值,对象或是函数 1. 面向:将脸朝向-