面向对象技术

news2024/11/26 0:56:24

面向对象技术

面向对象基础

面向对象基本概念

面向对象分析

面向对线设计

面向对象测试

UML

事务

关系

设计模式

创建型设计模式

结构型设计模式

行为型设计模式

面向对象基本概念

面向对象基本概念

达成目标具体需要做哪些事情。

  • 对象 : 基本的运行实体,为类的实例,封装了数据和行为的整体,如学生、汽车等真实存在的实体。对象具有清晰的边界、良好定义的行为和可扩展性。
  • 消息 : 对象之间进行通信的一种构造称为消息
  • 类 : 是对象的抽象,定义了一组大体相似的对象结构,定义了数据和行为,包括实体类(用于对必须存储的信息和相关行为建模的类,是需要长久保存且一直存在的类)、边界类(系统内部与系统外部的业务主角之间进行交互建模的类)、控制类(用于对一个或几个用例所特有的控制行为进行建模,在用例执行过程中被动出现的特定行为的类)。在领域类模型中会涉及描述类自身情况的属性与操作,还会有描述类与类之间的关联,但不会有对象层次的内容。

  • 继承 父类和子类之间共享数据和方法的机制。是类之间的一种关系。
  • 多态 不同的对象收到同一个消息时产生完全不同的反应。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一型个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持。

  • 多态 不同的对象收到同一个消息时产生完全不同的反应。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一型个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持。

面向对象基本概念

为完成目标,设置 3-5 条坚持做和禁止做的事情。

覆盖:

子类在原有父类接口的基础上,用适合于自己要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法。ss

函数重载:

与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。

封装:

一种信息隐蔽技术,其目的是使对象的使用者和生产者分离,也就是使其他开发人员无需了解所要使用的软件组件内部的工作机制,只需知道如何使用组件。

静态类型 动态类型

  • 静态类型是指一个对象的类型在编译时就确定;
  • 动态类型指对象类型在运行时才能确定。

静态绑定 动态绑定

  • 静态绑定(静态分配)是基于静态类型的,在程序执行前方法已经被绑定;
  • 动态绑定是基于动态类型的,运行时根据变量实际引用的对象类型决定调用哪个方法,动态绑定支持多态。

面向对象分析设计

面向对象分析:

是为了确定问题域,理解问题。

包含五个活动:

  1. 认定对象(按自然存在的实体确定对象)、
  2. 组织对象(分析对象关系,抽象成类)、
  3. 对象间的相互作用(描述各对象在应用系统中的关系)、
  4. 确定对象的操作(操作,如创建增加删除等)、
  5. 定义对象的内部信息(属性)。

...

面向对象设计:

是设计分析模型和实现相应源代码,在目标代码环境中这种源代码可被执行。设计问题域的解决方案。

面向对象程序设计:

用面向对象程序设计语言实现设计方案。详见下午软件设计。

面向对象测试:

与普通测试步骤并无不同。

可分为四个层次:

  1. 算法层(测试类中定义的每个方法,类似单元测试)、
  2. 类层(测试同一个类中所有方法与属性的相互作用,特有的模块测试)、
  3. 模板层(测试一组协同工作的类之间的相互作用,类似集成测试)、
  4. 系统层(类似系统测试)。

...

例(2012年下半年):38-39.在面向对象技术中,说明一个对象具有多种形态,_39_定义超类与子类之间的关系。

(38)A. 继承

B. 组合

c. 封装

D. 多态

(39)A.继承

B. 组合

c. 封装

D. 多态

答案:D A

解析:一个对象基有多种形查,丛字面理解应该是多态,多态是不同对象在接收到同一个消息会产生不同的

反应:超类与子类毫无疑问是继承。

例(2015年上半年) : 38.面向对象()选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。

A.分析 B.设计

C.程序设计 D.测试

答案:C

蟹哲:涉及到程序设计语言的,是面向对象程序设计,面向对象设计不涉及具体语言,只从系统逻辑结构层

例(2015年下半年):

了一组大体相似的对象,这些对象共享(38)。

在面向对象的系统中,对象是运行时实体,其组成部分不包括(37);一个类定义

(37)A.消息

B. 行为(操作)

c. 对象名

D. 状态

(38)A.属性和状态

B. 对象名和状态

