Tema 1. Introducción a la Programación Orientada a Objetos

Documentos relacionados
INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

PROGRAMACION ORIENTADA A OBJETOS EN C++

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Conceptos de Programación Orientada a Objetos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

1. Computadores y programación

La Herencia: Teoría (1)

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Tema 7: Polimorfismo. Índice

Desarrollo del software imposible si las tareas tuviesen que expresarse en código máquina. Lenguajes de más alto nivel: comprensibles, manejables y

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

2.2 Nombres, Ligado y Ámbito

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Introducción a la Orientación a Objetos

Principios de Computadoras II

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Modulo 11. Clases y Objetos en Java

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Programación Orientada a Objetos

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

Capítulo 16. Diagrama de Clases UML

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Las clases como tipos de datos definidos por el usuario

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

2.- PROGRAMACIÓN ORIENTADA A OBJETOS

Conceptos más avanzados de Programación Orientada a Objetos

15. Parámetros o argumentos

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

PROYECTO FIGURAS DIAGRAMA DE FLUJO

Clase adicional 2. Estructuras básicas de control. Temas

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Soluciones Ejercicios Tema 3

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Introducción a Java LSUB. 15 de enero de 2015 GSYC

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

Java en 2 horas. Rodrigo Santamaría

Clases Abstractas e Interfaces

Programación estructurada (Introducción a lenguaje C)

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Diagramas de secuencia

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

Elementos de un programa en C

Tema 7. El sistema de clases

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

4. Operadores Operador asignación

Curso Introducción JAVA Pág.: 1

Curso de Java POO: Programación orientada a objetos

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

JAVA 7 Los fundamentos del lenguaje Java

Metodología y Tecnología de la Programación

Procesadores de lenguaje Tema 6 La tabla de símbolos

Tema 4. Excepciones en Java

El lenguaje de programación Java

Principios de Programación en Java

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

PROGRAMA INSTRUCCIONAL

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

Tema 6. Gestión dinámica de memoria

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014

2.2.- Paradigmas de la POO

Programación Orientada a Objetos en Java

Introducción a la Programación Orientada a Objetos

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

PROGRAMACIÓN UNIDADES

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Programación Orientada a Objetos (POO)

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Tema 3: Programación orientada a objetos (I)

Java para programadores

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Transcripción:

Tema 1. Introducción a la Programación Orientada a Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Informática. Universidad de Málaga Programación Orientada a Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 1 / 31

Programación Orientada a Objetos Tema 1. Introducción a la programación orientada a objetos Evolución de los lenguajes de programación Conceptos fundamentales de la POO: Clases y objetos Metodos, mensajes y atributos Composición y herencia Polimorfismo y vinculación dinámica Esta obra se encuentra bajo una licencia Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0) de Creative Commons. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 2 / 31

Evolución de los lenguajes de programación A medida que aumenta la potencia de los ordenadores También aumenta la complejidad de los problemas que se resuelven. También aumenta la dificultad del diseño y desarrollo de los programas. Motiva la creación de nuevos paradigmas de programación que faciliten la creación de programas cada vez más complejos. Los lenguajes de programación evolucionan adaptándose a los nuevos entornos y paradigmas. ALGORITMOS LENGUAJES DATOS Código Máquina Código Máquina Dirección Memoria Instrucciones Simbólicas Ensamblador Etiquetas Simbólicas Subprogramas Fortran Tipos y Variables Programación Estructurada Algol Tipos Estructurados Módulos Módula-2 Tipos Abstractos Datos POO y Métodos Smalltalk Clases y Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 3 / 31

Evolución de los lenguajes de programación 1950 C. Maquina Ensamblador Programación Imperativa Programación Declarativa Funcional Lógica Fortran I 1955 1960 Cobol Fortran IV Algol 58 Algol 60 Lisp 1965 Basic Simula I Algol 68 Simula 67 1970 Pascal B Prolog 1975 C Scheme Fortran 77 1980 Modula 2 ADA Smalltalk 1985 C++ Eiffel Haskell 1990 Fortran 9x Delphi Programacion Orientada a Objetos 1995 Java 2000 Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 4 / 31

Conceptos fundamentales de la POO Programación Orientada a Objetos Es un paradigma de programación que nos permite diseñar programas definiendo abstracciones que modelan los datos que representan el problema que queremos resolver. Se caracteriza por la definición y creación de objetos que encapsulan datos y algoritmos: Atributos (datos): almacenan el estado interno del objeto. Métodos (algoritmos): definen el comportamiento del objeto. Permiten la manipulación e interacción entre objetos. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 5 / 31

Ejemplo Abstracción: Urna Una urna es una caja opaca que contiene bolas blancas y negras. Comportamiento de la urna (métodos): Introducir bolas blancas y negras. Sacar una bola (cualquiera). Saber si la urna está vacía. Saber cuantas bolas en total hay en la urna. Estado interno de la urna (atributos): La cuenta del total de bolas blancas dentro de la urna. La cuenta del total de bolas negras dentro de la urna. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 6 / 31

