01_Introducción POO con Java

Anuncio
Aplicaciones de Escritorio
Introducción a la Programación
Orientada a Objetos con Java
Disertantes: Ing. Rasjido, Jose.
AdeS Montenegro, Cristian.
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Clases
Un programa Java puede ser considerado como un
conjunto de objetos que interactúan entre si, para
cumplir un propósito específico.
Una clase es una plantilla a partir de la cual se
instancian objetos, cuyo estado y comportamiento
esta determinado por los atributos y métodos
definidos en la clase.
Escuela de Informática 2013 - UNPA UACO
Clases
Una clase contiene las declaraciones de los atributos
y de los métodos, y colectivamente se los denomina
miembros de la clase.
int x, y, diametro;
character tipo;
double elasticidad;
Declaraciones de atributos
Declaraciones de métodos
Escuela de Informática 2013 - UNPA UACO
Empaquetado de Clases
Los paquetes son un mecanismo utilizado por Java,
que permite organizar las clases de una manera
estructurada y jerárquica.
En Java, este mecanismo se referencia mediante la
palabra package.
package nombre_paquete;
public class MiClase {
// Contenido de la clase.
Escuela de Informática 2013 - UNPA UACO
}
Empaquetado de Clases
Ventajas.
Permiten organizar las clases de manera
estructurada.
Evitan conflicto de nombre.
Escuela de Informática 2013 - UNPA UACO
Empaquetado de Clases
Importar clase.
import nombre_clase;
Importar varias clases.
import nombre_paquete.*;
import java.util.*;
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Modificadores de Acceso
En Java existen cuatro modificadores de acceso que,
ordenados de menor a mayor visibilidad, son:
private. Los atributos o métodos están restringidos
al interior de la clase. No se aplica en clases.
protected. Los atributos o métodos protegidos de
una clase solo pueden ser utilizados por otras clases
pertenecientes al mismo paquete. No se aplica en
clases.
Escuela de Informática 2013 - UNPA UACO
Modificadores de Acceso
public. El modificador public ofrece el máximo nivel
de visibilidad. Los atributos, métodos o clases
asociados a este modificador pueden ser visibles
desde cualquier clase, independientemente del
paquete en el que se encuentren.
(ninguno). Si algún elemento (clase, método o
atributo) no posee modificador de acceso,
únicamente las clases del mismo paquete tendrán
acceso a los mismos.
Escuela de Informática 2013 - UNPA UACO
Modificadores de Acceso
Aplicabilidad de los modificadores de acceso sobre
los distintos componentes de una clase:
private
(default)
protected
public
Clase
NO
SI
NO
SI
Método
SI
SI
SI
SI
Atributo
SI
SI
SI
SI
Variable
local
NO
NO
NO
NO
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Encapsulación
El comportamiento de una clase esta determinado
por los métodos públicos de la misma, mientras que
las características de los objetos de las clases están
determinadas por los atributos de la clase, los cuales
suelen tener acceso privado.
La idea de la encapsulación es mantener los
atributos de los objetos como privados y
proporcionar acceso a los mismos a través de
métodos públicos.
Escuela de Informática 2013 - UNPA UACO
Encapsulación
Esta filosofía de programación proporciona dos
beneficios importantes:
Protección de datos “sensibles”.
Facilidad y flexibilidad en el mantenimiento de las
aplicaciones
Escuela de Informática 2013 - UNPA UACO
Encapsulación
Protección de datos.
Supongamos que desarrollamos la clase sin aplicar
el concepto de encapsulación.
public class Rectangulo {
public int alto, ancho;
// Métodos de la clase.
}
Entonces, no podríamos impedir al que hace uso de
la clase hacer esto:
Rectangulo r = new Rectangulo();
r.alto = -5;
Escuela de Informática 2013 - UNPA UACO
Encapsulación
La encapsulación permite el acceso controlado a los atributos,
entonces lo correcto sería:
public class Rectangulo {
private int alto, ancho;
public void setAlto (int alto) {
if (alto > 0) this.alto = alto;
}
public int getAlto() {
return this.alto;
}
public void setAncho (int ancho) {
if (ancho > 0) this.ancho = ancho;
}
public int getAncho() {
return this.ancho;
}
Escuela de Informática 2013 - UNPA UACO
}
Encapsulación
La creación de objetos Rectangulo y asignación de
valores a los atributos, sería:
Rectangulo r = new Rectangulo();
r.setAlto(3);
r.setAncho(6);
Escuela de Informática 2013 - UNPA UACO
Encapsulación
Facilidad en el mantenimiento.
Si una vez creada la clase se desea cambiar el
criterio sobre los posibles valores que pueden tomar
los atributos, entonces solo se modifican los métodos
de acceso necesarios y se libera una nueva versión
de la clase.
Escuela de Informática 2013 - UNPA UACO
Encapsulación
Por ejemplo, si se decide que el valor del atributo
alto no puede ser inferior a 2, entonces el método
setAlto() quedaría:
public void setAlto(int alto) {
if (alto > 1) this.alto = alto;
}
Los detalles de la implementación quedan ocultos,
por lo que el código que hace uso de esta clase no
tendrá que modificarse.
Escuela de Informática 2013 - UNPA UACO
Encapsulación
Clases de encapsulación (JavaBeans).
La finalidad de las clases JavaBeans es la
encapsulación de una serie de datos asociado a
una entidad (empleado, libro, producto, etc.), para
facilitar el tratamiento de los mismos.
Escuela de Informática 2013 - UNPA UACO
Encapsulación
public class Empleado {
private String nombre, dni;
public Empleado (String nombre, String dni) {
this.nombre = nombre;
this.dni = dni;
}
public void setNombre(String n) {
nombre = n;
}
public String getNombre() {
Ejemplo de
return nombre;
}
public void setDni(String n) {
dni = n;
}
public String getDni() {
return dni;
}
Escuela de Informática 2013 - UNPA UACO
}
clase JavaBean
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Sobrecarga de Métodos
La sobrecarga de métodos permite tener en una
misma clase varios métodos con el mismo
nombre.
Es imprescindible que se cumpla que: cada versión
del método debe distinguirse de las otras en el
número o tipo de parámetros.
Escuela de Informática 2013 - UNPA UACO
Sobrecarga de Métodos
Ejemplos válidos de sobrecarga:
public void calculo(int k) {..}
public void calculo(String s) {..}
public long calculo(int k, boolean b) {..}
Ejemplos no válidos de sobrecarga:
public void calculo(int k) {..}
public int calculo(int k) {..}
public void calculo(int n) {..}
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Herencia
La herencia representa uno de los conceptos más
importantes y potentes de la Programación Orientada
a Objetos.
Es la capacidad de crear clases que adquieran de
manera automática los miembros (atributos y
métodos) de otras clases que ya existen, pudiendo
además añadir nuevos atributos y métodos.
Escuela de Informática 2013 - UNPA UACO
Herencia
Principales ventajas de la herencia.
Reutilización de código.
Mantenimiento de aplicaciones existentes.
Escuela de Informática 2013 - UNPA UACO
Herencia
Nomenclatura.
En POO, la clase que va a ser heredada se la llama
superclase o clase base, mientras que a la hereda
se la conoce como subclase o clase derivada.
SUPER CLASE
SUB CLASE
Escuela de Informática 2013 - UNPA UACO
Herencia
Nociones básicas.
En JAVA no está permitida la herencia múltiple, es
decir, una subclase no puede heredar más de una
clase.
Si es necesario una herencia multinivel, entonces A
puede ser heredada por B y C puede heredar B.
Una clase puede ser heredada por varias clases.
La herencia entre dos clases establece una relación
de tipo “es un”.
Escuela de Informática 2013 - UNPA UACO
Herencia
Relación “es un”
VEHÍCULO
COCHE
Un coche “es un” vehículo.
Escuela de Informática 2013 - UNPA UACO
Herencia
Creación de herencia en Java (extends).
public class subclase extends superclase
{
// Código de la subclase.
}
Todas las clases de Java heredan alguna clase. Si no
se especifica extends, entonces implícitamente se
heredará de Object.
Escuela de Informática 2013 - UNPA UACO
Herencia
Ejemplo:
VEHÍCULO
COCHE
public class vehiculo
{
private float alto, largo, ancho;
// getters y setters públicos
// resto de la clase
}
public class coche extends vehiculo
{
private int ruedas;
private String tipoMotor;
// resto de la clase.
}
Escuela de Informática 2013 - UNPA UACO
Herencia
Constructores.
Cada vez que se cree un objeto de una clase, antes de
ejecutarse el constructor de dicha clase se ejecutará
primero el de su superclase.
Todos los constructores incluyen implícitamente el
método super(), con el objetivo de invocar el
constructor de la superclase.
Escuela de Informática 2013 - UNPA UACO
Herencia
Constructores.
Si el constructor de la superclase requiere argumentos,
entonces:
public class coche extends vehiculo {
private int ruedas;
private String tipoMotor;
public coche(float alt, float lar, float anc, int rue,
String tm) {
super(alt, lar, anc);
ruedas = rue;
tipoMotor = tm;
}
Escuela de Informática 2013 - UNPA UACO
}
Herencia
Métodos y atributos protegidos.
Para que un elemento solo pueda ser accedido por las
clases derivadas u otras clases de otros paquetes,
entonces utilizamos el modificador protected.
public class Persona {
private String fecha_nacimiento;
public Persona(String f) {
fecha_nacimiento = f;
}
protected int getEdad() {
//Implementación del método.
}
Escuela de Informática 2013 - UNPA UACO
}
Herencia
Clases finales.
Para evitar que una clase pueda ser heredada por otra,
entonces deberá ser declarada con el modificador final
delante de class.
public final class ClaseA {
.
.
}
Escuela de Informática 2013 - UNPA UACO
Herencia
Sobreescritura de métodos.
Cuando una clase hereda a otra, el comportamiento de
los métodos que hereda no siempre se ajusta a las
necesidades de la nueva clase.
Un ejemplo clásico es el método toString().
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Clases Abstractas
Una clase abstracta es una clase en la que alguno
de sus métodos está declarado pero no está
definido.
Estos métodos no definidos se los conoce como
métodos abstractos.
Escuela de Informática 2013 - UNPA UACO
Clases Abstractas
Un método abstracto es aquel que no tiene un
comportamiento definido, sino hasta que una clase
hereda su clase abstracta.
Son un ejemplo de sobreescritura de métodos.
Escuela de Informática 2013 - UNPA UACO
Clases Abstractas
Sintaxis.
La sintaxis para una crear una clase abstracta es la
siguiente:
public abstract class Figura {
public abstract double area();
//otros métodos.
}
Escuela de Informática 2013 - UNPA UACO
Clases Abstractas
Características.
Una clase abstracta puede tener métodos no
abstractos.
No es posible crear objetos de una clase abstracta.
Las subclases de una clase abstracta están obligadas
a sobreescribir todos los métodos abstractos que
heredan.
Una clase abstracta puede tener constructores.
Escuela de Informática 2013 - UNPA UACO
Clases Abstractas
EJERCICIO
*Figura
color
getColor()
*area()
Triangulo
base
altura
getBase()
getAltura()
area()
* Clase/método abstracta/o
Circulo
radio
getRadio()
area()
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Polimorfismo
El polimorfismo es la posibilidad de utilizar una
misma expresión para invocar a diferentes
versiones de un mismo método, determinando en
tiempo de ejecución la versión del método que se
debe ejecutar.
Escuela de Informática 2013 - UNPA UACO
Polimorfismo
Mediante el polimorfismo es posible asignar un
objeto de una clase a una variable de su superclase.
Figura f = new Triangulo(double base, double altura, String
color);
f.getColor();
f.getArea();
De esta forma solo podrán accederse a los métodos
definidos en la superclase.
Escuela de Informática 2013 - UNPA UACO
Polimorfismo
Esto nos permite acceder a diferentes versiones de
un método heredado, dependiendo del objeto
almacenado.
Figura f;
f = new Triangulo(..);
f.area(); //Método área de Triangulo.
f = new new Circulo(..);
f.area(); //Método área de Circulo.
f = new Rectangulo(..);
f.area(); //Método área de Rectangulo.
Escuela de Informática 2013 - UNPA UACO
Polimorfismo
Ventaja.
A partir del ejemplo anterior se puede observar
claramente que la principal ventaja es la
Reutilización de Código.
Escuela de Informática 2013 - UNPA UACO
Agenda
Clases y Paquetes.
Modificadores de Acceso.
Encapsulación.
Sobrecarga de Métodos.
Herencia.
Clases Abstractas.
Polimorfismo.
Interfaces.
Escuela de Informática 2013 - UNPA UACO
Interfaces
Una interfaz es un conjunto de métodos abstractos
y de constantes públicas, definidos en un archivo
.java.
Una interfaz es similar a una clase abstracta en la
que todos sus métodos son abstractos.
Su finalidad es definir el formato que deben de tener
determinados métodos que han de implementar
ciertas clases.
Escuela de Informática 2013 - UNPA UACO
Interfaces
Definición.
Se define mediante la palabra interface, utilizando la
siguiente sintaxis:
public interface Operaciones {
public void rotar();
public String serializar();
}
Escuela de Informática 2013 - UNPA UACO
Interfaces
Implementación.
Para indicar que una clase implementará los métodos
de una interfaz, se utiliza la palabra inmplements.
public class Triangulo extends Figura implements
Operaciones {
public void rotar() {
//Implementación del método.
}
public String serializar() {
//Implementación del método.
}
Escuela de Informática 2013 - UNPA UACO
}
Interfaces
Características.
Todos los métodos definidos en una interfaz son
públicos y abstractos.
En una interfaz es posible definir constantes.
Una interfaz no es una clase.
Escuela de Informática 2013 - UNPA UACO
Interfaces
Características.
Una clase puede implementar más de una interfaz.
public class MiClase implements Interfaz1, Interfaz2, … {
}
Una interfaz puede heredar otras interfaces.
public interface MiInterfaz extends Interfaz1, Interfaz2,
… {
}
Escuela de Informática 2013 - UNPA UACO
Interfaces
Interfaces y polimorfismo.
Una variable de tipo interfaz puede almacenar
cualquier objeto de las clases que la implementan.
Operaciones op = new Triangulo(..);
op.rotar();
op.serializar();
Escuela de Informática 2013 - UNPA UACO
Referencias
Programador Certificado Java 2, segunda edición.
Antonio J., y Martin Sierra. Alfaomega-RaMa.
Estructuras de Datos con Java, Diseño de estructuras
y algoritmos, segunda edición. John Lewis y Joseph
Chase. Pearson – Adison Wesley.
FIN
Escuela de Informática 2013 - UNPA UACO
Descargar