06. OOAD & UML note

day01:
面向对象
通过封装、继承、多态,把程序的耦合度降低,使程序灵活、容易修改、容易复用。
面向对象=对象 + 类 + 消息 + 继承 + 多态
面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动

软件开发组越大,组中每个成员的生产率就越低
--Philippe Kahn, Borland
Ln = 15000/(n^-3)( LOC / year )
构造大型软件不能靠堆人

敏捷开发:
1. 思路先行 //先用注释把思路记录下来
2. 实现随后


可维护性:预见需求(预见多年后的事)
可重用:
代码可重用(最低级别):粒度:方法(常用代码块),类,包,组件(类库)
设计的可重用:框架(半成品,如Hibernate);产品(开发软件);算法、设计模式
分析的可重用(最高级别,见不到代码):文档、规范、标准(ISO:CMM,CMMI)
可扩展性:


UML图
类(class) 用矩形框表示,分三层
第一层:类名,抽象类用斜体字
第二层:类的特性:字段和属性
第三层:类的操作:方法或行为
方法前的符号:“+”表示public,“-”表示private,“#”表示protected

接口:右边的“飞翔”
顶端有<<interface>>,第一层是接口名字,第二层是方法
接口的另一种表示法:俗称棒棒糖表示法,就是类上面的一根棒棒糖(圆圈+实线)
圆圈旁为接口名称,接口方法在实现类中出现

继承:用空心三角+实线
实现接口:空心三角+虚线


类与对象之间的关系(6种):
关联 Association:一个类受另一个类影响(实线)
聚合关联 Aggregation:弱'拥有'关系,A对象可以包含B对象,但B不是A的一部分(空心菱形+实线箭头)[DPE]
(DPE 表示这句话来自《设计模式》)
组合关联 Composition:(也叫合成,组成)是一种强的‘拥有’关系,体现严格的部分和整体的关系,
部分和整体的生命周期一样[DPE](实心菱形+实线箭头)
组合图形的基数:表明这一端的类可以有几个实例,(一只鸟有两个翅膀)如果有无数个实例,则用n表示
关联关系、聚合关系也可以有基数
依赖 Dependency :一个类需要另外一个类(X需要Y,则X的修改Y也要跟着修改) (虚线箭头)
泛化(继承) (实心菱形+实线)
实现 (实心菱形+虚线)



UML 4+1 图
1:用例图 描述系统中有哪些用户可用的功能
4:逻辑图 将问题中的一些名词提取出来,形成系统中对应的类,表示之间的关系。
过程图 表示系统对象间的交互
实现图 系统中组件与组件之间交互
部署图 软件系统真实运行过程的物理描述


静态(系统结构):
类图
对象图
构建图
部署图
动态(系统行为):
顺序图 (时序图)
协作图
状态图
活动图
用例图



day02:
面向对象的7大基本设计原则

程序设计:没有最好,只有最适合。寻找平衡点。

1. LSP(The Liskov Substitution Principle ,替换原则)
父类出现的地方,子类都可出现。
子类或实现类与父类都是可以互换的。
子类不能添加任何父类没有的附加约束
子类对象必须可以替换父类对象

2. OCP (The Open-Close Principle,开闭原则)
要关联抽象,不要关联具体,抽象可扩展。
扩展是开放的,更改是封闭的

3. SRP(The Single Responsibility Principle,单一职责原则)
依赖不同的具体类,不要将不相关的方法放到一个具体类中,然后具体类再关联。
一个类,应该仅有一个引起它变化的原因
当需求变化时,该变化会反映为类的职责的变化(如果有多个职责,引起变化的原因就会有多个)

4. ISP(The Interface Segregation Principle,接口隔离原则)
具体类不要实现无关接口中的方法,应使用具体类实现多个接口。
避免肥接口,以一个类实现多个接口,而各客户仅仅获知必须的接口
本质:
使用多个专门的接口比使用单一的接口好
一个类对另一个类的依赖性应当最小化
避免接口污染(Interface Pollution)(使用不必要的功能)

5. DIP(The Dependency Inversion Principle,依赖倒置原则)
高层依赖于抽象,底层继承/实现于抽象。
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
细节应该依赖于抽象,而抽象不应该依赖于细节
针对接口编程,不是针对实现编程

6. CARP(Composite/Aggregate Reuse Principle,组合/聚合复用原则)
尽量使用组合/聚合,而不是使用继承来达到复用目的
继承的缺点:会带来不必要的方法
组合/聚合的解决方案
组合:部分的更改会影响整体的生命
***:部分的更改对整体的影响不大

