Diferencia entre revisiones de «Plantillas de función en C++»

(Página creada con '{{Definición |nombre= Plantillas de función |imagen= |tamaño= |concepto= Las funciones homónimas se utilizan por lo regular para ejecutar operaciones similares sobre disti...')
(Etiqueta: nuestro-nuestra)
 
(Etiqueta: nuestro-nuestra)
Línea 1: Línea 1:
 
{{Definición
 
{{Definición
|nombre= Plantillas de función
+
|nombre= Plantillas de función en [[C++]]
 
|imagen=
 
|imagen=
 
|tamaño=
 
|tamaño=
Línea 10: Línea 10:
 
==Como funciona==
 
==Como funciona==
  
Las funciones homónimas se utilizan por lo regular para ejecutar operaciones similares sobre distintos tipos de datos. Si para cada tipo las operaciones son idénticas, esto se puede llevar a cabo de manera más compacta mediante plantillas de función, una capacidad introducida en versiones recientes de [C++]. El programador escribe una definición  de plantilla de función. Basado en los tipos de los argumentos proporcionados en las llamadas a esta función, [C++] genera de forma automática funciones de código objeto por separado para manejar cada tipo de llamada de forma correcta.
+
Las funciones homónimas se utilizan por lo regular para ejecutar operaciones similares sobre distintos tipos de datos. Si para cada tipo las operaciones son idénticas, esto se puede llevar a cabo de manera más compacta mediante plantillas de función, una capacidad introducida en versiones recientes de [[C++]]. El programador escribe una definición  de plantilla de función. Basado en los tipos de los argumentos proporcionados en las llamadas a esta función, [[C++]] genera de forma automática funciones de código objeto por separado para manejar cada tipo de llamada de forma correcta.
  
 
Todas las definiciones de plantillas de función empiezan con la palabra reservada template, seguida por una lista de parámetros formales a la plantilla de función encerrados en corchetes angulares (< y >). Cada parámetro formal es precedido por la palabra reservada class. Los parámetros formales se utilizan como tipos incorporados, o como tipos definidos por el usuario, para definir los tipos de los argumentos a la función, para definir el tipo de regreso de la función,  y para declarar variables dentro de la función. A continuación se coloca la definición de función y se define como cualquier otra función.
 
Todas las definiciones de plantillas de función empiezan con la palabra reservada template, seguida por una lista de parámetros formales a la plantilla de función encerrados en corchetes angulares (< y >). Cada parámetro formal es precedido por la palabra reservada class. Los parámetros formales se utilizan como tipos incorporados, o como tipos definidos por el usuario, para definir los tipos de los argumentos a la función, para definir el tipo de regreso de la función,  y para declarar variables dentro de la función. A continuación se coloca la definición de función y se define como cualquier otra función.

Revisión del 14:37 27 mar 2011

Plantillas de función en C++
Información sobre la plantilla
Concepto:Las funciones homónimas se utilizan por lo regular para ejecutar operaciones similares sobre distintos tipos de datos.

Como funciona

Las funciones homónimas se utilizan por lo regular para ejecutar operaciones similares sobre distintos tipos de datos. Si para cada tipo las operaciones son idénticas, esto se puede llevar a cabo de manera más compacta mediante plantillas de función, una capacidad introducida en versiones recientes de C++. El programador escribe una definición de plantilla de función. Basado en los tipos de los argumentos proporcionados en las llamadas a esta función, C++ genera de forma automática funciones de código objeto por separado para manejar cada tipo de llamada de forma correcta.

Todas las definiciones de plantillas de función empiezan con la palabra reservada template, seguida por una lista de parámetros formales a la plantilla de función encerrados en corchetes angulares (< y >). Cada parámetro formal es precedido por la palabra reservada class. Los parámetros formales se utilizan como tipos incorporados, o como tipos definidos por el usuario, para definir los tipos de los argumentos a la función, para definir el tipo de regreso de la función, y para declarar variables dentro de la función. A continuación se coloca la definición de función y se define como cualquier otra función.

Como utilizar funciones plantilla

  1. include <iostream.h>

template <class T> void imprime_arreglo(T *arreglo, const int cant) {

for (int i = 0; i < c; i++)
 cout << arreglo[i] << “”;

cout <<”\n”; }

void main () {

const int acant = 5, bcant = 7, ccant = 6;
 int a[acant] = {1,2,3,4,5};
  float b[bcant] = {1.1,2.2,3.3,4.4,5.5,6.6,7.7};
   char c[ccant] = “Hello”;

cout << “El arreglo A contiene : \n”;

imprime_arreglo(a, acant);
 cout << “El arreglo A contiene : \n”;
  imprime_arreglo(b, bcant);
   cout << “El arreglo A contiene : \n”;
    imprime_arreglo(c, ccant);

}

Como poner en práctica un tipo de dato abstracto

Las clases permiten que el programador modele objetos que tienen atributos y comportamientos u operaciones. Los tipos contienen miembros de datos y función miembro y en [C++] son definidos mediante la palabra reservada class.

Las funciones miembro de otros lenguajes de programación orientados a objetos a veces se llaman métodos, y son invocados en respuesta a mensajes enviados a un objeto. Un mensaje corresponde a una llamada de función miembro.

Una vez que se haya definido una clase, el nombre de la clase puede ser utilizado para declarar objetos de dicha clase. Nuestra definición de la clase debe comenzar con la palabra reservada class. El cuerpo la definición se delimita mediante llaves izquierdas y derechas. La definición de clase termina con un punto y coma.

Las partes restantes de la definición son nuevas. La etiqueta public: y prívate: se conocen como especificadores de acceso de miembro. Cualquier miembro de datos o función miembro declarado después del especificador public: es accesible, siempre que el programa tenga acceso a un objeto de la clase.Cualquier miembro de datos o función miembro declarada después de prívate: sólo es accesible a las funciones miembros de la clase.

Definición simple de la clase Time

class Time {

private:
  int hour;
  int minutes;
  int second;

public:

 Time();
  void setTime(int, int, int);
  void horaMilitar();
  void horaStandard();

};

El nombre de la clase se convierte en un nuevo especificador de tipo. Pueden existir muchos objetos de una clase, igual que pueden existir muchas variables del tipo int. El programador puede crear nuevos tipos de clase según requiera. Esta es una de las muchas razones por las que [C++] es un lenguaje extensible.

Puesta en práctica de una clase

Time::Time (){hour = minute = second = 0;}

void Time :: setTime(int h, int m, int s) {

hour = (h >= 0 && h < 24)? h: 0;

minute = (m >= 0 && m < 60)? m : 0; second = (s >= 0 && s < 60)? s : 0; }

void Time :: horaMilitar() {

cout << (hour < 10 ? “0” : “ ”) << hour << “:”
        << (minute < 10 ? “0” : “ ”) << minute << “:”
        << (second < 10 ? “0” : “ ”) << second;

}

void Time :: horaStandard() {

cout << ((hour == 0 || hour == 12) ? 12 : hour % 12)
        << “:” << (minute < 10 ? “0” : “ ”) << minute
        << “:” << (second < 10 ? “0” : “ ”) << second
        << (hour < 12 ? “AM” : “PM”);

} void main() {

Time tiempo;
 cout << “La hora militar inical es”;
  tiempo. horaMilitar();
   cout << “La hora estándar inicial es”;
    tiempo.horaStandard();

tiempo.setTime(13,27,6);

cout << “La hora militar con estos datos es”;
  tiempo. horaMilitar();
   cout << “La hora estandar con estos datos es”;
     tiempo. horaStandard();

}


Fuentes

Enlaces externos

Referencias

Bibliografía

  • Addison Wesley - C++ Network Programming Volume I - Mastering Complexity with ACE and Patterns
  • Como programar en C y C++ Tomo I
  • C con Clase