Programacin I Programacin Orientadas a Objetos - PowerPoint PPT Presentation

1 / 58
About This Presentation
Title:

Programacin I Programacin Orientadas a Objetos

Description:

La Programaci n Orientada a Objetos tambi n conocida como POO. M s que una t cnica, es una filosof a, una nueva forma ... Patrones de dise o, frameworks, etc. ... – PowerPoint PPT presentation

Number of Views:429
Avg rating:3.0/5.0
Slides: 59
Provided by: sally71
Category:

less

Transcript and Presenter's Notes

Title: Programacin I Programacin Orientadas a Objetos


1
Programación IProgramación Orientadas a Objetos
  • Ing. MSc. José R. Fuentes
  • UNI - RUPAP

2
Contenido del Curso
  • Introducción a la POO
  • Elementos del Lenguaje
  • Sentencias de Control
  • Arreglos
  • Métodos
  • Clases y Paquetes
  • Subclases e interfaces.
  • Excepciones
  • Ficheros
  • Estructuras dinámicas
  • Programas para Internet

3
Capítulo I Importancia de la POO
4
Contenido.
  • Introducción a la POO.
  • Introducción
  • Historia de la POO
  • Concepto de Objeto y clase
  • Abstracción
  • Encapsulamiento
  • Herencia
  • Polimorfismo

5
Introducción
  • La Programación Orientada a Objetos también
    conocida como POO. Más que una técnica, es una
    filosofía, una nueva forma de modelar el mundo
    real, es un nuevo paradigma que nos ayuda a
    realizar nuestras aplicaciones con mayor
  • Rapidez
  • Facilidad
  • Productividad
  • Naturalidad
  • Economía.

6
Introducción
  • Conoces algún paradigma que exista en la
    actualidad o que haya existido?
  • Ejemplo
  • La tierra es plana.
  • La luz viaja a la misma velocidad a través del
    Universo.
  • No solo de pan vive el hombre.
  • Si el hombre pudiera volar entonces tendría alas
    como los pájaros

7
Qué es programación orientada a objetos (POO)?
  • Es un método de implementación en el que los
    programas se organizan como colecciones
    cooperativas de objetos, cada uno de los cuales
    representa una instancia de alguna clase, y cuyas
    clases son, todas ellas, miembros de una
    jerarquía de clases unidas mediante relaciones de
    herencia.
  • La POO
  • Utiliza objetos no algoritmos, como sus bloques
    lógicos de construcción fundamentales.
  • Cada objeto es una instancia de alguna clase.
  • Las clases se relacionan unas con otras por medio
    de relaciones de herencia.
  • Sí en un programa falta alguno de estos elementos
    no es OO.

8
Qué es programación orientada a objetos (POO)?
  • Un lenguaje es OO sí y solo sí
  • Soporta objetos que son abstracciones de datos
    con una interfaz de operaciones con nombre y un
    estado local oculto.
  • Los objetos tienen un tipo asociado clase.
  • Los tipos clase pueden heredar atributos de los
    supertipos superclases (Cardelli y Wegner).
  • P.e. Smalltalk, Object Pascal, C, Eiffel, CLOS,
    Java...
  • La programación sin herencia es no OO se
    denomina programación con tipos abstractos de
    datos.
  • Lenguajes basados en objetos (Cardelli y Wegner).
    P.e. Ada.

9
Analisis Orientado a Objetos (AOO)
  • Surge por influencia del DOO.
  • Enfatiza la construcción de modelos del mundo
    real, utilizano una visión del mundo orientada a
    objetos.
  • El AOO es un método de análisis que examina los
    requisitos desde la perspectiva de las clases y
    objetos que se encuentran en el vocabularios del
    dominio del problema.

10
Qué es diseño orientado a objetos?
  • Lo que sí es
  • El diseño orientado a objetos es un método de
    diseño que abarca el proceso de descomposición
    orientada a objetos y una notación para describir
    los modelos lógico y físico, así como los modelos
    estático y dinámico del sistema que se diseña.
  • Una herramienta que permite a los ingenieros de
    software crear software que se sea
  • Menos rígido.
  • Menos frágil.
  • Más resusable.
  • Se utiliza el término DOO para referirse a
    cualquier método que encamine a una
    descomposición OO.
  • Es la forma de modelar los problemas planteados a
    través de la orientación a objetos. Obligando así
    al diseñador a ver el problema desde un punto
    vista mas global.