Ejemplo Abstracción: Urna Dada la abstracción (clase) Urna especificada en el ejemplo anterior: Podemos crear múltiples instancias (objetos) de ella. Urna(3,1), Urna(5,0), Urna(2,4) Cada instancia (objeto) de la Clase Urna posee su propio estado (atributos). La cuenta de bola blancas y bolas negras que contiene. Todos las instancias de la Clase Urna tienen el mismo comportamiento. Podemos interactuar con cada objeto, independientemente, a través de los métodos que definen su comportamiento. Manipular el estado de cada objeto. Por ejemplo, podemos introducir una bola blanca en el objeto Urna(2,4). Consultar el estado de cada objeto. Por ejemplo, si consultamos el número de bolas totales que hay en la urna después de la operación anterior, se devolverá una cantidad total de 7. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 7 / 31

Conceptos fundamentales de la POO Clase Una Clase representa una abstracción de datos, especifica las características de unos objetos: su estado y su comportamiento. Es una entidad estática, se define en tiempo de compilación. n_blancas: int n_negras: int Urna introducirbola(c: Color) sacarbola(): Color estavacia(): boolean totalbolas(): int Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 8 / 31

Conceptos fundamentales de la POO Objeto Un objeto es una instancia de una determinada Clase. Las características del objeto (estado y comportamiento) están determinadas por la Clase a la que pertenece. Puede haber muchos objetos distintos que sean de la misma Clase (y tambien de distintas Clases). Cada objeto almacena y contiene su propio estado interno (atributos), de forma independiente de los otros objetos. El objeto podrá ser manipulado e interactuar con otros objetos a través de los métodos definidos por la Clase a la que pertenece. Es una entidad dinámica, se crea y se destruye durante la ejecución del programa. urna1: Urna urna2: Urna urna3: Urna n_blancas = 3 n_blancas = 5 n_blancas = 2 n_negras = 1 n_negras = 0 n_negras = 4 Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a ObjetosProgramación Orientada a Objetos 9 / 31

Conceptos fundamentales de la POO Métodos La clase representa una abstracción de datos, y los métodos definen su comportamiento. Los métodos son algoritmos especiales definidos por la Clase, y se aplican sobre los objetos. Manipulan el estado interno del objeto sobre el que se aplican. También se les denomina métodos de instancia, o métodos del objeto. Paso de Mensajes. Invocación a Métodos Se puede enviar un mensaje a un objeto para invocar a un determinado método, que se aplicará sobre el objeto. Los objetos responden a las invocaciones de los métodos dependiendo de su estado interno. La invocación a métodos puede llevar parámetros asociados, produce un resultado, y manipula el estado interno del objeto sobre el que se aplica. Para invocar a un determinado método sobre un objeto, ese método debe estar definido por la clase a la que el objeto pertenece. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 10 / 31

Conceptos fundamentales de la POO Atributos Almacenan los valores del estado interno del objeto. Cada objeto tiene su propio estado interno asociado, independiente de los otros objetos. Los atributos estan protegidos. Sólo se permite su acceso y manipulación a través de los métodos. También se les denomina variables de instancia, o variables del objeto. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 11 / 31

Ejemplo Abstracción: Punto del plano Cartesiano Un punto representa una determinada posición en el plano Cartesiano. Comportamiento de un punto: Especificar el valor de sus coordenadas X e Y. Consultar el valor de sus coordenadas X e Y. Calcular la distancia que lo separa de otro objeto punto. Desplazar según una distancia especificada en ambos ejes. Estado interno del punto: El valor de la coordenada X (abscisa). El valor de la coordenada Y (ordenada). Podemos crear múltiples objetos de la Clase Punto: Punto(1,2), Punto(2,1), Punto(3,3), Punto(4,1) (3,3) (1,2) (2,1) (4,1) Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 12 / 31

Ejemplo: Clase Punto // Punto.java public class Punto { // Atributos private double x, y; // Constructores public Punto() { x = 0; y = 0; public Punto(double a, double b) { x = a; y = b; // Métodos public double abscisa() { return x; public double ordenada() { return y; public void abscisa(double a) { x = a; public void ordenada(double b) { y = b; public void desplazar(double a, double b) { x += a; y += b; public double distancia(punto pto) { return Math.sqrt(Math.pow(x - pto.x, 2) + Math.pow(y - pto.y, 2)); Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 13 / 31

