Clase3 Programación Orientada a Objetos

29
Programación Orientada a Objetos Universidad Centroccidental “Lisandro Alvarado” Decanato de Ciencias y Tecnología Análisis de Sistemas Departamento de Sistemas Programación Coordinación del Área de Programación Lapso 2013-1

description

Clase3 Programación Orientada a Objetos

Transcript of Clase3 Programación Orientada a Objetos

Page 1: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Universidad Centroccidental “Lisandro Alvarado”Decanato de Ciencias y Tecnología

Análisis de SistemasDepartamento de Sistemas

Programación

Coordinación del Área de Programación Lapso 2013-1

Page 2: Clase3 Programación Orientada a Objetos

Programación Orientadas a Objetos

Agenda

Programación de Funciones

Programación Orientada a Objetos (POO)

Pilares de la Programación Orientada a Objetos

Definición de Objeto

Definición de Clase

Representación de una Clase

Page 3: Clase3 Programación Orientada a Objetos

Programación Orientadas a Objetos

UNIDAD II. Primera Parte

Objetivo GeneralAplicar los conceptos básicos de la POO, la técnica de modelado orientado a objetos y la representación de las clases en un lenguaje de programación

Objetivos Específicos• Aplicar los conceptos básicos de la Programación Orientada a

Objetos (POO).• Identificar los pilares fundamentales de la programación orientada a

objetos• Implementar Programación Orientada a Objetos usando la

metodología de diseño.

Page 4: Clase3 Programación Orientada a Objetos

Programación de Funciones

Función• Contiene una o más sentencias y se crean

generalmente para realizar una única tarea.• En la Programación Orientada a Objetos, las funciones

se utilizan para definir los métodos de las clases. Implementación de una Función:

tipo_de_retorno NombreFuncion (lista parametros){ sentencias return valor;}

Page 5: Clase3 Programación Orientada a Objetos

Programación de Funciones

Parámetros por valor

• Cuando C++ compila la función y se ejecuta el código que llama a la función, ésta recibe una copia de los valores de los parámetros que se le pasan como argumentos.

Parámetros por Referencia (&)

• Cuando una función debe modificar el valor del parámetro pasado. En este método el compilador pasa la dirección de memoria del valor del parámetro a la función. Cuando se modifica el valor del parámetro esta queda almacenado en la misma dirección de memoria.

Parámetros de una Función• Se conocen como Argumentos.• Una función puede utilizar parámetros por valor, por

referencia, o puede no tener parámetros.

Page 6: Clase3 Programación Orientada a Objetos

Programación de Funciones

Parámetros de una Función según Ubicación

Parámetros Formales

•Están en la definición de la función (cabecera).

Parámetros Actuales

•Están en cada llamada a una función.

COMPATIBILIDAD ENTRE PARÁMETROS FORMALES Y PARÁMETROS ACTUALES

ReglaCompatibilidad Debe cumplir con lo siguiente

Misma cantidad

Para N parámetros formales deben haber N parámetros actuales. Ej: si hay 3 parámetros en los formales, deben haber 3 en los actuales

Page 7: Clase3 Programación Orientada a Objetos

Programación de Funciones

Parámetros de una Función según Ubicación

COMPATIBILIDAD ENTRE PARÁMETROS FORMALES Y PARÁMETROS ACTUALES

ReglaCompatibilidad Debe cumplir con lo siguiente

Mismo tipo

Deben ser parámetros del mismo tipo. Ej: Si en los formales hay un char y un int, igualmente deben haber un char y un int en los actuales

Mismo orden

Deben estar en el mismo orden. Ej: si en los formales hay un char y un int, y en los actuales hay un int y un char, ambos pares de parámetros tienen el mismo tipo pero no están en el mismo orden.

Page 8: Clase3 Programación Orientada a Objetos

Programación de Funciones

Ejemplos de Funciones

void ImprimirMensaje (string mensaje) { cout << mensaje << endl;}Llamado de la función ImprimirMensaje ImprimirMensaje (“Ingrese los siguientes datos:”);

void LimpiarPantalla () { system (“cls”);}Llamado de las funciones anterioresLimpiarPantalla ();

Page 9: Clase3 Programación Orientada a Objetos

Programación de Funciones

Ejemplos de Funciones

void intercambio(int& m, int& n){ int aux=m; m= n; n= aux;}

int i=3, j =50;

cout<< “i = “<< i << “y j = “ << j << endl;

// Llamado de la función intercambio

intercambio (i, j);

cout<< “i = “ << i << “y j = “ << j << endl;

Page 10: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas de computadora.

