You are on page 1of 54

PROGRAMACION II

CAPITULO 1 INTRODUCCION A LA ORIENTACION A OBJETOS

Alicia A
Introducción a la Orientación
a Objetos
1. Paradigmas de Programación
2. Paradigma Orientado a Objetos
 Clases y Objetos
 UML – Diagrama de Clases
 Principios de la Orientación a Objetos: Ocultamiento,
Abstracción, Relaciones, Herencia, Encapsulamiento
 Interfaces, Polimorfismo
Paradigmas de
Programación
¿Cuales son los paradigmas
de programación ?
Paradigmas de Programación

 Imperativo o por procedimientos


 Funcional
 Lógico
 Declarativo
 Orientado a objetos

¿Origen, principales
características, ejemplos?
Paradigmas y Lenguajes
A lo largo de la historia se han ido desarrollando distintos lenguajes de
programación basados en distintos paradigmas o formas de estructurar y
pensar el desarrollo de software.
 Lenguajes Imperativos: son aquellos basados en sentencias, ya sean
procedurales, orientados a objetos puros, o mixtos
 Pascal, C, C++, Java, Fortran, Perl
 Lenguajes Funcionales: basados en funciones matemáticas
 Haskell, Lisp, Scheme
 Lenguajes Lógicos: MathLab
 Lenguajes Procedurales: son lenguajes imperativos basados en
procedimientos y funciones
 C, Fortran , Pascal, y Basic
Introducción a la Orientación
a Objetos
1. Paradigmas de Programación
2. Paradigma Orientado a Objetos
 Historia
 Ventajas
 Desventajas
POO-Reseña Histórica
➢ La programación orientada a objetos nació en los años
60 en Noruega, con el lenguaje conocido como Simula
✓ Manejaba clases, herencia, y encapsulamiento
➢ A principios de la década de 1980 comenzó a surgir el
llamado paradigma de “Orientación a Objetos”, que
proponía una forma novedosa de comprender y modelar
el mundo que nos rodea.
✓ En la década de los 80: Smalltalk, C++
✓ A mediados de los 90: Java
✓ En el 2002 apareció .Net
✓ Actualmente los mas usados: Java, Python, Rugby,
C#, F#
Ventajas
➢ La POO beneficia a los desarrolladores debido a que:
✓ Los programas son más fáciles de diseñar, ya que los
objetos reflejan elementos del mundo real
✓ Los objetos son unidades autocontenidas
✓ La productividad se incrementa debido a que puede
reutilizar el código
✓ Es más fácil crear nuevos tipos de objetos a partir de
los ya existentes
✓ Simplifica los datos complejos
✓ Reduce la complejidad de la transacción
✓ Confiabilidad
✓ Robustez
Desventajas
➢ Surgen dificultades en la implementación de los Sistemas OO:
✓ Curvas de aprendizaje largas
o Al hacer la transición a un sistema orientado a objetos
la mayoría de los programadores deben capacitarse
✓ Dependencia del lenguaje
o Ejemplo: C++ soporta el concepto de herencia multiple
mientras que SmallTalk no lo soporta
✓ Determinación de las Clases
o Suelen decir que la definición de las clases es más un
arte que una ciencia
✓ Rendimiento, en un sistema donde todo es un objeto y toda
interacción es a través de mensajes, el tráfico de mensajes
afecta el rendimiento
¿Por qué Orientación a
Objetos (OO)?
 Se parece más al mundo real
 Permite representar modelos
complejos
 Muy apropiada para aplicaciones de
negocios
 Las empresas ahora sí aceptan la OO
 Las nuevas plataformas de
desarrollo la han adoptado (Java /
.NET)
Conceptos Básicos
1. Objetos
2. Clases
3. Principios de la Orientación a Objetos
➢Abstracción

➢Encapsulamiento

➢Herencia

➢Polimorfismo
1. Objetos
Todo el mundo está compuesto de entidades que se
relacionan e interactúan entre si
Objeto = estado + comportamiento
“Un objeto tiene estado, comportamiento, e identidad; la estructura y el
comportamiento de objetos similares son definidos a través de sus clases
comunes” (Booch Object Solutions page 305)

Los Objetos:
 Tienen identidad
 Son una instancia de una única clase
 Tiene valores en sus atributos que son únicos para ese objeto
 Tiene métodos que son comunes a la clase
1. Objetos
La clave es entender qué es un objeto:
 Un Objeto del mundo real es cualquier cosa que vemos a nuestro alrededor
 Ejemplo: un computador, un teléfono, un árbol, un automóvil
