PARADIGMA DE POO - CLASES

Documentos relacionados
Unidad Didáctica 5: Introducción a la Programación Orientada a Objetos

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

PROGRAMACION ORIENTADA A OBJETOS EN C++

Clases y Objetos en C++

INTRODUCCIÓN A LA POO EN C++

Tema 6: Clases. Índice

Programación orientada a objetos I

Introducción a la Programación orientada a objetos con C++

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Programación Orientada a Objetos en C++

Formato de salida con la instrucción cout Por Fabian Gentile

RELACIÒN ENTRE LA PROGRAMACIÒN ORIENTADA A OBJETOS Y LA ESTRUCTURADA

Elementos de un programa en C

Entrada y Salida en C++

Formato para prácticas de laboratorio

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Edwin Andrés Cubillos Vega

Formato para prácticas de laboratorio

Programación orientada a objetos II

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Funciones Definición de función

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Lenguaje C, tercer bloque: Funciones

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Conceptos Básicos. Programación

Estructuración del programa en partes más pequeñas y sencillas

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

PARTES DE UN PROGRAMA EN C/C++

Introducción a Funciones

PROGRAMACIÓN EN LENGUAJE C VARIABLES Y CONSTANTES

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

CAPITULO 6: FUNCIONES

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Estructura de datos y Programación

12. Tipos de atributos

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Programación C++(3 Parte) Dr. Oldemar Rodríguez Rojas Maestría en Computación Universidad de Costa Rica

Cuales son los tipos de instrucciones que se utilizan en la programación?

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Guía práctica de estudio 04: Clases y objetos

CAPITULO 2: VARIABLES Y CONSTANTES

Tipos de datos y Operadores Básicos

Programación Orientada a Objetos. Orientación a Objetos en Java

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

POO PROGRAMACIÓN ORIENTADA A OBJETOS

Conceptos Básicos. Programación Orientada a Objetos 2

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

CONTENIDO DE LA LECCIÓN 15

POO. Por tanto, una clase nos permite crear varios objetos que pueden realizar la misma función o funciones diferentes.

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Índice. Estructuras de datos en Memoria Principal. Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa

POO: Clases y objetos

Universidad del Papaloapan

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Subrutinas o Funciones

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Unidad 3. Lenguaje estructurado

Transcripción:

PARADIGMA DE POO - CLASES Los programas estructurados se basan en estructuras de control bien definidas, bloques de código, subrutinas independientes que soportan recursividad y variables locales. La esencia de la programación estructurada es la reducción de un programa a sus elementos constituidos. La programación orientada a objetos (POO), permite descomponer un problema en subgrupos relacionados. Cada subgrupo pasa a ser un objeto auto contenido que contiene sus propias instrucciones y datos que le relacionan con ese objeto. Todos los lenguajes POO comparten tres características: Encapsulación, Polimorfismo y Herencia. ENCAPSULACIÓN: Es el mecanismo que agrupa el código y los datos que maneja. Los mantienen protegidos frente a cualquier interferencia y mal uso. Cuando el código y los datos están enlazados de esta manera se ha creado un objeto. Ese código y datos pueden ser privados para ese objeto o públicos para otras partes del programa. POLIMORFISMO: Es la cualidad que permite que un nombre se utilice para dos o más propósitos relacionados pero técnicamente diferentes. El propósito es poder usar un nombre para especificar una clase general de acciones. Por ejemplo en C tenemos tres funciones distintas para devolver el valor absoluto. Sin embargo en C++ incorpora Polimorfismo y a cada función se puede llamar abs(). El Polimorfismo se puede aplicar tanto a funciones como a operadores. HERENCIA: Proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto. La información se hace manejable gracias a la clasificación jerárquica. OBJETO: Conjunto de variables y funciones pertenecientes a una clase encapsulados. A este encapsulamiento es al que se denomina objeto. Por tanto la clase es quien define las características y funcionamiento del objeto. DIFERENCIAS ENTRE C Y C++ Aunque C++ es un superconjunto de C, existen algunas diferencias entre los dos. En primer lugar, en C cuando una función no toma parámetros, su prototipo tiene la palabra void. Sin embargo en C++ void no es necesario (opcional). Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 1