c. 行为和多重度

D.属性和行为

答案:A

解析,其睾契潺晨晕霜个独立的概念,对象是类的实体,因此包括行为、属性,对象运行时必然有状态:类

UML

UML是统一建模语言,和程序设计语言并无关系。

UML三个要素:

  • UML的基本构造块、
  • 支配这些构造块如何放置在一起的规则
  • 和运用与整个语言的一些公共机制。

UML的基本构造块包括:

  • 事物(对模型中最具有代表性的成分的抽象)、
  • 关系(把事务结合在一起)、
  • 图(聚集了相关的事物)。

UML中有四种事物:

  • 结构事物、
  • 行为事物、
  • 分组事物、
  • 注释事物。

结构事物:

模型的静态部分,如类、接口、用例、构件等;

如右图示例:

事物

行为事物:

模型的动态部分,如交互、活动、状态机;

分组事物:

模型的组织部分,如包;

注释事物:

模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。

关系

依赖:

一个事物的语义依赖于另一个事物的语义的变化而变化

关联:

是一种结构关系,描述了一组链,链是对象之间的连接。分为组合和聚合(聚集),都是部分和整体的关系,其中组合事物之间关系更强。两个类之间的关联,实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。

泛化:

一般/特殊的关系,子类和父类之间的关系

实现:

一个类元指定了另一个类元保证执行的契约。

类图

类图:

静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。UML类图如下:

  • 多重度;
  • 属性;
  • 操作;
  • 关系。

对象图

对象图:

静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。如下:

用例图⭐️⭐️⭐️

用例图:

静态图,展现了一组用例、参与者以及它们之间的关系。

用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作。

用例之间的关系:

包含:必须 ,一定要做

扩展:可做可不做

泛化:一般和特殊之间的关系

序列图

序列图:即顺序图,动态图。是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。

三种。

  • 有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示),
  • 异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、
  • 返回消息(由从右到左的虚线箭头表示)

如下:

通信图

通信图:

动态图,即协作图,是顺序图的另一种表示方法,也是由对象和消息组成的图,只不过不强调时间顺序,只强调事件之间的通信,而且也没有固定的画法规则,和顺序图统称为交互图。。如下:

状态图

态图:

动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。

转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。

活动图

活动图:

动态图,是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。

活动的分岔和汇合线是一条水平粗线。

并发分岔、并发汇合、监护表达式、分支、流等名词及含义。

每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是在一个分岔粗线下的分支上的活动。

构件图

构件图(组件图):静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖。如下:

部署图

部署图:静态图,为系统静态部署视图,部署图物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。如下:

例题

例(2012年下半年):42.UML中接口可用于

A. 提供构造型(stereotype)名称为《interface》的具体类

B. Java和C++程序设计中,而C#程序设计中不支持

c. 定义可以在多个类中重用的可执行逻辑

D.声明对象类所需要的服务

答案:D

解析:UML是统一建模语言,和程序设计语言并无关系,在采用UML进行面向对象

系统建模时,会用UML中构造型(stereotype)名称为interface来表示接口这一概念

(并非具体类),声明对象类所需要的服务,而服务具体如何执行,有实现它的具体类完成。

设计模式

每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便的复用成功的设计和体系结构。

设计模式的四个基本要素:

  • 模式名称、
  • 问题(应该在何时使用模式)、
  • 解决方案(设计的内容)、
  • 效果(模式应用的效果)。

分为三类,

  • 创建型模式主要是处理创建对象,
  • 结构型模式主要是处理类和对象的组合,
  • 行为型模式主要是描述类或者对象的交互行为,

具体如下(红色粗体记忆关键字表示常考必须记住的):

设计模式

创建型设计模式 (5)

创建型设计模式

定义

记忆关键字

Abstract Factory

抽象工厂模式。

提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类

抽象接口

Builder

构建器模式

将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示。

类和构造分离

Factory Method

工厂方法模式。

定义一个创建对象的接口,但由子类决定需要实例化哪一个类。使得子类实例化过程推迟。

子类决定实例化。

Prototype

原型模式

用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象。

原型实例,拷贝

Singleton

单例模式。

保证一个类只有一个实例,并提供一个访问它的全局访问点。

唯一实例

结构型设计模式(7)

结构型设计模式

定义

记忆关键字

