软件构造的一些想法
入过栈你
这个作者很懒,什么都没留下…
展开
-
软件构造第六章——面向健壮与正确的软件设计上
一.正确性与健壮性健壮性:程序在用户非法输入下,非法环境下表示正常的程度,也可以叫鲁棒性。面对用户输入错误时,要能提示错误,处理未期望行为,并且应该要显示有助于DEBUG的错误信息。健壮性原则1.伯斯塔尔原则:对自己严格,对他人宽容。封闭全部细节,考虑所有情况。正确性:程序按照spec执行的能力。正如第二章就说明的,spec是决定正确性的。与健壮性对比1.健壮性倾向于用户,容纳用户的输入错误。正确性倾向于开发者,对不符合spec的输入任意处理。2.健壮性倾向于对外接口,正确性倾向于对内实原创 2020-05-11 22:52:10 · 214 阅读 · 0 评论 -
软件构造第五章——面向可维护性的设计模式
一.五大设计模式原则SRP:单一职责原则OCP:开闭原则LSP: 里氏替换原则ISP: 接口隔离原则DIP:依赖倒置原则这些设计模式原则之前我的博客上应该都写过,上课的时候专门把五种SOILD组合在一起,面向软件维护。二.面向可维护性的设计模式1.面向可维护性的创建模式 创建模式解决的是软件运行中构建对象的问题,上次没有提过。工厂模式 问题:客户端不知道...原创 2020-04-28 18:08:40 · 185 阅读 · 0 评论 -
软件构造第四章——委派,六种复用设计模式
一.委派的定义委派的定义很简单,一个对象请求另一个对象的功能罢了。就是自己不干活,而交给别人干,自己负责调度,负责管。委派本身在我看来并不强大,强大的是委派与继承的共用。二.委派的分类委派中A对象调用B对象,根据B对象的来源不同,可以分为不同的种类。依赖:B对象是动态传入A,并且A不保存B对象。B对象只是与A的方法依赖。这是临时性的委派。关联: B作为A的成员被保存。关联分为两类:组...原创 2020-04-26 20:36:15 · 1026 阅读 · 0 评论 -
软件构造第四章——复用软件评价与开发
复用软件评价一.什么是软件复用1.面向复用性编程:开发可以服用的软件2.基于复用编程:利用可复用的软件开发开发可复用的软件会导致:开发成本高,泛用性强,性能好。度量可复用性1.复用的频繁程度2.复用的代价程度二.复用层面1.源码级复用:对源代码进行复制修改。2.模块层面复用:对已有的类进行复用。继承与委托技术,扩展现有类3.库层面的复用:API复用库:提供一组类与方法4...原创 2020-04-26 19:18:54 · 268 阅读 · 0 评论 -
软件构造——equals方法与hashcode方法
一.等价性抽象函数AF:内部表示->抽象表示的映射。我们可以基于抽象函数AF定义ADT的等价操作。等价性是我们定义的自反,对称,传递关系。判断对象是否相等。二.不可变类型的等价性我们可以利用AF,若AF映射到的抽象值相等,那么我们就认为对象相等。如果observer函数所提供的值相等那么也能判定相等。不论哪种方式,我们都可以看出。等价和ADT内部实现无关都是在观察角度说明的等价...原创 2020-04-07 18:48:26 · 161 阅读 · 0 评论 -
软件构造第三章——ADT设计.方法规约
一.方法规约程序写出来的目的1.给机器看,2.给人看。一个大型项目中一定有程序员的互相交流,而规约就是为了交流存在的。我们不可能考虑所有的情况,所以我们指定一些假设保证我们的程序正确运行需要的内容。我们需要做一些设计决策。为了交流这些东西,我们要书写规约。规约是使用者与开发者之间的的契约,隔离了具体的细节,让客户端不了解具体实现也能正确调用方法。二.为什么要写规约?1.必要性:Bug来自与...原创 2020-04-05 18:01:42 · 318 阅读 · 0 评论 -
软件构造第三章——ADT设计数据类型
一.数据类型正如老师所说,编程比作写文章的时候,数据就是里面的名词。但我觉得这么比喻有点儿不充分,我觉得文章本身就是一种数据类型,尤其像JAVA面向对象来说,把数据,操作,代码绑定的十分紧密。在现实生活中很难找到一个概念与现在我们要探讨的数据相区分,不如说这个概念就是现实世界本身。我们定义数据类型就是一组值和其上能进行的操作。而变量就是空间,可存储满足约束的值。JAVA类型包括基本类型和引...原创 2020-04-05 16:52:50 · 272 阅读 · 0 评论 -
软件构造第三章——ADT的设计细节
一.回顾上一篇我们说了ADT定义,应该遵循的一些原则,表示独立性,不变性,防止表示泄露。这回我认为我们侧重于ADT设计的一些具体内容。二.RI与AF一个ADT是定义在一组操作上的数据类型,操作有了以后,我们要实现rep,而rep是具体的,功能是抽象的。我们需要解释如何把具体的rep映射成抽象的表示。我们把具体的rep值空间称之为R空间,把抽象的值称为A空间。比如说:我们要表示一个小写字母...原创 2020-04-05 16:14:50 · 244 阅读 · 0 评论 -
软件构造第三章——ADT的设计综述
一.抽象数据类型抽象数据类型是一种定义在操作上的数据类型。与以前的数据类型不同,ADT倾向于操作,而不是具体的存储逻辑。对于JAVA来说,就像LIST抽象接口,我们只需要存,取,索引操作,而对具体的链表还是数组很多情况我们不需要考虑。二.ADT类型与操作分类ADT设计中不可变类型与可变类型的决定,是很重要的设计原则。可变类型要求提供改变数据值的方法(这个值请参考下文)。不可变类型中不提供...原创 2020-04-05 15:39:53 · 363 阅读 · 0 评论