Prototipo en C: Prototipo en C++: char f1(void); char f1(); Otra diferencia entre C y C++ es que en un programa de C++ todas las funciones deben estar en forma de prototipo, en C los prototipos se recomiendan, pero son opcionales. También si una función de C++ es declarada para devolver un valor obligatoriamente la sentencia Return debe devolver un valor, en C no es necesario que se devuelva. Otra diferencia es el lugar donde se declaran las variables locales. En C, deben ser declaradas solo al principio del bloque, mientras que en C++ las variables se pueden declarar en cualquier punto. Aunque es conveniente realizarlo siempre al comienzo de la función. CREACIÓN DE CLASES Y OBJETOS La base del encapsulamiento es la clase, a partir de ellas se le dan las características y comportamiento a los objetos. Lo primero es crear la clase y después en la función main que sigue siendo la principal crearemos los objetos de cada una de las clases. Las variables y funciones de una clase pueden ser publicas, privadas o protegidas. Por defecto si no se indica nada son privadas. Estos modificadores nos indican en que partes de un programa podemos utilizar las funciones y variables. Private: Solo tendrán acceso los de la misma clase donde estén definidos. Public: Se pude hacer referencia desde cualquier parte del programa. Protected: Se puede hacer referencia desde la misma clase y las subclases. CREACIÓN DE UNA CLASE class nomb_clase funciones y variables privadas; funciones y variables publicas; Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 2

Creación del objeto: nomb_clase nombre_objeto1; nomb_clase nombre_objeto2; Llamadas a las funciones de una clase: nombre_objeto.nomb_funcion(parámetros); Desarrollo de funciones miembro: val_devuelto nomb_clase::nomb_funcion(parametros) cuerpo; EJEMPLO Declaramos una clase con una variable privada y dos funciones públicas. La clase recibe el nombre de ejemploclase. class ejemploclase int a; void funcion1(int num); int funcion2(); CLASES En lenguaje C tradicional existen las estructuras de datos, las cuales se definen con la palabra clave struct, ejemplo: struct Coordenadas int x; int y; int z; Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 3

Con una estructura uno crea un tipo de dato nuevo, en este caso, se puede declarar una variable de tipo Coordenadas, la cual puede almacenar 3 valores enteros: struct Coordenadas coo; coo.x=7; coo.y=15; coo.z=55; // Declaración de la variable coo de tipo Coordenadas // Valores iniciales para los datos miembros. x, y, z son los "datos miembros" de la estructura. Para manipular estos datos, (asignarles un valor inicial, cargarlos, mostrarlos, etc.), uno puede escribir funciones globales en su programa. Ejemplo: void Carga(void) void Muestra(void) Bueno, se podría decir que una estructura es el "antepasado" más directo de una clase. Por qué? Que tal si las funciones con las cuales uno manipula los datos de la estructura formaran parte de ella, o sea, una estructura tal que además de definir sus datos miembros también definiera las funciones para manipularlos. Este tipo de estructuras existe en C++ y se definen igual que las estructuras de C pero además uno puede declarar las funciones. //Estructura con funciones miembros. #include <iostream.h> struct Coordenadas int x,y,z; void Cargar(void) x=8; y=9; z=10; //Función miembro que carga los datos. Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 4

; void Mostrar(void) //Función miembro que muestra el contenido de los datos. cout << x <<endl; cout << y <<endl; cout << z <<endl; void main(void) struct Coordenadas coo; //Se define una variable, (coo), de tipo Coordenadas. coo.cargar(); //Llamadas a las funciones de coo. coo.mostrar(); Ahora examine el siguiente programa y encuentre las diferencias con el anterior: //Lo mismo pero con una clase. #include <iostream.h> class Coordenadas int x,y,z; void Cargar(void) x=8; y=9; z=10; void Mostrar(void) cout << x <<endl; cout << y <<endl; cout << z <<endl; ; Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 5

