Está en la página 1de 31

Programación

orientada a objetos

LICENCIATURA EN SISTEMAS

FCAD - UNER
Unidad 2
Introducción al paradigma y modelado orientado a objetos.
Introducción al Paradigma Orientado a Objetos.
Concepto de Objetos y Clases.
Características generales. Abstracci
Abstracción. Encapsulamiento.
Herencia. Especialización y generalización. Herencia simple y múltiple.
Polimorfismo. Binding estático y dinámico.
Clasificación de los lenguajes Orientados a Objetos.
Modelado Orientado a Objetos.
El UML como una herramienta de modelado.
Nociones básicas.
Características generales de los diagramas presentes en UML.
Diagrama de clases.
Notación.
Clases. Operaciones. Responsabilidades.
Relaciones entre clases (asociaciones, agregaciones,
generalización).

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Introducción a la programación orientada a objetos

Programación Orientada a Objetos


Estilo de programación que utiliza objetos como base esencial en
la construcción de software.
La programación orientada a objetos intenta simular el mundo
real a través del significado de los objetos, que contienen
características y funciones.
Los conceptos y herramientas orientadas a objetos son tecnologías
que permiten que los problemas del mundo real sean expresados
de modo fácil y natural.
La programación orientada a objetos se basa en la idea de un
objeto, que es una combinación de variables locales y
procedimientos llamados métodos que juntos conforman una
entidad de programación.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Introducción a la programación orientada a objetos

Programación Orientada a Objetos


Las técnicas orientadas a objetos proporcionan mejoras
metodológicas para construir sistemas de software complejos a
partir de unidades de software modularizado y reutilizable.
La POO es una aproximación a las metodologías de programación
utilizadas en la ingeniería del software, que han demostrado
importantes mejoras en la productividad de los proyectos de
construcción de software.
En algunos aspectos la POO es un refinamiento de las técnicas de la
programación estructurada, remarcando los aspectos de
modularidad y de ocultación de la información.
La POO no es una panacea, pero hace más manejable el desarrollo y
mantenimiento de los programas.
Los lenguajes orientados a objetos se clasifican como lenguajes de
quinta generación.
Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018
Unidad 2 Concepto de clases y objetos

¿Qué es un objeto?

Una cosa tangible o visible.

Algo que puede ser entendido intelectualmente.

Algo sobre lo que puede ser dirigido un


pensamiento o una acción.

Representa un elemento individual e identificable,


real o abstracto, con un comportamiento bien
definido en el dominio del problema.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

¿Qué es un objeto?

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Objetos. Características

Estado
El estado de un objeto se encuentra representado por
campos de datos (también conocidos como
propiedades) con sus correspondientes valores.

Los atributos de un objeto son tenidos en cuenta según


el dominio del problema.
Abstracción?

o Si lo que se quiere es vender un coche, los atributos que


interesan son el precio, color, potencia, terminación,…
o Si lo que se quiere es participar en un rally, lo que interesa es
aceleración, potencia, velocidad, …
Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018
Unidad 2 Concepto de clases y objetos

Objetos. Características

Comportamiento
El comportamiento de un objeto se encuentra
definido por un conjunto de métodos.

Invocando a los métodos de un objeto significa que


usted solicita que el objeto realice alguna tarea.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Objetos. Características

Identidad
Propiedad característica que los distingue del resto de
los objetos.

Todo objeto es único.

La identidad no se la proporciona el usuario,


simplemente la tiene.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Objetos
Un primer ejemplo
Imaginemos la siguiente situación: 
◦ Un domingo por la tarde estoy en casa viendo
la televisión, y de repente mi madre siente un
fuerte dolor de cabeza; como es natural, lo
primero que hago es tratar de encontrar una
caja de aspirinas.
Un primer ejemplo
Descripción del problema en clave de
objetos: 
◦ El objeto hijo ha recibido un mensaje procedente
del objeto madre. 
◦ El objeto hijo responde al mensaje o evento ocurrido
mediante una acción: buscar aspirinas. 
◦ La madre no tiene que decirle al hijo dónde debe
buscar, es responsabilidad del hijo resolver el
problema como considere más oportuno. 
◦ Al objeto madre le basta con haber emitido un
mensaje.
Un primer ejemplo
El hijo no encuentra aspirinas y decide acudir a la
farmacia. 
La farmacéutica desaparece para regresar al poco
tiempo con una caja de aspirinas en la mano. 
El hijo paga, se despide y vuelve a su casa.
Allí le da una aspirina a su madre, la cual al cabo de un
rato comienza a experimentar una notable mejoría
hasta la completa desaparición del dolor de cabeza.
Un primer ejemplo: Objetos
Hijo: responde al mensaje de la madre para conseguir
una aspirina. Para ello entra en relación con un nuevo
objeto
Farmacéutica: responde al mensaje o evento de
petición del objeto hijo con la búsqueda de la aspirina.
El objeto farmacéutica es ahora el responsable de la
búsqueda de la aspirina. 
Farmacéutica: lanza un mensaje al objeto hijo
solicitando el pago del importe. 
Hijo: responde a tal evento con la acción de pagar.
Un primer ejemplo: Objetos
Los objetos se diferencian por: 
◦ Características o propiedades 
◦ Un conjunto de acciones que realizaban en respuesta
a unos eventos. 
◦ Los objetos tienen propiedades distintas, como:
color del cabello, el grado de simpatía o el peso. 
◦ Todos tienen un conjunto de atributos en común
por ser ejemplos de una entidad superior llamada
“ser humano”. 
◦ A este patrón de objetos (“ser humano”) lo
llamaremos clase
Unidad 2 Concepto de clases y objetos

¿Qué es una clase?

Conjunto de objetos que comparten una estructura


