OOAD 和UML经典总结

学习提速专享!AI工具全家桶免费用 限时购周边加赠Coding Plan Lite,解锁20+主流AI工具,写代码、查资料快人一步! 阅读详情

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

单例模式:
    当多个对象需要共享同一个对象时;
原型模式:
    对扩展开发,对修改关闭;
工厂模式:
    客户需要某个产品,能够根据客户要求取得产品给客户;
状态模式:
    当需要对某个对象内部状态改变时,使用;
装饰模式:
    当需要对某个对象动态添加新功能时,可以用;
适配器模式:
    只需要对接口中的一小部分方法重新定义,又不希望将接口中的所有方法实现,
    这时可以使用;
观察者模式:
    当主题对象改变时,需要通知所有的观察者,这时可以使用;
命令模式:
    将用户发出命令以对象形式传递,通过参数可改变命令对象的状态;

构建高效软件设计:OOADUML实战指南 本文还有配套的精品资源,点击获取 简介:面向对象分析与设计(OOAD统一建模语言(UML)是软件开发中关键的工具,有助于将现实世界问题转化为软件解决方案,并提供强大的软件设计能力。本指南从面向对象编程的基本原理出发,探讨了OOAD的基础概念以及如何通过UML的各种图表来可视化设计过程。学习OOADUML涉及需求收集、分析、设计、实现测试等步骤,重点介绍如何将理论与实... 阅读详情

相关推荐

UML类图常用用法

一.UML类图图示样例 ps:以上图示来自程杰大话设计模式一书中(如有侵权,告知秒删) 二.对上述图片中的内容具体分析 1.类的表示 首先来看动物矩形框,它代表一个类。 类图分三层: 第一层显示类的名称,如果是抽象类,则用斜体显示; 第二层是类的特性,也就是属性; 第三层是类的操作,也就是方法。 属性、方法前面的 '+'表示public ; ‘-’ 表示private; ‘#’ protected。 2.接口的表示 接口的表示与类有些区别,接口的顶端有<>显示。 第一行是接口

MrYushiwen的博客 2577

UML类图

1.类图基础属性 -表示private #表示protected ~表示default,也就是包权限 _下划线表示static 斜体表示抽象 2.类与类之间关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(De...

weixin_33696822的博客 289

UML类图的表示方式总结

一个类图的基本画法 一个类用一个矩形框表示,这个矩形框分为三部分,也就是三个层,它代表一个类(Class)。如下图所示: 类图分为三层“: 第一层:显示类的名称,如果是抽象类,则用斜体表示; 第二层:类的特性,通常就是字段属性; 第三层:类的操作,通常是方法行为。 符号:”“+”代表public,  “-”代表private   "#"代表protected.

hjwxy147258的专栏 1750

提升功力的基本书籍,一定要多读几遍

《asp.net设计模式》 此书看了有三遍,中国第一家土地流转交易平台的大框架就是根据本书重构而来,非常稳定。 校园通也是采取此种推荐的架构 tinyframe也是据此而来 《Microsoft .NET企业级应用架构设计.pdf》 微软的架构技术,值得参考。 《企业集成模式.设计、构建及部署消息传递解决方案.pdf》 SOA解决方案,值得多看几遍,然后实践。 《...

weixin_30339969的博客 118

面向对象分析与设计(第3版)下载仓库

面向对象分析与设计(第3版)下载仓库 去发现同类优质开源项目:https://gitcode.com/ 简介 《面向对象分析与设计(第3版)》是由UML创始人Grady Booch撰写的重要作品。本书内容基于牢固的理论基础,同时注重实际应用,适合架构师、软件开发者等软件工程实践者阅读。 内容概述 本书分为两个主要部分:理论部分应用部分。 理论部分 在这一部分,作者深刻剖析了面向对象分析与设计(O...

gitblog_06768的博客 617

UML 统一建模语言

UML 统一建模语言,被广泛认可的图形化建模标准,它可以帮助开发人员在面向对象设计(OOAD)过程中标识元素、构建模块、分析过程,并可以通过文档来注明系统中的重要细节 ...

白水的博客 4989

OOADUML

1.OOAD(Object Oriented Analysis and Design)面向对象分析设计 --OOA 分析阶段,主要解决以下问题:   --建立对业务问题域的清晰视图   --列出必须要完成的核心业务   --针对问题域建立公共词汇表   --列出针对此问题域的最佳解决方案   --要解决的核心问题:What to do --OOD 设计阶段,主要解决以下问...

afan3862的博客 1103

JAVA 培训题库-OOADUML

一、OOADUML_选择题1. 请按软件开发的步骤对下列选项排序:( )A  测试B  分析C  实现D  需求E  设计参考答案:DBECA2. 以下哪些图属于静态建模:( )A  用例图B  协作图C  类图D  对象图参考答案:CDA3. 以下关于UML中的相关概念解释,请填写:( )是站在用户的角度上去展示系统的功能?     

wxh2008hyl的专栏 1613

UMLOOAD”免费讲座(张江)

方便的朋友可以去看看                                                                 “UMLOOAD”  讲座简介  本讲座 是 Rational用户组,UML软件工程组织,火龙果软件工程技术中心(北京、上海)联合IBM developerWorks ,IBM软件部,每月定期面向软件开发团队推出的软件工

Hsu Tsing 好好学习,天天快乐 1257

OOAD利器之UML基础

UML:Unified Modeling Language,即统一建模语言,简单地说就是一种有特殊用处的语言。本文是我初步学习UML的学习笔记,对于我们菜鸟码农来说,让我们做设计的可能性不大,但至少能看懂是必要的。 一、所谓模型 1.1 模型是对现实的简化   模型是提供系统的蓝图,模型可是包括详细计划。也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述。因而...

weixin_34032621的博客 250

OOD与UMLOOAD详解

1.  学习目标: 1) 理解与掌握面向对象的概念与方法 2) 使用UML 3) 完成面向对象的分析与设计工作 4) 了解OO的设计原则及一些典型的设计模式 使用比较的UML工具一般是:Jude starUML:http://staruml.sourceforge.net/en/

AHuier_Techblog :如果我不在写代码,你就 @me 2202

漫谈UML OOAD and RUP

独孤木专栏之三> UML, OOAD and RUP (上)如果你没听过UML,容我在此做个解释。这三个字就是U Must Learn的缩写,指的就是你一定得学(you must learn),如果有下一句,应该是You Must Pay。这是几个大师级的人物,为了要把学术理论顺利转化成现金,所想出来的好点子。基本的想法是,如果可以弄出一套理论,让全世界想要学软件开发的人都得要来学习,那他们光卖这

pacman2000的专栏 1813

OOADUML笔记

UML基础介绍 1.UML的定义 统一建模语言(UML)是一种图形化的语言,它可以帮助我们在OOAD过程中标识元素、构建模块、分析过程并可通过文档说明系统中的重要细节 2.OOAD OOAD是根据OO的方法学,对软件系统进行分析设计的过程 —— OOA 分析阶段 —— OOD 设计阶段 3.面向对象 面向对象( Object-Orientation ,简称OO)是

yuyin86的专栏 959

OOAD复习笔记

OOAD学习目标:1.A critical,fundamental ability in OOAD is to skillfully assign responsibilities to software components.(面向对象分析设计种至关重要的的能力是熟练地为软件部件分配职能)2)GRASP patterns ,nine fundamental priciples in object...

LHF_debug的博客 2324
上一篇: xml经典总结
下一篇: java 经典总结
gotohbu
博客等级 码龄19年 97粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值