TEMPLATES PLANTILLAS

lunes, 18 de mayo de 2009



TEMPLATES PLANTILLAS


C++ tiene una caracerística llamada template que permite crear tipos parametrizados o declarar una familia completa de clases o funciones en lugar de sólo una.

La utilidad principal de este tipo de clases o funciones es la de agrupar variables cuyo tipo no esté predeterminado. Así el funcionamiento de una pila, una cola, una lista, un conjunto, un diccionario o un array es el mismo independientemente del tipo de datos que almacene (int, long, double, char, u objetos de una clase definida por el usuario). En definitiva estas clases se definen independientemente del tipo de variables que vayan a contener y es el usuario de la clase el que debe indicar ese tipo en el momento de crear un objeto de esa clase


PLANTILLAS DE FUNCIONES

Supóngase que se quiere crear una función que devolviese el mínimo entre dos valores independientemente de su tipo (se supone que ambos tienen el mismo tipo). Se podría pensar en definir la función tantas veces como tipos de datos se puedan presentar (int, long, float, double, etc.). Aunque esto es posible, éste es un caso ideal para aplicar plantillas de funciones. Esto se
puede hacer de la siguiente manera:







Programa principal que utiliza la plantilla de función recién definida:








PLANTILLAS DE CLASES




De una manera semejante a como se hace para las funciones se puede generalizar para el caso de
las clases por medio de plantillas de clases. Se definirá un parámetro que indicará el tipo de datos con los que más adelante se crearán los objetos. Se presenta a continuación un ejemplo completo deutilización de plantillas de clases basado en una pila muy simple (sin listas vinculadas y sin reserva dinámica de memoria):





El programa principal es el siguiente



En este programa principal se definen dos objetos p1 y p2 de la clase Pila. En p1 el parámetro T vale int y en p2 ese parámetro vale char. El funcionamiento de todas las variables y funciones miembro se particulariza en cada caso para esos tipos de variable. Es necesario recordar de nuevo que el usuario de este tipo de clases debe poner un muy especial cuidado en pasar siempre el tipo de argumento correcto.


CLASES ABSTRACTAS

lunes, 20 de abril de 2009

CLASES ABSTRACTAS
La abstracción es un recurso de la mente (quizás el más característico de nuestra pretendida superioridad respecto del mundo animal). Por su parte, los lenguajes de programación permiten expresar la solución de un problema de forma comprensible simultáneamente por la máquina y el humano. Constituyen un puente entre la abstracción de la mente y una serie de instrucciones ejecutables por un dispositivo electrónico.
En consecuencia, la capacidad de abstracción es una característica deseable de los lenguajes artificiales, pues cuanto mayor sea, mayor será su aproximación al lado humano. Es decir, con la imagen existente en la mente del programador. En este sentido, la introducción de las clases en los lenguajes orientados a objetos ha representado un importante avance respecto de la programación tradicional y dentro de ellas, las denominadas clases abstractas son las que representan el mayor grado de abstracción.
De hecho, las clases abstractas presentan un nivel de "abstracción" tan elevado que no sirven para instanciar objetos de ellas. Representan los escalones más elevados de algunas jerarquías de clases y solo sirven para derivar otras clases, en las que se van implementando detalles y concreciones, hasta que finalmente presentan un nivel de definición suficiente que permita instanciar objetos concretos. Se suelen utilizar en aquellos casos en que se quiere que una serie de clases mantengan una cierta característica o interfaz común. Por esta razón a veces se dice de ellas que son pura interfaz.
CLASES Y METODOS ABTRACTOS

http://www.youtube.com/watch?v=HTZoqPa88HU

CLASES Y METODOS ABSTRACTOS, ENMANUEL ALEJANDRO CIFUENTES CARRILLO, email: emanuelcif@hotmail.com, http://www.youtube.com/watch?v=HTZoqPa88HU ó en el cd de la tesis en la ruta CD DE PROGRAMACION\VIDEOS BLOGGER PROGRAMACION

MI PRIMER PROYECTO

miércoles, 25 de marzo de 2009

MI PRIMER PROYECTO EN VISUAL STUDIO 2008

Este pequeña aplicacion pretende servir como una pequeña guía de iniciación al manejo de Visual Studio .NET 2008 para aquellos estudiantes que se enfrenten a este entorno de desarrollo por vez primera, con poca o nula experiencia previa en C/C++ o limitada experiencia en programación en entornos de desarrollo similares.

