摘要: 写一个函数,用递归函数完成以下运算:sum(n) = 1 – 1/2 + 1/3 – 1/4 + … -(1/n)*(-1)n (其中n>0)函数原型: float sum(int n);函数参数:n为正整数。函数返回值:相应于给定的n,右边表达式运算结果。提示:你可以使用递归表达式: sum(n)... 阅读全文
posted @ 2015-10-25 21:56 赛提斯特 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 头五项原则是关于类设计的,它们是: ◆ SRP,单一职责原则,一个类应该有且只有一个改变的理由。 ◆ OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为。 ◆ LSP,Liskov替换原则,派生类要与其基类自相容。 ◆ DIP,依赖倒置原则,依赖于抽象而不是实现。 ◆ IS... 阅读全文
posted @ 2015-10-25 21:54 赛提斯特 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 以前回复一个关于9连环解法的问题,看过《计算机程序设计艺术》的人都知道,这个问题的是中国的古老游戏,其解法就是“格雷二进制”的描述。九连环是一种传统的中国玩具,它有九个连在一起的环河一根长棒组成。一开始,九个环都装在榜上,由于其特殊的构造,只能按以下规则从棒上取下或装上环: 1)所有环只能从棒的一端... 阅读全文
posted @ 2015-10-25 21:52 赛提斯特 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 任何在项目伊始就规划所有的可能需求之企图都会落败,并以客观的延误告终。-Pahl,Beitz 《Engineering Design》关于需求:项目伊始,有多少需求是有技术人员参与的?有多少需求是市场人员提供的?。。。 现实中,大部分此类需求只是客户那边的管理层,各自为阵提出自己的想法。而这些想法很... 阅读全文
posted @ 2015-10-25 21:39 赛提斯特 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Wiston Royce,瀑布模型的提出人,他提出瀑布模型的本意就是用来批判的,但是现实和他闹了个笑话,多少年了大量的设计师把它奉为圣典。更加可恶的是,我们的教科书上曾经也把他视为珍宝,这些教育工作者,叫兽砖家们,该醒醒了 。。。:)理性模型强调在设计的第一阶段就是把需求的内容以完整的设计树来表达,... 阅读全文
posted @ 2015-10-25 21:37 赛提斯特 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 理性模型 最原始也是最符合设计师第一感觉的设计方式,因为理性,所以叫理性模型:); 设计的理论即一般的搜索理论,对象是巨大的组合空间.目标: 某人想要建立一个海滨小屋,以享用面向大海的一块海滨场地的海浪.必要条件: 海滨小屋应该足够兼顾以抵御飓风; 具备至少14个人躺卧和就座的空间; 为宾客提供令人... 阅读全文
posted @ 2015-10-25 21:35 赛提斯特 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 4.9 在实现语义约束时,最好根据类定义来实现。但是这经常会导致泛滥成灾的类,在这种情况下约束应当在类的行为中实现,通常在类的构造函数中实现,但不是必须如此。 还是以汽车为例,我们看汽车的定义,为了集中注意力,先只关心汽车的发动机[csharp] view plaincopyprint?class汽... 阅读全文
posted @ 2015-10-25 21:31 赛提斯特 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 4.7 类包含的对象数目不应当超过开发者短期记忆数量,这个数目通常应该是6左右4.8 让系统在窄而深的包含体系中垂直分布 假设有如下两份菜单: 正餐 --->甜瓜 --->牛排 --->土豆 --->豌豆 --->玉米 --->馅饼或者 正餐 --->甜瓜 --->牛排套餐... 阅读全文
posted @ 2015-10-25 21:27 赛提斯特 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 4.6 尽量让类中定义的每个方法尽可能多地使用包含的对象(即数据成员)这其实就是高内聚的翻版强调。如果每个类的情况并非如此,那很可能是这一个类表示了两个或更多的概念,记住一个类只应该表示一个概念。 最明显的情况就是类的一半方法使用了一半的数据成员,而另一半方法使用了另一半的数据成员,那么这个类就应该... 阅读全文
posted @ 2015-10-25 21:21 赛提斯特 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 4.5 如果类包含另一个类的对象,那么包含类应当向被包含的对象发送消息(调用方法)。也就是说,所有的包含关系都应当是使用关系。如果不是这样,那么包含的类有什么用处呢?当然,面向过程的开发人员会想到可能有一个Get方法供其它类使用这个包含的对象,那么按照“数据隐藏原则”,为什么 不让使用包含类的类直接... 阅读全文
posted @ 2015-10-25 21:18 赛提斯特 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 4.1 尽量减少类的协作的数量,即减少使用者和被使用者的数量。 协作意味着一定程度的耦合,但是完全没有协作的类也是没有意义的,最多只能作为一个库使用。 通过抽象,依赖接口,可以最大程度减少依赖的实现类,对使用者来说,只看到接口的依赖,而具体的实现的依赖可以通后后期绑定来配置依赖关系。 如 菜单 --... 阅读全文
posted @ 2015-10-25 21:16 赛提斯特 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 使用关系对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案方案一: A包含了B,B作为一个成员定义在A的类中,那么在MethodA中可以直接调用B.MethodB() 如汽车可以包含车轮。 如果汽车需要加油,那么就需... 阅读全文
posted @ 2015-10-25 21:13 赛提斯特 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 3.7 从设计中取出不需要的类 只有Get/Set方法的类不算是一个必要的类,Get/Set方法也不算是有意义的行为。这种类降级为属性更加合适。3.8 去除系统外部的类 如果一个类只调用系统领域的方法,而系统没有向该类调用,则可以认为这个类并不属于系统。可能只是系统的使用者,我们没必要去为此建模。 ... 阅读全文
posted @ 2015-10-25 21:01 赛提斯特 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 面向过程的软件开发通过非常集中化的控制机制来分解功能,在程序设计中表现就是大量的条件判断,深层次的循环嵌套等。这种模式下,我们可以通过分析方法的参数,局部变量及其访问的全局变量来得到方法对数据的依赖性,但是我们只有分析整个项目代码才能得到数据对方法的依赖性。 面向对象的软件开发主要关注在非常分布的环... 阅读全文
posted @ 2015-10-25 20:57 赛提斯特 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 一,继承只应被用来为特化层次结构建模 实际上也就是要满足LSP原则,水果类<-榴莲的继承是特化二,派生类必须知道他们的基类,基类不应当知道他们的派生类 复用的前提三,基类中的所有数据都应该是私有的,不要使用保护数据(方法不在此原则约束下) 数据封装,物体的重量看起来可以用一个保护数据来表达,而不是g... 阅读全文
posted @ 2015-10-25 20:56 赛提斯特 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 一个对象一定会有如下4个属性: 1,它的身份标示,可能只是它在内存中的地址; 2,它的类的属性(通常是静态属性)和这些属性的值(通常是动态的); 3,它的类的行为(从实现者的角度看); 3,它的公开接口(从用户的角度看).2.1 所有数据都应该隐藏在它所在的类内部. 考虑最简单的点Point类(X,... 阅读全文
posted @ 2015-10-25 20:55 赛提斯特 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 为了理解ActiveX事件的运作原理,特意做了如下实验 初试化过程:try{ CLSID clsid; HRESULT hr=::CLSIDFromProgID(L"MSWinsock.Winsock",&clsid); if(FAILED(hr)) throw "获得对象的CLSID失败... 阅读全文
posted @ 2015-10-25 16:26 赛提斯特 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 为了弄清楚COM库的运行原理,特意做了这个实验: #include "stdafx.h"#include "objbase.h"#include "atlcomcli.h"#include "limits"//#include "commctrl.h"#import "msscript.ocx" n... 阅读全文
posted @ 2015-10-25 16:23 赛提斯特 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 题目大概是这样的:有两个数组a[N],b[N],求构造 b[i]=a[0]*a[1]*a[2]*...a[N-1]/a[i], 要求:1、不能使用除法。2、空间复杂度O(1),时间复杂度O(n)。3、除循环计数器和a[N]、b[N],不能使用其他变量。 个人看法: 与N有关,又要求空间复杂度O(1)... 阅读全文
posted @ 2015-10-25 16:04 赛提斯特 阅读(203) 评论(0) 推荐(0) 编辑
摘要: DH 请教下大家一个设计模式的问题 业务: 有多种短信指令,系统会根据接收到的指令进行相应的业务处理,处理完成后,系统会回复一条短信 这种业务处理,可以用哪个设计模式来做? QX 状态模式 DH 小雪,短信指令可能会增加,也可能会减少 QB 命令模式 DH 用命令模式更合适? QB 命令模式看起来挺奇怪的。 QB interface ICommand{IComm... 阅读全文
posted @ 2015-10-25 15:59 赛提斯特 阅读(268) 评论(0) 推荐(0) 编辑