o Internamente compuestos por componentes, cuyo trabajo en
conjunto hacen operativo al objeto
o Cada componente es una unidad autónoma, cuya estructura
puede ser compleja
o Lo que necesitamos saber es cómo interactúan entre sí
 Todo objeto del mundo real tiene dos componentes: características y
comportamiento
 Ejemplo: los automóviles tienen
o Características: marca, modelo, color, velocidad máxima,
etc.
o Comportamiento: acelerar, frenar, retroceder, embragar,
etc.
1. Objetos

Objetos

:Empleado
- nombre : String = "Peter"
- apellido : String = "Parker"
- salario : int = 2500
+ aumentarSalario (int monto) : int
+ diseñarSoftware () : int

Stack
m
a usuario
i
n departamento
Un objeto posee Estado
Lo que el objeto sabe
 El estado de un objeto es una de las posibles
condiciones en que el objeto puede existir
 El estado normalmente cambia en el transcurso
del tiempo
 El estado de un objeto es implementado por un
conjunto de propiedades (atributos), además de
las conexiones que puede tener con otros
objetos
Un objeto posee Comportamiento
Lo que el objeto puede hacer
 El comportamiento de un objeto determina
cómo éste actúa y reacciona frente a las
peticiones de otros objetos
 Es modelado por un conjunto de mensajes a los
que el objeto puede responder (operaciones que
puede realizar)
 Se implementa mediante métodos
Un objeto posee Identidad

Cada objeto tiene una identidad


única, incluso si su estado es idéntico
al de otro objeto
1 Objetos
 En el mundo real: tenemos un Chevrolet Vitara,
color azul que corre hasta 140 km/h
 Si pasamos este objeto al mundo del software
tendremos un objeto Automóvil con sus
características predeterminadas:
 Marca: Chevrolet
 Modelo; Vitara
 Color :Azul

Cuando a las características de un objeto le ponemos


valores decimos que el objeto tiene estados

Un Objeto es una unidad de código compuesto de variables


y métodos relacionados
Conceptos Básicos
1. Objetos
2. Clases
3. Principios de la Orientación a Objetos
 Abstracción

 Encapsulamiento

 Herencia

 Polimorfismo
2 Clases
 Una clase es “Un conjunto de objetos que
comparten una estructura y un
comportamiento común” (Booch Object
Solutions page 303)

 Una clase provee:


 Los metadatos para los atributos
 La fuente para los métodos
 La implementación de los métodos (usualmente)
 Los constructores para inicializar los atributos al
tiempo de creación
¿Qué es una Clase?
 Una clase es una descripción de un grupo de objetos con:
 Propiedades en común (atributos)
 Comportamiento similar (operaciones)
 La misma forma de relacionarse con otros objetos (relaciones)
 Una semántica en común (significan lo mismo)
 Una clase es una abstracción que:
 Enfatiza las características relevantes
 Suprime otras características (simplificación)
 Un objeto es una instancia de una clase
Objetos y Clases
 Una clase es una definición abstracta de un objeto
 Define la estructura y el comportamiento compartidos por
los objetos
 Sirve como modelo para la creación de objetos
 Los objetos pueden ser agrupados en clases
2 Clases

Clases Objetos
Empleado : 1
- nombre : String
- apellido : String
- salario : int :Empleado
+ getNombre () : String - nombre : String = "Peter"
+ getApellido () : String - apellido : String = "Parker"
+ setNombre (String pNombre) : void - salario : int = 2500
+ aumentarSalario (int pValor) : void
+ analizarReq () : void
+ diseñarSoftware () : void
+ implementarCodigo () : void

Stack
m
a usuario
i
n departamento
2 Clases
En el mundo real tenemos muchos objetos del mismo tipo
Ejemplo: automóviles, teléfonos celulares, etc.
o El objeto celular A es una instancia de una clase conocida como
“celular”
o Los celulares tienen características
• Marca
• Modelo
• Sistema operativo
• Pantalla
• Teclado
o Los celulares tienen comportamiento
• Hacer y recibir llamadas
• Enviar mensajes
• Transmisión de datos
2 Clases
 Los fabricantes aprovechan el hecho de que los
celulares comparten características comunes y
construyen modelos o plantillas comunes
 A partir de estas plantillas se pueden crear muchos
equipos celulares del mismo modelo
 A este modelo o plantilla se la conoce como CLASE
 A los equipos que salen a partir de ella se llaman
OBJETOS

 Lo mismo se aplica a los objetos de software:


 Se pueden tener muchos objetos del mismo tipo
 Objetos de las mismas características
2 Clases – En Resumen

 La Clase es un modelo o prototipo que define las


variables y métodos comunes a todos los objetos
de cierta clase
 La Clase es una plantilla genérica para un conjunto
