Download Métodos
Document related concepts
Transcript
Unidad Didáctica 1 Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.4 Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Lenguajes de Programación Orientados a Objetos (LPOO) ¿Qué es y para qué sirve un lenguaje de programación? Los LPOO se basan en la modelización de los objetos del mundo real o virtual. En el aprendizaje de la Programación Orientada a Objetos (POO), se harán ejercicios y prácticas en Java. UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Conceptos básicos de los Lenguajes de Programación Identificadores Tipos Declaración Ámbito Inicialización Variables y constantes Asignación Expresiones Expresiones bien formadas Expresiones con efectos laterales vs. sin efectos laterales Tiempo de compilación vs. Tiempo de ejecución UD1: Introducción a la Programación Orientada a Objetos Modos de un programa Java Modo compilación Permite escribir nuevas clases e interfaces. El entorno detecta si las expresiones que escribimos están bien formadas (compilador). Si el entorno no detecta errores entonces el programa ha compilado bien y está listo para ser ejecutado. Modo ejecución Permite obtener los resultados de un programa que hemos escrito previamente. Debe haber compilado con éxito previamente. En el modo de ejecución pueden aparecer nuevos errores. UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Paquete UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Objeto Unidad básica de trabajo en un LPOO Los objetos tienen: Propiedades (básicas o derivadas) Estado Funcionalidad Encapsulación UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Interfaz (I) Es un elemento de la POO que define: Las propiedades de un objeto. La funcionalidad de un objeto. Una interfaz define un contrato sintáctico El qué de un objeto, no el cómo. Contiene signaturas de métodos. UD1: Introducción a la Programación Orientada a Objetos Interfaz (II) Metodología adecuada para modelar un tipo de objeto especificando el contrato sintáctico mediante una interfaz: 1. 2. 3. 4. 5. Establecer para cada contrato las propiedades relevantes. Para cada propiedad indicar su tipo, si es consultable y/o modificable. Indicar las relaciones entre propiedades, si es que la hubiera. Es decir, especificar las propiedades derivadas. Escribir métodos observadores (get) y/o modificadores (set) para las propiedades especificadas anteriormente. Escribir otros métodos que puedan ser necesarios. UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior • Coordenada X 1. 2. 3. 4. 5. Establecer las propiedades relevantes. • Coordenada Y Para cada propiedad indicar su tipo, si es consultable y/o modificable. Indicar las relaciones entre propiedades, si es que la hubiera. Es decir, especificar las propiedades derivadas. Escribir métodos observadores (get) y/o modificadores (set) para las propiedades especificadas anteriormente. Escribir otros métodos que puedan ser necesarios. UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior 1. 2. 3. 4. 5. Establecer las propiedades relevantes. Para cada propiedad indicar su tipo, si es consultable y/o modificable. • Coordenada X • Tipo: Real ==> Double Indicar las relaciones entre propiedades, si es que la hubiera. • ¿Consultable?: Sí Es decir, especificar las propiedades derivadas. • ¿Modificable?: Sí Escribir métodos observadores (get) y/o modificadores (set) • Coordenada Y • Tipo: Real ==> Double para las propiedades especificadas anteriormente. • ¿Consultable?: Sí Escribir otros métodos•que puedan ser ¿Modificable?: Sí necesarios. UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior 1. 2. 3. 4. 5. Establecer las propiedades relevantes. Para cada propiedad indicar su tipo, si es consultable y/o modificable. Indicar las relaciones entre propiedades, si es que la hubiera. Es decir, especificar las propiedades derivadas. Escribir métodos observadores (get) y/o modificadores (set) No hay propiedades derivadas para las propiedades especificadas anteriormente. Escribir otros métodos que puedan ser necesarios. UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior • Coordenada X 1. 2. 3. 4. 5. • Coordenada X • Tipo: Real Double Establecer las ==> propiedades relevantes.• Double getX(); • ¿Consultable?: Sí • void setX (Double nx); Para• cada propiedad indicar su tipo, si es consultable y/o ¿Modificable?: Sí • Coordenada Y • Coordenada Y • Double getY() modificable. • Tipo: Real ==> Double • void setY(Double ny); • ¿Consultable?: Sí Indicar las relaciones entre propiedades, si es que la hubiera. • ¿Modificable?: Sí Es decir, especificar las propiedades derivadas. Escribir métodos observadores (get) y/o modificadores (set) para las propiedades especificadas anteriormente. Escribir otros métodos que puedan ser necesarios. UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior 1. 2. 3. 4. 5. Establecer las propiedades relevantes. Para cada propiedad indicar su tipo, si es consultable y/o modificable. Indicar las relaciones entre propiedades, si es que la hubiera. Es decir, especificar las propiedades derivadas. Escribir métodos observadores (get) y/o modificadores (set) para las propiedades especificadas anteriormente. Escribir otros métodos que puedan ser necesarios. No hay otros métodos UD1: Introducción a la Programación Orientada a Objetos Interfaz (III) Ejemplo: Modelar el tipo Punto aplicando la metodología anterior. Resultado final public interface Punto { Double getX(); void setX (Double nx); Double getY(); void setY (Double ny); } UD1: Introducción a la Programación Orientada a Objetos Interfaz (IV) Cuestiones relacionadas con el uso de interfaces Diferencia entre parámetros formales y reales Sobrecarga de métodos Tipos de retorno de métodos y void Combinación de llamadas y uso del operador punto (.) Ejemplo de uso de interfaces Punto p = …. p.setX(3.0); p.setY(-4.1); p.getX( ) + p.getY ( ) UD1: Introducción a la Programación Orientada a Objetos Interfaz (IV) Cuestiones relacionadas con el uso de interfaces Diferencia entre parámetros formales y reales Sobrecarga de métodos Tipos de retorno de métodos y void Combinación de llamadas y uso del operador punto (.) Ejemplo de uso de interfaces Punto Punto p = …. p.setX(3.0); p.setY(-4.1); p x: ???? y: ???? p.getX( ) + p.getY ( ) UD1: Introducción a la Programación Orientada a Objetos Interfaz (IV) Cuestiones relacionadas con el uso de interfaces Diferencia entre parámetros formales y reales Sobrecarga de métodos Tipos de retorno de métodos y void Combinación de llamadas y uso del operador punto (.) Ejemplo de uso de interfaces Punto Punto p = …. p.setX(3.0); p.setY(-4.1); p x: 3.0 y: ???? p.getX( ) + p.getY ( ) UD1: Introducción a la Programación Orientada a Objetos Interfaz (IV) Cuestiones relacionadas con el uso de interfaces Diferencia entre parámetros formales y reales Sobrecarga de métodos Tipos de retorno de métodos y void Combinación de llamadas y uso del operador punto (.) Ejemplo de uso de interfaces Punto Punto p = …. p.setX(3.0); p.setY(-4.1); p x: 3.0 y: -4.1 p.getX( ) + p.getY ( ) UD1: Introducción a la Programación Orientada a Objetos Interfaz. Ejercicios de refuerzo Especificar el tipo Persona Propiedades: DNI, nombre, apellidos, edad, estatura, sexo. Especificar el tipo Circulo Propiedades: radio, área, centro y longitud. UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Clase Es un elemento de la POO que permite definir: El estado interno de un objeto (atributos). Establecer la forma de crear objetos (constructores). Calcular las propiedades a partir de los atributos e implementar la funcionalidad ofrecida por los objetos (métodos). Proporciona el cómo para un objeto UD1: Introducción a la Programación Orientada a Objetos Clase. Atributos Unidades que sirven para establecer el estado interno de los objetos. Tienen asociados modificadores de comportamiento y/o visibilidad (los veremos con detalle más adelante). Ejemplo: Definir atributos para una clase que implemente el tipo Punto • Coordenada X • Tipo: Real ==> Double • ¿Consultable?: Sí • ¿Modificable?: Sí • Coordenada Y • Tipo: Real ==> Double • ¿Consultable?: Sí • ¿Modificable?: Sí public interface Punto { Double getX(); void setX (Double nx); Double getY(); void setY (Double ny); } Atributos: Tipo private Double x; private Double y; Modificador Visibilidad UD1: Introducción a la Programación Orientada a Objetos Nombre Clase. Métodos Mecanismo para consultar o modificar las propiedades de un objeto. Ejemplo de método consultor: public Double getX ( ){ return x; } Cuerpo Cabecera Ejemplo de método modificador: public void setX (Double nx){ x = nx; } Modificador Nombre Visibilidad Tipo retorno Parámetros Formales UD1: Introducción a la Programación Orientada a Objetos Clase. Métodos Constructores Métodos especiales que sirven para inicializar el estado de un objeto. El nombre de un método constructor es el mismo que el de la clase que lo contiene. No devuelven nada, ni siquiera void. Siempre existe uno, incluso si no lo escribimos (constructor por defecto). Ejemplos de métodos constructores: public PuntoImpl (){ x = 0.0; y = 0.0; } public PuntoImpl (Double nx, Double ny){ x = nx; y = ny; } UD1: Introducción a la Programación Orientada a Objetos Clase. Ejemplo de creación de clase public class PuntoImpl implements Punto { private Double x; Atributos private Double y; public PuntoImpl (Double x1, Double y1) { Cabecera x=x1; de la Clase y=y1; } public Double getX() { return x; } public Double getY() { return y; } public void setX(Double x1) { x=x1; } public void setY(Double y1) { y=y1; } public String toString() { String s="("+getX()+","+ getY()+")"; return s; } } Métodos UD1: Introducción a la Programación Orientada a Objetos Clase (IV) Algunas consideraciones a la hora de crear nuestras clases En general, irán ligadas a una interfaz (lo que se especifica mediante la clausula implements). El nombre de la clase será el de la interfaz asociada, seguida de “Impl”. Por ej., PuntoImpl. El modificador de visibilidad de los atributos será private. El modificador de visibilidad de los métodos será public. Para invocar a un método constructor hay que anteponerle la palabra reservada new. Ejemplo de creación de objetos mediante constructores: Punto p1 = new PuntoImpl (2.1, 3.7); Punto p2 = new PuntoImpl ( ); UD1: Introducción a la Programación Orientada a Objetos Clase. Ejercicios de refuerzo Escriba una clase PersonaImpl que implemente el tipo Persona especificado anteriormente. Escriba una clase CirculoImpl que implemente el tipo Circulo especificado anteriormente. UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Paquete (I) Agrupación de clases e interfaces que, por la función que desempeñan, conviene mantener juntos. Similar a una carpeta que contiene ficheros y otras carpetas. Dentro de un paquete puede haber otros paquetes. El nombre de un paquete puede ser cualquier identificador. El acceso a los paquetes situados en el interior de otros paquetes se hace con el operador punto (.). Ejemplo: java.lang. El nombre cualificado de una clase está compuesto por todos los paquetes a los que hay que acceder para llegar a la clase. Ejemplo: java.lang.Object. El paquete en el que está una clase o una interfaz se indica anteponiéndole a la definición de la misma la sentencia package. UD1: Introducción a la Programación Orientada a Objetos Paquete (II) Ejemplo de declaración de paquetes: package nombre_del_paquete; interface …{ … … package nombre_del_paquete; public class … { … … } } package puntoPlano; public interface Punto{ … … package puntoPlano; public class PuntoImpl …{ … … } } UD1: Introducción a la Programación Orientada a Objetos Índice Lenguajes de Programación Orientados a Objetos (LPOO) Conceptos básicos de los lenguajes de programación Conceptos básicos de los LPOO Objeto Interfaz Clase Atributos Métodos Constructores Observadores Modificadores Paquete Convenciones para nombrar a los elementos de un programa Java UD1: Introducción a la Programación Orientada a Objetos Convenciones para escoger nombres de idenficadores en Java Interfaces y Clases Atributos: Igual que los atributos. Paquetes La primera letra del nombre en minúscula, para el resto, la primera letra de cada palabra en mayúscula (excepto para la primera palabra) y el resto en minúscula; no puede haber espacios en blanco. Métodos La primera letra de cada palabra en mayúscula, el resto en minúscula; no puede haber espacios en blanco. Igual que los atributos. Constantes Todas las letras en mayúsculas. Para separar palabras se usa el carácter subrayado. UD1: Introducción a la Programación Orientada a Objetos