1. 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
2. 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
3. Programación Orientadas a
Objetos
UNIDAD II. Primera Parte
Objetivo General
Aplicar 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.
4. 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;
}
5. 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.
6. 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 FORMALESY
PARÁMETROS ACTUALES
Regla
Compatibilidad 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
7. Programación de Funciones
Parámetros de una Función según Ubicación
COMPATIBILIDAD ENTRE PARÁMETROS FORMALESY
PARÁMETROS ACTUALES
Regla
Compatibilidad 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.
8. 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 anteriores
LimpiarPantalla ();
9. 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;
10. 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.
12. 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í:
13. Programación Orientada a
Objetos
No es Abstracción: ¿Cómo debe Implementarse?
i. Declarar variables
ii. Mostrar un mensaje en pantalla para pedir cada número
iii. Leer los números
iv. Asignarlos la suma a una variable Total
v. Dividir el total entre 3 y asignarlo a la variable Promedio
vi. Mostrar un mensaje en pantalla indicando que se
presentará el resultado
vii. Mostrar la variable Promedio.
14. 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.
15. 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
16. 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.
17. 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?
18. 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.
19. Programación Orientada a
Objetos
Elementos de una Clase
Propiedades 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.
20. 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).
21. 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++
22. Clases y Objetos: Constructores
Es 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.
23. Clases C++: Setters y Getters
La 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.
24. 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
25. 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
27. 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
28. 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.
29. 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.