viernes, 22 de enero de 2016

Constructores y destructores de una clase

Constructores de una clase:
Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase llamada Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear los constructores. Un constructor es un método perteneciente a la clase que posee unas características especiales:
-          Se llama igual que la clase.
-          No devuelve nada, ni siquiera void
-          Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones
-          De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase

Para definir los constructores se emplea la siguiente sintaxis:
         [modifVisibilidad] nombreConstructor (listaParámetros) [throws listaExcepciones]
         {
         }

Para modifVisibilidad se aplica las mismas normas que para atributos y métodos:
-          public: indica que es un método accesible a través de una instancia del objeto.
-          private: indica que a través de una instancia no es accesible el método. Al heredar el método se convierte en inaccesible.
-          protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar desde la clase derivada.



Destructor de una clase:
Es un método de una clase que se llama justo antes de una instancia de esa clase y se elimina de la memoria. No todos los lenguajes de programación orientados a objetos suelen tener un destructor.
La contrapartida de un destructor es un constructor que se ejecuta cuando se crea el objeto, se instancia y se lo inicializa.

Una clase sólo tiene una función destructor que, no tiene argumentos y no devuelve ningún tipo. Un destructor realiza la operación opuesta de un constructor, limpiando el almacenamiento asignado a los objetos cuando se crean. C++ permite sólo un destructor por clase.

POO (Programación orientada a objetos)


¿En qué consiste la Programación orientada a objetos?
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Características:
Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema sin revelar cómo se implementan esta característica.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema.
Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. 
Herencia: La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase.
¿Qué es un objeto?
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos
Un objeto puede ser creado instanciando una clase
¿Qué es una clase?

Es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje.

 

Cada clase es un modelo que define un conjunto de variables

Ejemplo de Claseen C++
#include <iostream.h>
class Miclase {
public:
Miclase() {} //constructor por defecto
~Miclase() {} //destructor
void yoMismo() { return this }
};

int main()
{
void* pClase;
Miclase unObjeto;
pClase = unObjeto.yoMismo();
cout<< "El puntero pClase es "
<< pClase <<'\n.';
return 0;
}

Programa Validacion de cedula Ecuatoriana

El Programa realiza un validacion de la cedula de identidad Ecuatoriana, mediante un determinado algoritmo podemos verificar si la cedula es correcta o incorrecta.


#include <conio.h>
#include <stdio.h>
char Cadena[10];
int Num[10];
int par;
int impar[10];
int *ptrNum[10];
int resp;
int im[10];

main(){
int *ptrNum=&Num[10];
printf("ingrese la cedula\t");
//Se realiza la transformacion de caracteres a numeros enteros
for(int i=0;i<=9;i++)
{
   
scanf("%c",&Cadena);

sscanf(Cadena, "%d", &ptrNum[i]);

}

for(int i=0;i<=9;i++)
{
printf("%d\n",ptrNum[i]);
}
for (int i=0;i<9;i++)
{
Num[i]=ptrNum[i];
}
//se realiza la suma de pocisiones pares
printf("La suma de los pares es:");
par=Num[1]+Num[3]+Num[5]+Num[7];
printf("%i",par);
//Se multiplica pocisiones impares x 2

printf("\nPrimera parte impares:");
for(int i=0;i<9;i++)
{
     
impar[i]=Num[i]*2;
im[i]=impar[i];
printf("\n%i",im[i]);
i++;
}
//Funcion si para determinar si es mayor a 9 restar 9
printf("\n2da parte impares");
if(im[0]>9){

printf("\n%i",impar[0]-9);
im[0]=impar[0]-9;}
else{
printf("\n%i",im[0]);}

if(im[2]>9){
printf("\n%i",impar[2]-9);
im[2]=impar[2]-9;}
else{
printf("\n%i",im[2]);}

if(im[4]>9){
printf("\n%i",impar[4]-9);
im[4]=impar[4]-9;}
else{
printf("\n%i",im[4]);}

if(im[6]>9){
printf("\n%i",impar[6]-9);
im[6]=impar[6]-9;}
else{
printf("\n%i",im[6]);}

if(im[8]>9){
printf("\n%i",impar[8]-9);
im[8]=impar[8]-9;}
else{
printf("\n%i",im[8]);}
//Resultado de la suma de pares e impares
resp=(par)+(im[0]+im[2]+im[4]+im[6]+im[8]);
printf("\nSuma total:\t%i",resp);

//Funcion si para determinar si se resta a la decena superior
if(resp>10&resp<20)
{
resp=20-resp;
printf("\nResultado:%i\t",resp);
}
else
if(resp>20&resp<30)
{
resp=30-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>30&resp<40)
{
resp=40-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>40&resp<50)
{
resp=50-resp;
printf("\nResultado: %i\t",resp);
}
else
if(resp>50&resp<60)
{
resp=60-resp;
printf("\nResultado: %i\t",resp);
}
//Funcion si para determinar el resultado :D
if(resp==ptrNum[9])
{
printf("\nCedula Correcta :D");
}
else
{
printf("\nCedula Incorrecta :(");
}
getch();

}

