2020 软件工程 -面向对象分析、设计
1.面向对象技术
面向对象技术基于对象概念,以对象为中心,以类、组合、继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
面向对象=对象 + 类 + 消息 + 继承 + 多态
面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动
面向对象是软件方法学的返璞归真:面向用户
2.面向对象技术优点
? 沟通
? 稳定
? 复用
? 改善软件结构(模块化与封装),提高软件灵活性
? 增加可扩展性
? 支持增量式开发,支持大型软件开发
3.面向对象vs过程
依赖:依赖是一种使用关系,它说明一个事物的变化可能影响到使用它的另一个事物

三层架构的包图
? 每层对应一个包:用户界面包、业务处理包、数据访问包
? 再把各层中的一些公共部分提出来:权限管理包、异常处理包
2.1.2 硬件体系结构设计
? 指出系统中的类和对象涉及的具体程序或进程。
? 指明系统中配置的计算机和其他硬件设备。
? 指明系统中各种计算机和硬件设备如何进行相互连接。
? 明确不同代码文件之间的相互依赖关系。
硬件体系结构设计:部署图
? 并不是所有的系统都需要建立配置图,一个单机系统只需建立包图或构件图
2.2 详细设计
主要包括对象设计和对象持久化设计(数据库设计)
2.2.1 对象设计
对属性和操作进行建模
属性建模:确定属性的类型和数据结构、可见性等
操作建模:确定操作的可见性、参数、返回值、算法等
2.2.2 对象持久化设计
关注的是对象数据如何存储
对象持久化设计的方法:基于关系数据库存储
关系数据库与面向对象中的概念存在一定的对应
3.面向对象设计原则
? 单一职责原则
一个类只完成某一类功能(职责);尽可能避免出现一个“复合”功能的类——在同一个类中完成多个不同的功能
? 开放-封闭原则
软件实体类(类、模块、函数等)应该是可以扩展、但是不可修改的
基本思想:不用修改原有类就能扩展一个类的行为
? 接口隔离原则
采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口更好
? Liskov替换原则
子类应当可以替换父类并出现在父类能够出现的任何地方
核心思想:子类型必须能够替换它们的基类型,该原则能够知道设计人员正确地进行类的继承与派生
? 依赖倒置原则
应用系统中的高层模块不应依赖于底层模块;抽象不应该依赖于细节实现,实现细节应该依赖于抽象
如何遵守设计原则:一些成熟的设计模式可以帮助我们解决实际问题,并且符合设计原则
4.设计模式
设计模式:描述一个在我们周围不断重复发生的问题,以及该问题的解决方案。
使用设计模式,我们就能一次一次地利用已有方案而不必做重复劳动。
? 广义上讲:设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。
? 狭义上讲:设计模式就是对特定问题的描述或解决方案,往往直接对应一段程序代码。
作用:记录和提炼了软件人员在面向对象软件设计中的成功经验和问题的解决方案,是系统可复用的基础。正确地使用设计模式,有助于快速开发出可复用的系统。
意义:优化的设计经验、极高的复用性、丰富的表达能力、极低的耦合度
设计模式的四个基本要素:
? 模式名称:一个助记名
? 问题:描述了应该在何时使用模式
? 解决方案:描述了设计的组成成分,解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。
? 效果:描述了模式应用的效果及使用模式应权衡的问题。
GOF之23种设计模式:
? 创建型模式:创建型模式关注的是如何创建对象而不是直接实例化对象
抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式
? 结构型模式:结构型模式关注的是如何将一组对象组合成更大的结构
适配器模式、外观模式、桥接模式、组合模式、装饰模式、享元模式、代理模式
? 行为型模式:行为型模式关注的是如何定义系统内对像间的通信,以及复杂程序中的流程控制
迭代器模式、观察者模式、策略模式、职责链模式、命令模式、解释器模式、中介者模式、备忘录模式、状态模式、模板方法模式、访问者模式
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!