`
javaEE_dev
  • 浏览: 26393 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多

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

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


分享到:
评论

相关推荐

    计算机软件编程学习笔记.rar

    06. OOAD & UML note.txt 07. Xml note.txt 08. JDBC note.txt 09. Hibernate note.txt 10_1. HTML&CSS note.txt 10_2. JavaScript note.txt 11. Servlet note.txt 12. JSP note.txt 13. AJAX Note.txt 14. Struts1....

    达内培训五个月以来的笔记:tarena_note

    06. OOAD & UML note.txt 07. Xml note.txt 08. JDBC note.txt 09. Hibernate note.txt 10_1. HTML note.txt 10_2. JavaScript note.txt 11. Servlet note.txt 12. JSP note.txt 13. AJAX Note.txt 14. Struts1.x ...

    达内学习笔记全套

    OOAD & UML note》、《07. Xml note》、《08. JDBC note》、《09. Hibernate note》、《10_1. HTML note》、《10_2. JavaScript note》、《11. Servlet note》、《12. JSP note》......还有的就不一一列出了,总之...

    OOAD & UML.rar

    **UML(统一建模语言)是面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)的重要工具,用于软件开发中的可视化建模。本资料“OOAD & UML.rar”包含英文PPT,提供了丰富的学习资源,旨在帮助理解和...

    OOAD & UML

    ### OOAD & UML #### 一、基本概念 **OOAD**,即面向对象的分析与设计(Object-Oriented Analysis and Design),是软件工程领域的一种重要方法论,主要应用于软件开发的过程中,以帮助开发者更好地理解问题域,并...

    北京圣思园OOAD与UML教学视频(14集)

    教程名称:北京圣思园OOAD与UML教学视频(14集)课程目录:【】002_UML简介【】003_用例图【】004_类图1【】005_类图2【】006_对象图【】007_组件图【】008_部署图【】009_时序图【】010_协作图【】011_类图3【】012...

    UML&OOAD&Rose

    通过学习和掌握UML、OOAD以及工具如Rational Rose,开发者能够更好地理解和表达复杂系统的结构和行为,提高软件开发的效率和质量。UML的应用贯穿整个软件开发生命周期,从需求分析到设计、编码、测试和维护,都有其...

    OOAD与UML资料和笔记.zip

    **OOAD(面向对象分析与设计)与UML(统一建模语言)是软件开发领域中的核心概念,尤其在大型复杂系统的设计与实现中扮演着重要角色。** **面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)**是一...

    OOAD与UMLpdf文件

    **OOAD(面向对象分析与设计)与UML(统一建模语言)是软件开发领域中的核心概念,它们在现代软件工程中起着至关重要的作用。面向对象编程思想的引入,使得复杂系统的构建变得更加模块化、可维护和可扩展。UML作为...

    Ooad_uml 与xml 串讲

    Ooad_uml 与xml 串讲 Ooad_uml 与xml 串讲 Ooad_uml 与xml 串讲

    UML&OOAD企业高端培训

    UML(统一建模语言)与面向对象分析与设计(OOAD)是软件工程领域中不可或缺的重要工具和技术,尤其在企业级项目开发中,它们的应用使得复杂系统的理解和设计更为直观和有效。本高端培训旨在深入解析UML的核心概念,...

    OOAD+UML学习笔记

    对OOAD和UML指导思想的基本概述,欢迎大家下载学习,也希望各位继续完善

    UML和模式应用].Applying.UML.and.Patterns

    [UML和模式应用].Applying.UML.and.Patterns 公认的OOAD最好的入门书籍,马丁福勒大力推荐的

    OOAD and UML

    # OOAD(面向对象分析与设计)与UML(统一建模语言) 面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中的一种方法,它强调以对象为中心来理解和表达系统的需求,通过分析和...

    OOAD 与 UML 简介.ppt

    第1章 OOAD 和UML 简介 第2章 用例图 第3章 类图 第4章 动态模型 第5章 案例分析

    OOAD和uml

    **面向对象分析与设计(OOAD)与统一建模语言(UML)** 面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中的一个重要阶段,它结合了面向对象编程的概念,如类、对象、继承、多...

    OOAD与UML(ppt)

    **OOAD(面向对象分析与设计)与UML(统一建模语言)是软件开发领域中的核心概念,尤其在大型复杂系统的设计与实现过程中扮演着重要角色。** 面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)是一...

    OOAD与UML学习资料

    ### OOAD与UML核心知识点解析 #### 面向对象概念与方法的理解与掌握 面向对象(Object-Oriented,简称OO)是一种强大的系统建模技术,它以对象为核心,将现实世界中的实体抽象为类,从而进行系统的设计与编程。...

    OOAD+UML 学习笔记

    ### OOAD+UML 学习笔记 #### 面向对象的基本概念 面向对象(Object-Oriented Analysis and Design, OOAD)是一种软件工程方法论,它将面向对象的思想应用于软件开发过程中,以提高软件的灵活性、可复用性和可维护...

Global site tag (gtag.js) - Google Analytics