OOAD学习笔记

OOAD面向对象编程 面向对象设计
OOAD是一套集编程思想、方法、原则、模型、
解决方案为一体的编程模式,贯穿整个分析、设计
编程、测试、维护。

对象是什么
1、是一个客观存在的、唯一的实体.
2、是面向对象编程过程中分析和解决问题的出发点与基础
3、拥有自己的标识、数据和行为。
4、可以简单或复杂。
5、可以抽象或具体。
6、在oop中是一个动态实例
7、如Student-id,name,age(attribute)


1、类是对象的模板
2、对象通过类实例化产生
3、一个类可以产生多个对象

面向对象分析方法
1、建立针对业务问题域的清晰视图
2、列出系统必须要完成的核心任务
3、针对问题域建立公共词汇表
4、列出针对此问题的最佳解决方案

面向对象设计
1、如何解决具体的业务问题
2、引入系统工作所需各方面的支持元素
3、定义系统的实现策略

OO面向对象的特点
1、抽象 忽略掉一个对象或实体的细节,而只关注你本质特征
2、封装 目的:实现信息的隐藏
一、属性信息
二、行为的操作信息 隐藏方法实现的细节 代码重用
3、继承
一、子类可以继承父类的属性方法。
二、子类可以有自己的特性存在
4、多态 相同类域不同对象调用相同方法时的不同形式
一、子类继承父类,类实现接口
二、子类重写父类的同名方法,类实现接口中的抽象方法
三、父类的引用指向子类的对象,接口类型的引用指向具体实现类对象

重写/重载
    编译期多态:方法重载
    运行期多态:方法重写

OOP(面向对象设计)
类:属性 方法
抽象 实例化
事物 —–》类——–》内存中的对象

对象分为
    域对象:在整个对象的设计过程中,侧重于数据的封装/传递
        用来做数据处理的类 信息的载体。POJO JavaBean
    行为对象:侧重于行为的操作,逻辑的实现。此类对象
        常见于接口的实现类,抽象类的扩展类

类与对象之间的关系
    继承关系:is a
    依赖关系:类a对象并不需要存在有类型B的对象属性而是在使用时
        直接在方法中实例化B(new对象)来调用相关的业务方法来完成整个业务操作

关联关系:对象之间交互时的一种依赖关系,当一盒对象通过
    另一个对象的服务或操作时,两个对象便产生了关联

    类对象又可以分为聚合关系和组合关系

    聚合关系和组合关系的特点及区别

    1、聚合关系也称为has a关系  caontains a关系
    2、聚合关系表示事物的整体/部分关系较弱情况,
    组合关系表示整体/部分较强的情况
    3、聚合关系中,代表部分事物的可以属于多个聚合对象
    可以为多个聚合对象共享,而且可以随时改变它所从属的聚合对象
    代表部分事物的对象与聚合事物的对象生存期无关
    一旦删除了他的一个聚合对象,不一定随机删除部分事物对象
    一旦删除了组合对象,也就随机相应的代表部分事物的对象

    OOP过程中核心原则
        1、尽量能使用封装特性 就使用封装特性
        2、面向接口编程
        3、重组合/聚合 轻继承

    4、 抽象类和接口的选择问题
        1、语法角度
        Interface 
            属性:public static final
            方法:只能是抽象方法
            注意:可以没有任何方法
            作用:被类实现
        abstract class
            属性:正常属性
            方法:可以是普通方法,也可以是抽象方法
            注意:可以没有任何抽象方法
            作用:被类继承
        2、设计角度
            一个类可以实现多个接口但是一个类只能继承一个父类
            接口和抽象类的设计,都是在有意识地规避java不能多继承的操作
            接口是抽象类极致的抽象
        3、思想角度
            一、类进行抽象的时候是否关注属性
            二、尽量让问题域独立存在,根据操作选择合适的抽象类或接口

5、设计模式的定义和作用
定义:对软件设计问题的可重用的解决方案
作用:1、重用设计比重用代码更有意义,可充分利用已有的软件开发经验。
2、为设计提供共同词汇,方便交流和书写开发文档
3、降低错误的可能性
4、节省时间

好的软件系统设计应该至少具备以下三点
    可扩展性
    灵活性
    可插入性

面向对象设计原则
一、单一职责原则
类的职责要单一不能将太多职责放在同一个类中
二、开闭原则
对扩展开放,对修改关闭。软件的设计应该尽可能的使框架稳定而且
又容易满足不同需求,提高代码可用性,理论上希望能达到不能修改
源代码情况下扩展功能。

三、里氏代换原则
    在系统中 ,一个可以接受基类对象的地方必然可以接受一个子类对象
四、依赖倒转原则
    要针对抽象编程,而不是针对具体类编程
五、接口隔离原则
    使用多个专门接口来取代一个统一的接口
六、合成复用原则
    系统中尽量使用组合聚合关系,而尽量少用甚至不用继承关系
七、迪米特法则
    一个软件应当尽量少的与其他实体发生相互作用

设计模式
创建型模式:共五种:工厂方法模式,抽象工厂模式,单例模式、建造者模式、原型模式
结构型模式:共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式:十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式
状态模式、访问者模式、中介者模式、解释器模式

**总结:OOAD学习的一些总结,能使用父类的引用指向子类的对象就使用,使用父类的引用意味可以使用无数子类对象,
增加程序可扩展性,降低程序的修改,工厂模式后可以不用new对象就可以创建新对象,代理模式是在委托类前
使用一个代理类处理程序。**

你可能感兴趣的:(JAVA学习)