11
Cómo se relacionan el AOO, DOO y POO?
Definición de clases y objetos en el dominio
del problema
AOO
DOO
Modelos OO Físico, Lógico, Estático y
Dinámico
POO
Producto final
12
Historia de la POO
  • Simula (1967) fue desarrollado por Ole-Johan
    Dahl y Kristen Nygaard en el Norwegian Computing
    Center como un lenguaje apropiado para programar
    simulaciones.
  • Introduce el concepto de clases para la
    implementación de Tipos Abstractos de Datos
    (DAT).
  • Smalltalk (principios de 1986) forma parte del
    visionario proyecto de Alan Kay en Xerox PARC
    Dynabook.
  • Una computadora con la que cualquiera podría
    interactuar, construir sus propios modelos y
    simularlos.
  • Smalltalk evolucinó desde el primer prototipo de
    1971 hasta la primera versión comercial,
    Smalltalk-80 en 1983.
  • Se amplía el modelo de objeto y se hace mas puro.
    Utiliza run-time binding.

13
Historia de la POO
  • C (finales de los años 80) fue diseñado en los
    laboratorios Bell de ATT, por Bjarne
    Stroustrup...to provide Simulas facilities for
    program organization together with Cs efficiency
    and flexibility for systems programming.
  • Es una versión orientado a objetos del lenguaje
    C.
  • 1979-1983 desarrollo de C con clases.
  • 1982-1985 evolución hasta la primera versión
    comercial de C en 1985.
  • 1985-1988 evolución hasta C Release 2.0.
  • 1988-1998 proceso de estandarización ISO.

14
Historia de la POO
  • Eiffel fue diseñado por Bertran Meyer en el seno
    de su recién creada empresa Interactive Software
    Engineering (ISE).
  • La primera versión apareció a finales de 1985,
  • Recoge influencias de
  • Orientación a Objetos de Simula 67
  • Trabajos teóricos en tipos abstractos de datos
    (Liskov, Guttag).
  • Verificación y semántica axiomática de programas
    (Hoare, Dijkstra).

15
Historia de la POO
  • Java (1995) fue diseñado en los laboratorios de
    Sun Microsystems.
  • Se presentó a finales de 1995, a principios de
    1997 apareció Java 1.1 y en 1999 Java 1.2.
  • La gran idea el código fuente se compila al
    código de una máquina virtual y !! los
    exploradores de Internet implementan la máquina
    virtual!!
  • Es una mezcla de C (sintaxis) y Smalltalk
    (recolector de basura). Está diseñado como un
    lenguaje portable, cuyo código pueda correr en
    cualquier computadora vía un browser web.

16
Generaciones de los lenguajes de alto nivel en
base a su aportación
  • Lenguajes de primera generación (1954-1958)
  • Lenguajes de segunda generación (1959-1961)

17
Generaciones de los lenguajes de alto nivel en
base a su aportación
  • Lenguajes de tercera generación (1962-1970)
  • El hueco generacional (1970-1980)
  • Se inventaron muchos lenguajes diferentes, pero
    pocos perduraron.
  • Para este curso interesan los lenguajes que
    suelen llamarse basados en objetos y orientados a
    objetos. Éstos, son los que mejor soportan la
    descomposición orientada a objetos.

18
Evolución hacia los lenguajes orientados a objetos
Fortran
Algol
CPL
BCPL
Simula
Pascal
B
Modula-2
Ada
C
Modula-3
Ada95
Eiffel
Smalltalk
C
Java
19
Tipos de paradigmas de programación
  • Estilos de programación y tipos de abstracciones
    que emplean
  • Cada estilo requiere una actitud mental
    diferente, una forma distinta de pensar en el
    problema.
  • Para todas las cosas orientadas a objetos, el
    marco de referencia conceptual es el modelo OO.

20
Paradigmas de programación
  • Son formas, métodos y técnicas básicas de diseño,
    desarrollo e implantación de sistemas
  • Procedural
  • Relacional
  • Lógico
  • Orientado a Objetos
  • Orientado a Agentes

21
Paradigma procedural
  • Las estructuras de datos y las funciones son
    entidades separadas.
  • Una función puede aplicarse a muchas estructuras
    diferentes
  • Cada estructura puede tener diferentes funciones
    de acceso a ellas.

