面向对象设计----软件设计师


面向对象的基本概念❤❤❤❤❤


采用面向对象的软件开发,通常由面向对象分析,面向对象设计,面向对象实现
1 面向对象分析OOA:
获取对应用问题的理解,主要任务是抽取和整理用户需求并建立问题域精确模型 架构师主要关注系统的行为
2 面向对象设计OOD:

采用协作的对象 对象的属性 方法说明软件解决方案的一种方式,,强调的是定义软件对象和这些软件对象如何协作来满足需求,延续了面向对象分析
在侧重点上,面向对象分析侧重于理解问题,描述软件要做什么,而面向对象设计侧重于理解解决方案,描述软件要如何做。 (2) 面向对象分析一般只考虑理想饿设计,不关心技术和实现层面的细节,而面向对象设计需要得到更具体、更详尽,更接近于真实的代码的设计方案。
OOP机制



面向对象开发技术

面向对象设计






面向对象实现:

程序语言基础
在机器层面上 所有的数据都是二进制的 在应用领域中数据可以由不同的形式与运算,程序中的数据以及进行了抽象不同的数据需要不同的大小的存储空间,因此为程序的数据规定数据类型(取得取值范围后)后们可以更合理安排存储空间.
不同类型的数据其取值方式不同和运算也不同 引入类型信息后 在对源程序进行编译时就可以对参与表达式求值的数据对象进行合法性检查
类:
对象
它即包括数据(属性)属性也叫状态和数据成员变量 方法(函数 服务) 以及对象名 三个部分组成
对象的状态 包括对象的所有属性(一般时静态的)以及每一个属性当前的值(一般时动态的) 为了将一个对象和其他所有对象区分开来,我们会给他一个标识
所修饰的成员是属于类的而不是对象,静态数据成员对该类只有一份,该类中的所有对象共享静态数据成员,可被改类中的所有方法访问,其值可以被修改,但是无论是通过对象还是类对静态数据成员值的修改,都会反应到整个类,类的静态方法只能访问该类的静态数据成员
消息是对象发出的服务请求 一般包含提供服务的对象标识 服务标识 输入信息应答信息
对象之间通信的一种构造 当一个消息发送给某个对象 包含要求接受对象去执行某些活动的信息.
方法重载:
继承与泛化:
继承是父类和子类之间共享数据的方法和机制,这是一种类之间的关系,在定义一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类的内容作为自己的内容并加入新的内容,可以存在多重继承的概念
一个父类可以有多个子类 这些子类都是父类的特例 ,父类描述了这些子类的公共属性和方法
一个子类可以继承它的父类的属性和方法 这些书信和操作在子类中不需要定义 子类可以定义自己的方法和属性
子类有一个爹 单重继承 多个爹多重继承 使用它可能造成子类中存在二义性的成员
继承可以多继承 一个子类有多父类 java 单继承 c++ 多继承
在uml类图中 如果父类中已有方法名在子类中不出现目标是子类继承父类中的方法如果子类中出现 就表示子类在继承父类接口定义的前提下 覆盖了其方法
封装:
对象封装了属性和行为 封装是一种信息隐藏的技术 目的时使对象的使用者和生产者分离模式对象的定义和是西安分开,仅对外公开接口
封装使得开发人员不需要知道一个软件组件内部如何工作 开发效率和你是否使用封装没关系
多态
通用多态:
包含多态: 在许多语言中都存在 最常见的例子 子类型化 子类型化:即一个类型是一个类型的子类型
特定多态
过载多态: 同一个名字在不同的上下文中所代表的含义不同 (考的最多)
绑定
动态绑定
当一个对象发送消息请求服务时候 要根据接受对象的具体情况来将请求的操作和实现的方法进行连接
静态绑定
在一些语言中 绑定时在运行时进行 即一个给定的过程调用和响应调用需执行的代码的结合直到调用发生时才进行
面向对象设计的七大原则


单一责任原则
开放-封闭原则
里氏替换原则
依赖倒置原则
接口分离原则
共同重用原则
共同封闭原则
一个包中的类产生影响 包中所有类都产生影响 但是对于其他包不产生印象
面向对象分析
认定对象
组织对象
描述对象间的相互作用
确定(基于)对象操作
定义对象的内部信息
面向对象程序设计
面向对象测试!
算法层
类层
模板层
系统层
杂题
UML

采用UML对系统进行建模的时候,首先确定系统边界,识别主要用例,建模用例图
然后对图中的复杂用例采用活动图进一步建模,以对用例中执行过程中对象的如何通过消息相互交互进行建模,系统的领域模型采用类图进行建模,交互关系才有顺序图交互概览图等进行建模

类图
展示一组对象 接口 协作 他们之间的关系 ,面向对象的建模中 最常见的就是类图,给系统的静态设计视图
组件图
通信图❤❤❤
部署图
用来面向对象系统的物理方面建模的方法,展现了运行时处理节点以及其中构件的配置 展示系统软件组件和硬件组件之间的物理关系 ,在实施阶段使用
部署图给出了体系结构的静态实施视图,他与组件图相关,通常一个节点包含一个或多个组件,其依赖关系类似包图
用例图❤❤❤❤❤
类图❤❤❤❤❤

泛化关系
研发部和其他部门组成公司 研发部没了 公司还在 所以是 部分离开整体依旧能用 空心菱形
组合关系
顺序图❤❤❤❤
状态图❤❤❤
活动图❤❤❤
设计模式❤❤❤❤❤

每一个设计模式描述一个在我们周围不断重复的问题,以及该问题的解决方案的核心 这样我们就不许重复劳动只需要重复该方案,它的核心在于提供相关问题的解决方案

创建性模式

结构性模式

行为性模式


结构性模式
工厂模式

抽象工厂模式

原型模式

单例模式 Singleton

生成器模式

适配器模式Adapter

将类的接口和转换成客户希望的另一个的接口,舍得原本由于不兼容而不能在一起工作的那些类可以在一起工作
桥接模式Bridge

组合模式 Composite
将对象组合组合成树形结构以表示"部分-整体"的层次结构使得用户对单个对象和组合对象的使用具有一致性
希望用户忽略组合对象和单个对象的不同,用户将统一的使用组合结构中所有对象

装饰模式Decorator
动态的给一个对象添加一些额外职责,需要给某个对象而不是整个类添加一些概念时候使用


命令模式Command
将请求封装在对象中,他就可以作为参数来传递 ,也可以被存储在历史列表中 或者以其他方式使用 对请求排队或记录请求日志,以及支持可撤销的操作
策略模式 Strategy
定义一系列的算法 把他们一个个封装在一起 并使他们可以相互替换 这一模式是的他们可以独立与使用他们的客户而变化
代理模式 Proxy
通过提供与对象相同的接口来控制这个对象的访问,已使的在确实需要这个对象的时候才对他进行创建和初始化
行为性模式
观察者模式
定义对象将的一种一对多的依赖关系,当一个对象的状态发生改变的时候 所有依赖它的对象都得到通知并自动更新
状态模式 State
使得一个对象在其内部状态改变时通过调用另一个类中的方法改变其行为,使得这个对象看起来如同修改了它的类
访问者模式:Visitor
一个visitor对象是一个多态accept操作的参数,这个参数作用域该Visitor对象的访问对象
享元模式 FlyWeight
运用共享技术有效支持大量细粒度的对象 减少对象数量 从而达到较少的内存占用并提升性能 减少存储开销
迭代器模式 Iterator
提供一种方法顺序访问一个聚合对象中的各个元素而又不需要暴露对象的内部表示
外观模式 Facede




浙公网安备 33010602011771号