martes, 5 de octubre de 2010

CONCON

La academia de computación te da la mas cordial bienvenida a este espacio, las herramientas que pondremos a tu disposición corresponden a los contenidos temáticos de tus planes y programas de estudio, para hacer uso de este espacio es necesario que te integres a una lista de correo electrónico del administrador de este blog





para poder dar seguimiento a las asesorías y actividades de estos cursos.


E n l a c e s

Tutorial de programación en C++
http://www.programacionfacil.com/cpp/start

* esta es una liga para un tutorial de C++ donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. C++juanperez


Tutorial de VRML
* esta es una liga para un tutorial de VRML donde podras realizar ejercicios de retroalimentación, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. VRMLjuanperez
Tutorial de Algoritmia
*esta es una liga para un tutorial de ALGORITMIA, donde podras realizar ejericicios de retroalimentacion, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. ALGOjuanperez


Tutorial de Programacion C++ orientado a objetos
*esta es una liga para un tutorial de Programacion orientada a objetos en C++, donde podras realizar ejericicios de retroalimentacion, tus practicas debes enviarlas a la direccion de correo indicando en asunto este curso
p.e. CPOOjuanperez

Tambien puedes recurrir al siguiente blog para obtener informacion básica de la POO
http://compuacademiasv3.blogspot.com/2010/08/programacion-orientada-objetos.html


Notas sobre constructores y destructores en C++
* esta es una liga para una pagina que contiene informacion sobre CONSTRUCTORES y DESTRUCTORES en C++, en este apartado no se requiere constestacion via correo electronico.

http://compuacademiasv3.blogspot.com/2010/10/constructores-y-destructores-en-c.html


...:)

Constructores y Destructores en C++

DEFINICIÓN DE CONSTRUCTORES Y DESTRUCTORES DE UNA CLASE.


Definición:

Un constructor es una función especial que sirve para construir o inicializar objetos. En C++ la inicialización de objetos no se puede realizar en el momento en que son declarados; sin embargo, tiene una característica muy importante y es disponer de una función llamada constructor que permite inicializar objetos en el momento en que se crean.

Un constructor es una función que sirve para construir un nuevo objeto y asignar valores a sus miembros dato. Se caracteriza por:

- Tener el mismo nombre de la clase que inicializa

- Puede definirse inline o fuera de la declaración de la clase

- No devuelve valores

- Puede admitir parámetros como cualquier otra función

- Puede existir más de un constructor, e incluso no existir

Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sitúa ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera.

Un constructor del objeto se llama cuando se crea el objeto implícitamente: nunca se llama explícitamente a las funciones constructoras. Esto significa que se llama cuando se ejecuta la declaración del objeto. También, para objetos locales, el constructor se llama cada vez que la declaración del objeto se encuentra. En objetos globales, el constructor se llama cuando se arranca el programa.

El constructor por defecto es un constructor que no acepta argumentos. Se llama cuando se define una instancia pero no se especifica un valor inicial.

Se pueden declarar en una clase constructores múltiples, mientras tomen parte diferentes tipos o número de argumentos. El compilador es entonces capaz de determinar automáticamente a qué constructor llamar en cada caso, examinando los argumentos.

Los argumentos por defecto se pueden especificar en la declaración del constructor. Los miembros dato se inicializarán a esos valores por defecto, si ningún otro se especifica.

C++ ofrece un mecanismo alternativo para pasar valores de parámetros a miembros dato. Este mecanismo consiste en inicializar miembros dato con parámetros.

class prueba

{ tipo1 d1; tipo2 d2; tipo3 d3; public: prueba(tipo1 p1, tipo2 p2, tipo3 p3):d1(p1),d2(p2),d3(p3) { } };

Un constructor que crea un nuevo objeto a partir de uno existente se llama constructor copiador o de copias. El constructor de copias tiene sólo un argumento: una referencia constante a un objeto de la misma clase. Un constructor copiador de una clase complejo es:

complejo::complejo(const complejo &fuente)

{ real=fuente.real;imag=fuente.imag; }

Si no se incluye un constructor de copia, el compilador creará un constructor de copia por defecto. Este sistema funciona de un modo perfectamente satisfactorio en la mayoría de los casos, aunque en ocasiones puede producir dificultades. El constructor de copia por defecto inicializa cada elemento de datos del objeto a la izquierda del operador = al valor del elemento dato equivalente del objeto de la derecha del operador =. Cuando no hay punteros invocados, eso funciona bien. Sin embargo, cuando se utilizan punteros, el constructor de copia por defecto inicializará el valor de un elemento puntero de la izquierda del operador = al del elemento equivalente de la derecha del operador; es decir que los dos punteros apuntan en la misma dirección. Si ésta no es la situación que se desea, hay que escribir un constructor de copia

