- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Eiffel 说我们应该“放宽前置条件,收紧后置条件”,但我不确定这是什么意思。子分类如何受益/受益?
谢谢
最佳答案
在契约式设计中,您为函数指定一组前置条件和一组后置条件。例如,假设您正在编写一个内存分配函数。您要求它接受一个正整数作为输入,并生成一个均匀对齐的指针作为其结果。
放宽前提条件意味着当您创建派生类时,它必须接受基类可以接受的任何输入,但也可能接受其他输入。使用上面的示例,可以编写派生类以接受非负整数,而不仅仅是正整数。
在结果方面,您必须确保派生函数的结果满足对基函数的所有要求——但它也可以添加更多限制。例如,上述函数的派生版本可以决定只产生 8 的倍数的结果。显然 8 的每个倍数都是偶数,因此它仍然满足基函数的要求,但也施加了额外的限制。
反之则行不通:如果基类函数允许非负整数作为输入,则派生类必须继续接受所有非负整数作为输入。不允许尝试将其更改为仅接受正整数(即拒绝 0,这是基类允许的)——在任何情况下,您的派生类都不能再替代基版本。
与结果类似:如果基类对结果强加了“8 的倍数”要求,则派生版本还必须确保所有结果都是 8 的倍数。返回 2 或 4 将违反该要求。
关于oop - Eiffel :放宽前置条件,收紧后置条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681503/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
简单 如何使用 eiffel 获取目录内的文件列表? 最佳答案 例如: class CARPETAS creation make feature {NONE} make is
我在玩 Eiffels SCOOP。 在我的程序中,一堆 worker 并行运行。我想为我创建尽可能多的处理器。 在 Eiffel 中是否有“简单”的方法来找到可用处理器的数量? 最佳答案 当前标准库
假设我有一个函数 f,它应该通过调用 g 返回一个 attached T。然而,g 返回一个可分离的 T。如果 g 导致 Void,我想引发这样的异常: f: T do if attach
我正在尝试制作一个不可变的 POINT在 Eiffel 上课。下面的代码定义了一个吗? {NONE} x 的可访问性和 y字段就够了吗?我可以为类不变量写一些东西,比如 x = x' ,或者我怎样才能
我正在尝试创建一个程序来使用递归方法创建二叉树,但我遇到了问题。 在我的类(class) MYNODE ,我将我们左右包括在内,但是它们可以为空(无效)。这是代码,有人可以帮助我吗? class
在程序末尾编写一个救援条款以在Eiffel中结束该程序是否足以处理该程序中编写的任何例程中的异常,例如前置条件,后置条件或不变违规?还是应该为每个具有前置和后置条件以处理异常的函数编写救援条款? 我读
在 Eiffel 中,Void Safety 是一种静态防止取消引用未初始化(“null”)对象的方法。它的工作方式是,首先,该对象必须声明为可分离,然后您需要检查一个 if block 是否该对象实
我在 Eiffel 中找不到任何实际的错误处理示例。我只找到一些例子,要么是微不足道的,要么完全忽略错误,要么将错误处理留给读者。我有兴趣了解在没有异常的情况下错误如何通过调用堆栈。例如,我想知道发送
Eiffel 说我们应该“放宽前置条件,收紧后置条件”,但我不确定这是什么意思。子分类如何受益/受益? 谢谢 最佳答案 在契约式设计中,您为函数指定一组前置条件和一组后置条件。例如,假设您正在编写一个
我尝试这样做: local condition: BOOLEAN condition := true do 像这样: local condition: BOOLEAN := t
编译器提示未知标识符,似乎它无法识别我的多个声明中的任何一个,我错在哪里? if attached {INTEGER_REF} field.item as l_int or attac
尝试编写一些记录器增强功能我想处理 ANSI 代码解释,但它似乎不适用于标准 io.putstring 方法,也不适用于 print 我想知道有没有办法做一些事情,例如 echo -e "\u001B
我正在使用 Effiel studio 进行编码,我注意到在菜单下方的 ErrorList 中,有一条错误消息显示:“错误代码:C 编译器错误 错误:外部 C/C++ 编译失败。怎么办:检查外部 C/
我创建了一个带有动画的 Vision2 小窗口。 在我的 Windows 7 环境中,我希望此动画始终显示在我桌面上所有其他窗口的顶部。我能够定期调用 raise 以将 Vision2 窗口置于前面
在eiffel中,你是如何做到这样的数字的。 118.1999999999999 打印到: 118.20 在其他语言中只是 printf 的问题,但在 Eiffel 中似乎没有办法轻松做到这一点。 最
EiffelBuild 是专用于 Eiffel 的 ISE GUI 构建图形工具。 我尝试了一下,发现它非常用户友好,但我有点担心在大型项目中使用这样的工具。 GUI 构建工具的使用可能受到限制。 因
C++的构造函数和Eiffels create procedure declaration有什么区别? 能够为一个类提供多个构造函数有什么值(value)?或者 Eiffel “创造”还有什么其他好处
如何在 Eiffel 中开发 Web 应用程序? eiffel有webapp框架吗? 是否有使用 eiffel 开发的网络应用程序示例? 最佳答案 有很多,但目前支持最广泛的框架是 Eiffel We
是否有包含/使用/导入其他类的条款,或者这可能是 EiffelStudio 中的添加库部分?如果是这样,您将如何在基于文本编辑器的环境中执行此操作? 最佳答案 在 Eiffel 中,没有等效于 C/C
我是一名优秀的程序员,十分优秀!