57
Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos”

Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Embed Size (px)

Citation preview

Page 1: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases

“ Es una Abstracción de un elemento del mundo real ”

“ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

sobre esos datos”

Page 2: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

Posee Métodos y Atributos. Todo forma parte de una clase, es

una clase o describe como funciona una.

Todos los métodos se definen dentro de una clase.

No soporta funciones o variables globales.

Page 3: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

La implementación de una clase Java debe ir en un archivo en formato de texto con la extensión *.java y nombre idéntico a la clase implementada.

La declaración de una clase Java se realiza mediante la keyword: class seguida de su nombre.

La keyword va precedida por un modificador de acceso: public o default (nada).

Page 4: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

La implementación de la clase irá contenida en un bloque {} justo después de la declaración.

Declaración de una clase<modificador de acceso> <tipo de clase> class

<nombre> [extends <nombreClase> implements <nombreInterface>]

{...

}

Page 5: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

Tipos de clases abstract: tiene al menos un método

abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.

final: se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final.

Page 6: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

public: son accesibles desde otras clases. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.

protected: es visible en el paquete y en las subclases de esta clase en cualquier paquete.

private: es solo visible en la clase.

Page 7: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

Modificador Clase Método Datos Comentario

Por defecto x x x Una clase, método o dato es visible en este paquete.

public x x x Una clase, método o dato es visible a todos los programas de cualquier paquete.

private x x Un método o dato es sólo visible en esta clase.

protected x x Un método o dato es visible en este paquete y en las subclases de esta clase en cualquier paquete.

Page 8: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

Variables

Métodos

Finales

De objeto

De clase (static)

Constructores

De objeto

De clase (static)

Inicializadores-Finalizadores

Page 9: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

abstract

static

Método: que no tiene definición: si hay un método abstract en la clase, ésta también lo es

Clase: no se pueden crear objetos

Clase: No puede tener clases derivadas (fin de la jerarquía de herencia)

Método: puede ser utilizado aunque no se haya creado ningún objeto de la clase. No se redefinen. Es un método de la clase y no de los objetos.

Variable: propia de la clase

Variable: constante.

final Método: no puede ser redefinido.

Page 10: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clases (continuación)

Ejemplo

