Articulo de referencia

archivo de implementación de clase

En la programación orientada a objetos , un archivo de implementación de clase se utiliza a menudo para contener el código de implementación de los métodos de una clase . Lengua...

En la programación orientada a objetos , un archivo de implementación de clase se utiliza a menudo para contener el código de implementación de los métodos de una clase . Lenguajes de programación como C++ y Objective-C utilizan estos archivos de implementación para separar la interfaz y la implementación de estos métodos. [ 1 ]

Motivación

Mediante esta estructura, también se crea un archivo de definición de clase que contiene la declaración de la clase y sus miembros. Si se ha incluido la definición de la clase y está disponible el archivo de implementación de sus métodos, el usuario puede instanciar un objeto de la clase. El propósito de esta estructura es mantener oculto el código de implementación, pero permitir al usuario visualizar el diseño. [ 2 ] [ 3 ]

Los usuarios utilizan la interfaz pública de un objeto para simplificar al máximo la creación de objetos, asegurando que el código del cliente no los distraiga con detalles innecesarios de la implementación de la clase. [ 4 ] Esto permite al usuario la información necesaria para usar la clase de manera efectiva, pero evita que dañe el código compilado. [ 5 ]

La estructura de un archivo de implementación de clase

En la programación en C++, se utiliza un archivo de implementación al crear la definición de una clase para separar la interfaz de la implementación. El archivo de cabecera declara todas las funciones miembro (métodos) y los métodos de datos (campos) que posee la clase. [ 6 ] [ 7 ] [ 8 ]

El archivo de implementación contendrá la definición o el código fuente de los métodos declarados en el archivo de cabecera . Este archivo puede comenzar con un bloque de cabecera que proporciona comentarios que describen el propósito de la clase definida y detalles sobre la creación del archivo, como el autor y la fecha de creación. [ 9 ] También puede incluir cualquier biblioteca de la Biblioteca Estándar de C++ que vaya a utilizar alguno de los métodos declarados en el archivo. El archivo de implementación de la clase normalmente incluirá una línea para incluir el archivo de cabecera asociado (véanse los ejemplos a continuación).

Ejemplo en C++

Un ejemplo sería tener una clase llamada ExampleClass. El archivo de cabecera de este archivo C++ se llamaría " Example.hpp " y el archivo de implementación sería " ExampleClass.cpp ". [ 10 ] [ 11 ]

En este ejemplo, se ha omitido la implementación de las funciones, pero las funciones deben declararse en ExampleClass.hpp de esta manera: [ 12 ]

#include <string>espacio de nombres wikipedia :: ejemplos {clase ExampleClass { privado : std :: string nombre ; público : ExampleClass (); // Constructor. void addSomething ( int k ); };}

Un ejemplo de la estructura de ExampleClass.cpp se vería así:

#pragma una vez#include "ExampleClass.hpp"espacio de nombres wikipedia :: ejemplos {ExampleClass :: ExampleClass () = default ;void ExampleClass::addSomething ( int k ) { // ... }}

Esta estructura también se puede replicar con módulos de C++ , aunque con una semántica ligeramente diferente.

En ExampleClass.cppm (el archivo de declaraciones):

