Want to make creations as awesome as this one?

Transcript

ORIENTACIÓN A

Ing. Erika Marín Schumann

OBJETOS

Basic

FortranCobol

CPascal

Algunos lenguajes

División por "verbos" (funciones)

Descomponer problemas en problemas más pequeños

Programaciónestructurada

Definir tareas a llevar a cabo. Descomponer las tareas en partes más pequeñas. Definir Estructuras de Datos por manipular. Diseñar interacción entre funciones:

  • Entradas
  • Salidas
Agrupar funciones en “módulos” Escribir código.

Programación estructurada

¿Qué es poo?

Modelo de Programación organizado alrededor de objetos. Entidades que:

  • Implementan un comportamiento
  • Modelan información
  • Interactúan entre sí
Solución de Problemas Centrada en Datos en lugar de una “secuencia de pasos” o funciones.

Lenguaje procedural --> Todo es procedure. Lenguaje funcional --> Todo es función. Lenguaje lógico --> Todo es predicado (Expr. Lógica) Lenguaje o-o --> Todo es objeto .

Facilita el mantenimiento:

  • Errores y cambios son localizados.
  • Métodos suelen ser más pequeños.
Disminución de Errores:
  • No existen variables globales.
  • Ocultamiento de datos y lógica de procesamiento
  • Métodos suelen ser más pequeños.

Facilidad de modelado.Reutilización de código y modelos: Las nuevas abstracciones son definidas como extensiones o refinamientos de las existentes.Promueve la alta cohesión y el bajo acoplamiento.Independencia entre componentes

beneficios

Un programa se estructura como una comunidad de agentes que interactúan entre sí denominados objetos. Cada objeto tiene un rol y provee un servicio o lleva a cabo una acción que es utilizada por otros miembros de la comunidad.

aplicaciones

conceptos fundamentales

  • Abstracción
  • Encapsulamiento
  • Modularidad
  • Herencia
  • Polimorfismo

ABSTRACCIÓN

Es un medio fundamental usado por el ser humano para enfrentarse a la complejidad del mundo. Consiste en describir o especificar aspectos esenciales e importantes de un fenómeno o entidad, al mismo tiempo que se desechan características irrelevantes según el interés de quien realiza la abstracción.

los aspectos esenciales e importantes

Pueden ser características o atributos del objeto observado.Pueden ser comportamientos o acciones llevadas a cabo por el objeto observado

menos detalle

más detalle

Niveles de Abstracción

El problema más importante del modelado orientado a objetos es la elección de las abstracciones pertinentes.Muy ligados a la abstracción se tienen los siguientes conceptos:

  • Clases
  • Objetos

Niveles de Abstracción

traducción

modelo computacional

abstracción

modelo conceptual

problema

mundo real

modularidad

polimorfismo

herencia

encapsulamiento

Abstracción

encapsulamiento

La abstracción se centra en la estructura (características o atributos) y comportamiento (acciones) observable de un objeto.El encapsulamiento se centra en la implementación que da lugar a ese comportamiento.Hacer que la implementación de una abstracción esté oculta y que dicha abstracción solo sea accedida por medio de su interfaz permite que la implementación pueda ser cambiada o hasta sustituida por otra sin alterar para nada los clientes que la usan.

Programas que acceden la funcionalidadx = elevar (2, 3)x = elevar (2, 3)x = elevar (2, 3)w = elevar (2,3)

int elevar (inta, intb){ if (b == 0) return1; else return a * elevar (a, b-1);}

def elevar (a, b):return pow (a,b)

def elevar (a, b):if b==0:return 1 else:return a * elevar (a, b-1)

def elevar (a, b):resultado = 1while b >= 0 :if b == 0:return resultado else:resultado = resultado * ab = b -1

objeto A

objeto B

mensaje

Ocultar los detalles de implementación de

  • estado (variables)
  • comportamiento (pasos para llevar a cabo acciones) del objeto.
El comportamientode un objeto se exponea través de métodos.
  • Modularidad
  • Ocultamiento de Información
  • Reutilización de Código
  • Facilidad de Depuración y Reemplazo

  • Difícil de entender
  • Difícil de modificar

código espagueti

Sólo pueden verse dentro de la clase

Puede ser accedido desde afuera de la clase

público vs privado

Cada miembro tiene visibilidad

  • Público
  • Privado
Encapsulamiento estricto
  • Todos los atributos deben ser privados
  • Los métodos en general son públicos, pero algunos pueden ser privados

La modularidad agrupa las abstracciones relacionadas en unidades discretas.El objetivo de fondo de la modularidad es la reducción de complejidad, al permitir que los módulos se diseñen y revisen independientemente (divide y vencerás).

modularidad

Organizar aplicaciones a nivel interno.El paquete crea un espacio de nombres (namespace) para todas las clases relacionadas.

Permite que una clase tenga (Herede) el mismo comportamiento que otra de modo que lo pueda extender o ajustar.La clase que hereda de otro se denomina subclase.La clase que es extendida por una subclase se denomina superclase.