de objetos de similares características
 Una instancia de una clase es otra forma de llamar
a un objeto
 No existe diferencia entre un objeto y una
instancia
 Una instancia es un objeto de una clase en
particular
Conceptos Básicos
1. Objetos
2. Clases
3. Principios de la Orientación a Objetos
 Abstracción

 Encapsulamiento

 Herencia

 Polimorfismo
3. Principios de la
Orientación a Objetos

Abstracción Encapsulamiento

Herencia Polimorfismo
3.1 Abstracción
 La abstracción es “algo que resume o
concentra lo esencial de una cosa extensa”
(Webster New Collegiate Dictionary)
 Consiste en captar las características y
comportamiento esenciales de un objeto, sin
preocuparse de las restantes características
(no esenciales)
 El concepto de abstracción permite crear una
interface simplificada de algún servicio que
oculta los detalles de la implementación al
cliente de ese servicio
3.1 Abstracción
 Ignorancia Selectiva
 La abstracción nos ayuda a trabajar
con cosas complejas
 Se enfoca en lo importante
 Ignora lo que no es importante
(simplifica)
 Una clase es una abstracción en la que:
 Se enfatizan las características
relevantes
 Se suprimen otras características
 Una clase debe capturar una y solo una
abstracción clave
3.1 Abstracción

EmpIeado Empleado
- nombre : String - nombre : String
- apellido : String - apellido : String
- salario : int - salario : int
+ aumentarSalario (int pValor) : void + getNombre () : String
+ diseñarSoftware () : void + getApellido () : String
+ implementarCodigo () : void + setNombre (String pNombre) : void
+ aumentarSalario (int pValor) : void
+ analizarReq () : void
+ diseñarSoftware () : void
+ implementarCodigo () : void
3.1 Abstracción
 El principio relacionado con la abstracción es la
Dependencia Mínima:
 Las mejores abstracciones hacen que las cosas
complejas sean simples
 Logran ésto al ocultar los aspectos no
esenciales de una clase
o El cambio es normal en el desarrollo de
software
o Lo mejor: minimizar el impacto de un
cambio
o Y, cuando menos depende de algo, menos
se verá afectado cuando cambie
3.2 Encapsulamiento
➢ Consiste en unir en la Clase las características y
comportamientos, esto es, los atributos y los
métodos
➢ Tener todo esto en una sola entidad
➢ Es evidente que el encapsulamiento se logra a
través de la abstracción y el ocultamiento
➢ Su utilidad se debe ala facilidad para manejar la
complejidad
✓ Tendremos a las clases como cajas negras,
donde solo se conoce el comportamiento, no
los detalles internos
✓ Conveniente por que nos interesará saber qué
hace la clase, pero no cómo lo hace
Ocultamiento
 Es la capacidad de ocultar los detalles internos del
comportamiento de una clase y exponer sólo los
detalles que sean necesarios para el resto del
sistema
 A través del ocultamiento se consigue:
 Restringir el uso de la clase
Habrá cierto comportamiento privado de la
Clase que no podrá ser accedido por otras
clases
 Controlar el uso de una clase
Se dará mecanismos para modificar el estado
de la clase
 En Java a través de: public, private, protected
Modificadores de Acceso
 Permiten definir el nivel de acceso (visibilidad)
de los miembros (atributos o métodos) de una
clase
 Publico: Cualquier clase puede “ver” los miembros
públicos de otra clase
 Privado: Sólo la clase puede ver sus propios miembros
privados
 Protegido: Solo la clase y subclases pueden ver sus
miembros
 Existen otros dos modificadores para propósitos
específicos (Paquete)
3.2 Encapsulamiento
 Principio que establece que los atributos propios de
un objeto no deben ser visibles desde otros objetos
 Deben ser declarados como privados
 Permite abstraer la complejidad de la
implementación interna
 Permite exponer el estado del objeto sólo a través
del comportamiento que le hayamos definido
mediante miembros públicos
 ¿Por qué es útil?
 Punto de Control/Validación
 Mejor respuesta ante los Cambios
3.3 Herencia
Clase Padre
 Es una relación entre clases en
la cual una clase comparte la
estructura y comportamiento Transporte
definido en otra clase (Grady -pasajeros

Booch) +Avanzar()
+Detenerse()

 Cada clase que hereda de otra


posee:
 Los atributos de la clase padre Automóvil Avión

además de los propios


 Soporta todos o algunos de los
métodos de la clase padre
 Una subclase hereda de una Clases Hijas o
