与OOP中的抽象概念相关的问题

时间:2013-11-12 09:44:53

标签: c# asp.net oop abstract

我正在使用文章从互联网上阅读OOPs Concepts。

在其中一篇文章中,我读过以下有关抽象的内容:

  

如果我们在“Billing”类中有一个名为“CalculatePrice”的方法,   我们并不关心里面的计算   “CalculatePrice”方法。我们只需传递必要的参数即可获得   输出。我们隐藏了“计算价格”的实现。

所以我的问题是:在C#中,我们使用dll和命名空间并调用特定的方法。我们可以这么说,dll和名​​称空间是抽象的概念吗?

由于

3 个答案:

答案 0 :(得分:3)

没有。

您通常应该将dll文件和命名空间视为组织项目的方法。

CalculatePrice的抽象只是在方法中“隐藏”它的逻辑。当另一段代码调用该方法时,它并不关心它内部发生了什么 - 它只对结果感兴趣。

C#(和.Net)中的抽象是使用接口抽象类以及方法和属性之类的东西制作的在这些中定义和/或实现的。

您应该关注这些概念,以及它们如何在不同的“模式”中一起使用以解决各种类型的问题。

在示例中稍微扩展一下:如果在接口中定义了CalculatePrice,那么调用代码将“与”该接口“对话”,而不关心它背后的内容。该接口的实现 - 实际执行逻辑的代码 - 可以是任何东西。它可以改变,并且不断变化,只要它满足接口中定义的要求(“合同”),因为这将允许调用代码继续使用它... 是如何抽象适用于C#。

答案 1 :(得分:1)

有趣的是,有四个答案都说“不”。实际上,答案是“有时”。如果CalculatePrice的实现依赖于另一个标记为internal的类,那么它的汇编确实构成了抽象的一部分,因为内部类只能被该汇编中的其他类访问。​​

.NET中的命名空间不构成任何抽象的一部分。在其他语言中,他们可以将internal绑定到名称空间,但这不是.NET语言的工作方式。

这种信息隐藏是最基本的抽象形式。 C#最强大的抽象工具是接口,支持依赖注入以及将方法作为值处理。如果您有兴趣了解C#中有关抽象的更多信息,那么它们就是需要关注的三个方面。

答案 2 :(得分:0)

  

所以我的问题是:在C#中,我们使用dll和命名空间并调用特定的方法。我们可以这么说,dll和名​​称空间是抽象的概念吗?

没有