Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Definición de una clase.

Una clase es en general un modelo, receta o plantilla que define el estado y comportamiento
de cierto tipo de objetos. Una clase puede pensarse como una colección de variables
(atributos o propiedades) y funciones (métodos) que permiten representar un conjunto de
datos y especificar las operaciones o procedimientos que permiten manipular tales datos. Se
puede inclusive entender una clase como un tipo de dato personalizado, similar a las
estructuras (structs), donde cada programador define los miembros que va a tener su tipo de
dato. De hecho, los tipos de dato nativos de C++ son en realidad clases.
Desgraciadamente, la división entre interfaz e implementación no es tan limpia en C++ como
en el seudocódigo. Las clases se definen en C++ mediante una construcción class dividida
en dos partes: una parte privada (private) que contiene algunos detalles de la
implementaci´on, y una parte pública (public) que contiene todo el interfaz.
class NombreClase {
private:
// implementacion de la clase
// solamente los atributos
public:
// interfaz de la clase
};
En la parte privada de la construcción class aparecen solo los atributos de la clase y algunos
tipos intermedios que puedan ser necesarios. En C++, la implementación de los métodos de
la clase se facilita aparte. En la parte publica, suelen aparecer solamente las declaraciones
(cabeceras) de los métodos de la clase. Por ejemplo, la siguiente es una definición de la clase
C complejo que representa números complejos:
class CComplejo {
private:
// atributos
double real, imag;
// los metodos se implementan aparte
public:
void asigna_real(double r);
void asigna_imag(double i);
double parte_real();
double parte_imag();
void suma(const CComplejo& a, const CComplejo& b);
};
Los campos real e imaginarios son los atributos de la clase y codifican el estado de un objeto
de la clase C complejo. Puesto que los atributos están declarados en la parte privada de la
clase, forman parte de la implementación y no es posible acceder a ellos desde fuera de la
clase. Su acceso está restringido: solo se puede acceder a ellos en la implementación de los
métodos de la clase.

Atributos.
Microsoft define un conjunto de atributos de C++ que simplifican la programación COM
.NET Framework desarrollo de Common Language Runtime. Al incluir atributos en los
archivos de código fuente, el compilador trabaja con archivos DLL de proveedor para insertar
código o modificar el código en los archivos de objeto generados. Estos atributos ayudan a
crear archivos .idl, interfaces, bibliotecas de tipos y otros elementos COM. En el entorno de
desarrollo integrado (IDE), los asistentes y la ventana Propiedades admiten los atributos.
Aunque los atributos eliminan parte de la codificación detallada necesaria para escribir
objetos COM, necesita un fondo en aspectos básicos de COM para usarlos mejor.
Objetivo de los atributos
Los atributos extienden C++ en direcciones que no son posibles actualmente sin romper la
estructura clásica del lenguaje. Los atributos permiten a los proveedores (archivos DLL
independientes) ampliar dinámicamente la funcionalidad del lenguaje. El objetivo principal
de los atributos es simplificar la creación de componentes COM, además de aumentar el nivel
de productividad del desarrollador de componentes. Los atributos se pueden aplicar a casi
cualquier construcción de C++, como clases, miembros de datos o funciones miembro. A
continuación, se muestra un aspecto destacado de las ventajas que proporciona esta nueva
tecnología:

• Expone una convención de llamada conocida y sencilla.


