Tema 1: Introducción - Inicio | KybelePOO-2006-2007]Tema1.pdf · Sencillo: basado en C y C++ (sin...

15
1 { MARCOS L { MARCOS LÓPEZ SANZ } PEZ SANZ } Kybele, 2007 © Tema 1: Introducción Programación Orientada a Objetos Marcos López Sanz Máster en Informática Gráfica, Juegos y Realidad Virtual Kybele, 2007 © { MARCOS L { MARCOS LÓPEZ SANZ } PEZ SANZ } Introducción Programación tradicional: Características (I) Secuencial Secuencial: el tiempo de ejecución de cada sentencia no se solapa con el de otras sentencias. ¿concurrencia? NO!! Imperativa Imperativa: Base: sentencia de asignación Constructores programáticos: repetir, alternar, estructurar o reutilizar sentencias de asignación ¿Programas sin asignaciones?

Transcript of Tema 1: Introducción - Inicio | KybelePOO-2006-2007]Tema1.pdf · Sencillo: basado en C y C++ (sin...

1

{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ } Kybele, 2007 ©

Tema 1: Introducción

Programación Orientada a Objetos

Marcos López Sanz

Máster en Informática Gráfica, Juegos y Realidad Virtual

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Programación tradicional: Características (I)

�� SecuencialSecuencial: el tiempo de ejecución de cada sentencia no se solapa con el de otras sentencias. ¿concurrencia? � NO!!

�� ImperativaImperativa:

• Base: sentencia de asignación

• Constructores programáticos: repetir, alternar, estructurar o reutilizar sentencias de asignación

• ¿Programas sin asignaciones? �∃

2

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Programación tradicional: Características (y II)

�� Orientada a procesosOrientada a procesos. Bloques fundamentales:

• Estructuras de control de flujo de ejecución

• Subprogramas (módulos)– Lógicos: funciones y procedimientos

– Físicos: ficheros

� Programación modularmodular y estructuradaestructurada

• Centrada en las transformaciones de datos (secundarios)

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Evolución

� Nos alejamos del lenguaje de la máquina sobre la que se ejecuta el programa y nos acercamos más al lenguaje del dominio del problema

� Mayor grado de comprensión de los programas � aumento de la legibilidad y facilidad de mantenimiento � disminución del coste de desarrollo y mantenimiento (importante en fases de IS)

•• Ley del Cambio ContinuoLey del Cambio Continuo: "Un programa que se usa en un ámbito del mundo real, necesariamente debe cambiar o convertirse cada vez en menos útil“

•• Ley de la Complejidad CrecienteLey de la Complejidad Creciente: "Debido a que los programas cambian por evolución, su estructura se convierte en más compleja a menos que se hagan esfuerzos activos para evitar este fenómeno"

3

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

ProgramaciProgramacióón n

TradicionalTradicional

MMááquina de quina de

VonVon NeumannNeumann≈

Procesador más importante que la Memoria

¿Equilibrio?DATOS

PROCESOS

PROCESOS

ProgramaciProgramacióón n

Orientada a ObjetosOrientada a ObjetosSer humano ≈

HERENCIA

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Bases de la programación orientada a objetos:

• Abstracción

• Encapsulación

• Modularidad

• Jerarquización

4

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Abstracción

� Def.1: “Proceso mental de extracción de las características esenciales (requisitos o funciones) de algo, ignorando los detalles superfluos”

� Def.2: “Acto de creación de clases para simplificar aspectos de la realidad utilizando distinciones propias del problema”

� Fundamentalmente subjetiva (dependiendo del interés y del contexto del observador)

� Punto de vista del “cliente” (usuario)

� Ej.: Autobús visto por un mecánico y un pasajero

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Encapsulación u ocultamiento

� Def.1: “Proceso por el que se ocultan los detalles del soporte de las características esenciales de una abstracción”

� Def.2: “Técnica para el diseño de clases y objetos que restringe el acceso a los datos y comportamiento de los mismos mediante la definición del conjunto de mensajes que un objeto de dicha clase puede recibir”

� Esencial: características del ‘mundo real’ � abstracción

� Superfluo: estructuras de datos y algoritmos

� Punto de vista del desarrollador (sistema) � Concepto de visibilidad

5

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Modularidad

� Def.: “Proceso de descomposición de un sistema en un conjunto de piezas poco acoplados (independientes) y cohesivos (con significado propio): módulos”

�� AcoplamientoAcoplamiento: “fuerza” de la dependencia entre módulos � ideal: bajo

�� CohesiCohesióónn: mide el grado de conectividad entre los elementos de un solo módulo � ideal: alta

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Modularidad� Ej.1: Sistema universitario (alumnos, profesores, rectores, personal administrativo, aulas,

bibliotecas, estatutos, planes de estudios) � alta modularidad• Cohesión: alta � se entienden por sí mismos• Acoplamiento: bajo � no dependen unos de otros para existir

� Ej.2: Ámbitos personales (relaciones interpersonales) � baja modularidad• Cohesión: baja � necesitan del entorno, costumbres sociales,

cultura… para “explicarse”• Acoplamiento: alto � una pérdida en la familia repercute en el

estado de ánimo de todos

6

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Jerarquía� Def.: “Proceso de estructuración por el que se produce una

organización de un conjunto de elementos en grados o niveles de responsabilidad, de incumbencia o de composición entre otros”

� Tipos:1.Por grado de composición o de agregación: una

abstracción o módulo se compone de un conjunto de elementos

2.Por grados de clasificación, clasificación de las distintas abstracciones de la más general a las más específicas

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Jerarquía

Univesidad

Rectorado Facultades

Departamentos Dirección

Profesores

Asociados Titulares

Interinos Funcionarios

Clasificación ����

Composición

7

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Inconvenientes

� Nueva terminología: introduce nuevos términos, similares a otros existentes, con riesgo de confusión.

� Nueva forma de pensar (paradigma): supone un esfuerzo de adaptación para los que “dominan” otro.

� Ineficiencia: tradicionalmente, los lenguajes orientados a objetos han consumido muchos recursos (de procesador y memoria)

tipoclasevariableobjeto ó instancia

método subrutina (procedimiento o función)mensaje llamada o invocación

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

�Elementos de la programación O.O.

� Mecanismos que permiten abstracción, encapsulación, modularización y jerarquización:

• Objetos y clases

• Mensajes y métodos

• Estado y atributos

• Herencia y polimorfismo

8

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Objetos y Clases

�� ClaseClase: descripción de los datos (características estáticas) y de las operaciones (características dinámicas) que describen el comportamiento de un cierto conjunto de elementos homogéneos

• Resultado del proceso de abstracción

• “Molde” de infinitos objetos con ciertas características para crear en el dominio de la computadora un reflejo del mundo real

• “Infinitud de objetos” � no estrictamente necesaria (meses, universo)

• Ej: coche, fracción, pila, esfera, estudiante…

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Objetos y Clases�� ObjetoObjeto: ejemplar concreto de una clase que responde al

comportamiento, definido por las operaciones de la clase a la que pertenece, adecuándose al estado de sus datos particulares.

• Instancia de una clase• Proyección de parte (del dominio del problema o del de la

solución), del mundo real, en la computadora• Tangibles (libros)/Intangibles (deudas), • Ej: mi coche, pila nº 2, gastos/ingresos

9

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Objetos y Clases� Clases:

• Abstracción: conceptos del dominio del problema• Ppio. de encapsulación: vistas

– Pública o Interfaz: comportamiento (= qué operaciones responden los objetos de esta clase)

– Privada o Implantación: estructuras de datos de la clase y cómo manipulan las operaciones los datos

• No existe nada más que clases y sus objetos, ni constantes, tipos y datos “sueltos”, ni procedimientos y funciones “sueltas”, etc.

� Clase = nuevo bloque de construcción modular � cohesión entre datos y operaciones

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Mensajes y métodos

�� MensajeMensaje: es la invocación de una operación sobre un objeto• Un objeto es el agente activo que lanza el mensaje y otro objeto es

el agente pasivo que recibe el mensaje• El objeto que recibe el mensaje debe contemplar dicha operación

entre las definidas por la clase a la que pertenece

�� MMéétodotodo: definición de una operación de una clase (características dinámicas)

10

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Mensajes y métodos

� Método: TiposTipos

• producen un cambio en el estado del objeto sobre el que se ejecuta el método

• aquellos que sin producir ningún cambio en el estado del objeto calculan cierto valor

• métodos específicos para la inicialización y finalización de la vida de un objeto (constructores y destructores)

� Permiten la colaboración entre objetos: paso de parámetros/argumentos en los métodos (información del ‘exterior’)

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Estado y atributos

�� AtributoAtributo: cada uno de los datos (características estáticas) de una clase

• Ej.: Coche: tipo de gasolina, capacidad del depósito, cilindrada, etc.

�� EstadoEstado: conjunto de los valores de los atributos que tiene un objeto, por pertenecer a una clase, en un instante dado

• Ej.: mi coche con gasoil, depósito vacío, 1.200cc, etc.

11

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Redefinición de los conceptos de Clase y Objeto

�� ClaseClase: descripción de los atributos y de los métodos que describen el comportamiento de un cierto conjunto de objetos homogéneos.

�� ObjetoObjeto: ejemplar concreto de una clase que responde al comportamiento, definido por los métodos de la clase a la que pertenece, adecuándose al estado de los atributos de la clase a la que pertenece

� P.O.O. Sin herencia ni polimorfismo = Programación basada en objetos

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Comparación entre los elementos básicos de la programación a objetos y

elementos de la programación tradicional

Programación Estructurada

Programación Orientada a Objetos

Valor del registroEstado

Campo de registro Atributo

LlamadaMensaje

SubprogramaMétodo

VariableObjeto

TipoClase

12

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Comparación entre los elementos básicos de la programación a objetos y elementos de la programación tradicional

� clase <> tipo (estructura de datos sin referencia alguna a las operaciones)

� objeto <> variable (equivalente). Ej: Fecha

� método <> subprograma (operación libre frente a manejo de datos de un objeto, parámetro implícito)

� mensaje <> llamada (equivalente)

� atributo <> campo de un registro (Pb. de accesibilidad: interno al objeto <> variable global, parámetro o local)

� estado <> valor del registro (Pb. de identidad: 2 objetos no son el mismo por tener mismo estado, 2 valores sí)

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Lenguaje Java©

� Def. “simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico” (Sun©)

�� Breve historia:Breve historia:• 1991 – Sun Microsystems: lenguaje diseñado para electrodomésticos

– Código neutro � ejecutable e interpretable por una máquina hipotética o virtual: JVM (Java Virtual Machine)

– “Write Once, Run Everywhere”• 1995 – Lenguaje para ordenador � versión 2.0 de Netscape Navigator• 1997 – Java 1.1• finales de 1998 – Java 1.2 � Java 2 (applet/servlet)• 2005 – Últimas versiones: Java 1.5/1.4.2_11

13

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Características del lenguaje Java

�� SencilloSencillo: basado en C y C++ (sin aritmética de punteros, herencia múltiple, gestión de la liberación de memoria dinámica, coerción automática de tipos, sobrecarga de operadores, etc. )

�� RobustoRobusto: fuertemente tipado, incorpora chequeos en tiempo de compilación y chequeos de ejecución

�� InterpretadoInterpretado: el compilador de Java no genera ejecutables � genera bytecodes

�� Neutro frente a la ArquitecturaNeutro frente a la Arquitectura: ausencia de detalles dependientes de la plataforma: sobre cualquier plataforma un número entero se alberga en la misma cantidad de memoria

�� PortablePortable: al ser neutro, únicamente requiere de una JVM específica de cada sistema operativo

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Características del lenguaje Java

�� Dedicado a DominiosDedicado a Dominios: existencia de librerías específicas para diferentes ámbitos:

• API: Conjunto de clases que forman parte del lenguaje

�� SeguroSeguro: control de las clases, de los bytecodes y de las conexiones en red estrictamente permitidas por el usuario

�� MultitareaMultitarea: primitivas de sincronización para aplicaciones concurrentes y en tiempo real

�� DinDináámicomico: incorporación de nuevo código a una aplicación sin necesidad de reconstruir (basado en clases)

�� Alto RendimientoAlto Rendimiento: En comparación a C++

�� ÁÁmbitos/Tipos de programasmbitos/Tipos de programas: consola, visuales, applets, servlets, etc…

14

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Lenguaje Java: otros aspectosotros aspectos

� De libre distribución: http://java.sun.com

� JDK: Java development Kit: conjunto de programas y librerías para desarrollar, depurar, compilar y ejecutar programas Java.

� Ediciones:•• JDK J2EEJDK J2EE: Enterprise Edition: dirigida a grandes aplicaciones

cliente/servidor multicapa con componentes software•• JDK J2MEJDK J2ME: Micro Edition: dispositivos con recursos limitados como

telefonía movil, software empotrado en electrodomésticos, juguetes, etc.•• JDK J2SEJDK J2SE: Standard Edition: resto de aplicaciones•• JREJRE: Plugin para navegadores Web � sólo para ejecutar (no compilar)

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Introducción

� Lenguaje Java

�� IDEIDE’’ss ((IntegratedIntegrated DevelopmentDevelopment EnvironmentEnvironment) )

• Eclipse: www.eclipse.org

• BlueJ: www.bluej.org

• JDeveloper (Oracle): www.oracle.com/technology/products/jdev/index.html

• NetBeans: www.netbeans.org

• JBuilder (Borland): www.borland.com/jbuilder/

• Etc…

(listado: http://www.apl.jhu.edu/~hall/java/IDEs.html)

15

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Bibliografía y referencias

� L. Fernández, F. Arroyo. Programación II: Teoría y práctica del módulo de programación orientada a objetos. Dpto. de publicaciones EUI, UPM.

� Deborah J. Armstrong. The quarks of Object-Oriented development. Communications ofthe ACM. Feb. 2006. vol. 49, No. 2.

� Avinash C. Kak. Programming with objects a comparative presentation of object-oriented programming with C++ and Java. Ed. Wiley-Interscience. 2003.

� Timothy A. Budd. An introduction to object-oriented programming. Ed. Addison Wesley. 2002

� M. Kölling, The Problem of Teaching Object-Oriented Programming, Part 1: Languages.Journal of Object-Oriented Programming, 11(8): 8-15, 1999.

� M. Kölling, The Problem of Teaching Object-Oriented Programming, Part 2: Environments. Journal of Object-Oriented Programming, 11(9): 6-12, 1999.

� http://java.sun.com

Kybele, 2007 ©{ MARCOS L{ MARCOS LÓÓPEZ SANZ }PEZ SANZ }

Agradecimientos

Gran parte de los contenidos y gráficas recogidas en estas transparencias han sido extraídos del libro:

Programación II: Teoría y práctica del módulo de programación orientada a objetos

ISBN: 84-87238-39-4

Es por ello que queremos agradecer a Luís Fernández Muñoz la posibilidad de reproducir parte de su contenido