Ejemplo: Clase Punto // Main.java public class Main { public static void main(string[] args) { Punto pto1 = new Punto(1, 2); Punto pto2 = new Punto(2, 1); Punto pto3 = new Punto(3, 3); Punto pto4 = new Punto(3, 1); pto4.desplazar(1, 1); pto1 Punto pto2 Punto pto3 Punto pto4 Punto 1 2 2 1 3 3 3 1 (3,3) (3,3) (1,2) (1,2) (4,2) pto4 Punto pto4.desplazar(1,1) (2,1)(3,1) (2,1) 4 2 Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 14 / 31

Representación Gráfica UML de Clases y Objetos Representación Gráfica UML de Clases Una clase se representa mediante una caja con tres compartimentos, conteniendo cada uno de ellos el nombre, los atributos y los métodos de la clase. x,y: double Punto desplazar(a: double, b: double) distancia(p: Punto): double Representación Gráfica UML de Objetos Un objeto se representa mediante una caja con dos compartimentos, conteniendo el primero el nombre del objeto y de la clase a la que pertenece, y el segundo los valores de los atributos del objeto. pto1: Punto pto2: Punto pto3: Punto pto4: Punto x = 1 x = 2 x = 3 x = 4 y = 2 y = 1 y = 3 y = 2 Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 15 / 31

Conceptos fundamentales de la POO Composición Permite la definición de nuevas clases a partir de otras clases ya definidas. Representa una relación en la cual un objeto tiene o está compuesto por otros objetos. Por ejemplo, un Segmento tiene dos Puntos, el origen y el extremo. Segmento Punto origen, extremo: Punto desplazar(a: double, b: double) longitud():double x,y: double desplazar(a: double, b: double) distancia(p: Punto): double La composición se puede expresar en UML mediante una línea (o flecha) entre la clase poseedora y la clase poseída. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 16 / 31

Conceptos fundamentales de la POO Composición Permite la definición de nuevas clases a partir de otras clases ya definidas. Representa una relación en la cual un objeto tiene o está compuesto por otros objetos. Por ejemplo, un Segmento tiene dos Puntos, el origen y el extremo. Segmento origen x,y: double Punto desplazar(a: double, b: double) desplazar(a: double, b: double) longitud():double extremo distancia(p: Punto): double La composición se puede expresar en UML mediante una línea (o flecha) entre la clase poseedora y la clase poseída. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 17 / 31

Conceptos fundamentales de la POO Composición Permite la definición de nuevas clases a partir de otras clases ya definidas. Representa una relación en la cual un objeto tiene o está compuesto por otros objetos. Por ejemplo, un Segmento tiene dos Puntos, el origen y el extremo. Segmento origen > x,y: double Punto desplazar(a: double, b: double) > desplazar(a: double, b: double) longitud():double extremo distancia(p: Punto): double La composición se puede expresar en UML mediante una línea (o flecha) entre la clase poseedora y la clase poseída. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 18 / 31

Ejemplo: Clase Segmento // Segmento.java public class Segmento { // Atributos private Punto origen, extremo; // Constructores public Segmento(double x1, double y1, double x2, double y2) { origen = new Punto(x1, y1); // creación de objetos de la clase Punto extremo = new Punto(x2, y2); // creación de objetos de la clase Punto // Métodos public void desplazar(double a, double b) { origen.desplazar(a, b); // invocación a métodos de la clase Punto extremo.desplazar(a, b); // invocación a métodos de la clase Punto public double longitud() { return origen.distancia(extremo); // invocación a métodos de la clase Punto Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 19 / 31

Ejemplo: Clase Segmento // Main.java public class Main { public static void main(string[] args) { Segmento sgt = new Segmento(2, 1, 3, 3); double lng = sgt.longitud(); sgt Segment Punto 2 1 Punto (3,3) 3 3 (2,1) Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 20 / 31

Conceptos fundamentales de la POO Composición Otros ejemplos de composición. Cilindro Círculo Punto base centro alt: double > rad: double > x,y: double......... Concesionario Coche Motor coches motor nm: String > mod: String > pot: double *... (0 o más)...... Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 21 / 31

Conceptos fundamentales de la POO Herencia Permite la definición de nuevas clases a partir de otras clases ya definidas. Representa una relación en la cual una Clase es una especialización o extensión de otra Clase. Por ejemplo, una Partícula es un Punto con masa. x,y: double Punto desplazar(a: double, b: double) distancia(p: Punto): double masa: double Partícula atracción(p: Partícula): double La herencia se expresa en UML mediante una línea desde la sub-clase con un triángulo en el extremo de la super-clase. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 22 / 31

Conceptos fundamentales de la POO Herencia Permite la definición de nuevas clases a partir de otras clases ya definidas. Representa una relación en la cual una Clase es una especialización o extensión de otra Clase. Por ejemplo, un Paciente es una Persona, y un Médico también es una Persona. Persona nombre: String... Paciente numsegsocial: String Médico categoría: String...... La herencia se expresa en UML mediante una línea desde la sub-clase con un triángulo en el extremo de la super-clase. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 23 / 31

