软件设计师(六)算法设计与分析+面向对象技术

算法设计与分析

1.算法的特性:有穷性,确定性,可行性,输入,输出

2.算法的表示方法:自然语言,流程图,程序设计语言,伪代码

3.递归算法求时间复杂度:展开法(将等式依次展开);代换法(用所猜测的值代替函数的解)

4.分治法将一个难以直接解决的大问题分解成一些规模较小的小问题各个击破):分解,求解,合并

5.动态规划法(将待求解问题分解成若干子问题分别求解,再根据子问题的解得到原问题的解;分解得到的子问题往往不是独立的):找出最优解性质并刻画其结构特性;递归【不一定是递归,for循环也可以】地定义最优解的值;以自底向上的方式求出最优值;根据最优值构造最优解,有中间存储对象

6.贪心算法(仅根据当前已有信息做出选择,重点考虑局部最优以达到全局最优):最优子结构;贪心选择性质

7.回溯法(以深度优先的方式系统地搜索问题):定义问题的解空间;确定解空间结构;深度优先的方式搜索解空间

8.分支限界法(以广度优先或以最小耗费优先的方式搜索解空间):队列式分支限界法;优先队列式分支限界法

9.概率算法(把随机性的选择加入到算法中,允许较小概率的错误来提高运行效率):数值概率算法;蒙特卡罗算法;拉斯维加斯算法;舍伍德算法

10.近似算法(放弃求最优解,而用近似最优解代替)衡量标准:算法的时间复杂度;解的近似程度

11.NP 完全性理论:研究计算问题难易以及一类特殊的难解问题的理论

12.P 类问题:能够以 O(nk)的时间运行一个确定性算法得到准确答案

13.NP 类问题:能够以 O(nk)的时间运行一个不确定性算法得到准确答案

14.NP 完全问题:能够证明用多项式时间的确定性算法得到准确答案

面向对象技术

1.面向对象技术:以客观世界的对象为中心,其分析和设计思想符合人们的思维方式,分析和设计的结果与客观世界的实际比较接近,容易被人们所接受

2.面向对象:对象(对象名、属性、操作),分类(所包含的方法和数据描述一组对象的共同行为和属性),继承(父类与子类之间共享数据和方法的机制),通过消息的通信(对象之间进行通信的一种构造)

3.多态:不同的对象收到同一消息产生完全不同的结果(重载+重写+类属)

4.绑定:把过程调用和响应调用所需要执行的代码加以结合的过程

5.动态绑定:当一个对象发送消息请求服务时,根据接受对象的具体情况将请求的操作与实现的方法进行连接

6.面向对象程序设计语言应支持:被封装的对象;类和实例概念;类间的继承性;多态

7.程序设计范型:人们在程序设计时所采用的基本方式模型;

8.面向对象的好处:

解决了产品质量与生产率之间的权衡;

使系统具有很高的灵活性和易扩充性;

能管理复杂性并增强伸缩性;

把某一领域分割成各种对象分析设计更合理;

从概念模型化到分析、设计、编码可以实现无缝传递;

通过封装进行信息隐蔽有助于建立安全的系统

9.典型的面向对象设计语言:Smalltalk,Eiffel,C++,JAVA

10.类的特征:同一个类的不同实例具有相同的数据结构和规律相同的行为;同一个类的不同实例可以持有不同的值因而可以具有不同的状态;实例的初始状态可以在实例化时确定

11.消息传递:使对象具有交互能力的主要模型

12.对象自身引用(this):值使得方法体中引用的成员名与特定的对象相关;类型则决定了方法体被实际共享的范围

13.虚拟函数:只给出方法的定义不给出实现过程,供其子类重置(overriding)

14.类属:类的模版;参数多态机制;不限定成员的类型,具体对象再赋予具体类型

15.类库:预先定义的程序库,以程序模块的形式按照类层次结构把一组类的定义和实现组织在一起

16.抽象类:无实例的类,以供继承

17.面向对象分析:认定对象;组织对象;描述对象间的相互作用;定义对象的操作;定义对象的内部信息

18.面向对象程序设计:设计分析模型,实现相应源代码

19.面向对象软件的测试:算法层,类层,模版层,系统层

20.面向对象的方法

OOA 方法:主题层,对象类层,结构层,属性层,服务层;

OOD 方法:问题域部件,人机交互部件,任务管理部件,数据管理部件;

Booch 的 OOD 方法:标识类和对象,确定他们的含义,标识他们之间的关系,说明每一个类的界面和实现;

OMT(面向对象建模技术):对象模型,动态模型,功能模型---分析,系统设计,对象设计,实现;

UML(统一建模语言):事务(结构事务、行为事务、分组事务、注释事务),关系(依赖、关联、泛化、实现),图(类图、对象图、用例图、交互图【序列图、通信图、时序图】、状态图、活动图、构建图、部署图【代码或系统在实施中的物理节点分布,组件之间的依赖关系类似于包依赖】)

组件图:一组组件之间的组织和依赖;部署图经常被认为是一个网络图

软件设计师(六)算法设计与分析+面向对象技术_第1张图片

21.设计模式四要素:模式名称,问题,解决方案,效果

22.设计模式分类:

创建型(抽象了实例化过程,帮助系统独立于如何创建、组合和表示它的那些对象,如Singleton 模式:保证类只能有一个实例)

结构型(采用继承机制灵活地组合类和对象以获得更大的结构)

行为型(使用继承机制在类间分派行为,描述对象或类的模式以及其通信模式,如 Observer 模式:一旦模型发生变化所有视图都会得到通知),如:责任链和迭代器模式

适配器模式既是类结构型模式又是对象结构型模式,与桥接模式类似的特征是,都给另一个对象提供了一定程度上的间接性,都涉及到从自身以外的一个接口向这个对象转发请求

23.UML

(1)顺序图(时序图):描述对象之间的时间顺序,体现为二维图,纵轴为时间,横轴为在协作中各个独立的对象

(2)用例图:从用户角度描述系统功能

(3)活动图:本质是一种流程图,描述了活动到活动的控制流

软件设计师(六)算法设计与分析+面向对象技术_第2张图片

24.设计模式说明

装饰器模式:用于为一个对象添加更多功能而不使用子类

桥接模式:将抽象部分与它的实现部分相分离,是它们都可以独立地变化

适配器模式:将一个接口转换成客户希望的另一个接口,使不兼容的那些类可以一起工作,别名为包装器

观察者模式:定义对象间的一种一对多依赖关系,使得每个对象状态发生变化时,其相关依赖对象皆得到通知并被自动更新

策略模式:定义一系列算法,将每个算法封装起来,并让它们可以互相替换,让算法独立于它的客户而变化

组合模式(Composite):将对象合成树形结构以表示”部分-整体“的层次结构,用户对单个对象和组合对象的使用具有一致性

软件设计师(六)算法设计与分析+面向对象技术_第3张图片

原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

实现:实现Cloneable接口,重写clone方法

外观模式:为一个复杂子系统提供一个简单接口。主要是定义一个高层接口,这个接口使得一个子系统更容易使用

软件设计师(六)算法设计与分析+面向对象技术_第4张图片

生成器模式:当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时

软件设计师(六)算法设计与分析+面向对象技术_第5张图片

访问者(Visitor)模式:一个Visitor对象是一个多态的accept操作的参数

你可能感兴趣的:(#,软件设计师,职场和发展)