22
Paradigma relacional
  • Emplea estructuras de datos para representar la
    información y las relaciones de los elementos
    dentro del dominio de las aplicaciones, cuya
    representación se basa en un conjunto de
    relaciones o tablas.

23
Paradigma lógico
  • Todos los problemas
  • Se representan mediante listas (LISP)
  • Son matemáticos (APL)
  • Se modelan mediante cadenas de decisión (PROLOG)

24
Metodologías de programación
  • Programación no estructurada
  • Programación procedural
  • Programación modular-estructurada
  • Programación Orientada a Objetos
  • Programación Orientada a Agentes

25
Programación no estructurada
  • Desventajas
  • Complejo
  • Redundancia de código

26
Programación procedural
27
Programación modular-estructurada
28
Programación Orientada a Objetos
Programa
29
Programación Orientada a Agentes
Programa
30
Concepto de Modelo
  • Modelo Es la representación o caracterización de
    un fenómeno (físico, social, químico, económico,
    abstracto, etc.).
  • Modelo matemático Formulación que expresa las
    características fundamentales de un sistema en
    términos matemáticos.

31
Características de un Modelo
  • El modelo nos permite
  • Hacer una abstracción de la realidad.
  • Simplificar la realidad de acuerdo al punto de
    vista de un usuario.
  • Resolver el problema por partes (Modularidad,
    Granularidad)
  • Obtener resultados previsibles.

32
El Modelo de Objetos
  • La tecnología orientada a objetos se apoya en
    sólidos fundamentos de la ingeniería, cuyos
    elementos reciben el nombre global de modelo de
    objetos.
  • El modelo de objetos abarca los principios de
  • abstracción,
  • encapsulación,
  • modularidad,
  • jerarquía,
  • tipos,
  • concurrencia y
  • persistencia
  • Ninguno de estos elementos es nuevo. Lo nuevo es
    como se conjugan en el modelo OO.

33
Concepto de Objeto y e Clase
  • Las clases Son tipos de declaraciones
    abstractas.
  • Son tipos especiales de datos definidos por el
    usuario.
  • Este tipo de datos puede tener datos y funciones
    o estructuras anidadas.
  • Las clases nos sirven para definir los objetos.
  • Los objetos Son instancias de las clases.
  • Son variables del tipo de la clase definida.

34
Objeto y clase
  • Los objetos tienen estados que indica sus
    transiciones y tienen operaciones para expresar
    un comportamiento deseado.
  • Un objeto es una caja negra la cual contiene
    código (secuencia de instrucciones) y datos
    (información sobre la cual actúan las
    instrucciones).
  • El código y los datos son entidades separadas
  • Un programa es un conjunto de objetos que se
    comunica mediante mensajes.

35
Objeto y clase
  • Sumar dos números, digamos 1 y 2
  • a1 b2 cab
  • Solución procedural
  • Tome a, cuyo valor es 1, y b, cuyo valor es 2,
    y realice la suma. Tome el resultado, 3, y
    colóquelo en la variable llamada c.
  • SoluciónPOO
  • Tome el objeto a, que tiene un valor de 1, y
    envíele un mensaje el cual tiene un argumento
    b con un valor de 2. El objeto a, recibe el
    mensaje y lleva a cabo la acción solicitada que
    consiste en sumar el valor del argumento a él
    mismo. Crea un nuevo objeto, dele a éste el
    resultado, 3, y asigne este objeto a c.

36
Objeto y clase
37
Objeto y clase
  • Las solicitudes que pueden hacersele a un
    objeto están definidas por su interface. El tipo
    del objeto determina la interface de éste.

38
Abstracción
  • Abstracción es...
  • la amplificación de lo esencial
  • y la eliminación de lo irrelevante.
  • Queremos tratar con abstracciones
  • lo esencial, son las partes de un problema que no
    tienden a cambiar.
  • Los detalles de implementación cambian todo el
    tiempo.
  • Una abstracción denota características
    esenciales de un objeto que lo distinguen de
    todos los demás tipos de objeto y proporciona así
    fronteras conceptuales nítidamente definidas a la
    perspectiva del observador.