7. LoD(Law of Demeter,迪米特法则)
类间最少通信原则,采用中间类。
也称最少知识原则。一个对象或模块应该和其它对象和模块尽量少的通信


GoF(Gang of Fout) 23种经典设计模式
创建型 结构型 行为型
类 Factory Method 工厂方法 Adapter_Class Interpreter
Template Method
对象 Abstract Factory 抽象工厂 Adapter_Object Chain of Responsibility
Builder Bridge Command
Prototype 原型 Composite Iterator
Singleton 单例 Decorator 装饰 Mediator
Facade Memento
Flyweight Observer
Proxy State 状态
Strategy
Visitor

单例模式:
当多个对象需要共享同一个对象时;
原型模式:
对扩展开发,对修改关闭;
工厂模式:
客户需要某个产品,能够根据客户要求取得产品给客户;
状态模式:
当需要对某个对象内部状态改变时,使用;
装饰模式:
当需要对某个对象动态添加新功能时,可以用;
适配器模式:
只需要对接口中的一小部分方法重新定义,又不希望将接口中的所有方法实现,
这时可以使用;
观察者模式:
当主题对象改变时,需要通知所有的观察者,这时可以使用;
命令模式:
将用户发出命令以对象形式传递,通过参数可改变命令对象的状态;
UE4_SpeedTree Shader源码分析 目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler-&gt;SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene-&gt;UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S... 阅读详情

相关推荐

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

UML类图

聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例。3、动态行为图:交互图(时序图与协作图)、状态图、活动图。4、类图是描述类与类之间的关系的,是UML图中最核心的。关联关系实际上就是类与类之间的关系,他是依赖关系的特例。2、静态结构图:类图、对象图、包图、组件图、部署图。实现关系实际上就是A类实现B类,他是依赖关系的特例。4、类图-关联关系(Association)也是整体与部分的关系,但是整体与部分不可以分开。依赖、泛化(继承)、实现、关联、聚合和组合。

CB_Beginner的博客 708

别再踩坑了!QT5.15.2配置Android开发环境保姆级避坑指南(含Java8、SDK Tools版本选择)

本文提供QT5.15.2配置Android开发环境的详细避坑指南,重点解决版本锁定、SDK工具选择和QtCreator配置等常见问题。通过实测推荐的Java8、Android SDK Tools版本及NDK配置,帮助开发者高效完成环境搭建,避免隐性冲突和配置失败。

weixin_42537919的博客 240

【UML用户指南】-07-对基本结构建模-公共机制

注解 (note)是附加在元素或元素集上用来表示约束或注释的图形符号。在图形上,把注解画成带有一个折叠角的矩形,在矩形中填写文字的或者图形的注释。 衍型 (stereotype)是对UML的词汇的扩展,用于创建与已有的构造块相似但针对特定问题的新种类的构造块。在图形上,把衍型表示成用双尖括号(«»)括起来的名字,放在其他的元素名之上。作为一种选择,可以用一种与衍型相关的新图标来表示被衍型化元素。 标记值 (tagged value)是衍型的一种特性,允许在带有衍型的元素中创建新的信息。在图形上,把标记值

宣晨光 1874

基于wxWidgets框架,使用DialogBlocks建立OpenGL界面

前言 之前公司要求使用wxWidgets做GUI,基于OpenGL图形内核,开发三维可视化工具。目前初步开发工作基本已经完成,剩下都是完善了。这里记录一下最开始的框架搭建过程(当然是简化版啦)。wxWidgets结合OpenGL开发可以实现跨平台应用,再结合CMake和VS Code,整体开发工具用习惯了会感觉非常顺手。 界面编辑 首先,使用DialogBlocks新建一个工程,这里工程目录...

cyberobot的博客 2751

VS2022+Qt6保姆级环境配置指南:从插件安装到项目互通全流程

本文提供VS2022与Qt6深度整合的全流程指南,涵盖环境配置、插件安装、项目互通等关键步骤。详细解析编译器版本匹配、跨IDE协作方案及效能优化技巧,帮助开发者高效搭建C++界面设计开发环境,实现软件项目无缝互通。

zero1的博客 735

OOAD UML学习总结

day01: 面向对象 通过封装、继承、多态,把程序的耦合度降低,使程序灵活、容易修改、容易复用。 面向对象=对象 + 类 + 消息 + 继承 + 多态 面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动 软件开发组越大,组中每个成员的生产率就越低 --...