El constructor de una clase es un método estándar para inicializar los objetos de esa clase. Es una función que se ejecuta siempre al crear un objeto. Los constructores de una clase tienen siempre el nombre de la clase y no tiene ningún valor devuelto (ni siquiera void). Si el usuario no declara un constructor el sistema siempre crea un constructor por defecto sin argumentos. En el momento en el que el usuario define un constructor el constructor del sistema se elimina y es sustituido por el, o los, constructores definidos (al tratarse de un método más el constructor puede sobrecargarse).

Para inicializar un objeto basta con llamar a su constructor después de la palabra reservada new y asignarlo a una referencia declarada previamente. Un constructor es un método que se ejecuta cada vez que se crea un objeto, el propósito de este procedimiento es el de inicializar los datos del objeto. El nombre del constructor siempre es igual al nombre de la clase.

Se invoca automáticamente cuando new crea un objeto de esa clase.

• Los constructores se declaran en el momento de definir la clase.

class A {

             int x, y;

             A() { x=0; y=0; } // el constructor

           }



          A a= new A();

          a.Print(); // 0 0



• El constructor puede tener parámetros. En este caso, se deben colocar los argumentos respectivos al crear el objeto:

class A {

             int x, y;

            A(int ix, int iy)

           { x=ix; y=iy; } // el constructor

              …

           }



           A a= new A(1,2);

           a.Print(); // 1 2


           a= new A(); // error, hay que colocar

                              // los argumentos

               a.A(1,2); // error, no se puede

                              // invocar el constructor

• Se pueden colocar varios constructores. Durante la creación de un objeto, se invoca aquel que calza con los argumentos dados:

class A {

              int x, y;

             A() { x=0; y= 0; }

             A(int ix, int iy)

                { x=ix; y=iy; }

            A(A from)

              { x= from.x; y= from.y; }

     }

            A a1= new A();

            a1.Print(); // 0 0

            A a2= new A(1,2);

            a2.Print(); // 1 2

            A a3= new A(a2);

             a3.Print(); // 1 2
              
Definición:

Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. JAVA no posee destructores, porque tiene recolección de basuras. C++ posee destructores. Un destructor es un método que es ejecutado cada vez que se destruye (se elimina de RAM) un objeto, el objetivo de este método es el de eliminar toda la memoria que ocupó un objeto.

Destructores

Siempre que se crea un objeto dentro de un programa, sino que también debe ser destruido. Si una clase tiene constructor para inicializar los miembros, también debe tener un destructor para liberar la memoria utilizada. Un destructor, como su nombre sugiere, destruye los valores del objeto creado por el constructor cuando el objeto sale del ámbito de aplicación.

Un destructor es también una función miembro cuyo nombre es el mismo nombre que el de una clase, sino que es precedida por tilde ('~ `).

Por ejemplo, el destructor de la clase vendedor se ~ vendedor (). Un destructor no tiene ningún argumento ni devuelve ningún valor. El compilador automáticamente las llamadas cuando los objetos se destruyen.

Los destructores son los métodos complementarios a los constructores. Tienen la misma sintaxis que en C++ y se escriben anteponiendo el carácter "~" al nombre de la clase a la que pertenecen ("~" se consigue manteniendo pulsada la tecla ALT y mientras se pulsan en el teclado numérico de la derecha los números 1, 2 y 6 en este orden).

No obstante, a pesar de su similitud con C++, no tienen el mismo significado que en este lenguaje y pueden inducir a errores con facilidad.

Los destructores son llamados por el recolector de basura cuando un objeto está a punto de ser borrado de memoria. Gracias a esto el objeto puede tomar acciones de finalización como por ejemplo liberar un recurso externo que tenga bloqueado (un fichero, un puerto de comunicaciones, un handle de una ventana Windows, etcétera).

Fíjese en que el recolector de basura no se está ejecutando todo el tiempo, sino que sólo se ejecuta periódicamente si lo configuramos así, cuando se agota la memoria disponible o cuando se lo indicamos explícitamente en nuestro programa, por lo que puede darse el caso de que termine la ejecución de nuestro programa y no se haya ejecutado el recolector de basura aún, con lo que el método finalize de aquellos objetos que no se hayan recolectado no se ejecutará jamás, de aquí la necesidad de hacer un uso muy cuidadoso de los destructores

En resumen es un método de clase que sirve para realizar ciertas operaciones necesarias al dejar de existir un objeto, por ejemplo, cerrar conexiones de una comunicación, cerrar ficheros, etc.