Vés al contingut

Fitxer d'implementació de classe

De la Viquipèdia, l'enciclopèdia lliure
Class implementation file

Característiques tècniques
PlataformaC standard library

En la programació orientada a objectes, un fitxer d'implementació de classe s'utilitza sovint per contenir el codi d'implementació per als mètodes d'una classe. Els llenguatges de programació com C++ i Objective-C fan ús d'aquests fitxers d'implementació per separar la interfície i la implementació d'aquests mètodes.[1]

Motivació[modifica]

Amb aquesta estructura, també es crea un fitxer de definició de classe que conté la declaració de la classe i els seus membres. Si s'ha inclòs la definició de classe i el fitxer d'implementació dels seus mètodes està disponible, l'usuari pot crear una instancia d'un objecte de la classe. L'objectiu d'aquesta estructura és mantenir el codi d'implementació ocult, però permetre a l'usuari veure el disseny.[1][2]

Els usuaris fan ús de la interfície pública d'un objecte per tal de fer que la creació d'objectes sigui el més senzilla possible, assegurant que el codi del client no distregui l'usuari amb detalls innecessaris de la implementació de la classe.[1] Això permet a l'usuari la informació necessària per utilitzar la classe de manera eficaç, però evita que danyi el codi compilat.[3]

L'estructura d'un fitxer d'implementació de classe[modifica]

Un fitxer d'implementació s'utilitza a la programació C++ quan es crea una definició de classe per dividir la interfície de la implementació. El fitxer de capçalera declararia totes les funcions membres (mètodes) i mètodes de dades (camps) que té la classe.[4][1][5]

El fitxer d'implementació contindrà la definició real o el codi font dels mètodes declarats al fitxer de capçalera. Aquest fitxer pot començar amb un bloc de capçalera, que proporciona comentaris que descriuen el propòsit de la classe definida i qualsevol detall sobre la creació del fitxer real, com ara l'autor del fitxer i la data de creació del fitxer.[6] També pot incloure qualsevol biblioteca de la biblioteca estàndard de C++ que s'utilitzarà per qualsevol dels mètodes declarats al fitxer. El fitxer d'implementació de classe normalment tindrà una línia per incloure el fitxer de capçalera associat (vegeu els exemples a continuació).

Exemple en C++[modifica]

Un exemple seria tenir una classe anomenada ExampleClass. El fitxer de capçalera d'aquest fitxer C++ s'anomenaria "example_class.h" i el fitxer d'implementació seria "example_class.cc".[4][2]

Un exemple de l'estructura de example_class.cc seria així:

#include "example_class.h"

ExampleClass::ExampleClass() = default;

void ExampleClass::AddSomething(int k) {
   ...
}

En aquest exemple, s'ha omès la implementació de les funcions, però les funcions s'han de declarar a example_class.h així: [4]

#include <string>

class ExampleClass {
 public:
  ExampleClass();  // Constructor.
  void AddSomething(int k);          

 private:
  std::string name_;                      
};

Referències[modifica]

  1. 1,0 1,1 1,2 1,3 Alan Griffiths. «Separating Interface and Implementation in C++» (en anglès). ACCU. [Consulta: 7 maig 2013].
  2. 2,0 2,1 Neuberg, Matt. «Chapter 4.3 Header File and Implementation File». A: Programming iOS 4 (en anglès). O’Reilly Media, Inc., 26 May 2011. ISBN 978-1-4493-8843-0. 
  3. «C++ Dos and Don'ts» (en anglès). The Chromium Projects. [Consulta: 7 maig 2013].
  4. 4,0 4,1 4,2 «Introduction to C++ Classes» (en anglès). [Consulta: 7 maig 2013].
  5. Febil Chacko Thanikal. «How to define a template class in a .h file and implement it in a .cpp file» (en anglès). Code Project. [Consulta: 7 maig 2013].
  6. «The implementation file in C++ Programming» (en anglès). ITechTalk. Arxivat de l'original el 2013-04-30. [Consulta: 7 maig 2013].