void main(void) Coordenadas coo; coo.cargar(); coo.mostrar(); Encontró las diferencias? La verdad, no son muchas. En lugar de struct se pone class, luego se agrega la etiqueta public, antes de definir las funciones miembros, ya que para una estructura los datos miembros y funciones miembros son por defecto públicos, pero en una clase por defecto los datos miembros son privados, (esto forma parte, entre otras cosas, de lo que se llama "encapsular"), y sólo las funciones públicas pueden tener acceso a los datos privados. Y la otra diferencia es en el momento de definir(*) la variable coo, no hace falta especificar la palabra class así como se hizo con struct. (*) En la POO, utilizando clases, ya no se habla de "definir" una variable de una clase en particular, sino que se crea una "instancia" o un objeto de dicha clase. Por qué usar clases y no estructuras? A veces la diferencia, aparte de la sintaxis, no es del todo "pesada" como para justificar una clase. En este ejemplo no hacía falta definir una clase, la versión de la estructura es más que suficiente. Pero cuando el concepto del objeto a crear es un tanto más complejo, y preocupa, por ejemplo, la protección de los contenidos de los datos miembros, o se tiene una gran cantidad de funciones miembros, o simplemente se pretende en serio programar según POO, es cuando una clase se hace presente. Pues como supongo astutamente dedujo, la Programación Orientada a Objetos, consta de objetos, y una clase, define o es como la "plantilla" sobre la cual se construyen los tan mentados. Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 6

Otro Ejemplo #include <stdio.h> #include <conio.h> class ejemplo int a; void pasar_a(int num); int mostrar_a(); ; void ejemplo::pasar_a(int num) a=num; int ejemplo::mostrar_a() return a; void main() ejemplo obj1, obj2; clrscr(); obj1.pasar_a(10); obj2.pasar_a(99); printf("%d\n",obj1.mostrar_a()); printf("%d\n",obj2.mostrar_a()); getch(); ENTRADA Y SALADA POR CONSOLA EN C++ En C++ se pueden seguir utilizando las mismas sentencias para mostrar información por pantalla o pedirla mediante teclado utilizando estas dos sentencias es iostream.h. Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 7

Mostrar por pantalla: cout << expresión; Pedir por teclado: cin >> variable; La variable pude ser de cualquier tipo. INDICADORES DE FORMATO: Tres funciones miembro (width, precision y fill) que fijan formato de anchura, precisión y carácter de relleno. Es necesario fijar la anchura, precisión y carácter de relleno antes de cada sentencia de escritura. ANCHURA: cout.width(ancho); DECIMALES: cout.precision(nº digitos); RELLENO: cout.fill('carácter'); EJEMPLO: #include<iostream.h> #include<stdio.h> #include<conio.h> void main() double numero=123.1234567; clrscr(); cout<< "hola" <<"\n"; cout.width(15); cout<< "hola" <<"\n"; cout.width(15); cout.fill('*'); cout<< "hola"<<"\n"; cout<<numero <<"\n"; cout.precision(4); cout<<numero <<"\n"; cout.precision(10); cout<<numero; Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 8

getch(); MODIFICADORES DE LA CLASE IOS: Estos modificadores son pertenecientes a la clase ios. Cuando se activan su valor se mantiene, es decir hay que desactivarlos para volver al formato de salida original. Fijar indicador: cout.setf(ios::identificador ios::identificador2); Anular identificador: cout.unsetf(ios::identificador ios::identificador2); IDENTIFICADOR DESCRIPCIÓN oct Devuelve un entero en octal. hex Devuelve un entero en hexadecimal. scientific Devuelve un número en formato científico. showpoint Muestra 6 decimales aunque no sea necesario showpos Muestra el signo + en los valores positivos left Ajusta la salida a la izquierda. Skipws Omite los espacios a la izquierda de la salida. uppercase Muestra el texto en mayúsculas. EJEMPLO #include <stdio.h> #include <conio.h> #include <iostream.h> void main() float num=200.0; int num1=200; clrscr(); cout<<num <<"\n"; cout.setf(ios::showpos ios::showpoint); cout<<num <<"\n"; cout.setf(ios::scientific); cout<<num <<"\n"; Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 9

cout.unsetf(ios::scientific ios::showpoint ios::showpos); cout<<num <<"\n"; cout.setf(ios::hex); cout<<num1 <<"\n"; getch(); CONSTRUCTORES En una clase existe una función miembro muy particular llamada Constructor. Un constructor es una función que debe tener el mismo nombre que la clase y no debe retornar ningún valor, (ni siquiera void), y se encarga de asignarle valores iniciales, (o simplemente inicializar), a los datos miembros. En el ejemplo descubrirá que allí no hay ningún constructor definido, cuando ocurre esto el compilador de C++ crea en ejecución el constructor. No obstante hubiera sido correcto haber definido un constructor que se encargara de, por ejemplo, inicializar con 0 los datos miembros. Un constructor es invocado automáticamente cuando se crea la instancia, o sea que no hay llamarlo explícitamente desde el programa principal. Existen 3 tipos de constructores: - Constructor por defecto. - Constructor común. - Constructor de copia. El constructor por defecto es, en caso que no lo haya definido, el que C++ en tiempo de ejecución le asigne, o bien: class Coordenadas int x,y,z; Coordenadas(); ; //Constructor por defecto Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 10

También le podríamos haber agregado a este constructor, encerrados entre llaves, los valores iniciales para los datos: x=0;y=0;z=0;. Cuando se crea el objeto se escribe: void main(void) Coordenadas coo;... El constructor común es aquel que recibe parámetros para asignarles como valores iniciales a los datos miembros, o sea que al crear la instancia, se pasó unos parámetros para inicializar. class Coordenadas int x,y,z; Coordenadas(int p, int q, int t) x=p; y=q; z=t; //Constructor común. ; Cuando se crea el objeto se escribe: void main(void) Coordenadas coo(6,7,22); //Se le pasa los valores para inicializar.... El constructor de copia se utiliza para inicializar un objeto con otro objeto de la misma clase. Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 11

class Coordenadas int x,y,z; Coordenadas ( int p, int q, int t) x=p; y=q; z=t; Coordenadas (const Coordenadas c) x=c.x; y=c.y; z=c.z; ; //Constructor común. //Constructor de copia. Cuando se crea el objeto se escribe: void main(void) Coordenadas k(1,2,3); //Creación de un objeto con lo valores iniciales 1, 2 y 3. Coordenadas coo=k; //Se llama al constructor de copia para que le asigne a coo los valores de k.... DESTRUCTORES Existe una función especial más para las clases, y se trata de los destructores. Un destructor es una función miembro que se llama cuando se destruye la clase. Todas las clases tienen un destructor implícito, incluso aunque no esté declarado. El destructor implícito no hace nada en particular, pero si uno quiere, puede declarar un destructor de forma explícita. Su sintaxis sería: class NombreClase... Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 12

~NombreClase();... El destructor debe comenzar con el caracter "ñuflo", (~), seguido por el nombre de la clase, (igual que el constructor). Además el destructor no puede recibir parámetros ni retornar nada, (ni siquiera void). No puede haber más de un destructor para una clase y si no se define uno explícitamente, el compilador crea uno automáticamente. El destructor se llama automáticamente siempre que una variable de ese tipo de clase, (una instancia u objeto), sale fuera de su ámbito, (por ejemplo cuando termina el programa). Docente: Ing. Mirko Manrique Ronceros Programación Orientada a Objetos Pág. 13