首页 > 其他分享 >面向对象基本方法

面向对象基本方法

时间:2024-09-22 12:24:19浏览次数:3  
标签:基本 对象 子类 交互 模式 面向对象 接口 数据流 方法

一、面向对象需求分析的相关概念

对象在开发时会将人、物等都抽象为对象,人、物的特性会变成对象的属性,对象还有相关的操作方法,即这个人(物)在系统内部可以做些什么;对象由标识属性和服务构成,他们被封装为一个整体以接口的形式对外提供服务
将多个对象的共性抽取出来形成类,一个类中的对象都是这个类的实列,没有实例的类是抽象类,抽象类不能被实例化,不能用new关键字。建立丰富的类库是程序设计成熟的重要标志

实体类:人、物等实体

边界类:具有与外界交互职能的类
操控类:类与类之间需要衔接,因此需要控制类来控制衔接
抽象抽取事务的本质特征
封装例如对程序中一部分属性封装起来作为私有,如果外部想要访问这些属性需要通过固定接口
继承和泛化继承:子类继承父类的全部特征
泛化:将有共性的几个类提取共性形成一个上层类
多态同样的操作去控制不同的对象,对象的表现状态不一样,例如快速移动操作,控制对象狗表现状态是跑,控制鱼表现状态是游;其中参数多态和包含多态称为通用多态,过载多态和强制多态称为特定多态
接口接口是一种特殊的类,此种类只有方法的定义没有实现,相当于空条例
消息对象之间进行交互的时候采用的机制,采用异步方式传输
组件组件就是构件,是面向软件架构体系可以复用的模块
模式和复用模式:经验累积形成的模板
复用:重复使用

面向对象分析与设计

面向对象分析基于用例模型包括三个活动:

建模系统功能

发现并确定业务对象

组织对象并确定关系 

面向对象设计是在分析基础上设计各个对象、对象之间的关系、通信方式等

二、面向对象设计原则

        注:一般考选择

单一职责原则设计目的单一的类类的目的单一即一个类解决一个问题,此情况下类与其他类的联系相对较少,即程序的耦合度低
开放-封闭原则对扩展开发,对修改封闭维护过程中添加新功能最好是拓展新的类实现新功能而不是修改原有的类,因为修改原有类可能会引入新的错误

李氏(Liskov)

替换原则

子类可以替换父类不要盲目修改父类
依赖倒置原则

要依赖于抽象而不是具体实现;

针对接口编程,不要针对实现编程

如果依赖实现编程,需要改动时会有大的牵连
接口隔离原则使用多个专门的接口比使用单一总接口要好一个接口做一件事使问题简单化不易出错
组合重用原则尽量使用组合,而不是继承关系达到重用目的继承中父类变化子类需要跟着变比较麻烦

迪米特原则

(最少知识法则)

一个对象应当对其他对象有尽可能少的了解使用封装使部分属性私有不对外界展示,各模块之间了解较少使用接口进行连接

三、设计模式的基本概念

架构模式

        软件设计中的高层决策,从全局看待问题,例如C/S结构,架构模式反映了开发软件系统过程中所作的基本设计决策

惯用法

        最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件之间的关系,每种编程语言都有自己特定的模式,即语言的惯用法。

设计模式

        主要关注软件系统的设计,从局部看待问题,与具体实现语言无关

设计模式的分类

创建型模式

        用于创建对象的模式,为设计类实例化的新对象提供指南。

创建型模式名称说明

抽象工厂模式

Abstract Factory

提供一个接口类型,可以创建一系列相关或相互依赖的对象,无需指定他们具体的类(不止可以是类模式,也可以是对象模式)

构建器模式

Builder

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

工厂方法模式

Factory Method

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

原型模式

Prototype

用原型实例指定创建对象类型,拷贝原有对象生成新的对象,例如直接复制源代码改一下生成新代码比重新敲一遍源代码要快

单例模式

Singleleton

保证一个类只有一个实例,比如浏览器中可以打开多个标签页,但是当前显示的只有一个页面

结构型模式

        处理类或对象的组合问题,为类或对象形成更大的结构提供指导。

结构型模式名称说明关键字

适配器模式

Adapter

将一个类的接口转换成用户希望得到的另一种接口,使原本不相容的接口可以协同工作(不止可以是类模式,也可以是对象模式)转换接口

桥接模式

Bridge

将类的抽象部分和他的实现部分分离,使他们可以独立变化继承树拆分

组合模式

Composite

将对象组合成树形结构来表示整体和部分的层次结构,使用户对单个对象和和对象的使用具有一致性树形目录结构

装饰模式

Decorator

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

外观模式

Facade

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

享元模式

Flyweight

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

代理模式

Proxy

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

 行为型模式

行为模式名称说明关键字

职责链模式

Chain of  Responsibility

将接收对象连接起来形成链,发送者发送消息通过链中对象依次传递,直到有对象能回复,可以减少发送者与接收者之间的耦合传递职责

命令模式

Command

将请求封装成为对象,将请求排队或记录日志支持撤销日志记录,可撤销

解释器模式

Iterpreter

给定一种语言,定义他的文法表示并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子(不止可以是类模式,也可以是对象模式)

迭代器模式

Iterator

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

中介者模式

Mediatir

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

备忘录模式

Memento

不破坏封装性地前提下捕获对象内部状态,并在该对象之外进行保存,从而可以在以后将该对象恢复

观察者模式

Observer

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

状态模式

State

将状态做成类,类的改变可以改变当前的行为状态变成类

策略模式

Strategy

定义一系列算法,把他们各自封装,使他们之间可以相互替换,让算法可以独立于使用他的用户变化多方案切换

模板方法模式

Template Method

定义一个操作中的算法骨架,将一些步骤延迟到子类当中,使子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤(不止可以是类模式,也可以是对象模式)

访问者模式

Visitor

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

四、数据流图DFD

        又称分成数据流图,常用于需求分析阶段。

图例

        图例需要记牢,有时会将E-R图等多种图的图例混合出选择。

 分层

        数据流图的分层一般是分为顶层图、0层图、最底下的子图。上层图与下层图(或称之为父图与子图)需要保持平衡。数据流图的封层是从顶到下逐层进行分解,此分解思路与结构化的开发方法完全吻合,所以数据流图成为了结构化方法里面最常用的工具

 顶层图

        中间椭圆表示需要开发的程序,两侧方框表示该程序与外部实体进行的交互。

0层图

        在顶层图基础上,对需开发程序细化,将整体程序拆分成部件。

 底层子图

        在0层的基础上,对部件进行进一步细化。

 数据字典

        数据字典用来配合数据流图的使用,对一些数据或名词进行相应的诠释。

符号含义例子
+a+b 表示 a 与 b,即 a 和 b
=被定义为

机票=姓名+日期+航班号+起点+终点+费用;

表示:元素姓名、日期、航班号、起点、终点、费用被定义为机票

[......,......]

[......|......]

x=[a,b]、x=[a | b],表示x由a组成或者由b组成
{......}重复x={a},x由0个或者多个a组成
(......)可选x=(a),表示a可以在x中出现,也可以不出现

 数据流图平衡原则

父图与子图之间的平衡

        数据流图的平衡原则是上层图与下层图(父图与子图)之间,凡是在上层数据流图中出现的交互,在下层数据流图中也必须出现,且方向、数量、名词都需一致。

        例如下图顶层数据流图中,外部组织前端应用,与需开发程序数据管理之间有6个箭头,那么在此图细化而成的0层数据流图中,二者之间的交互也应该是6个箭头,并且箭头的名词、方向、数量都需相同。另外两个外部交互组织,数据管理员、后端数据库也需要遵循此原则。

注:由数据需开发程序,数据管理中间件细化而成的内部交互与此无关。

子图内平衡

        子图内平衡是指在加工这一项操作中,如果有输入必须有输出才能算作平衡,有输入无输出称作黑洞;无输出有输入称作奇迹;还有一种是输入与输出不对等,或者输出与输入不对等;此三者都属于不平衡,在数据流图中违背平衡原则是错误的。

        关于数据流图的平衡原则一般的考察方式是给定上层图(或下层图),让判断下层图(或上层图)之间的交互对应关系有无缺失和错误,尤其注意有无箭头指向的方向错误,此错误容易忽略。

 

        上图中红色代表上层图与下层图共有的交互,蓝色代表下层图中缺失的交互,绿色表示需开发程序的细化。如图中,下层图缺失2个上层图中存在的交互,此为不平衡。 