Es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real.

Se basa en la idea natural de la existencia de un mundo lleno de objetos, de modo que la resolución del problema se realiza en términos de objetos.

Page 11: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Pilares Fundamentales de la POO

Page 12: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Abstracción•Consiste en captar las características esenciales de un objeto, así como su comportamiento, al mismo tiempo que se ignoran los detalles no esenciales.

•En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?“.

Abstracción: ¿Qué es y que Hace?i. Sumamos los números y dividimos entre 3

Ejemplo: el proceso para calcular el promedio de 3 números puede explicarse así:

Page 13: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

No es Abstracción: ¿Cómo debe Implementarse?

i. Declarar variablesii. Mostrar un mensaje en pantalla para pedir cada

númeroiii. Leer los númerosiv. Asignarlos la suma a una variable Totalv. Dividir el total entre 3 y asignarlo a la variable

Promediovi. Mostrar un mensaje en pantalla indicando que se

presentará el resultadovii.Mostrar la variable Promedio.

Page 14: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Encapsulamiento• Es una propiedad que ayuda a mantener juntos, en

una única entidad, los atributos o propiedades (datos) y las funciones (métodos) que definen el comportamiento del objeto.

Page 15: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Herencia• Es una propiedad que permite que los objetos sean

creados a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.

Jerarquía de clases de transportes

Page 16: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Polimorfismo• Consiste en la posibilidad de definir en una jerarquía de

clases métodos y/o atributos denominados de forma idéntica, pero que se comportan de manera distinta.

Page 17: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

¿Qué es un Objeto?• Todo objeto del mundo real tiene 2 componentes:

características (atributos) y comportamiento (métodos).

Según Booch• Es algo que tiene estado, un comportamiento y una identidad.

¿Cuáles son sus Atributos?

¿Cuáles son sus Métodos?

Page 18: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

¿Qué es un Clase?

• Es la descripción de un conjunto de objetos; consta de métodos y atributos (datos) que resumen características comunes de un conjunto de objetos.

• Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programando una clase.

Page 19: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Elementos de una ClasePropiedades o atributos• Son las características de los objetos. Cuando

definimos una propiedad normalmente especificamos su nombre y su tipo.

• Las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.

Métodos • Son las funcionalidades asociadas a los objetos, es

decir, describen el comportamiento asociado a un objeto.

• Las funciones (métodos) residen en el objeto y determinan como actuará éste cuando reciba un mensaje.

Page 20: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

Clases vs Objetos• Las clases son modelos o plantillas que describen

como se construyen uno o más objetos del mismo tipo.

• Cada vez que se construye un objeto de una clase, se crea una instancia de esa clase. Una instancia es una variable de tipo objeto.

• Una clase puede tener muchas instancias y cada una es un objeto diferente.Consideraciones

• Tanto para atributos como para métodos, en C++ hay tres modos principales de acceso: public, private, protected (público, privado y protegido).

Page 21: Clase3 Programación Orientada a Objetos

Programación Orientada a Objetos