39
La abstracción depende del punto de vista del
observador y del contexto
Abstracción para ensamble automatizado
Abstracción para una simulación de tráfico
Abstracción de un avión
  • Alas
  • Fuselaje
  • Motores
  • Tiempo de llegada
  • Tiempo de vuelo
  • Nivel de combustible
  • Pista de aterrizaje

40
Ejemplo Utilizando el concepto de OO Modelar un
desarmador.
  • Clase Desarmador
  • Tipo de acceso (público, privado, protegido)
  • Características (Datos).
  • Mango (plastico, metal, baquelita).
  • Varilla (plastico, metal, baquelita).
  • Tamaño (chico lt15cm, grande gt30cm).
  • Tipo de punta (cruz, plano, poligono)
  • Torque que soporta (x newtons/cm)

41
Ejemplo Utilizando el concepto de OO Modelar un
desarmador.
  • Clase Desarmador
  • Tipo de acceso (público, privado, protegido)
  • Características (Datos).
  • Funciónes, Cualidades, Propiedades (Métodos).
  • Selección del desarmador (Mango,Tipo,tamaño)
  • Desatornillar (Sujetar del mango, poner en el
    tornillo sobre ranura del tornillo, aplicar x
    torque en sentido y)
  • Atornillar (Sujetar del mango, poner en el
    tornillo sobre ranura del tornillo,aplicar x
    torque en sentido -y)
  • Objeto
  • Desarmador Desarmador_CH, Desarmador_Chino.

42
Ejercicio Utilizando el concepto de OO Modelar
los siguientes objetos
  • Desarmador.
  • CD.
  • Licuadora.
  • TV
  • Aparato electrodoméstico.
  • A. Figuras geométricas
  • B. Matriz
  • C. Aceleración de objetos.
  • D. Mujer atractiva.
  • E. Persona alegre.
  • F. Alma.

43
Ejemplo de abstracciónNúmeros Racionales (1)
  • class CRacional
  • int Numerador
  • int Denominador
  • void AsignarDatos (int num, int den)
  • Numerador num
  • if (den 0 ) den 1 // denominador
    no puede ser 0
  • Denominador den
  • void VisualizarRacional()
  • System.out.println (Numerador /
    Denominador)
  • public static void main (String args )
  • // Punto de entrada a la aplicación
  • CRacional r1 new CRacional () // Crear
    un objeto Cracional
  • r1.AsignarDatos(2,5)
  • r2.VisualizarRacional( )
  • // fin del método principal
  • fin de la clase

44
1.6 Encapsulamiento
  • Encapsular es agrupar en una misma entidad las
    estructuras de datos y las funciones, ocultando
    la implementación bajo una interface.
  • Implementación es la manera cómo se llevan a cabo
    las operaciones, es decir que tipo de datos se
    utilizan, cuanta memoria utilizan, etc.
  • Si todos los datos miembro de una clase
    estuvieran disponibles para cualquiera, entonces
    el cliente podrá hacer lo que quiera con la clase
    y no habría manera de forzar un comportamiento en
    especial. De ahí, la necesidad de mantener
    claramente separada y protegida la interface y la
    implementación.

45
Encapsulamiento
  • El encapsulamiento (encapsulación) es el proceso
    de almacenar es un mismo compartimento los
    elementos de una abstracción que constituyen su
    estructura y su comportamiento sirve para
    separar el interfaz contractual de una
    abstracción y su implantación.
  • El encapsulamiento oculta los detalles de
    implementación de un objeto.

46
EncapsulamientoEjemplo
  • Al cliente de la clase Point, le es irrelevante
    como se almacenan las componentes (x,y) del
    punto. Lo único que le interesa es como crear un
    punto y que puede hacer con él.

47
Modularidad
  • La modularidad es la propiedad que tiene un
    sistema que ha sido descompuesto en un conjunto
    de módulos cohesivos y débilmente acomplados.
  • La modularidad empaqueta las abstracciones en
    unidades lógicas.

48
Composición reuso de la implementación
  • El reuso de código es una de las más grandes
    ventajas que proporcionan los lengujes orientados
    a objetos.
  • La forma más simple de reusar una clase, es usar
    un objeto de esa clase. Pero podemos, además,
    colocar un objeto de esa clase, dentro de otra
    clase. A esto se le llama creación de un objeto
    miembro. Este concepto es llamado composición.
  • La composición, generalmente es referenciada como
    una relación has-a (tiene un), por ejemplo, un
    carro tiene un motor.