clase base subclases
3.3 Herencia
➢ Consiste en que una clase puede heredar sus variables y
métodos a varias subclases
✓ La clase que hereda es llamada superclase ó clase padre
✓ Una subclase, aparte de los atributos y métodos propios,
tiene incorporados los atributos y métodos heredados de
la superclase
✓ Ejemplo: en una tienda que repara y vende equipos celulares
3.3 Herencia
En general, se puede armar una jerarquía de clases, tal como se
ilustra:

 La clase A es la superclase de B
 La clase B es la subclase de A
 La clase B es la superclase de C, D, y
E
 Las clases C, D, y E son subclases de
B
3.3 Herencia
Hay dos tipos de herencias:
- Herencia Simple: una clase hija puede
heredar sólo de una clase padre

- Herencia Múltiple: una clase hija puede


heredar de una o más clases padre
Interfaces (1/3)

 Recurso de diseño soportado por los


lenguajes orientados a objetos que permite
definir comportamiento
 Permite que clases que no están
estrechamente relacionadas entre sí deban
tener el mismo comportamiento
 La implementación de una interfaz es un
contrato que obliga a la clase a implementar
todos los métodos definidos en la interfaz
Interfaces (2/3)

Vehiculo

Aereo Acuatico Terrestre

Avión Barco Automóvil

¿ De que clase heredaría la clase Hidroavión ?


Interfaces (3/3)
 Se crean las interfaces que definen comportamiento
 Hidroavión deberá definir los comportamientos de cada una de las
interfaces que implemente

«interface» «interface»
Acuatico Aereo
+Navegar() +Volar()

Hidroavion
3.4 Polimorfismo
 Es la posibilidad de construir varios métodos con
el mismo nombre, pero con relación a la clase a
la que pertenece cada uno, con
comportamientos diferentes
 Esto conlleva la habilidad de enviar un mismo
mensaje a objetos de clases diferentes
 Estos objetos recibirían el mismo mensaje
global pero responderían a él de formas
diferentes
 Por ejemplo, un mensaje "+" a un objeto
ENTERO significaría suma, mientras que para
un objeto STRING significaría concatenación
3.4 Polimorfismo
 Es la propiedad que tienen los objetos de
permitir invocar genéricamente un
comportamiento (método) cuya
implementación será delegada al objeto
correspondiente recién en tiempo de
ejecución
 El polimorfismo tiende a existir en las
relaciones de herencia, pero no siempre es
así
Polimorfismo - Ejemplo
 La definición del método reside en la clase base
 La implementación del método reside en la clase derivada
 La invocación es resuelta al momento de ejecución

Transporte

Avanzar

Frenar

Transporte

Avanz Transporte

ar Avanzar

Frenar

Frenar

Transporte
3.4 Polimorfismo
 El polimorfismo provee la habilidad para invocar
métodos de objetos específicos a través de
referencias genéricas
 Es una característica de POO que permite enviar el
mismo mensaje a objetos de diferentes clases
 Sobrecarga
Se refiere al uso del mismo identificador o operador
en distintos contextos y con distintos significados
Paradigma Orientado a Objetos

Introducción
PROGRAMACION II
CAPITULO 1 INTRODUCCION A LA
ORIENTACION A OBJETOS
Alica A
Relaciones

 Todo sistema abarca muchas clases y objetos


 Los objetos contribuyen en el comportamiento de un
sistema colaborando entre si
 La colaboración se logra a través de las relaciones
 Existen dos tipos principales de relaciones
 Asociación
 Agregación
Relaciones de Asociación

 Una asociación es una conexión entre dos clases que


representa una comunicación
 Una asociación puede tener nombre
 La comunicación puede ser tanto uni como bi-direccional
(por defecto)
 La multiplicidad es el número de instancias que participan
en una asociación
 Ejemplo:
 Una Persona es Dueña de un Vehículo
 Un Vehículo Pertenece a una Persona

Persona -dueño Vehiculo


Relaciones de Agregación

 La agregación es una forma especial de asociación


donde un todo se relaciona con sus partes
 También se conoce como “una parte de” o una relación de
contención
 Ejemplo:
 Una Puerta es una parte de un Vehículo
 El Vehículo es azul, la Puerta es Azul
 Mover el Vehículo implica mover la Puerta

Vehiculo Puerta
-color
+Mover()
1.4 Envío de Mensajes

➢ Un objeto es inútil si está aislado


➢ El mecanismo para que un objeto interactúe con otro
son los mensajes
➢ Los mensajes son invocaciones a los métodos de los
objetos
Herencia
 Herencia “Es-Un”: herencia real, donde la subclase es
un tipo específico de la superclase
 Un Cuadrado es un Rectángulo
 Un perro es un mamífero
 Un automóvil es un vehículo a motor

You might also like