Sesion 1 - Introduccion A La POO
Sesion 1 - Introduccion A La POO
Sesion 1 - Introduccion A La POO
II
Tema 1:
INTRODUCCION A LA P.O.O
PARADIGMA ORIENTADO A OBJETOS
Docente
JAVIER ELMER CABRERA DÍAZ
Universidad Nacional Mayor de San Marcos
Magister en Computación
Universidad Nacional Mayor de San Marcos
Agenda
Repaso De Conceptos Básicos
Paradigmas de Programación
Características De La P.O.O
Que Es La Programación Orientada A Objetos ( P.O.O)
Razones Fundamentales Para Utilizar La P.O.O
Conceptos Del Paradigma Orientado A Objetos
Abstracción
Encapsulamiento
Modularidad
Jerarquía
Clases Y Objetos
Mensajes Y Métodos
Introducción a La Programación Orientada a Objetos
Que es Un Algoritmo ?
Series de pasos a seguir para solucionar un Problema
Que es Un Programa ?
Secuencias de Instrucciones escritas en un lenguaje de programación, que
resuelven un problema.
Fuente: Vélez, Serrano, José, et al. Diseñar y programar, todo es empezar: una introducción la Programación
Orientada a Objetos usando UML y Java, Dykinson, 2011
La POO es un modelo de programación que utiliza objetos, ligados mediante mensajes, para
la solución de problemas. La idea central es simple: organizar los componentes del
programa a imagen y semejanza de los objetos en el mundo real
Fuente: Ceballos, Sierra, Francisco Javier. Programación orientada a objetos con C++ (4a. ed.), RA-MA Edi.2007
La P.O.O se puede definir como una técnica o estilo de programación que utiliza objetos
como bloques esenciales de construcción. Los elementos básicos de la POO son: objetos,
mensajes, métodos y clases.
Fuente: VELARDE DE BARRAZA, OLINDA y cols. Introducción a la programación orientada a objetos. 2006
Características de la P.O.O
La Programación Orientada a Objetos es un paradigma de programación que define
los programas en términos de "clases de objetos”, los elementos básicos son: objetos,
mensajes, métodos y clases.
Esto permite hacer los programas y módulos más fáciles de escribir, mantener y
reutilizar.
Crear sistemas fiables que sean flexibles, mantenibles y capaces de evolucionar para
cumplir las necesidades de cambio.
Abstracción
Encapsulamiento
P.O.O Modularidad
Jerarquía
ABSTRACCION
La abstracción es la propiedad que permite representar las características
esenciales de un objeto, sin preocuparse de las restantes características (no
esenciales).
Definir una abstracción significa describir una entidad del mundo real, no
importa lo compleja que pueda ser, y a continuación utilizar esta
descripción en un programa.
Abstracción
ABSTRACCION Atributos
Marca
Modelo
Color
Vel. Max
Matricula
…
Acciones
Encender
Frenar
Acelerar
Apagar
…
ABSTRACCION
La importancia de los atributos y métodos de una entidad del mundo real, va orientada
al problema a solucionar.
Fraccionario Perro
Int numerador
Int denominador
8 float A_prom.
float P_prom.
_________________
Sumar()
5 int Esp_vida
String P_origen
Restar() ______________
Multiplicar() ladrar() TAD
Correr()
Morder()
TAD
Javier Cabrera– Algorítmica II – Universidad Nacional Mayor de San Marcos
Paradigma Orientado a Objetos
ABSTRACCION TAD
Nadador Nadador
ATRIBUTOS ATRIBUTOS
COMPORTAMIENTOS COMPORTAMIENTOS
ABSTRACCION TAD
TABLET TABLET
ATRIBUTOS ATRIBUTOS
COMPORTAMIENTOS COMPORTAMIENTOS
ABSTRACCION
TAD
Se desea conocer
el puntaje final de ATRIBUTOS ATRIBUTOS
un equipo de
futbol en un
torneo
COMPORTAMIENTOS COMPORTAMIENTOS
Se desea calcular
el monto de
interés que se
paga por un
préstamo
ENCAPSULAMIENTO
La encapsulación o encapsulamiento es la propiedad que permite asegurar que el
contenido de la información de un objeto está oculta al mundo exterior: El objeto A no
conoce los datos de un objeto B, y viceversa.(también se conoce como ocultación de la
información)
Ocultación de
Información
ENCAPSULAMIENTO
ObjetoA ObjetoB
Con la encapsulación, las clases son vistas como cajas negras, es decir que se conoce lo
que hace la clase pero no la forma en que lo hace.
MODULARIDAD
La modularidad es la propiedad que permite subdividir una aplicación en partes
más pequeñas (llamadas módulos), cada una las cuales debe ser tan
independiente como sea posible de la aplicación en sí y de las restantes partes.
Débilmente
Acoplados y
Altamente
cohesivos
MODULARIDAD
El Acoplamiento es una medida del grado de interdependencia entre
módulos, es decir, el modo en que un módulo está siendo afectado por la
estructura interna de otro módulo.
JERARQUIA
La jerarquía es una propiedad que permite una ordenación de las abstracciones. Las
mas importantes son:
Estructura de clases (generalización/especialización)
Estructura de objetos (agregación)
JERARQUIA
Las jerarquías de generalización/especialización se conocen como HERENCIA
la cual define una relación entre clases, en donde una clase comparte la
estructura o comportamiento definido en una o más clases.
CARRO
Especialización
Generalización
Javier Cabrera– Algorítmica II – Universidad Nacional Mayor de San Marcos
Paradigma Orientado a Objetos
JERARQUIA
La agregación es el concepto que permite el agrupamiento físico de
estructuras relacionadas lógicamente
Agregados de un camión
JERARQUIA
Medio de Transporte
XBOX
Reloj
JERARQUIA
Generalización /
Especialización
Agregación
JERARQUIA
Objeto Agregación Generalización/
Especialización
Vehículo
Reloj
Zapato
CLASES
Una clase es la descripción de un conjunto de objetos; consta
de métodos y datos que resumen características comunes de
un conjunto de objetos. Dicho de otro modo, una clase es la
declaración de un tipo de objeto o una plantilla que define las
variables y los métodos que son comunes para todos los
objetos de un cierto tipo.
Clase
OBJETO
Cada objeto es un ejemplar de una CLASE. Cada vez que se construye un objeto de
una clase, se crea una instancia de esa clase.
Objetos
CLASES y OBJETOS
CLASES y OBJETOS
Clase Objetos
CLASES y OBJETOS
METODOS Y MENSAJES
Un programa orientado a objetos consiste en un número de objetos que se
comunican unos con otros invocando a sus métodos.
Color
Velocidad
Motor
Ruedas
…
Acciones
Arrancar
Frenar
Doblar
Apagar
…
METODOS Y MENSAJES
Programación
• Desarrollo del algoritmo.
• Prueba del algoritmo (prueba de escritorio).
• Codificación del algoritmo en un lenguaje de programación.