2011-11-05 56 views
2

在采访中,我被问到,重用性是面向对象编程的主要优点之一,但它也可以通过包含C语言的头文件来实现?那么OOP可重用性和C头文件有什么不同?C语言的头文件和面向对象编程的可重用性?

+0

OOP可重用性是您可以重新使用现有代码,数据和类的概念。 C头文件是应用程序的一个很好的例子,头文件的使用者可以随时使用库,他们想要 –

+0

,所以有什么区别?在OOP可重用代码中是否有比头文件更多的优势? –

+0

头文件是OOP可重用性的一个例子.., –

回答

2

如果通过“可重用性”,您只是暗示代码不需要在每个代码模块中重复,那么是的,C中的头文件完成该任务,因为它允许定义函数和变量的声明在一个代码模块中使用外部链接来在另一个代码模块中使用,而用户不必重新输入所有这些声明和/或试图将通常是库的一部分的每个函数的每个定义放置到每个代码模块中。因此防止了代码的重复。

通过在C++和Java等语言中使用继承和多态性来进行面向对象的编程有类似的效果......您可以定义一个接口和/或一个基类,然后您可以“包含”该代码通过继承另一个类。此外,虚拟方法和多态性允许您编写将单个基类类型作为参数的函数,但调用在派生类类型中实际定义的代码。这基本上意味着你可以调用代码(即,你的派生类),在代码(即,接受了一个基类类型的功能)。例如,作为一个库开发人员,您可以定义一组基类的类型/接口,并且用户可以从这些基类中派生出来,但仍然可以在接受参数的库中包含的相同函数中有效地使用它们的基类。因此,您不必强制重复这些函数......它们仍然可用于您的“新”派生类。

0

基本上没有OOP,只是使用包括头,您可以使用现有的功能,而无需再次把它写自己。

然而,如果你打算使用一个非常相似,但略有不同的功能,你别无选择,只能自己编写。在这种情况下,您不能重复使用原始函数,您必须编写一个新函数。

优势OOP的:如果该函数是一个类,而不是,你可以从它继承和只添加一些小方法,让你可以重用原来的大部分类的方法。

+0

继承重用代码缺少继承关系(“是”关系)和更多的代码重用来源:多态性。 – delnan

+0

但在继承中,如果你想要不同的实现,也就是覆盖,你必须重写代码。所以我们在这里也可以做到这一点,包括头文件实现新方法和使用这个库到处定制实现方法。 –

0

这里重要,不要混淆了OOP语言支持和OOP本身。可重用C代码的常见做法是定义在头文件中对数据类型进行操作的数据类型和函数,然后根据这些数据类型和函数实现函数。当你仔细观察它时,即使没有适当的语言支持,这也是OOP的实现,因此不太稳定。但是:typedefs数据结构的C头文件和在这些数据结构上运行的函数是OOP的实现。

因此,在代码的可重用没有区别,这只是在两个不同的层的图。 OOP是一个范例,C头文件是关于C语言中的一个实现。