Adapter

适配器模式

将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作

转换,兼容接口

Bridge

桥接模式。

将类的抽象部分和它的实现部分分离开来,使它们可以独立的变化

抽象和实现

分离

Composite.

组合模式

将对象组合成树型结构以表示“整体-部分”

的层次结构,使得用户对单个对象和组合对象

的使用具有一致性

整体-部分,

树形结构

Decorator

装饰模式

动态的给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派

生一个子类更加灵活。

附加职责

Façade

外观模式。

定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用.

对外统一接口

Flyweight

享元模式

提供支持大量细粒度对象共享的有效方法。

细粒度,共享

Proxve

代理模式。

为其他对象提供一种代理以控制这个对象的访问.

代理控制

行为型设计模式(10)

行为型设计模式

定义

记忆关键字

Chain of

Responsibility

职责链模式

通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。

传递请求、职

责、链接.

Command

命令模式。

将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

参数化、日志

记录。

Interpreter

解释器模式

给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。

文法、解释

Iterator

迭代器模式

提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示.

顺序访问。

Mediator

中介者模式

用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立的改变对象间的交互.

不直接引用

Memento

保存,恢复。

备忘录模式。

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态

Observer

观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

通知、自动更新

State

状态模式

允许一个对象在其内部状态改变时改变它的

行为.

状态变成类

Strategy

策略模式

定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化。

算法替换。

Template Method

模板方法模式。

定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤

Visitore

访问者模式

表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作。

新操作


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vector - CAPL - CANoe硬件配置函数 - 05

目录 resetCan -- 重置CAN控制器 代码示例 ResetCanEx -- 重置CAN控制器的特定CAN通道 代码示例 ScanBaudrateActive -- 特定通道设置波特率 ScanBaudratePassive -- 开始扫描并检测给定通道上的波特率 resetCan -- 重置CAN控制器 功能:重置CAN控制器&#xf…

(2020)End-to-end Neural Coreference Resolution论文笔记

2020End-to-end Neural Coreference Resolution论文笔记 Abstract1 Introduction2 Related Work3 Task4 Model4.1 Scoring Architecture4.2 Span Representations5 Inference6 Learning7 Experiments7.1 HyperparametersWord representationsHidden dimensionsFeature encoding…

学习HCIP的day.06

十一、OSFP扩展知识点 1、关于OSPF状态机的问题 (1)在MA网络中(要进行DR/BDR选举)存在7种状态机,init是路由器A收到邻居B的hello包,但该hello包中没有A的RID; (2)在点到…

汽车EEA架构演进以及域控制器发展介绍