VILLAMIZAR M. Jazmin Eliana. Fundamentos de Orientacion a Objetos. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION.

HERENCIA


HERENCIA
Una de las principales propiedades de las clases es la herencia. Esta propiedad nos permite crear nuevas clases a partir de clases existentes, conservando las propiedades de la clase original y añadiendo otras nuevas.

VILLAMIZAR M. Jazmin Eliana. HERENCIA. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION

POLIMORFISMO

miércoles, 18 de marzo de 2009

POLIMORFISMO

En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.

El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos.
Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.
El siguiente video toma un ejemplo mas claro del manejo de polimorfismo en c++

VILLAMIZAR M. Jazmin Eliana. Polimorfismo. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION

OPERADORES DE MANEJO DE MEMORIA

NEW Y DELETE

Veremos su uso en el capítulo de punteros II y en mayor profundidad en el capítulo de clases y en operadores sobrecargados.

Operador new:
El operador new sirve para reservar memoria dinámica.


Sintaxis:




El operador opcional :: está relacionado con la sobrecarga de operadores, de momento no lo usaremos. Lo mismo se aplica a emplazamiento.

La inicialización, si aparece, se usará para asignar valores iniciales a la memoria reservada con new, pero no puede ser usada con arrays.

Las formas tercera y cuarta se usan para reservar memoria para arrays dinámicos. La memoria reservada con new será válida hasta que se libere con delete o hasta el fin del programa, aunque es aconsejable liberar siempre la memoria reservada con new usando delete. Se considera una práctica muy sospechosa no hacerlo.
Si la reserva de memoria no tuvo éxito, new devuelve un puntero nulo, NULL.
Operador delete:
El operador delete se usa para liberar la memoria dinámica reservada con new.
Sintaxis



La expresión será normalmente un puntero, el operador delete[] se usa para liberar memoria de arrays dinámicas.
Es importante liberar siempre usando delete la memoria reservada con new. Existe el peligro de pérdida de memoria si se ignora esta regla.

Cuando se usa el operador delete con un puntero nulo, no se realiza ninguna acción. Esto permite usar el operador delete con punteros sin necesidad de preguntar si es nulo antes.
Nota: los operadores new y delete son propios de C++. En C se usan las funciones malloc y free para reservar y liberar memoria dinámica y liberar un puntero nulo con free suele tener consecuencias desastrosas.


Ejemplo








PROGRAMACION ORIENTADA A OBJETOS

martes, 3 de marzo de 2009

PROGRAMACION ORIENTADA A OBJETOS EN C++
El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje clásico, muy extendido en la programación de sistemas. Se trata de una extensión del lenguaje C que presenta claras influencias del lenguaje Simula, que a su vez puede considerarse como el precursor de los lenguajes POO.


Conceptos de POO y definiciones bases: "SERGIO FERNANDO SPANZAY, DIEGO ALEJANDRO CASTELLANOS, email litunchez@gmail.com,
http://www.youtube.com/watch?v=EVKYJGnj42M, en el cd de la tesis en la ruta CD DE PROGRAMACION\VIDEOS BLOGGER PROGRAMACION


CLASES Y OBJETOS EN C++
La clase es la fundación de C++ para el soporte de la programación orientada a objetos, y se encuentra en el núcleo de muchas de sus más avanzadas características. La clase es la unidad básica de C++ de la encapsulación y esta provee el mecanismo por el cual los objetos son creados.
En este tutorial el estudiante podra afianzar contextos sobre el uso de clases y objetos en c++.
Clases y Objetos Definiciones.. " HECTOR ALVAREZ POL, en el cd de la tesis en la ruta CD DE PROGRAMACION\VIDEOS BLOGGER PROGRAMACION

FUNDAMENTOS DE ORIENTACION A OBJETOS


VILLAMIZAR M. Jazmin Eliana. Fundamentos de Orientacion a Objetos. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION

Esta pequeña presentacion se muestran los diferentes conceptos de la POO asi como ejemplo y manejo de cada concepto.

USO DE HERRAMIENTAS IDE DE VISUAL C++
VILLAMIZAR M. Jazmin Eliana. Fundamentos de Orientacion a Objetos. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION


METODOS DE CLASES CONSTRUCTORES Y DESTRUCTORES

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Los constructores tienen el mismo nombre que la clase, no retornan ningún valor y no pueden ser heredados. Además deben ser públicos, no tendría ningún sentido declarar un constructor como privado, ya que siempre se usan desde el exterior de la clase, ni tampoco como protegido, ya que no puede ser heredado.

Si una clase posee constructor, será llamado siempre que se declare un objeto de esa clase, y si requiere argumentos, es obligatorio suministrarlos.

Por ejemplo, las siguientes declaraciones son ilegales:

pareja par1;
pareja par1();
La primera porque el constructor de "pareja" requiere dos parámetros, y no se suministran.

La segunda es ilegal por otro motivo más complejo. Aunque existiese un constructor sin parámetros, no se debe usar esta forma para declarar el objeto, ya que el compilador lo considera como la declaración de un prototipo de una función que devuelve un objeto de tipo "pareja" y no admite parámetros. Cuando se use un constructor sin parámetros para declarar un objeto no se deben escribir los paréntesis.

Y las siguientes declaraciones son válidas:

pareja par1(12,43);
pareja par2(45,34);

Cuando no especifiquemos un constructor para una clase, el compilador crea uno por defecto sin argumentos. Por eso el ejemplo del capítulo anterior funcionaba correctamente. Cuando se crean objetos locales, los datos miembros no se inicializarían, contendrían la "basura" que hubiese en la memoria asignada al objeto. Si se trata de objetos globales, los datos miembros se inicializan a cero.

Para declarar objetos usando el constructor por defecto o un constructor que hayamos declarado sin parámetros no se debe usar el paréntesis:

pareja par2();
Se trata de un error frecuente cuando se empiezan a usar clases, lo correcto es declarar el objeto sin usar los paréntesis:

pareja par2;
Los destructores son funciones miembro especiales que sirven para eliminar un objeto de una determinada clase, liberando la memoria utilizada por dicho objeto.

Los destructores tienen el mismo nombre que la clase, pero con el símbolo ~ delante, no retornan ningún valor y no pueden ser heredados.

Cuando se define un destructor para una clase, éste es llamado automáticamente cuando se abandona el ámbito en el que fue definido. Esto es así salvo cuando el objeto fue creado dinámicamente con el operador new, ya que en ese caso, si es necesario eliminarlo, hay que usar el operador delete.

En general, será necesario definir un destructor cuando nuestra clase tenga datos miembro de tipo puntero, aunque esto no es una regla estricta. El destructor no puede sobrecargarse, por la sencilla razón de que no admite argumentos.

BIBLIOTECAS DIGITALES
proquest (Acceso local y para acceso remoto – Login y Clave: COOPERATIVA
e-library (Acceso local y para acceso remoto Login y Clave: la cedula)

PROGRAMACION

sábado, 28 de febrero de 2009

FUNCIONES EN C++

Desde un punto de vista práctico, podemos decir que una función es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ejecución) desde otras partes tantas veces como se desee. Un bloque de código que puede ser ejecutado como una unidad funcional. Opcionalmente puede recibir valores; se ejecuta y puede devolver un valor. Desde el punto de vista de la organización, podemos decir que una función es algo que permite un cierto orden en una maraña de algoritmos. Como resumen de lo anterior podemos concluir que el uso de funciones se justifica en dos palabras: organización y reutilización del código. Desde este último punto de vista (reutilización), puede decirse que son un primer paso de la programación genérica ya que representan un algoritmo parametrizado

Una vez expuesta la definición, señalemos que las funciones son la parte central de la programación C++. Algunos lenguajes, como Pascal, distinguen entre procedimientos ("Procedures") y funciones. En C++ las funciones desempeñan ambos papeles, aunque en cierto modo, los ficheros C++ desempeñan algunas funcionalidades de lo que, en otros lenguajes como Modula-2, se denominan módulos. Otra diferencia substancial es que C++ no permite el anidamiento de funciones, es decir, definir funciones dentro de otras. En C++ todas las funciones se definen a nivel de fichero, con lo que tienen ámbito global al fichero.

SINTAXIS Y SEMANTICA DE C ++

VILLAMIZAR M. Jazmin Eliana. Polimorfismo. Universidad Cooperativa de Colombia seccional Bucaramanga 2009 o en el cd de la tesis en la ruta cd de PROGRAMACION\VIDEOS BLOGGER PROGRAMACION