Conceptos fundamentales de la POO Herencia Permite definir una nueva sub-clase (o clase derivada) como una especialización o extensión de una super-clase (o clase base) más general. La sub-clase hereda tanto los atributos como los métodos definidos por la super-clase (reusabilidad del código). La sub-clase puede definir nuevos atributos y nuevos métodos (extensibilidad), así como redefinir métodos de la super-clase. Permite definir jerarquías de clases (ascendientes, y descendientes). La relación de herencia es transitiva, si C hereda de B y B hereda de A, entonces C también hereda de A. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 24 / 31

Ejemplo: Clase Partícula // Particula.java public class Particula extends Punto { // Atributos final static double G = 6.67e-11; private double masa; // ( + los atributos heredados de Punto ) // Constructores public Particula(float m) { this(0, 0, m); // Se refiere a Partícula(double, double, double) public Particula(double a, double b, double m) { super(a, b); // Se refiere a Punto(double, double) masa = m; // Métodos ( + los métodos heredados de Punto ) public void masa(double m) { masa = m; public double masa() { return masa; public double atraccion(particula part) { // Nótese la invocación al método distancia heredado de Punto // return G * masa * part.masa / Math.pow(distancia(part), 2); return G * this.masa * part.masa / Math.pow(this.distancia(part), 2); Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 25 / 31

Conceptos fundamentales de la POO Polimorfismo Un lenguaje tiene capacidad polimórfica cuando una variable declarada de un determinado tipo (clase) (tipo estático) puede referenciar en tiempo de ejecución a valores (objetos) de tipo (clase) distinto (tipo dinámico). En POO el polimorfismo está restringido a la relación de herencia. El tipo dinámico debe ser descendiente del tipo estático. El polimorfismo permite que un objeto de una sub-clase pueda ser considerado y referenciado como un objeto de la super-clase. Principio de sustitución. La dirección de correspondencia opuesta no se mantiene: todos los Medicos son Personas, pero no todas las Personas son Médicos. El polimorfismo afecta a: Asignaciones explícitas entre objetos. Paso de parámetros. Devolución del resultado en una función. Punto pt1 = new Particula(3, 5, 22); Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 26 / 31

Conceptos fundamentales de la POO Polimorfismo En contextos polimórficos, sólo es válido invocar a los métodos especificados por el tipo estático de la variable. Punto pt1 = new Particula(3, 5, 22); Punto pt2 = new Particula(4, 6, 30); double d = pt1.distancia(pt2); // double f = pt1.atraccion(pt2); // ERROR. No es posible Vinculación Dinámica La vinculación dinámica permite que las sub-clases puedan redefinir el comportamiento de los métodos definidos en la super-clase. En contextos polimórficos, los métodos invocados se seleccionan adecuadamente, en tiempo de ejecución, dependiendo del tipo dinámico del objeto, y no de su tipo estático. La invocación del método que ha de resolver un mensaje se retrasa al tiempo de ejecución, y depende del tipo dinámico del objeto. Se puede impedir que las sub-clases redefinan un determinado método especificando el calificador final en su definición. Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 27 / 31

Conceptos fundamentales de la POO Herencia, Polimorfismo y Vinculación Dinámica Gracias a la herencia, el polimorfismo, y la vinculación dinamica, se pueden construir estructuras con elementos dinámicos de distinta naturaleza, pero con un comportamiento común.... Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 28 / 31

Ejemplo: Clase Urna (I) // Urna.java public class Urna { public static enum Color { Blanca, Negra // Atributos private int n_blancas, n_negras; // Constructores public Urna() { n_blancas = 0; n_negras = 0; // Métodos public int totalbolas() { return n_blancas + n_negras; public boolean estavacia() { return (n_blancas + n_negras == 0); public void introducirbola(color c) { if (c == Color.Blanca) { ++n_blancas; else { ++n_negras; Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 29 / 31

Ejemplo: Clase Urna (II) // Urna.java (continuación) public Color sacarbola() { if (this.estavacia()) { throw new RuntimeException("Urna vacía"); int n = (int)(math.random() * this.totalbolas()); Color c; if (n < n_blancas) { c = Color.Blanca; --n_blancas; else { c = Color.Negra; --n_negras; return c; Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 30 / 31

Ejemplo: Clase Urna (III) // Main.java public class Main { public static void main(string[] args) { Urna urna = new Urna(); urna.introducirbola(urna.color.blanca); urna.introducirbola(urna.color.blanca); urna.introducirbola(urna.color.negra); System.out.println("NBolas: " + urna.totalbolas()); while (! urna.estavacia() ) { Urna.Color c = urna.sacarbola(); System.out.println("Bola: " + c); Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Tema Informática. 1. Introducción Universidad a la Programación de Málaga Orientada a Objetos Programación Orientada a Objetos 31 / 31