OOAD学习笔记

来源:互联网 发布:金庸群侠传 for mac 编辑:程序博客网 时间:2024/06/06 12:35

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对象就可以创建新对象,代理模式是在委托类前
使用一个代理类处理程序。**

原创粉丝点击