public MiClase{

int i;public MiClase(){ i = 10; }public void sumaAi( int j { i = i + j; }

}

Page 11: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Atributos y métodos

La implementación de una clase consiste en una serie de: Atributos Métodos

Declaración de un atributo <modificador_de_acceso> <tipo> nombre [=

valor_inicial]

Page 12: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Atributos y métodos

Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases

Declaración

<modificador_de_acceso> <tipo_retorno> <nombre> ([<lista_argumentos>]) {...}

Page 13: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Métodos (continuación)

Constructores Toda clase tiene al menos un constructor. Es un tipo específico de método. No retornan ningún valor. Su nombre es igual que la clase. Declaración

<modificador_de_acceso> <nombre> ([<lista_argumentos>]) {...}

Si nuestra clase no tiene método constructor el compilador añade uno sin parámetros.

Page 14: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Sobrecarga de métodos

Se dice que un método está sobrecargado cuando existen dos métodos con el mismo nombre y tipo de retorno pero con unos parámetros distintos.

De esta manera podemos tener en una clase varios constructores.

Page 15: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Convenciones en Java

El nombre de las clases comenzará con mayúsculas.

El nombre de los atributos comenzará con minúsculas.

El nombre de los métodos comenzará con minúsculas, excepto el método constructor.

Page 16: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Objetos Los objetos en Java no son mas que

variables de tipo complejo. El tipo de un objeto es el de la clase

que se ha instanciado. La declaración de un objeto es

idéntica a la declaración de una variable de tipo primitivo: tipo identificador; Cuenta miCuenta;

Page 17: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Objetos El valor de un objeto por defecto sin

inicializar es: null

La inicialización de un objeto si es distinta a la inicialización de las variables de tipo primitivas: Se utiliza el operador new. Se llama al constructor de la clase que estamos

instanciando. Es decir:

tipo identificador = new tipo([parametro,…]); Cuenta miCuenta(1000.52);

Page 18: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Método main Es el método donde comienza la

ejecución de un programa Java. public static void main(String[] args)

Las clases representan entidades que participan en la resolución de un problema ¿en qué entidad tiene sentido el método main?

En ninguna. Por ello se crea una clase a parte, que sólo contenga el método main.

Page 19: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Destructores Son métodos encargados de eliminar

los objetos de la memoria. En Java no existe este tipo de método. En Java existe un proceso que se

ejecuta en la JVM, a la vez que nuestra aplicación se encarga de buscar todos aquellos objetos de memoria no utilizados y limpiarlos.

Este proceso se llama Garbage Collector.

Page 20: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Garbage Collector ¿Cómo sabe el Garbage Collector que un

objeto ya no está siendo utilizado por la aplicación y que por tanto puede ser eliminado?

Porque no está referenciado por ninguna variable.

Existen tres motivos por los que una variable deja de referenciar a un objeto: Se iguala a null. Se iguala a otro objeto. Se termina su ámbito.

Page 21: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 22: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 23: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 1

Page 24: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 1 (resolución)

Page 25: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 2

Page 26: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 2 (resolución)

Page 27: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 3

Page 28: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejercicio 3 (resolución)

Page 29: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Herencia

La palabra clave extends se usa para generar una subclase de un objeto.

En Java no se puede hacer herencia múltiple.

Los constructores no se heredan.

Page 30: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Herencia

Las clases por encima de la jerarquía a una clase dada, se denominan superclases.

Las clases por debajo de la jerarquía a una clase dada, se denominan subclases.

Una clase puede ser superclase y subclase al mismo tiempo.

Page 31: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejemplo

Page 32: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Herencia

Una clase hereda todos los métodos y atributos de las clases superiores en la jerarquía.

Una clase puede tener sus propios métodos y atributos adicionales a los heredados.

Una clase puede modificar a los atributos y métodos heredados.

Page 33: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Ejemplo

Page 34: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 35: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 36: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 37: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clase Object

En Java todas las clases heredan de otra clase.

Si no lo especificamos en el código, el compilador hace que nuestra clase herede de la clase Object (raíz de la jerarquía de clases en Java)

Page 38: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Clase Object Esto significa que nuestras clases siempre

van a contar con los atributos y métodos de la clase Object.

Algunos de los métodos más importantes son:

Page 39: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

this y super

La palabra clave this hace referencia al objeto o instancia actual

Java asocia automáticamente todas las variables de instancia con this, por lo cual su uso a veces puede ser redundante.

public class MiClase {int i;public MiClase(){ this.i = 10; }

}

Page 40: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

this y super (continuación)

La palabra clave super hace referencia a la superclase de la clase que se emplea

public class MiNuevaClase extends MiClase {public void sumaAi( int j ) {

i = i + ( j/2 );super.sumaAi( j );

}}

Page 41: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 42: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 43: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Castings El casting es una forma de realizar

conversiones de tipos. Hay dos tipos de castings:

UpCasting: conversión de un tipo en otro superior en la jerarquía de clases. Ho hace falta especificarlo.

DownCasting: conversión de un tipo en otro inferior en la jerarquía de clases.

Se especifica precediendo al objeto a convertir con el nuevo tipo entre paréntesis.

Page 44: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
Page 45: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Sobrescribir un método Sobrescribir un método significa que una

subclase reimplementa un método heredado. Para sobrescribir un método hay que respetar

totalmente la declaración del método: El nombre debe ser el mismo. Los parámetros y tipo de retorno han de ser los

mismo. El modificador de acceso no puede ser más

restrictivo Al ejecutar un método se busca su

implementación de abajo hacia arriba en la jerarquía de clases.

Page 46: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Sobrescribir vs. Sobrecargar La sobrecarga de un método significa

tener varias implementaciones del mismo método con parámetros distintos: El nombre es el mismo. Los parámetros tienen que ser distintos. El tipo de retorno puede ser distinto. El modificador de acceso puede ser

distinto.

Page 47: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

El uso de la herencia

Debemos usar herencia cuando tenemos una clase de un tipo más específico. Especialización

Debemos usar herencia cuando tengamos un comportamiento que se puede reusar entre varias clases del mismo tipo genérico.

Page 48: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

El uso de la herencia No debemos usar herencia solo por el

hecho de reutilizar código. Podemos tener el comportamiento cerrar

en Puerta. Pero aunque necesitemos ese mismo comportamiento en Coche, no vamos a hacer que coche herede de Puerta.

No debemos usar herencia cuando no se cumpla la regla Es-un.

Page 49: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java Los paquetes en Java son una característica

más del lenguaje que nos permite organizar el código en grupos.

Adicionalmente, ayudan a evitar colisiones en los nombres de las clases. Por ejemplo si se tiene que utilizar un framework de terceros, se tiene un 99% de seguridad de que no tiene ninguna clase con el mismo nombre.

Toda clase Java pertenece a un paquete. Si no se especifica nada, pertenece al paquete por defecto (que es un paquete raíz sin nombre).

Page 50: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java

Para especificar el paquete al que pertenece una clase se utiliza la palabra: package.

Esta palabra tiene que ser la primer sentencia del archivo.

Declaración package nombre_del_paquete;

Page 51: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java Existe una convención aceptada entre

los programadores en cuanto a la nomenclatura de los paquetes: Todas las palabras que componen el

nombre del paquete van en minúsculas. Se suele utilizar el nombre de dominio

invertido para intentar asegurar nombres unívocos y evitar colisiones. com.ibm.test es.chemi.juegos

Page 52: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java

Para utilizar una clase que se encuentra en otro paquete tenemos que escribir su nombre completo: paquete + clase.

Pero existe otro método para facilitar la codificación que es el uso de import.

import nombre_del_paquete.nombre_de_la_clase; import nombre_del_paquete.*;

Page 53: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java Los import se ubican entre la sentencia

package y la declaración de la clase.

Las clases importadas de esta manera pueden ser referenciadas en el código directamente por su nombre de clase sin necesidad de escribir el paquete.

Un import con * importa las clases del paquete pero no las de los subpaquetes.

Page 54: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java Por tanto para utilizar a una clase tenemos

tres alternativas: Utilizar su nombre completo: paquete + clase Importar la clase: import + paquete + clase Importar el paquete completo.

Un import no implica inclusión de código, sino que simplemente son vías de acceso para buscar el código.

Page 55: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Paquetes en Java

Las clases System, Math, String, etc… pertenecen al paquete java.lang.

El compilar por defecto añade la siguiente línea a nuestro código: import java.lang.*;

Page 56: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Conceptos claves

Modificadores de acceso: public protected Por defecto private

Page 57: Clases “ Es una Abstracción de un elemento del mundo real ” “ Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan

Conceptos claves

Métodos Clases Atributosstatic Se puede acceder al

método sin instanciar la clase.Ej: int a = Math.min(10,17)

Su valor es compartido por todos los objetos de la clase.

abstract No tiene definición: si hay un método abstract en la clase, ésta también lo es.

No se pueden crear objetos.

final Ninguna otra clase puede sobreescribir este método

Ninguna otra clase puede heredar de esta.

Se obtienen constantes.