{S0}简介
随着现实生活中的问题和设计架构的解决方法的变化,软件项目开始发展,而不是使用面向对象编程结构编程。强大的结构,如C语言已成为冷门在大型项目,由于调整结构解决方案困难成熟的因素(可重用性,可扩展性等..)我们讨论一个适应OOP的概念结构语言的多态性。背景
由于OOP的是完全不同的方法,根据结构编程,它带有许多编程工艺结构编程不同。其中这些工艺是多态性。多态性简单的意思是"通用的接口,具体实施",深受意味着每个类都有自己的实现,而它们共享一个通用的接口。这个概念带来好处,如面向对象编程结合在一个标准的接口所有对象的行为,并把它与所有类。作为一个面向对象的概念,可以此功能结构,如C语言实现的呢?C提供了强大的编程能力,如指针和结构。并使用这些元素,多态模型可以得到部分实施。使用代码
这段代码只是一个示例你可以做什么多态性的方式,在C。因此代码小,并解释它是如何工作的,大量的评论已被添加。还有其他的提示鉴于如何可以使结构概念类似面向对象。
首先,我们应该有一个结构,像类和相关职能的行为#ifndef _POLY_STRUC_H
#define _POLY_STRUC_H
struct POLY_STRUCT
{
/* Extra Fields and Encapsulation functions here */
void (*poly)( ); // Polymorphic method
// init to null to this method
// to abstract
// so making this struct an
// abstract class
};
/* Allocates and initializes a POLY_STRUCT with a
function pointer */
struct POLY_STRUCT *InitPoly( void (*poly)() );
/* Deallocates a POLY_STRUCT */
void DestroyPoly( struct POLY_STRUCT *poly );
/* Executes run function of POLY_STRUC */
void Run_Poly_Method( struct POLY_STRUCT *poly );
#endif
在这一部分,我实现了初始化的典型功能,破坏结构和调用典型的多态方法。在其他情况下,这方法可以更改或延长。{C}
和样品的主类,看看它是如何工作的:
结论#include <stdio.h>
#include <stdlib.h>
#include "POLY_STRUC.H"
/* Polymorphic Structures , this could be an set or array
of POLY_STRUC* */
struct POLY_STRUCT* example_poly1;
struct POLY_STRUCT* example_poly2;
/* Functions to assign for polymorphic structures */
void poly_example1_method(){printf("EXAMPLE1\n");}
void poly_example2_method(){printf("EXAMPLE2\n");}
int main(int argc, char *argv[])
{
/* Initialize Polymorphic structures */
example_poly1 = InitPoly(&poly_example1_method);
example_poly2 = InitPoly(&poly_example2_method);
/* Execute polymorphic method in each structure */
/* Polymorphic methos can be executed directly from
struc */
/* This functions are added for modularity */
Run_Poly_Method(example_poly1);
Run_Poly_Method(example_poly2);
/* Destroy initialized Polymorphic structures */
DestroyPoly(example_poly1);
DestroyPoly(example_poly2);
return 0;
}
</stdlib.h></stdio.h>
在适应多态性,函数指针中起着设计大的作用。还利用结构是创造一流的面向模型的重要。但是,在当前不适用的情况下,我们可以在C封装(没有私人或保护修饰符)。
很明显,多态性是更有效时,它的在OOP(继承或成分)。在这篇文章中,我们的目标是使用面向对象方面,在结构语言多达我们可以利用它的优势。但缺乏动态约束力,但它确保静态和硬编码。
有关的优点和缺点是什么?之间进行权衡性能和问题解决方案的好处(使用一种面向对象在项目的设计,简化了解决方案,同时也提高可重用性和可扩展性),在这篇文章的主要设计考虑。性能的影响是显而易见的。通过函数指针调用函数相对缓慢。还访问结构的成员,使执行速度较慢。但在另一边的可重用性和可扩展性的增益为确保明显。
适应多态性带来一些额外的代码实现,使相对较小的项目更加复杂和难以理解的。重要的是要使用在规模大的项目多态性(操作系统,硬件实现等..)有效地使用它。但这种劣势变成成一个优势,在大型项目中使用时。兴趣点
这是一个完全不同的经验,如使用C,C,我知道这是使用面向对象的离散结构的方法非常重要,但也它也是重要的相似之处。很长一段时间,我开发的项目面向对象的语言(C,C#,JAVA),再次使用C是相当享受。我觉得我将继续加强这一概念,通过添加其他辅助方法。历史
1.0版 - 最初的版本