Diferencia entre revisiones de «Programación en C++/Objetos y Clases»

Contenido eliminado Contenido añadido
Ajustes menores
 
Línea 68:
----
 
Las funciones miembros de una clase sólo pueden ser llamadas relativas a un objeto específico. Para llamar a una función miembro desde alguna parte del programa que se encuentre fuera de la clase, se debe usar el nombre del objeto y el operador de direcionamientodireccionamiento '.' ( punto ). Por ejemplo, lo siguiente llama a m_Renderizar() en el objeto objeto1.
 
<pre>
Línea 158:
* Un miembro público significa que el acceso al mismo puede darse dentro del interior de la clase, dentro de una subclase, y desde un objeto instanciado de cualquiera de estas. Por ejemplo, los miembros de la clase '''CRender''' son accesibles dentro de la misma y podrán accederse desde cualquier otra clase que se derive de CRender, así como desde cualquier objeto instanciado de estas.
 
* Un miembro privado significa que el acceso al mismo puede darse solamente dentro del interior de la clase que lo posee. Normalmente, el programador creador de una clase declara a los atributos de la clase como privados y a los métodos como públicos, esto con la idea de que el usuario de la clase no pueda tener acceso a los atributos sino es a travestravés de los métodos definidos para el caso.
 
* Un miembro protegido se comporta de manera parecida a un miembro privado, salvo que estos son accesibles dentro de la clase que lo posee y desde las clases derivadas, pero no desde los objetos instanciados a raizraíz de dichas clases.
 
'''Nota:''' por defecto, los miembros de una clase son privados.
Línea 192:
Una subclase es una clase que se deriva de otra. La clase que sirve de base suele conocerse como '''parent''' (padre), y a la subclase se le llama '''child''' (hija). En C++ cada clase que es creada se convierte en candidata para servir de base de donde se deriven otras. Por ejemplo, la clase '''Pareja''' es candidata para convertirse en la base para las subclases '''Suma''', '''Resta''', '''Multiplica''', '''Divide''', y otras posibles subclases en donde se utilice un par de valores numéricos.
 
Para poner un ejemplo, pensemos en que deseamos crear la clase '''Suma''', misma que será utilizada para obtener la suma de dos números. Puesto que la clase Pareja posee dos atributos númericosnuméricos puede ser usada como base para la clase que estamos proyectando. Así, el siguiente ejemplo se constituye en un caso de clases derivadas.
<pre>Nota: Observe que la sintaxis para crear una subclase es:
class hija : [public | private] padre // ¿Qué significan public y private aquí?
Línea 244:
Al tipo de diagrama mostrado arriba (Herencia por extensión) se le conoce como '''UML''' [//es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado] y es utilizado para mostrar de forma grafica la relación existente entre una clase hija con la clase padre. En el caso del ejemplo, se muestra que la clase Suma es una extensión de la clase Pareja y, en consecuencia, Suma posee a los miembros { '''a''', '''b''', '''getA()''', '''getB()''', '''setA()''', '''setB()''' } heredados de la clase Pareja. Observe como la clase Suma posee otros dos miembros no heredados, { '''resultado''', y '''calcular()''' }, y es precisamente a este tipo de situación por lo que se dice que Suma es una extensión de Pareja, ya que Suma, además de poseer a todos los miembros de Pareja, se extiende para poseer o adquirir otros dos miembros.
 
=== AgregacionAgregación o composición ===
La composición se da en los casos en donde una clase posee un objeto que es una instancia de otra clase. Por ejemplo, la clase '''Suma''' podría escribirse de la siguiente forma:
<source lang="cpp">
Línea 260:
};
 
// implementación del metodométodo calcular de la clase Suma.
double Suma::calcular() { return p.getA() + p.getB(); }
</source>
Línea 302:
Pareja p;
};
// implementación del metodométodo calcular de la clase Suma.
double Suma::calcular() { return p.getA() + p.getB(); }
 
Línea 350:
Pareja() {}
 
// constructrorconstructor parametrizado
Pareja(double x, double y) : a(x), b(y) {}
 
Línea 396:
 
== Destructores ==
Un destructor es un método que pertenece a una clase y el cual (en C++) debe tener el mismo nombre de la clase a la que pertenece. A diferencia de los otros métodos de la clase, un destructor deberá ser del tipo '''void''', es decir, el mismo no regresará valor alguno. Para diferenciar a un método destructor de un método constructor, al nombre del destructor se le debe anteponer el caractercarácter <font size="+1">'''~'''</font> (Alt + 126).
 
El objetivo principal del destructor es el de retirar de la memoria al objeto, o sea, el destructor hace todo lo contrario que el constructor.