Correccion de la prueba bloque 2


https://drive.google.com/file/d/0B_IFi7mzrpepZzlYYW1JM3FSc2M/view?usp=sharing

lunes, 9 de noviembre de 2015

Metodo gráfico en C

La librería winbgim.h a sido creada originalmente por Konstantin Knizhnik's winbgi shareware  y posteriormente modificada por Mark Richardson  y Michael Main, esta librería tiene como objetivo emular la librería graphics.h de Borland C++ y facilitar algunas funciones del Mouse. La ventaja de esta librería es que nos permite crear aplicaciones gráficas con compiladores GNU tales como el ambiente de desarrollo Dev C++ de la misma manera como se crean en el compilador comercial Borland C++.
Originalmente el autor nos ofrecía una colección de archivos que se debían ubicar en carpetas especiales e incluir ciertos comandos al la configuración del linker y del compilador, esta operación tenia cierta  complejidad y para muchos se convirtió en un dolor de cabeza.
Con el fin de facilitar el uso de esta librería me tome la libertad de realizar un instalador para la versión 4.9.9.2 del Dev C++ que realiza todas las configuraciones necesarias.
Ahora cada ves que queramos realizar un programa con soporte para gráficos solo es necesario seguir los siguientes pasos:

Estructuras estaticas en C


Se denominan estáticas las estructuras de datos simples, o complejas, que una vez definidas dentro de un programa, permanecen inalteradas durante la ejecución del mismo, sin poder variar, por tanto, su posición en memoria, ni su longitud en bytes, declarada al especificar el tipo de la misma. En este sentido, y de menor a mayor complejidad, son estructuras estáticas tradicionales de datos:Las variables de carácter las variables numéricas entera, las variables numéricas de punto flotante o reales, las variables de tipo cadena (string)Las matrices (arrays), formadas por elementos contiguos en memoria de los tipos citados anteriormente los registros y archivos Tradicionalmente se han definido como dinámicas las estructuras de cola, pila y árbol por permitir la variación del número de sus elementos, dentro de ciertos límites, durante la ejecución del programa. Por lo complejo que resulta el manejo de todo tipo de estructuras, en este libro se menciona tan solo los tipos de estructuras simples que son los mas manejados para la solución de problemas comunes a las Ingenierías. Un Arreglo Estático Es aquel que siempre permanece del mismo tamaño, es decir siempre contendrá el mismo número de elementos.
 El límite superior no puede exceder el rango de los tipos de datos Long (-2,147,483,648 al 2,147,483,647), ejemplo: Dim a Alumnos(19) As Integer Total de elementos a contener = 20 Tipos dinámicos Dentro de esta categoría entra solamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. Con ellos puedes manejar el tamaño detus variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.

lunes, 19 de octubre de 2015

Corrección de la prueba

1.-Determinar el valor que tendrán las variables después de cada operación de asignación.


2.-Definir cual seria la salida en pantalla del siguiente codigo de c++ si la cadena ingresada es (1,2,3,4,5,6,7,8,9,0).

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
char ced[9];
char *ptrced;
main(){
   printf("ingrese su num ced");
   gets(ced); 
   printf("%s\n",ced);
   for(int i;i<10;i++){
ptrced=&ced[i];
//printf("\n%p\n",&ptrced);
printf("\n%d\n",*ptrced);
   }     
  getch();
       }

3.-Encierre la letra de la respuesta correcta de la pregunta.
*¿Que es una matriz?
a)   Es una zona de almacenamiento de memoria contiguo.

*¿Que es un puntero?
c)   Ninguna de las anteriores.

*¿Que es una estructura dinámica?
c)   Son estructuras que cuya dimensión puede crecer o disminuir durante la ejecución del programa.

*¿Que es una lista?
c)   Es una estructura de datos que nos permite agrupar elementos de una manera organizada.

*¿Que es una pila?
a)   Es un tipo de lista en la que solo se puede insertar y eliminar nodos en uno de sus extremos.

4.-Realizar el siguiente ejercicio en c++.

b) Ingresando valores a una matriz de 4 elementos de tipo flotante calcular el mayor de los elementos, utilizar punteros.