Download Métodos

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Visitor (patrón de diseño) wikipedia , lookup

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