数据流图考察

        数据流图考察一般为大题类型,首要的是尽可能详细的分析题目中的题干信息,数据流图就是根据题干绘制而成的,然后再利用平衡原则查看是否有数据流方向问题,数据流是否缺失等。

五、UML建模 

        UML建模部分包含多种类型的图。考察方式一般为大题。

 UML三部分

构造块

UML事物

结构事物是UML模型中的名词,通常是,模型的静态部分描述概念或物理元素。

行为事物是UML模型的动态部分,通常是,模型中的动词,描述跨越时间和空间的行为。

分组事物是UML模型的组织部分,通常是由模型分解成的盒子。

注释事物是UML模型的解释部分,通常是用来描述,说明模型的任何元素。

 图

        图分为:结构图(静态图)、行为图(动态图)

结构图(静态图)

行为图(动态图)

用例图

        考察方式其一是根据题干将图做补充或者修改,其二是根据题干判断两个用例之间属于包含关系、扩展关系、泛化关系中的哪一种。

类图与对象图

        考察方式其一是根据题干信息填写类名、方法名、属性名;其二是填写多重度;其三是填关系。多重度和关系需要牢记。

多重度
1表示一个集合中的一个对象对应另一个集合中的一个对象,可以是数字2、3等意义同上
0..*或*表示一个集合中的一个对象对应另一个集合中的0个或多个对象(可以是0个不对应)
1..*表示一个集合中的一个对象对应另一个集合中的1个或多个对象(至少对应1个)
0..1表示一个集合中的一个对象对应另一个集合中的0个或1个对象
关系

         对象图是类图的一个实例。

顺序图

        考察方式一般是通过阅读题干,将题干与图相结合,对图进行补充,但是考察方式比较简单。其一是一般会给与消息名称,让把消息名称填到对应的位置,其二是根据题干填写对象名。顺序图执行方式是由上到下,顺序图是动态图它表现处理事务的时间顺序情况。

        图中蓝色表示对象,对象一般住在最上方,例如最左侧对象中标注的CardRead则为对象名,考察时可能会让根据题干标注对应的对象名,其下的虚线称作生命线 ;

        图中粉色1-11表示消息,考察时可能会让根据题干内容标注对象名例如消息6-9;

        绿色箭头表示两个对象之间有交互,例如左上方第一个箭头表示对象CardRead发送消息carInserted给对象ATM,部分题目中会将实线箭头看作调用,虚线箭头看作返回。

 

 活动图

        活动图类似于流程图,能表现整个处理流程的基本情况和分支状态。考察方式是根据题干信息补充图中信息。

        如下图,图中的粗黑线表示分支与合并。

        活动图还有带泳道的模式,每个泳道代表不同的对象,泳道的作用是可以更加明确活动图中的活动归属于哪个对象。

 状态图

        状态图是动态图,表现状态的变迁,往往以状态为结点,连线为触发事件,状态结点经过事件出发转变为另一状态。考察方式为根据题干完善状态图,其一是填充结点中的状态,其二是填充连线上的触发事件。

 通信图

        通信图又称协作图,是顺序图的另一种表达方式,只是顺序图更强调时间,而通信图的事件进行时间没有顺序图明晰。所以通信图与顺序图有时统称交互图。考察方式是研读题干,将题干与图对应,其一是填充对象名,其二是填充消息。

        图中黄色结点表示对象,其中内容为对象名,实现与虚线箭头表示对象之间的消息传递。

六、其他

1、C++中类的继承 

公有继承public

派生类成员能访问基类中的共有成员和保护成员

私有继承private

派生的子类不能访问基类中的成员

保护继承protected

只能被派生的子类访问基类中的成员

2、静态数据成员

类的静态数据成员与一般的类成员不同:

静态数据成员只能访问静态数据成员;

静态数据成员无法访问普通数据成员;

任何成员都可以访问静态成员;

