Está en la página 1de 17

PROGRAMACIÓN II

PROGRAMACIÓN II PROGRAMACION ORIENTADA A OBJETOS Ing ° Mariana Chavarry Chankay

PROGRAMACION ORIENTADA A OBJETOS

Ing° Mariana Chavarry Chankay

Atributos y Métodos Estáticos

Los atributos y métodos estáticos también se llaman

atributos de clase y métodos de clase. Se declaran como static. Supongamos una clase Coche sencilla que se utiliza en un programa de

compra-venta de coches usados. De esta clase se han creado tres objetos de tipo Coche:

Atributos y Métodos Estáticos Los atributos y métodos estáticos también se llaman atributos de clase y

Ing° Mariana Chavarry Chankay

La clase contiene 6 atributos:

marca, modelo, color,

matrícula, precio y descuento. Supongamos que el descuento

es una cantidad que se aplica

a todos

los coches sobre

el

precio de venta.

Como este

dato es

el

mismo para todos

los coches y es un valor que se

puede modificar en cualquier

momento no debe formar parte

de cada coche sino que es un

dato que deben compartir

todos. Esto se consigue

declarándolo

static.

como

atributo

Atributos y Métodos Estáticos

Un Atributo static:

  • No es específico de cada objeto. Solo hay una copia del mismo y su valor es compartido por todos los objetos de la clase.

  • Podemos considerarlo como una variable global a la que tienen acceso todos los objetos de la clase.

  • Existe y puede utilizarse aunque no existan objetos de la clase.

Para acceder a un atributo de clase se escribe: NombreClase.atributo

Un Método static:

  • Tiene acceso solo a los atributos estáticos de la clase.

  • Sólo pueden llamar a otros métodos estáticos.

  • No es necesario instanciar un objeto para poder utilizarlo.

  • No pueden llamar a las referencias this o super.

Para acceder a un método de clase se escribe: NombreClase.método()

Ing° Mariana Chavarry Chankay

Atributos y Métodos Estáticos

Ejemplo:

Clase Persona que contendrá un atributo contadorPersonas que indique cuantos objetos de la clase se han creado.

contadorPersonas debe ser un atributo de clase ya que no es un valor que se deba guardar en cada objeto Persona que se crea, por lo tanto se debe declarar static:

public class Persona { private String nombre;

private int edad;

static int contadorPersonas; .......

}

  • Un ejemplo de uso desde fuera de la clase Persona podría ser mostrar su valor en la clase principal:

System.out.println(Persona.contadorPersonas);

  • También podríamos modificar su valor en la clase principal de esta forma:

Persona.contadorPersonas++;

Ing° Mariana Chavarry Chankay

Atributos y Métodos Estáticos

  • A un atributo puede aplicarse los modificadores static y final al mismo tiempo. Por ejemplo, el atributo PI de la clase Math:

public final class Math { public static final double PI = 3.141592653589793d; ...

}

No se requiere instanciar una clase para usar sus atributos estáticos. Por ejemplo, en el siguiente código no se creo un objeto del tipo Math para

acceder a su atributo PI:

area = Math.PI*radio*radio;

Ing° Mariana Chavarry Chankay

Interfaces

Java expande el concepto de clase abstracta con el concepto de interfaz. Una interfaz

contiene la declaración de métodos más no contiene la implementación de ninguno de ellos. Una interfaz declara un conjunto de métodos que una clase debe implementar, esto

es establece un determinado comportamiento que la clase que la implementa debe exhibir.

Características:

  • Permite simular la herencia múltiple.

  • La interfaz sólo es public o default.

  • Todos sus métodos son public abstract.

  • Todos los atributos son public static final

  • Aunque todos los métodos de una interfaz son abstractos, no es necesario declarar que lo son usando el modificador abstract. Tampoco la interfaz se declara abstracta.

  • Una interfaz puede extender (heredar) de una o más interfaces. A esta interfaz se le conoce como subinterfaz y contiene la declaración de los métodos de las interfaces que extiende más las declaraciones de los métodos que ella misma declara.

  • Una clase puede implementar una o más interfaces.

  • Una clase puede heredar de una clase e implementar una o más interfaces.

  • Una clase que implementa una o más interfaces debe implementar todos los métodos de las interfaces que implementa.

  • Una clase que implementa una subinterfaz debe implementar todos los métodos de la subinterfaz y de las interfaces padre.

Ing° Mariana Chavarry Chankay

Interfaces