j2ee的学习 245

【经验&技巧】如何在ADS中导入示波器的时域波形?

从示波器中导出的时域波形数据,需要按照固定的格式进行修改,并通过Display dataset对话框导入ADS。

一只豌豆象的博客 1575

UML 类图知识概括

设计模式UML 类图知识概括UML类图使用UML 基本介绍UML 图UML 类图关系 UML类图使用 ) 具体参数说明: Note:对象UML 进行注释说明 Class:表示类,可以添加属性和方法 Interface:表示接口,可以添加抽象方法 Dependency:表示依赖(使用) Association:表示关联 Generalization:表示泛化(继承) Realization:表示实现 Aggregation:表示聚合 Composite:表示组合 UML 基本介绍 UML——Unifi

weixin_41005188的博客 1410

【新版系统架构】系统架构设计师教程全篇知识点提炼

信息系统的5个基本功能:输入、存储、处理、输出和控制信息系统的发展:诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段信息系统的分类:传统的信息系统分为:业务(数据)处理系统、管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OAS)等5类信息系统的生命周期:1、产生阶段2、开发阶段(总体规划、系统分析、系统设计、系统实施、系统验收阶段)3、运行阶段4、消亡阶段信息系统建设原则:1、高层管理人员介入原则。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1万+

【ComfyUI】Z-Image 基础文生图 + 单LoRA

本文介绍了一个基于ComfyUI的Z-Image Turbo基础文生图工作流,采用轻量化UNet模型配合Qwen Image文本理解模型与LoRA风格注入,实现从文本到图像的快速生成。工作流结构清晰,包含模型加载、文本编码、采样解码等标准节点,在人物生成、构图稳定性和出图速度方面表现均衡。通过调整Prompt可控制生成内容,适合日常创作、教学演示及扩展进阶应用。

Mr数据杨 931

开发时人越多效率越低!(如何组织项目组结构)

开发时人越多效率越低! 昨天看《人月神话》,看到第五章,合上书就睡觉了。 今天回忆一下,做个阶段性的读书笔记: 开发人员越多,工作量就越大,效率越低——因为人员的沟通和协调要花费很大的成本——基本是双曲线的关系; 如果一个项目进度落后,那么增加新手反而会起到反效果。 作者认为man-month是虚无缥缈的神话,用人月来估算工作量是荒谬的,因为这隐喻着人与月可以互换——实际上...

无名刀客 774

「深度学习之优化算法」(五)差分进化算法

每次迭代将先进行变异操作,选择一个或多个个体的基因作为基,然后选择不同的个体的差分来构成差分基因,最后将作为基的基因与差分基因相加来得出新的个体。,大喊一声,进化吧,魔王兵i的基因改变了。交叉率CR,影响基因取自变异基因的比例,由于至少要保留一位自己的基因和变异的基因导致CR在该问题上对算法性能的影响不大(这个问题比较简单,维度较低,影响不大)。与遗传算法同为进化算法的差分进化算法,它们的操作(算子)也都非常相似的,都是交叉,变异和选择,流程也几乎一样(遗传算法先交叉后变异,差分进化算法先变异后交叉)。

quanzhan_King的博客 1505

Uml用例图

在实际工作中,大部分程序员很少接触到需求分析,即使有需求分析,也是草草了事,没有用正规的方式来表达,所以一般程序员使用用例图的机会是不多的。但是却又常常在各种媒体上看见用例图,于是对一种常常出现,自己又不太熟悉的技术,会产生恐惧。如果说对MDA或者CORBA这样的技术产生恐惧还是值得的话,对用例图产生恐惧是非常不值的。因为MDA和CORBA这样的技术也许要花上半年的时间才能够初步了解,而克服用例图

totoz的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UML概述和使用

一、什么是UML UML是一种可视化的面向对象建模语言。 UML描述了一个系统的静态结构和动态行为。 UML用图形方式表现典型的面向对象系统整个结构。 UML从不同的角度为系统建模,并形成系统的不同视图。 UML的基本构造块——事物、关系、图 二、UML中的事物 2.1 结构事物 1、类(class):类是对一组具有相同属性、方法、关系和语义的对象描述。 2、接口(Interface):接口描述了一个类或构件的一个服务的操作集。 3、协作(collaboration):协作定义了一个交互,它是由一组共同工

LC的博客 1686

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

UML建模(一):UML图及事物关系