标签:基本,对象,子类,交互,模式,面向对象,接口,数据流,方法
From: https://blog.csdn.net/m0_55661792/article/details/142431104

相关文章

  • Java面向对象——内部类(成员内部类、静态内部类、局部内部类、匿名内部类,完整详解附有
    文章目录内部类17.1概述17.2成员内部类17.2.1获取成员内部类对象17.2.2成员内部类内存图17.3静态内部类17.4局部内部类17.5匿名内部类17.5.1概述内部类17.1概述写在一个类里面的类叫内部类,即在一个类的里面再定义一个类。如,A类的里面的定义B类,B类就称内部类......
  • torch模型量化方法总结
    0.概述模型训练完成后的参数为float或double类型,而装机(比如车载)后推理预测时,通常都会预先定点(量化)为int类型参数,相应的推理的精度会有少量下降,但不构成明显性能下降,带来的结果是板端部署的可能性,推理的latency明显降低,本文对torch常用的量化方法进行总结作为记录。1.模型量化......
  • note.js与vue.js常用基本命令
    Note.js基本命令1、安装Node.js包npminstall<package-name>2、全局安装包npminstall-g<package-name>3、查看已安装的包npmlist4、初始化项目并创建package.json文件npminit5、更新包到最新版本npmupdate<package-name>6、卸载包npmuninstall<pack......
  • 自制CANTool_DBC_Layout仿制_基本框架练习(一)
    1、工具制作用途    模仿DBC中对于Layout方案的模仿,先完成一些基本功能,数据导入和信号解析2、工具UI1、初始化CAN的布局2、导入CANMessage信号3、导入CANSignal1、初始化CANFD的布局2、导入CANFDMessage信号3、导入CANFDSignal3、工具代码#reg......
  • 电脑维修的基本原则
    要识别电脑故障,一定要遵循“先易后难”、“先外后内”及“先软后硬”原则,使维修更有效的进行。一、先易后难“先易后难”是指处理电脑故障时需要从最简单的事情做起,通过认真的观察后,再进行判断与维修,这样有利于集中精力进行故障的判断与定位。在电脑出现故障时应进行以下检......
  • 【车载开发系列】APQP基本概念
    【车载开发系列】APQP基本概念【车载开发系列】APQP基本概念【车载开发系列】APQP基本概念一.APQP基本概念二.APQP的特点三.APQP的要点四.APQP背后的哲学1)1-10-100法则—事前控制优于事后控制2)PDCA—持续改善五.APQP成功的关键1)第一类2)第二类3)第三类六.与PPAP的......
  • 【JavaWeb从入门到精通系列】 - JavaSE基础篇(1) -面向对象
    一、封装1、存在意义public对属性的设置或者修改没有任何限制隐藏该隐藏的,暴露该暴露的。封装之后设置set和get方法2、封装//1、将需要封装的属性修饰符设置为private(私有的,在外界无法访问)privateintage;//年龄//正常情况下通过创建对象可以访问属性Students......
  • Maven 使用方法
    MavenMaven是一个项目管理工具,它包含了一个项目对象模型(POM:ProjectObjectModel),其表现于一个XML文件(pom.xml),其中包含了项目的基本学习,依赖关系,插件配置,构建路径等等为什么使用Maven导入第三方jar包更便捷:之前我们在使用第三方框架时我们会把jar包复制粘贴到WE......
  • 数据结构和算法——基本思想
    一.分治法分治法思想:将原问题分成n个规模较小的而结构与原问题相似的子问题,递归地解这些问题,然后合并其结果就得到原问题的解。分解:原问题分为若干个子问题,这些子问题是原问题的规模较小的实例。解决:递归地求解各个子问题。若子问题足够小,则直接求解。合并:将子问题的解合并成......
  • 不在同一局域网怎么远程桌面?轻松管理多台电脑的实现方法(共4种)
    随着远程办公的普及和团队协作的深入,我们经常会遇到需要远程访问非同一局域网内电脑的情况。那么,不在同一局域网内还怎么远程桌面呢?本文将介绍四种方法,帮助你轻松实现这一需求!方法一:使用Windows远程桌面结合公网IP或反向代理Windows自带的远程桌面功能结合公网IP或反向代理......