¡TRANSFORMACIÒN!

TODO CAMBIA, SI TÙ CAMBIAS....

#QuédateEnCasa #PrevenirEsLaClave

video mas destacado

domingo, 3 de febrero de 2008

PROGRAMACION II


Programación II
A
OCT-FEBRERO08
Conceptos de la P.O.O., Sobrecarga de Operadores.
Ing. Juan C. Prado
Anjuta: Es un entorno integrado de desarrollo para C/C++ en sistemas GNU/Linux. Incluye un administrador de proyectos, asistentes, plantillas, depurador interactivo y un poderoso editor que verifica y resalta la sintaxis escrita. http://www.anjuta.org/
1. Opciones:
ü Archivo: Gestión de archivos y proyectos (crear, abrir, guardar, imprimir, etc.)
ü Editar: Opciones de Cortar, Copiar, Pegar y Borrar, así como las de Deshacer y Rehacer.
ü Ver: permite mostrar y ocultar las diversas barras de herramientas y ventanas de la aplicación, así como algunas características del editor (números de línea, márgenes, etc.)
ü Proyecto: opciones para gestionar los proyectos, tales como añadir y quitar archivos del proyecto, o editar la configuración del proyecto.
ü Formato: opciones de formateo del texto, permitiendo el resaltado sintáctico, así como desplegar y replegar trozos de código.
ü Construir: opciones de compilación y de construcción del código de la aplicación.
ü Marcador: permite insertar marcadores en el código y desplazarse por ellos.
ü Depurador: opciones de depuración del código. Permite insertar puntos de ruptura y una ejecución controlada, así como evaluar e inspeccionar variables.
ü CVS: opciones para trabajar sobre un repositorio CVS (Sistema de Control de Versiones), lo que permite controlar los cambios que se realicen sobre el código.
ü Opciones: opciones para establecer las preferencias de un montón de características de la aplicación, desde opciones del compilador y enlazador hasta las opciones del editor y las preferencias generales de la aplicación.
ü Ayuda: permite acceder a la ayuda en línea (Manual de Anjuta), a un tutorial (Cursillo de Anjuta) o a la página Web del proyecto, entre otras.
2. Ventana principal
Es la zona de trabajo, en ella se pueden observar diversos paneles, que pueden ocultarse y mostrarse (menú Ver -> Ventana de mensajes y Ver -> Ventana del proyecto), así como cambiar su tamaño, haciendo clic sobre los bordes de separación y arrastrando con el ratón.
Estos paneles son:
ü Ventana de edición: Es la ubicada en la zona derecha y en ella están los documentos abiertos con los que se trabaja. Puede haber muchos documentos abiertos, pero únicamente hay uno activo en un momento dado.
ü Ventana de proyecto: Es la ubicada en la zona izquierda. Muestra un árbol con los archivos de código fuente que contiene el proyecto. Posee en la parte inferior varias pestañas para ver diversas vistas del proyecto (Proyecto: muestra el código fuente, Archivos: Muestra todos los archivos de la carpeta, y Símbolos)
ü Ventana de mensajes: Ubicada en la zona inferior de la ventana. Muestra todos los mensajes tanto de la salida estándar (stdout) como de la salida estándar de error (stderr) cuando se ejecuta una orden externa. La Ventana de mensajes está habitualmente oculta y se muestra cuando se ejecuta una orden externa.
Los colores con que se muestran los mensajes son relevantes. Los de color negro son mensajes normales informativos. Los de color azul son mensajes importantes como avisos (Warnings) y mensajes de error. Los mensajes de color rojo indican que están enlazados, es decir, haciendo doble-clic sobre un mensaje de color rojo llevará el cursor al archivo y la línea que se especifica en el mensaje.
3. Compilar y construir una aplicación
Para compilar el archivo actual (si es un archivo fuente en C o C++), seleccionar la opción de menú Construir -> Compilar o hacer clic en el botón Compilar de la barra extendida. (También se puede pulsar la tecla de función F9). Aparecerá la ventana de mensajes que mostrará todos los mensajes que produzca el proceso de compilación, incluidos los errores.
Haciendo doble clic sobre las líneas de color rojo, se sitúa el cursor en la línea que ha generado el error. Pueden establecerse las opciones de compilación seleccionando la opción de menú Opciones -> Opciones de compilador y enlazador. Al compilar un archivo, Anjuta lo guardará antes en disco y luego lo compilará.
El proceso de compilación genera un archivo de código objeto (*.o) que será luego enlazado para construir el ejecutable.
Para construir un ejecutable, seleccionar la opción de menú Construir -> Construir o hacer clic en el botón Construir de la barra extendida. (También se puede pulsar la tecla de función F11. Esto mostrará la ventana de mensajes con todos los mensajes que produzca la construcción del ejecutable. El proceso de construcción enlazará el archivo objeto con las bibliotecas indicadas y generará el ejecutable.
Compilación por consola: Utilizaremos el comando g++ del compilador GNU. La línea establecida para compilar por consola será: g++ prueba.cc -o exe
Donde: g++ es el comando del compilador, prueba.cc es el nombre del archivo que compilaremos, la opción –o debe ir para producir la compilación y exe será la denominación del ejecutable, cuyo resultado se presentaría de la siguiente manera: exe.out. Si omitimos el nombre del ejecutable, en este caso exe, por defecto resultaría a.out.
4. Ejecutar el programa
Una vez que se ha construido con éxito el ejecutable, para probarlo seleccionar la opción de menú Construir -> Ejecutar o hacer clic en el botón Ejecutar de la barra extendida. También se puede pulsar la tecla de función F3.
Ejecución por consola: Simplemente se escribe el comando ../ seguido del nombre que hemos dado en el proceso de compilación. Siguiendo el ejemplo anterior, nos quedaría: ./exe
5. Lista referencial de comandos Unix/Linux
ü ls – listar contenido de un directorio
ü mkdir – crea un directorio
ü rmdir – borra un directorio
ü cd – moverse al directorio home
ü pwd – mostrar la ruta actual
ü cp file1 file2 – copiar file1 en file2
ü mv file1 file2 – renombra file1 como file2. Si file2 es un directorio lo mueve dentro del mismo.
ü date – Consulta la fecha y hora actual
ü cal – Muestra el calendario del mes actual
ü whoami – nombre de mi usuario
ü !! - repite el último comando

Programación Orientada a Objetos (POO) es una técnica de programación que utiliza objetos como bloque esencial de construcción.
Características de la Programación Orientada a Objetos:
Þ Abstracción: se define como la extracción de las propiedades esenciales de un concepto. Cada objeto en el sistema puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características.
Þ Herencia: es la propiedad que permite a los objetos construirse a partir de otros objetos. Una clase se puede dividir en subclases. En C++ la clase original se denomina clase base; las clases que se definen a partir de la clase base, compartiendo sus características y añadiendo otras nuevas, se denominan clases derivadas. Las clases derivadas pueden heredar código y datos de su clase base añadiendo su propio código y datos a la misma. La herencia impone una relación jerárquica entre clases en la cual una clase hija hereda de su clase padre. Si una clase sólo puede recibir características de otra clase base, la herencia se denomina herencia simple. Si una clase recibe propiedades de más de una clase base, la herencia se denomina herencia múltiple.
Þ Polimorfismo: es cuando una clase posee varios métodos con el mismo nombre pero con distintos tipos y/o número de argumentos. Se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos. En otras palabras, diferentes objetos reaccionan al mismo mensaje de manera diferente
Þ Encapsulamiento: También llamado “ocultación de la información”. Cada objeto está aislado del exterior. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado.
Características de la Programación Orientada a Objetos:
Þ Objeto: es una unidad que contiene datos y funciones que operan sobre esos datos (propiedades o atributos). Los datos se denominan miembros dato y las funciones métodos o funciones miembro.
Þ Propiedad o atributo: Es un contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la ejecución de algún método.
Þ Método: Son funciones diseñadas para implementar las operaciones permitidas sobre los tipos de datos de una clase. Implementan la funcionalidad asociada al objeto. Los métodos son el equivalente a las funciones en los lenguajes estructurados. Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando a un método que realizará la acción.
Þ Mensaje: Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
Þ Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente.
Þ Clase: es la definición de las propiedades y el comportamiento de un objeto. La instanciación es la creación de un objeto a partir de ella. En tal sentido, una clase es un tipo de dato definido por el usuario que determina la estructura de datos y las operaciones asociadas con ese tipo.
clase = datos + funciones
Partes de la definición de una clase:
Þ Declaración: lista los miembros de la clase.
Þ Implementación: o cuerpo define las funciones.
Especificadores de Acceso a los miembros de una clase:
Þ Acceso protegido (Protected): Solo es posible acceder a los miembros protegidos por funciones miembro dentro de la misma clase y por funciones miembro de clases derivadas de esta clase.
Þ Acceso público (public): Los miembros públicos son accesibles desde cualquier parte del programa.
Þ Acceso privado (private): Los miembros privados sólo pueden ser utilizados por las funciones miembro de la clase y las funciones amigas de la clase.
Þ Métodos de Acceso: El operador punto (.) y el operador flecha (->).
Þ Puntero this: Dentro de una función miembro, this apunta al objeto asociado con la invocación de la función miembro. A través del prefijo this y el operador ->, una función puede saber qué objeto la está llamando.
Constructor de una clase:
Los constructores son métodos que se usan para inicializar un objeto al momento de su definición. Un constructor tiene el mismo nombre de la clase. No devuelve ningún valor.
Destructor de una clase:
Es una función miembro con igual nombre que la clase, pero precedido por el carácter ~. 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, en tal sentido permite liberar la memoria asignada cuando se sale del ámbito de definición de un objeto.
Sintaxis de una clase:
#ifndef RECTANGULO_H // Para evitar la inclusión de copias múltiples
#define RECTANGULO_H
class rectangulo
{
//Definición
int base, altura; // miembro1 y 2
public:
void dimensiones(int,int); // function miembro 1
int area(); // function miembro 1
};
//Implementación
void rectangulo::dimensiones(int b, int h) // :: operador de resolución de ámbito
{
this->base=b;
this->altura=h;
}
int rectangulo::area()
{
return this->base*this->altura;
}
#endif
//Cuerpo del Programa
void main()
{
rectangulo r; //declaración del objeto o instanciación de la clase
r.dimensiones(3,5); //acceso al miembro de una clase para definir el tamaño
"" cout<<"area "<Sobrecarga de operadores de entrada y salida (<<,>>)""
La sobrecarga de un operador es una función que permite al programador sustituir una función definida por el usuario para uno de los operadores existentes. Sobrecarga se refiere al uso de un mismo nombre para múltiples significados de un operador o una función.
Para sobrecargar un operador, se debe definir lo que significa la operación relativa a la clase a la cual se aplica. Para hacer esta operación, se crea una función operador, que define su acción. El formato general de una función operador es el siguiente:
Þ Definición
Sobrecarga de operadores de entrada <<
friend istream &operator >> (istream &, nombre_de_la_clase &);
Sobrecarga de operadores de salida >>
friend ostream &operator << (ostream &, nombre_de_la_clase &);
Þ Implementación
Sobrecarga de operadores de entrada <<
istream &operator >> (istream & entrada, nombre_de_la_clase & objeto){declaración de datos; lectura; asignación (set); return entrada;}
Sobrecarga de operadores de salida >>
ostream &operator >> (ostream & salida, nombre_de_la_clase & objeto){limpiado de pantalla; salida (funciones miembros o Inline; pausa; return salida;}
Sobrecarga de operadores Binarios:
Þ Definición
Sobrecarga de operadores binarios, resultado con la misma estructura del objeto:
nombre_de_la_clase operator + ( nombre_de_la_clase &);
Sobrecarga de operadores binarios, resultado con estructura distinta a la del objeto:
tipo_de_dato operator + ( nombre_de_la_clase &);
Þ Implementación
Sobrecarga de operadores binarios, si el resultado debe ser devuelto con la misma estructura de datos del objeto
nombre_de_la_clase nombre_de_la_clase::operator +( nombre_de_la_clase &objeto){
nombre_de_la_clase obj_aux;
obj_aux.var1=this->In1()+obj.In1();…;
return obj_aux;}
Sobrecarga de operadores binarios, si se devuelve un resultado con estructura de datos distinta a la del objeto:
tipo_de_datos nombre_de_la_clase::operator +(nombre_de_la_clase &objeto){
return (this->Ivar1() + objeto.Ivar1 ());}
El tipo de datos asignado a los operadores boléanos (>,>=,<,<=,==) debe ser int, por cuanto el resultado de la comparación ha de devolver 1 ó 0 según corresponda. Al resto de los operadores se les deben asignar el tipo de dato que corresponda según las variables con las cuales va a operar.
· Operadores Binarios
o Operador +
o Operador -
o Operador *
o Operador /
o Operador %
o Operador <<
o Operador >>
o Operador &
o Operador ^
o Operador |
o Operador []
o Operador ()
· Operadores de Asignación
o Operador =
o Operador +=
o Operador -=
o Operador *=
o Operador /=
o Operador %=
o Operador <<=
o Operador >>=
o Operador &=
o Operador ^=
o Operador |=

REFERENCIAS BIBLIOGRAFICAS:

1. Canosa J.(1994). C++ Práctico. Mexico: Editorial Marcombo.
2. Ceballo F.(2003). Enciclopedia del Lenguaje C++. Editorial Ra-Ma.
3. Deitel H. y Deitel P. (2003). Cómo Programar en C++. México: Pearson Educación. IV Edición.
4. Joyanes L. (2000). Programación en C++. Madrid: Mc. Graw Hill.
5. Joyanes L. (1996). Microsoft C/C++7. Manual de Bolsillo. Madrid: Mc. Graw Hill.
6. Pappas C. y Murray (2001) C++ Sin Errores. Madrid: Mc Graw Hill.
7. Stroustrup B. (2002). EL Lenguaje de Programación C++. Editorial: Pearson Educación.
8. Cualquier sitio web. (web del programador, www.agapea.com/Enciclopedia-del-lenguaje-C--n11664i.htm-3K, Curso gratis: Lenguaje C++. Guía para Programadores-Cursos..., C++-Wikipedia, la enciclopedia libre, Tutoriales Lenguaje C, Tutorial C++)
9. Cualquier otra bibliografía al respecto.



Nota:Cualquier revista, artículo, direcciones web, manuales, cursos que usted considere oportuno. El Facilitador proveerá una vez que tengan su respectiva cuenta todo el material bibliográfico respectivo, de modo de facilitarle aún más su proceso de aprendizaje.

Email: liderprado_55@hotmail.com.
(0412)7424469.
Ing. Juan Carlos Prado Castro
Facilitador Programación II

No hay comentarios: