gpt4 book ai didi

oop - Eiffel :放宽前置条件,收紧后置条件?

转载 作者:行者123 更新时间:2023-12-05 00:06:08 25 4
gpt4 key购买 nike

Eiffel 说我们应该“放宽前置条件,收紧后置条件”,但我不确定这是什么意思。子分类如何受益/受益?

谢谢

最佳答案

在契约式设计中,您为函数指定一组前置条件和一组后置条件。例如,假设您正在编写一个内存分配函数。您要求它接受一个正整数作为输入,并生成一个均匀对齐的指针作为其结果。

放宽前提条件意味着当您创建派生类时,它必须接受基类可以接受的任何输入,但也可能接受其他输入。使用上面的示例,可以编写派生类以接受非负整数,而不仅仅是正整数。

在结果方面,您必须确保派生函数的结果满足对基函数的所有要求——但它也可以添加更多限制。例如,上述函数的派生版本可以决定只产生 8 的倍数的结果。显然 8 的每个倍数都是偶数,因此它仍然满足基函数的要求,但也施加了额外的限制。

反之则行不通:如果基类函数允许非负整数作为输入,则派生类必须继续接受所有非负整数作为输入。不允许尝试将其更改为仅接受正整数(即拒绝 0,这是基类允许的)——在任何情况下,您的派生类都不能再替代基版本。

与结果类似:如果基类对结果强加了“8 的倍数”要求,则派生版本还必须确保所有结果都是 8 的倍数。返回 2 或 4 将违反该要求。

关于oop - Eiffel :放宽前置条件,收紧后置条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com