común y comportamiento común (pero no los
mismos valores).
Es una generalización de objetos que poseen los
mismos atributos y el mismo comportamiento
(métodos).
Persona

María Juan Pedro


Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018
Unidad 2 Concepto de clases y objetos

Clases y objetos

Clase Objetos

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Clases y objetos
Clase

unCoche.arrancar() El mensaje solicita al objeto unCoche, la operación


arrancar(); en respuesta al mensaje, unCoche modificará su atributo enmarcha
asignándole el valor “cierto”.
unCoche.acelerar(20) El mensaje solicita al objeto unCoche, la operación
acelerar() y le pasa como información adicional el incremento de velocidad
correspondiente; en respuesta al mensaje, unCoche modificará su atributo
velocidad incrementando su valor en 20.
unCoche.frenar(20) El mensaje solicita al objeto unCoche, la operación
frenar() y le pasa como información adicional el decremento de velocidad
correspondiente; en respuesta al mensaje, unCoche modificará su atributo
velocidad decrementando su valor en 20.
unCoche.verVelocidad() El mensaje solicita al objeto unCoche, la operación
verVelocidad(); como respuesta al mensaje unCoche mira el valor del atributo

Objeto velocidad y lo devuelve al exterior. (Acceso al atributo velocidad para ver su


valor, sin cambiar su valor).
unCoche.parar() El mensaje solicita al objeto unCoche, la operación de
parar. unCoche no podrá parar, a menos que su velocidad sea 0, en ese caso el
objeto unCoche modificará su atributo enmarcha asignándole el valor “falso”

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Clases y objetos
Consideremos a la facultad de Ciencias de las Administración como
sistema donde interactúan diferentes objetos de diferentes clases.

Docentes
Alumnos

BD SO
Gabinete 3
15
POO ED

AP

Asignaturas
Aulas
Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018
Unidad 2 Concepto de clases y objetos

Clases y objetos
Consideremos a la facultad de Ciencias de las Administración como
sistema donde interactúan diferentes objetos de diferentes clases.

Docentes
Alumnos

Asignaturas
Aulas

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Clases y objetos
Consideremos a la facultad de Ciencias de las Administración como
sistema donde interactúan diferentes objetos de diferentes clases.
Alumnos
dni Docentes
nombre nroLegajo
apellido nombre
nroMatricula apellido
… cargo

Aulas
Asignaturas
codigo nombre
carrera ubicación
nombre capacidad
año …

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Pasos
Identificar objetos.
Identificar sus características
Identificar sus comportamientos
Clasificarlos según sus características y
comportamientos (agruparlos).
Unidad 2

Ejercicios

Identificar 3 objetos en distintos contextos:


◦ 2 concretos
◦ 1 abstracto
Para cada uno identificar, según el contexto:
◦ Características
◦ Comportamientos

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Clases y TAD

Generalmente, los TAD están implementados, en cada


lenguaje de programación Orientado a Objetos
mediante el concepto de clase.

El TAD representa la noción abstracta.

La Clase representa la implementación concreta en el


lenguaje.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Visión de objetos

Martin Fowler identifica tres perspectivas para describir


los objetos:

Nivel Conceptual: Un objeto es un conjunto de


responsabilidades.

Nivel Especificación: Un objeto es un conjunto de


métodos (comportamientos), que pueden ser
invocados por otros objetos o por si mismos.

Nivel Implementación: Un objeto es código y


datos, e interacciones computacionales entre ellos.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Perspectivas para describir sistemas OO

Nivel Conceptual
Análisis

Nivel Especificación
Diseño
(Lenguajes de Modelamiento,
Modelamiento,
por ejemplo UML)

Nivel Implementación
Codificación
(Lenguajes de programación,
programación, por
ejemplo Java C++, Pyhton

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Perspectivas para describir sistemas OO


Ejemplo
Sistema de docencia que mantiene los datos de los
alumnos y realiza el registro de sus inscripciones para
los cursos.
Nivel Conceptual

Nivel Especificación

Nivel Implementación

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Perspectivas para describir sistemas OO


Ejemplo
Nivel Conceptual

Alumno
Mantener datos de un alumno (id y nombre). Debe validar el
rol del alumno.

Curso
Mantener datos de un curso (nombre).
Mantener la lista de los alumnos que se inscriben en el curso,
verificando que estos nos se repitan al momento de agregarlos.
Retornar alumnos, buscándolos por id del alumno.

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Perspectivas para describir sistemas OO


Ejemplo
Nivel Especificación

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2 Concepto de clases y objetos

Perspectivas para describir sistemas OO


Ejemplo
Nivel Implementación
public class Alumno{ public class Curso {
private String id; private String nombre;
private String nombre; private ArrayList alumnos;

public void setId(int numero, int verif){ public void setNombre(String nombre)
if (sumaDigitos(numero) == verif) {
this.id=id + "-“ + verif; this.nombre=nombre;
} }
public void setNombre(String nombre) { public boolean
this.nombre=nombre; adicionarAlumno(Alumno alumno) {
} if (getAlumno(alumno.getId()) ==
public String getId() { null) {
return id; alumnos.add(alumno);
} return true;
public String getNombre() { } else {
return nombre; return false;
} }
public int sumaDigitos(int numero) { }
//... public Alumno getAlumno(String id) {
return ...; ...
} }
} }

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018


Unidad 2

Bibliografía complementaria

Bruce Eckel.
Eckel. Thinking in Java - Cuarta Edición.
Edición.
Prentice Hall, 2006
2006..

Y. Daniel Liang
Liang.. Introduction to Java Programming,
Comprehensive Version – Séptima Edición
Edición.. Prentice
Hall, 2008

Programación Orientada a Objetos - Fac. Cs. de la Adm. - UNER - 2018

También podría gustarte