exportar módulo wikipedia.ejemplos.ExampleClass ;importar std ;usando std :: string ;exportar espacio de nombres wikipedia :: ejemplos {clase ExampleClass { privado : string nombre ; público : ExampleClass (); // Constructor. void agregarAlgo ( int k ); };}

En ExampleClass.cpp (el archivo de definiciones/implementaciones):

módulo wikipedia.ejemplos.ExampleClass ;espacio de nombres wikipedia :: ejemplos {ExampleClass :: ExampleClass () = default ;void ExampleClass::addSomething ( int k ) { // ... }}

Esto se puede incluir en un archivo Main.cpp de la siguiente manera:

import wikipedia . examples . ExampleClass ;usando wikipedia :: ejemplos :: ExampleClass ;int main ( ) { ExampleClass myInst ; myInst.addSomething ( 5 ) ; return 0 ; }

Ejemplo en Objective-C

Otro ejemplo de cómo se estructuraría un archivo de implementación de clase se puede ver con Objective-C , que se usa en la programación de iOS . [ 13 ] Este ejemplo usará "ExampleClass". Una diferencia notable entre C++ y Objective-C al usar estos archivos de implementación son las extensiones que se usan al final de los archivos. En C++ será .cpp [ 14 ] y en Objective-C será .m , [ 15 ] pero ambos usarán la misma extensión .h para sus archivos de encabezado [ 16 ] [ 17 ] como se muestra en el ejemplo a continuación.

Este es un ejemplo de ExampleClass.h en Objective-C :

#importar <UIKit/UIKit.h>@interface ExampleClass : NSObject { // Las declaraciones de variables de instancia van aquí } - ( NSString * ) nombre ; @end

Este es un ejemplo del archivo de implementación de la clase Exampleclass.m en Objective-C :

#importar "ExampleClass.h"@implementation ExampleClass - ( NSString * ) name { return @"…" ; } @end

Véase también

Referencias

  1. Alan Griffiths (2005). "Separando la interfaz y la implementación en C++" . ACCU . Consultado el 7 de mayo de 2013 .
  2. Alan Griffiths (2005). "Separando la interfaz y la implementación en C++" . ACCU . Consultado el 7 de mayo de 2013 .
  3. Neuberg, Matt (26 de mayo de 2011). "Capítulo 4.3 Archivo de encabezado y archivo de implementación". Programación de iOS 4. O'Reilly Media, Inc. ISBN 978-1-4493-8843-0.
  4. Alan Griffiths (2005). "Separando la interfaz y la implementación en C++" . ACCU . Consultado el 7 de mayo de 2013 .
  5. "C++: Qué hacer y qué no hacer" . The Chromium Projects . Consultado el 7 de mayo de 2013 .
  6. "Introducción a las clases de C++" . Consultado el 7 de mayo de 2013 .
  7. Alan Griffiths (2005). "Separando la interfaz y la implementación en C++" . ACCU . Consultado el 7 de mayo de 2013 .
  8. Febil Chacko Thanikal (2009). "Cómo definir una clase plantilla en un archivo .h e implementarla en un archivo .cpp" . Code Project . Consultado el 7 de mayo de 2013 .
  9. "El archivo de implementación en la programación C++" . ITechTalk . Consultado el 7 de mayo de 2013 .
  10. "Introducción a las clases de C++" . Consultado el 7 de mayo de 2013 .
  11. Neuberg, Matt (26 de mayo de 2011). "Capítulo 4.3 Archivo de encabezado y archivo de implementación". Programación de iOS 4. O'Reilly Media, Inc. ISBN 978-1-4493-8843-0.
  12. "Introducción a las clases de C++" . Consultado el 7 de mayo de 2013 .
  13. Neuberg, Matt (26 de mayo de 2011). "Capítulo 4.3 Archivo de encabezado y archivo de implementación". Programación de iOS 4. O'Reilly Media, Inc. ISBN 978-1-4493-8843-0.
  14. "Introducción a las clases de C++" . Consultado el 7 de mayo de 2013 .
  15. Neuberg, Matt (26 de mayo de 2011). "Capítulo 4.3 Archivo de encabezado y archivo de implementación". Programación de iOS 4. O'Reilly Media, Inc. ISBN 978-1-4493-8843-0.
  16. "Introducción a las clases de C++" . Consultado el 7 de mayo de 2013 .
  17. Neuberg, Matt (26 de mayo de 2011). "Capítulo 4.3 Archivo de encabezado y archivo de implementación". Programación de iOS 4. O'Reilly Media, Inc. ISBN 978-1-4493-8843-0.
  • Archivo de encabezado y archivo de implementación