herencia

Algunas clases pueden tener partes en comúnHerencia:Una clase tiene los mismos miembros que otra, pero agrega nuevosHeredan sus miembros de clases preexistentes llamadas clases base, superclases, clases padre, clase ancestroLa clase resultante se llama clase derivada, subclase, clase hija, clase descendiente

generalización

especialización

subclase

HERENCIA

superclase

"es un" vs "tiene un"

La herencia no se usa siempre. Hay que pensar antes de usarla para ver si existe algún tipo de relaciónCorrecto

  • Instancias son versiones más específicas del padre
  • Ej.: un gato es un tipo de mamífero
Incorrecto
  • Relaciones de composición
  • La clase forma parte de otra
  • Ej.: Automóvil tiene un volante

Muchas cosas en la realidad siguen una estructura jerárquicaCuando una clase es especialización de otra clase, agrega miembros nuevosEn la práctica las clases modelan objetos abstractos

  • No es tan obvio saber cuáles heredan de otras
  • Si se identifican se reduce la complejidad y repetición de código

¿Cuándo usar herencia?

HERENCIA MÚLTIPLERelación de herencia entre una clase y varias superclasesLa subclase incluye los miembros de las dos superclasesAlgunos lenguajes la permiten, otros noDeben establecerse mecanismos para manejar colisiones y regular la forma en que se lleva a cabo la composiciónHERENCIA CIRCULARNo es permitido!

"tuyo"

"yo"

"tu"

Se da de dos formas:

  • Métodos: un mismo nombre se asocia a comportamientos diferentes
  • Datos: una clase puede ser tratada como una de sus superclases.
El mismo método puede tener distintos significados o implementaciones.

polimorfismo

Es una plantilla o molde para un conjunto de objetosDescribe cómo se estructuran internamente los objetos (atributos), cuáles servicios proveen (métodos), cuáles relaciones comunes tienen con otros objetos

clase

Es un modelo de comportamiento de un tipo de objeto que existirá durante la ejecución de un programa orientado a objetos.De un modo aproximado, las clases son a sus objetos lo que los tipos primitivos son a sus variables

  • Generalización de los tipos de datos.
  • Permite definir nuevos tipos.
  • Modelo de comportamiento de un tipo de objeto que existirá durante la ejecución de un programa orientado a objetos.
  • Definida por sus miembros.

¿Atributos? ¿Métodos?

CLASE PERSONA

ATRIBUTOS

  • Datos que representan las características de la clase
  • Tipos de datos nativos u otras clases
MÉTODOS
  • Operaciones que actúan sobre los atributos

Es un concepto o entidad con límites bien definidos y con significado para un problema planteadoPosee un estado, exhibe un comportamiento bien definido y posee una identidad única:Objeto= Estado + Comportamiento + IdentidadLos valores de los atributos definen el estado del objeto.

OBJETO

Los métodos especifican los mensajes que puede recibir un objeto y los cambios que producen en el objeto en cuestión, es decir, su comportamiento.Estado y comportamiento están relacionados:

  • El estado puede ser modificado cuando el objeto interactúa (por medio de mensajes) con otros objetos
  • El estado del objeto puede eventualmente determinar el comportamiento del objeto en cuestión

Todos los objetos son instancias de alguna clase

CLASES Y OBJETOS

métodos

variables

  • Clases: definen aspectos comunes.
  • Objetos: poseen un estado.

CLASES Y OBJETOS

COMPORTAMIENTOsubir/bajar volumencambiar tonocambiar bandaenceder/apagarseleccionar frecuenciaintroducir CD

ESTADOvalor del volumenvalor del tonoAM/FMapagado/encendidofrecuencia seleccionadaCD introducido

estado

Los objetos se comunican por medio de mensajes u órdenesLos componentes del mensaje son:

  • El objeto destinatario del mensaje
  • El nombre del mensaje, que describe la tareaa realizar (el nombre del método)
  • La información que el objeto origen envía al destinatario, necesaria para que éste pueda completar su tarea (los parámetros del método)

mensajes

subir volúmen (2)

seleccionar frecuencia (98.5)

cambiar banda (FM)

encender

COMPORTAMIENTOsubir/bajar volumencambiar tonocambiar bandaenceder/apagarseleccionar frecuenciaintroducir CD

ESTADOvalor del volumenvalor del tonoAM/FMapagado/encendidofrecuencia seleccionadaCD introducido

pasos para realizar la acción

-responsable-realiza una ACCIÓN

receptor

MENSAJE

Centrado en Funciones se entiende: SUM(2,5) = 7En POO puro:N2.sume(N5) = N7N2 Es unainstanciade número que entien de el mensaje“sume”

MensajesPOO vs FUNCIONES

Diseño y colaboraciónMA. Isaura Ramírez BrenesTEC Digital

Ing. Erika Marín Schumanneshuman@itcr.ac.cr