class NombreClase { private: //Visibilidad o Acceso Atributos

public: //Visibilidad o Acceso Métodos};

Sintaxis para crear una Clase en C++

NombreClase NombreObjeto;

Sintaxis para crear un Objeto en C++

NombreObjeto.Metodo();

Sintaxis para enviar un mensaje a un objeto en C++

Page 22: Clase3 Programación Orientada a Objetos

Clases y Objetos: ConstructoresEs un método especial que se ejecuta automáticamente al momento de la creación de un objeto; su propósito es la inicialización de los atributos del objeto, bien sea con valores predefinidos o con valores que se “pasan” al objeto a través de parámetros.

Consideraciones

• Se denominan exactamente igual que la clase.• Pueden haber varios constructores en una clase, con la diferenciación entre ellos de los

argumentos que reciben (sobrecarga de métodos).• Para efectos de este curso, principalmente se usarán 2 constructores: (valores

predeterminados, y otro que recibe los argumentos de inicialización).• En caso de que sea un constructor de inicialización predeterminado, colocarás valores base.

Page 23: Clase3 Programación Orientada a Objetos

Clases C++: Setters y GettersLa función Set es un método que nos permite modificar el valor (asignar) de una variable privada (atributo) de una clase.La función Get es un método que nos permite visualizar el valor de una variable privada (atributo) de una clase, en otras palabras provee el valor del atributo a quien lo solicite.

Consideraciones

• Por cada atributo debería existir un Set y un Get.• Los Sets constituyen un método cuya única función será asignarle un valor a un atributo en particular, el

cual viene por parámetro. Dado que no tiene que retornar valor, los Sets son procedimientos, o funciones void.

• Los Gets son métodos que se invocarán para que retornen el valor de una atributo en particular, de manera que el tipo de retorno de cada Get dependerá del tipo del atributo.

Page 24: Clase3 Programación Orientada a Objetos

Identificación de Objetos• Una técnica a seguir para lograr la identificación de los objetos es

subrayar cada sustantivo (nombre) presente en el planteamiento del problema.

• Ejemplo: Dado la edad y la nacionalidad (si es venezolano o no) de un Joven. Determinar si el joven es admitido o no. Se sabe que es admitido siempre y cuando sea venezolano y su edad esté entre 18 y 21 años.

Dado la edad y la nacionalidad (si es venezolano o no) de un Joven. Determinar si el joven es admitido o no. Se sabe que es admitido siempre y cuando sea venezolano y su edad esté entre 18 y 21 años.

IDENTIFICACIÓN DE OBJETOS Y SUS COMPONENTES

INFORMACIÓN DE ENTRADA: Edad y nacionalidad

OBJETOS CANDIDATOS: Joven

REQUERIMIENTOS: determinar si

Es admitido o no el Joven

IMPORTANTE: en ocasiones la información de entrada está implícita

Page 25: Clase3 Programación Orientada a Objetos

Programación de Objetos en C++

Un Programa Orientado a Objetos en C++, está compuesto por:

• Varias librerías de uso genérico, bien sea las incorporadas al lenguaje o programadas por el usuario.

• Una carpeta en el disco duro (o pendrive) con el nombre del proyecto.

• Clases propias para el programa. Cada clase se almacena en 2 archivos: uno para la interfaz (extensión .h) y otro para la implementación (extensión .cpp). Estos archivos van dentro de la carpeta del proyecto

Cada clase que se diseña tendrá 2 partes:

• La interfaz: contiene solamente la declaración de los componentes de la clase, siguiendo la sintaxis de C++.

• La implementación: contiene la programación de los métodos de la clase

Nuestro ejemplo de Admisión requerirá al menos 3 Archivos: Joven.h , Joven.cpp y Principal.cpp

Page 26: Clase3 Programación Orientada a Objetos

Programa Orientado a Objetos C++:

#ifndef JOVEN_H#define JOVEN_H#include <string>using namespace std;

class Joven {private: int edad; bool venezolano; //1=si, 0=nopublic:

Joven(); Joven (int, bool); void setEdad(int); void setVenezolano(bool); int getEdad(); bool getVenezolano(); bool EsAdmitido (); string RespAdmitido ();};#endif

#include "Joven.h“Joven :: Joven (){}Joven :: Joven (int e, bool v){ edad = e; venezolano = v;}void Joven::setEdad(int e){edad= e;}void Joven::setVenezolano(bool v){venezolano = v;}int Joven::getEdad(){ return edad;}bool Joven::getVenezolano() {return venezolano;}bool Joven :: EsAdmitido (){ if ((venezolano) && (edad>=18 && edad<=21)) return 1; else return 0;}string Joven :: RespAdmitido (){ if (EsAdmitido ()) return "ADMITIDO"; else return "NO ADMITIDO";}Joven.h (Interfaz) Joven.cpp(Implementación)

Page 27: Clase3 Programación Orientada a Objetos

Programa Orientado a Objetos C++

#include <iostream>#include <cstdio>#include <cstdlib>#include "Joven.h”using namespace std;

int main(){ int ed; char resp; Joven j; cout << "Edad del joven: " << endl; cin >> ed; cout << "Es venezolano (S-N): " << endl; cin >> resp; j.setEdad(ed); j.setVenezolano(resp == 's' or resp == 'S'); cout << "El joven es: " << endl; cout << j.RespAdmitido () << endl; system ("PAUSE"); return 0;}

Principal.cpp

Page 28: Clase3 Programación Orientada a Objetos

Asignaciones Próxima Clase

Repasar lo visto en Clase.

Leer la Guía Didáctica de Introducción a la Programación Orientada a Objetos (POO).

Realizar Ejercicios Propuestos.

Page 29: Clase3 Programación Orientada a Objetos

Referencias Bibliográficas

• JOYANES, L y ZAHONERO, I. 2010. Programación en C, C++, JAVA y UML. Mc Graw Hill, Interamericana Editores, S.A. DE C.V.

• JOYANES, L. 2006. Programación en C++. Algoritmos, estructuras de datos y objetos. 2a Edición. Mc Graw Hill, Interamericana de España, S.A.U.