UML概述 UML(Unified Modeling Language)统一建模语言是面向对象软件的标准化建模语言。通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,通过统一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及用户可以方便地交流。UML由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制,UML的三种构造块:事物、关系和图 (事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物)。 .

Yingtaozi_0的博客 7808

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[NOTE] UML构成 - Jan 1, 2005

UML主要有三类元素:1) 基本构造块 (basic building block)2) 规则 (rule)3) 公共机制 (common mechanism)其中基本构造块又包括3种类型:1) 事物 (thing) 2) 关系 (relationship)3) 图 (diagram)其中事物又分为4种类型:# 结构事物 (structual thing)。UML中的结构事物包括类(class)、

RENEE - I.D. Myself! - 763

《UML用户指南》学习笔记(六)

转载:http://jeffrey.blogbus.com/logs/66085.html 第六章 公共机制第二章的UML介绍中,提到了UML的公共机制,分别是规格说明、修饰、通用划分和扩展机制。这一章针对修饰和扩展机制进行更详细的说明。①注解(note)注解是附加在元素或元素集上用来表示约束或注释的图形符号。注解可以含有文字或图解或者URL。使用原则:⑴应放置在对应元素附件,并使

微软新技术 1289

LIMUML04数据标注(note)

1 自训练2 众包数据编程 如启发式编程。

weixin_39107270的博客 542

OOAD 和UML经典总结

day01:面向对象    通过封装、继承、多态,把程序的耦合度降低,使程序灵活、容易修改、容易复用。    面向对象=对象 + 类 + 消息 + 继承 + 多态    面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动    软件开发组越大,组中每个成员的生产率就越低                    --Philippe Kahn,

gotohbu的专栏 1077

PlantUML 快速入门(二) UML 时序图

UML 序列图 序列图是仅次于类图的最常用 UML 图。 序列图将交互关系表示为一个二维图,纵向是时间轴,时间沿竖线向下延伸;横向轴代表了在协作中各个角色,一般是一个 Class 的对象,用一条虚线代表各角色的生命线,生命线上用矩形竖条表示是否处于活跃状态。对象之间可以发送同步或异步消息。 相对于类图,序列图可能更能体现 PlantUML 的价值 同步消息 @startuml Alice -&gt; Bob: Hi Bob --&gt; Alice: Hi Alice -&gt; Bob: Is thi

移动端开发干货分享 1万+

解析九大UML建模图形用法

在学习UML建模工具的过程中,经常会遇到UML建模图形问题,这里和大家分享一下九种UML建模图形的相关知识。相信通过本节的学习你对UML建模图形一定会有全面的认识。 简单例析UML建模图形 UML包括了一些可以相互组合图表的图形元素。 1.类图 首先看一下UML建模图形中的类图。一个类(class)是一类或一组具有类似属性和共同行为的事物。 矩形方框代表类的图标,它被

九九的专栏 3637

Learning Note【UML基础练习-概念类图】

UML类图概念讲解(一) 来源:UML建模 发布时间:2013/7/27

八面你不要怕困难哟喂啊喂 1186

捣鼓PlantUML(三、时序图)

简单介绍时序图(Sequence Diagram),又名序列图、循序图、顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。PlantUML使用->箭头将一条消息连接两个对象(参与者)。对象本身不需要特别声明。如果想使用虚线箭头,则使用–>。箭头方向调转<

To build a better world ! 6万+

《UML用户指南》学习笔记(二)

转载:http://jeffrey.blogbus.com/logs/65630.html 第二章 UML介绍UML(Unified Modeling Languag) 统一建模语言①UML概述⑴UML用于对软件进行可视化、详述、构造和文档化。⑵UML是一种图形化语言。⑶UML是一种标准语言,可以精确的、无歧义的、完整的描述模型。一个开发者用UML绘制了一个模型,另一个开发者可

微软新技术 1350

UML分析与设计(1)——四种事物

事物是对模型中最有代表性的成分的抽象。UML中有四种事物:    1.结构事物(structural thing) ①类(class) 类是具有相同属性、相同操作的一组对象的集合的抽象描述。在图形上,类用一个矩形来表示,通常矩形中写有类的名称、类的属性和类的操作。②组件(component)组件是系统中物理的、可替代的部件,是一个描述了一些逻辑元素(如类、接口)的物理包。在图形上,组件由一个带有小...

Saurfang 8329
上一篇: 05. Core Java note
下一篇: 07. Xml note
dev_J2EE
博客等级 码龄18年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值