49
Asociación y agregación reuso de la
implementación
  • La composición se puede dar de dos maneras
  • Asociación
  • Las partes que forman al objeto están visibles al
    exterior
  • Ofrecen flexibilidad porque la relación con sus
    componentes visibles se pueden redefinir en
    tiempo de ejecución.
  • Agregación
  • Todo el objeto en su conjunto es visible hacia el
    exterior
  • Ofrecen seguridad porque no se pueden alterar en
    tiempo de ejecución.

50
Asociación y agregación reuso de la
implementación
51
Herencia
  • Definición (Herencia). Herencia es el mecanismo
    que permite que un clase A herede propiedades de
    una clase B. Decimos "A hereda de B". Objetos de
    la clase A tienen así acceso a los atributos y
    métodos de la clase B sin necesidad de
    redefinirlos.
  • Definición (Superclase/Subclase) Si la clase A
    hereda de la clase B, entonces B es la superclase
    de A. A es subclase de B.

A
52
Jerarquía
  • Definición
  • La jerarquís es una clasificación u ordenación
    de abstracciones.
  • Jerarquías de un sistema complejo
  • Estructura de clases (jerarquía de clases).
  • Estructura de objetos (jerarquía de partes).
  • Herencia
  • Es la jerarquía de clases más importante.
  • Define una relación entre clases, en la que una
    clase comparte la estructura de comportamiento
    definida en una o más clases (lo que se denomina
    herencia simple o herencia múltiple).

53
Ventajas de la herencia
  • Utilizar el software generado.
  • Las aplicaciones se hacen más rápido.
  • El costo se reduce.

54
Ejemplos de jerarquía herencia simple
  • La herencia
  • Representa una jerarquía de abstracciones, en la
    que una subclase hereda de una o más superclases.
  • denota una relación es un.P.e. Un oso es un
    tipo de mamífero, una case es un tipo de bien
    inmueble, etc.
  • Implíca una jerarquía de generalización\especializ
    ación.
  • La subclase especializa el comportamiento o
    estructura, más general de sus superclases.

55
1.8 Polimorfismo
  • poly muchos, varios
  • morph forma o apariencia.
  • En la programación orientada a objetos, morph
    forma se refiere a la interface o a las
    propiedades de los objetos mientras que poly
    que la interface o los atributos de los objetos
    son diferentes.
  • Las interfaces son fundamentales en los sistemas
    orientados a objetos ya que es la manera de
    conocerlos.
  • Se dice que dos o mas objetos son polimórficos si
    tienen interfaces idénticas pero comportamiento
    diferente desde el punto de vista del cliente
    esos objetos son indistinguibles.
  • El polimorfismo se logra cuando una clase hereda
    la interfaz de otra clase ya sea total o parcial
    o bien, con tipo o sin tipo.

56
Polimorfismo
  • Cuando se le envía una solicitud a un objeto, la
    operación que se ejecuta depende tanto del
    mensaje como del objeto que lo recibe. Los
    objetos que atienden mensajes idénticos pueden
    tener implementaciones diferentes.

57
Beneficios del modelo de objetos
  • Ayuda a explotar la potencia expresiva de los
    lenguajes de programación basados en objetos y
    orientados a objetos.
  • Uso de jerarquías de clases en el proceso de
    diseño.
  • Promueve la reutilización no sólo del software,
    sino de diseños enteros, conduciendo a la
    creación de marcos de desarrollo de aplicaciones
    reutilizables.
  • Patrones de diseño, frameworks, etc.
  • Produce sistemas que se constuyen sobre formas
    intermedias estables, que son más flexibles al
    cambio.
  • Se aplica en una gran diversidad de áreas Bases
    de datos, aeronáutica, análisis matemático,
    animación, robótica, composición de música, etc.

58
Para futuras discusiones...
  • Cosas que pensar...
  • Qué es lo que hace que un diseño de software sea
    bueno?
  • Usando OO automáticamente se asegura obtener un
    buen diseño?
  • Cómo usamos los elementos del modelo orientado a
    objetos (abstracción, encapsulación, etc.) de
    manera conjunta, para obtener un buen diseño?
  • Cuáles son los principios que usaremos para
    guiarnos durante el diseño?
Write a Comment
User Comments (0)
About PowerShow.com