Un tipo interfaz es un como un tipo de una clase. Podemos:

  • Declarar variables de un tipo interfaz. A esa variable se le debe asignar un objeto de una clase que implemente dicha interfaz.

  • Declarar un parámetro de un método que sea de un tipo interfaz. Al invocar al método debemos pasarle un objeto de una clase que implemente dicha interfaz.

  • Podemos especificar que el tipo de un método sea de un tipo interfaz. El método deberá regresar un objeto de una clase que implemente dicha interfaz.

Al igual que con las clases, el código de una interfaz de Java se almacena en un archivo con el mismo nombre de la clase y con la extensión .java.

Su sintaxis es:

Interfaces Un tipo interfaz es un como un tipo de una clase. Podemos:  Declarar variables

Ing° Mariana Chavarry Chankay

Interfaces

Interfaces Ing ° Mariana Chavarry Chankay
Interfaces Ing ° Mariana Chavarry Chankay

Ing° Mariana Chavarry Chankay

Interfaces

Interfaces Ing ° Mariana Chavarry Chankay

Ing° Mariana Chavarry Chankay

Interfaces

Ejemplo de cuándo se puede usar una interfaz:

Cuando se trate de manipular similitudes entre clases no relacionadas sin forzar una relación entre ellas.

Interfaces Ejemplo de cuándo se puede usar una interfaz: Cuando se trate de manipular similitudes entre

Ing° Mariana Chavarry Chankay

Clases Internas

  • De manera general es una clase como cualquier otra. Se declara de la misma forma que las demás pero dentro de otra clase, específicamente dentro del bloque de código especificado por las llaves.

  • En el código las clases internas proporcionan beneficios de organización, pero también tienen la habilidad de acceder a miembros de las clases externas.

  • Generalmente son usadas en el modelado de eventos de Java.

Tipos de clases internas:

  • 1. Clases internas static.

  • 2. Clases internas miembro.

  • 3. Clases internas locales.

  • 4. Clases anónimas.

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas static:

  • Sólo pueden ser creadas dentro del bloque de definición de la clase externa o dentro de una interfaz.

  • La invocación es ClasExterna.Claseinterna

  • Pueden usar los miembros static de la clase externa.

  • No se necesitan objetos de la clase externa para poder crear objetos de la clase interna static.

  • Import puede usarse para importar una clase interna static.

Ejemplo:

...

implements List.Linkeable{

import List.*; // o

...

}

import List.Linkeable;

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas static:

Clases Internas Clases internas static: Ing ° Mariana Chavarry Chankay

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas miembro:

  • Son llamadas nested class o simplemente clases internas.

  • No se pueden llamar igual que la clase externa.

  • No pueden contener miembros de tipo static.

  • Cada objeto de la clase interna existe siempre dentro de un objeto de la clase externa implícitamente.

  • Las clases internas pueden ser private o protected además de public y default.

  • Los métodos de la clase interna acceden directamente a todos los miembros de la clase externa y viceversa.

  • Una clase miembro puede contener otra clase.

  • En la clase interna la palabra this se refiere al objeto de la propia clase, para acceder al objeto de la clase externa se usa la siguiente sintaxis:

Ejemplo:

ClaseExterna.this.var

C es una clase interna de B, que a su vez es una clase interna de A.

A a=new A();

// se crea un objeto de la clase A

A.B b= a.new B(); // de B dentro del objeto a

A.B.C c= b.new C(); // de C dentro del objeto B

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas locales:

  • Son declaradas dentro de un método o en un bloque estático.

  • Su comportamiento es análogo a las variables locales. Sólo son visibles dentro del bloque de código donde fueron definidas.

  • Tienen acceso a todas las variables miembro y métodos de la clase externa así como a los miembros heredados.

  • Pueden usar las variables locales y argumentos de métodos visibles en ese bloque de código sólo si son final.

  • This se usa igual que en las clases internas miembro pero no New ni Super.

  • No pueden definir variables, métodos o clases static.

  • No usan ningún modificador de acceso.

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas locales:

Clases Internas Clases internas locales: Ing ° Mariana Chavarry Chankay

Ing° Mariana Chavarry Chankay

Clases Internas

Clases internas anónimas:

  • No llevan nombre.

  • La definición de la clase y la creación se hacen en un mismo paso.

  • No definen constructores pero si bloques estáticos.

  • Formas de definición:

    • new seguida de la definición de la clase entre llaves {...}

    • new seguida del nombre de la clase de la que hereda (no extends) y la definición de la clase anónima entre llaves.

    • new seguida del nombre la interface que implementa (no implements) y la definición de la clase anónima entre llaves.

Ejemplo (de awt):

unObjeto.addACtionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

...

}

} );

Ing° Mariana Chavarry Chankay