1、重要名词解析 (1)SDV:软件定义汽车; (2)SOA :一种 C/S 架构的软件设计方法; (3)OTA:空中下载技术(Over-the-Air Technology&#x…

【MySql】数据库事务

事务 事务事务的操作事务并发处理可能出现的问题隔离级别MVCC:多版本并发控制 事务 事物本质上指一条 sql 语句或一组 sql 组合 事务的特性:ACID 1、原子性:一个事务,要么一次性完成,要么就不做 2、一致性&#xff1…

STM32驱动超声波+OLED显示,并上传数据到云端(ONENET)

本文将介绍如何使用STM32F103C8T6单片机和HC-SR04超声波测距模块来实现测距功能,并通过0.96寸OLED屏幕显示测距结果。 首先,我们需要了解一下HC-SR04超声波测距模块的工作原理。该模块通过发送超声波脉冲并接收回波信号的时间来计算物体与模块之间的距离…

C++ STL 标准模板库介绍与入门

目录 1、概述 1.1、C 标准库 1.2、Boost库 2、STL 版本 2.1、HP 原始版本 2.2、P. J. 实现版本 2.3、RW 实现版本 2.4、SGI 实现版本 2.5、STLport 实现版本 3、STL 的六大组件 3.1、STL 六大组件构成 3.2、六大组件的交互关系 4、STL 的重要性 5、总结 VC常用功…

java spring MVC之RESTful快速开发

我这里有个一springboot项目 我在启动类同目录下创建了一个目录 目录名叫 controller 里面有一个UserController diam结构是这样的 package com.example.threshold.controller;import com.example.threshold.user; import org.springframework.stereotype.Controller; import…

平衡二叉树理论详解

文章目录 基本概念平衡二叉树插入结点LL(左单旋)RR(右单旋)LR(左右旋)RL(右左旋) 示例插入推导过程 基本概念 平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1&…

Maven ( 二 ) 项目应用

4.资源管理 4.0.pom.xml Maven的pom.xml是一个项目对象模型(Project Object Model)&#xff0c;它是Maven项目的构建文件。它描述了一个项目的基本信息&#xff0c;包括项目依赖、插件、仓库等信息。 下面是一个简单的pom.xml示例&#xff1a; <project xmlns"http…

深度学习用于医学预后-第二课第三周4-7节-关于事件的时间数据,认识处理删失数据

在本课中&#xff0c;我们将讨论生存数据。为了能够对生存进行建模&#xff0c;我们需要能够以我们可以处理的形式表示数据。 主要的挑战是删失数据&#xff0c;这是一种特殊形式的缺失数据。我们接下来将要研究这一点。 在这节课中&#xff0c;我们将谈论生存数据和删失。 …

LeetCode 96 不同的二叉搜索树

题目&#xff1a; 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;n 1 …

第七章:C语言的操作符

说起操作符大家都不陌生&#xff0c;从我们最初的 - c * / 加减乘除&#xff0c;到更加深奥的操作符&#xff0c;而今天我要有完整的系统来理清楚C语言的操作符到底有什么&#xff0c;和它们相关的用法&#xff0c;话不多说&#xff0c;直接走进今天的主题----C语言的操…

保护个人隐私和数据安全的方法与策略

引言 随着信息技术的普及和发展&#xff0c;我们享受到了便捷的互联网服务&#xff0c;但与此同时&#xff0c;个人隐私和数据安全问题也日益受到威胁。在这个所谓的"裸奔"时代&#xff0c;网络攻击、数据泄露和隐私侵犯已经成为常态。然而&#xff0c;我们并不无助…

sysfs文件系统

sysfs系统介绍 sysfs系统sysfs系统是什么&#xff1f;koject的内核对象模型基础kobject结构体定义kest bus如何管理driver和devicebus_type 结构体 小知识什么是挂载mount命令 &#x1f4cc;————本章重点————&#x1f4cc; &#x1f517;了解sysfs系统概念; &#x1f5…

布谷鸟hash算法的并行化实现(一)

由于本人最近在写一个项目&#xff0c;为了实现数据查找以及数据修改部分的快速操作&#xff0c;所以采用hash对数据进行存储&#xff0c;而在此过程中接触到了布谷鸟hash&#xff0c;觉得这个hash算法还是很有意思并且高效&#xff0c;所以想着进行一些记录&#xff0c;本系列…

一文带你快速掌握如何读懂 YonBuilder移动开发 的项目源码

本文将通过四大步的简单讲述&#xff0c;让新手开发者朋友们快速掌握阅读YonBuilder移动开发项目源码的技巧方法。 1.读懂代码的第一步&#xff0c;了解项目的整体文件结构 CSS: 存放css样式的文件&#xff1b; feature&#xff1a;猜测是用来存放特征文件的&#xff0c;实际…

了解投影坐标系统,并在精美的地图上探索

投影坐标系简介 地球椭球体表面也是个曲面&#xff0c;而我们日常生活中的地图及量测空间通常是二维平面&#xff0c;因此在地图制图和线性量测时首先要考虑把曲面转化成平面。由于球面上任何一点的位置是用地理坐标&#xff08;λ&#xff0c;φ&#xff09;表示的&#xff0…

计算机三级网络技术总结(更新中)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;欢迎来到前端初见的博文&#xff0c;本文主要讲解我计算机三级网络技术&#x1f35f; &#x1f468;‍&#x1f527; 个人主页 : 前端初见 &#x1f95e;喜欢的朋友可以关注一下&#…

BEV专栏(二)从BEVFormer看BEV流程(下篇)

前言 书接上回&#xff0c;在上一篇文章中&#xff0c;我们介绍了BEVFormer这一先进的BEV算法。在本篇文章中&#xff0c;我们将深入探讨BEVFormer的实现细节&#xff0c;旨在帮助读者更深入地理解BEVFormer的工作原理和性能表现。 本教程禁止转载。同时&#xff0c;本教程来自…