• Usa código insertado, que, a diferencia de las macros, reconoce el depurador.
• Permite una derivación sencilla de las clases base sin detalles de implementación
pesados.
• Reemplaza la gran cantidad de código IDL que requiere un componente COM por
algunos atributos concisos.
Por ejemplo, para implementar un receptor de eventos simple para una clase ATL genérica,
podría aplicar el atributo event_receiver a una clase específica, como. A continuación, el
compilador de Microsoft C++ compila el atributo event_receiver, que inserta el código
adecuado en el archivo de objeto.
C++
Copiar
[event_receiver(com)]
class CMyReceiver
{
void handler1(int i) { ... }
void handler2(int i, float j) { ... }
}
A continuación, puede configurar los métodos y controlar los eventos (mediante la función
intrínseca __hook ) desde un origen de eventos, que puede crear CMyReceiverhandler1
mediante handler2handler1. CMyReceiver
Mecanismos básicos de los atributos
Hay tres maneras de insertar atributos en el proyecto. En primer lugar, puede insertarlos
manualmente en el código fuente. En segundo lugar, puede insertarlos mediante la cuadrícula
de propiedades de un objeto en el proyecto. Por último, puede insertarlos mediante los
distintos asistentes. Para obtener más información sobre el uso de la ventana Propiedades y
los distintos asistentes, vea Visual Studio Projects - C++.
Como antes, cuando se compila el proyecto, el compilador analiza cada archivo de código
fuente de C++, generando un archivo de objeto. Sin embargo, cuando el compilador
encuentra un atributo, se analiza y se comprueba sintácticamente. A continuación, el
compilador llama dinámicamente a un proveedor de atributos para insertar código o realizar
otras modificaciones en tiempo de compilación. La implementación del proveedor difiere en
función del tipo de atributo. Por ejemplo, los atributos relacionados con ATL se implementan
mediante Atlprov.dll.
Nota:
El uso de atributos no modifica el contenido del archivo de origen. La única vez que el código
de atributo generado está visible es durante las sesiones de depuración. Además, para cada
archivo de código fuente del proyecto, puede generar un archivo de texto que muestre los
resultados de la sustitución de atributos. Para obtener más información sobre este
procedimiento, vea /Fx (Combinar código inyectado) y Depurar código inyectado.
Al igual que la mayoría de las construcciones de C++, los atributos tienen un conjunto de
características que definen su uso adecuado. Esto se conoce como contexto del atributo y se
aborda en la tabla de contexto de atributo para cada tema de referencia de atributo. Por
ejemplo, el atributo coclass solo se puede aplicar a una clase o estructura existentes, en lugar
del atributo cpp_quote, que se puede insertar en cualquier lugar dentro de un archivo de
código fuente de C++.
Compilar programas con atributos
Después de colocar Visual C++ atributos en el código fuente, puede que desee que el
compilador de Microsoft C++ produzca una biblioteca de tipos y un archivo .idl. Las
siguientes opciones del vinculador le ayudan a compilar archivos .tlb y .idl:
/IDLOUT
/IGNOREIDL
/MIDL
/TLBOUT
Algunos proyectos contienen varios archivos .idl independientes. Se usan para generar dos o
más archivos .tlb y, opcionalmente, enlazarlos al bloque de recursos. Este escenario no se
admite actualmente en Visual C++.
Además, el vinculador Visual C++ mostrará toda la información de atributos relacionados
con IDL en un único archivo MIDL. No habrá ninguna manera de generar dos bibliotecas de
tipos a partir de un solo proyecto.
Atributos de contexto
Los atributos de C++ se pueden describir mediante cuatro campos básicos: el destino al que
se pueden aplicar (Se aplica a ), si son repetibles o no(repetibles), la presencia necesaria de
otros atributos(atributosobligatorios) e incompatibilidades con otros
atributos(atributosnoválidos). Estos campos se enumeran en una tabla que lo acompaña en el
tema de referencia de cada atributo. A continuación, se describe cada uno de estos campos.
Se aplica a:
En este campo se describen los distintos elementos del lenguaje C++ que son destinos legales
para el atributo especificado. Por ejemplo, si un atributo especifica "clase" en el campo Se
aplica a, esto indica que el atributo solo se puede aplicar a una clase de C++ legal. Si el
atributo se aplica a una función miembro de una clase, se produciría un error de sintaxis.
Métodos:
Los métodos de una clase son funciones que sirven para manipular las variables de la clase,
de ahí viene la primera característica relevante de la programación orientada a objetos que es
el encapsulamiento, ya que en lo posible se va a tratar de que solo pueda accederse a una
variable de clase a través de un método de la clase. Los métodos se declaran y definen de la
misma manera que una función cualquiera en una aplicación convencional de C++, dicho de
otro modo, en su firma expresan el tipo del valor de retorno, un nombre para el método y una
lista de parámetros de entrada. Usualmente se hace la declaración de los métodos al interior
de la clase, mientras que la definición se hace por fuera de la clase ayudándose del operador
de resolución de ámbito :: para indicar que el método que se está definiendo pertenece a la
clase en cuestión.
Referencias bibliográficas:
Correa, C. (2019). Coding Games and Programming Challenges to Code Better.
CodinGame. https://www.codingame.com/playgrounds/50557/clases-y-objetos-en-c-practica-
1/clases-y-objetos-en-
c#:~:text=Una%20clase%20puede%20pensarse%20como,que%20permiten%20manipular%2
0tales%20datos.
Tema 4 Clases y objetos en C++. (s. f.). http://www.lcc.uma.es/~lopez/lp2/apuntes/04-
objetos/objetos.pdf
Coding Games and Programming Challenges to Code Better. (s. f.).
CodinGame. https://www.codingame.com/playgrounds/50557/clases-y-objetos-en-c-practica-
1/miembros-de-clase-en-c-variables-y-metodos

También podría gustarte