Upload
hoangquynh
View
215
Download
0
Embed Size (px)
Citation preview
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