Está en la página 1de 34

ALGORÍTMICA III

Algorítmica III

Programación Orientado a Objetos en Java


Introducción
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Contenido

Clases

Polimorfismo

Paquetes

Resumen

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases

Definir clases

Tipos de clases

Declarar e instanciar clases.

Miembros de Datos.

Métodos de Clases.

Constructores y finalizadores.

Herencia de Clases.

Modificadores de acceso.

Métodos para acceso.

Clases abstractas.

Crear instancias.

Arreglos de objetos.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Definir clases

Acceso a las clases
import <paquete1.paquete2.ClaxeX> (opcional *)


Declarar una clase
<ámbito> class claseX [<extends> SuperClase] [<implements> InterfaceX {
....<Instrucciones de la clase>
}

donde

Todas las clases predefinidas tiene la primera letra en mayúscula.

ámbito: public ó private

extends: se realiza la herencia

implements: se implementan los métodos predefinidos.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Tipos de Clases del Java



Abstract: Tiene por lo menos un método abstracto, esta clase no se
instancia, sino que se utiliza como clase base para la herencia. Ejemplo la
clase Reader


Final: Se declara como la clase que termina una cadena de herencia, no se
puede heredar de una clase final. Ejemplo la clase Math


Public: Accesible desde otras clases dentro del mismo paquete, por
herencia. Para acceder desde otros paquetes primero tiene que ser
importadas.


Synchronizable: Modificador que especifica que todos los métodos definidos
en la clase son sincronizados, que no se pueden acceder al mismo tiempo
desde diferentes hilos de ejecución.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Declarar e Instanciar Clases



Definición de una clase:
class MyClass {
}

Para crear una instancia de una clase se utiliza el operador new:
myObject = new MyClass();

No tiene que preocuparse de destruir el objeto. Java implementa
el concepto de garbage collect.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Miembros de datos



Puede incluir cualquier tipo como miembro de datos de una
clase (primitivo, compuesto o tipo objeto.)
public class DogClass {
String name, eyeColor;
int age;
boolean hasTail;
}

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos de Clases


 Declaración de un método:

<ambito> <TipoRetorno> NombreMétodo(<parametros>){


...... <Instrucciones del método>
}

donde:
 Ambito es un control de acceso: private, public, protected

 TipoRetorno: es void si no retorna nada.

 La clase tiene constructores con el mismo nombre y no tienen tipo de

retorno

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos de Clases


 Paso por valor:
 Pasa el valor del argumento al parámetro del método.
 Puede ser de un tipo primitivo.
 Primitivo son: int, long, float double, char, etc

 Paso por referencia:


 Pasa la referencia del argumento al parámetro del método.
 Referenciado son: Objetos, vectores, etc

 Variaciones que puede incluir un método (también variables):


 [ final ] TipoRetorno NombreMétodo : Método final
 [ static ] TipoRetorno NombreMétodo : Método de clase
 [ abstract ] TipoRetorno NombreMétodo : Método abstracto
 [ synchronized ] TipoRetorno NombreMétodo: Método sincronizado

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos de Clases



No hay funciones o procedimientos independientes en Java.
Ejemplo:
public class DogClass {
String name, eyeColor;
int age;
boolean hasTail;
public void speak() {
Message msgSpeak = new Message();
msgSpeak.setMessage(“arf, arf”);
msgSpeak.setFrame( new Frame() );
msgSpeak.show();
}
}
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos de Clases



Cuando se define métodos, la implementación del mismo
aparece directamente debajo de la declaración.

Para llamar al método, debe accesarse con punto. Por ejemplo:
DogClass dog = new DogClass();
dog.age = 4;
dog.speak();

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Constructores y Finalizadores



El constructor siempre tiene el mismo nombre que la clase y no
puede especificar valor de retorno.

Cuando usa el operador new, realmente está llamando al
constructor.

El valor de retorno es siempre la instancia del objeto.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Constructores y Finalizadores



Java se encarga de deasignar todos los recursos por ud., así no
hay mecanismo de destrucción en Java.

Sin embargo, hay otro método especial denominado finalizador.

Este método (si existe) es llamado inmediatamente antes de la
destrucción del objeto.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Herencia de Clases



La herencia en Java es manejada a través de la palabra clave
extends.

public class DogClass extends MammalClass {


. . .
}

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Herencia de Clases



Las clases en Java sólo pueden heredar de una clase a la vez (herencia simple).

Java tiene un mecanismo que proporciona muchos de los beneficios de la herencia
múltiple sin mucha complejidad, llamado interfaces.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Herencia de Clases



Si no llamamos explícitamente al constructor del padre, Java llama automáticamente
al constructor del padre por nosotros como la primera línea del constructor del
hijo.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Herencia de Clases. Uso de this y


super

super() va a llamar al constructor del padre.

Es posible que exista más de un constructor para una clase.

Puede llamar al constructor de una clase usando la palabra clave this(), con sus
respectivos parámetros.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Modificadores de Acceso


Acceso desde dentro del paquete de la clase
Modificador de Acceso Heredado Accesible
Por defecto (sin modificador) Si Si

public Si Si

protected Si Si

private No No

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Modificadores de Acceso


Acceso desde fuera del paquete de la clase
Modificador de Acceso Heredado Accesible
Por defecto (sin modificador) No No

public Si Si

protected Si No

private No No

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos Accesores



Son métodos que proporcionan la interfase pública a la clase a la vez que se mantiene
el almacenamiento real de los datos privado para la clase.

Típicamente viene en pares: uno para obtener el valor interno y otro para establecer el
valor interno.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Métodos Accesores



Por convención, el método obtener utiliza el nombre interno con “get” como prefijo y el
método Establecer hace lo mismo con “set”.

Por lo general, los Métodos Obtener para Booleanos utilizan como prefijos “is” o “has”.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Clases. Clases abstractas



Declarar una clase como abstracta significa que no hay implementación para los
métodos de esa clase, pero todas las clases que extienden esta clase deben
proporcionar una implementación.

Una clase que incluye por lo menos un método abstracto no se puede instanciar.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Polimorfismo

Sobrecarga de Métodos.

Uso de interfaces.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Polimorfismo. Sobrecarga de Métodos



En Java es posible sobrecargar métodos, es decir crear varios métodos de una clase
con el mismo nombre pero con diferentes parámetros y/o valores de retorno.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Polimorfismo. Uso de interfaces



Una interfaz es una declaración especializada de clase , en la cual se puede declarar
constantes y métodos, pero no la implementación. Ejemplo:
package Oop3;
interface SoundInterface {
public void speak();
}

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Polimorfismo. Uso de interfaces



Se utiliza interface en vez de class.

Todos los métodos declarados en una interfaz son públicos por defecto.

Una clase puede implementar una interfaz usando la palabra clave implements.

Una clase puede implementar tantas interfaces como se desee.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Crear instancias

Declara una variable objeto:
ClaseX NombreObjeto
donde:

NombreObjeto apunta a un objeto nulo.


Instanciación de un objeto
NombreObjeto = new ClaseX(<argumentos>)
donde:

Se crea la objeto.

Se asigna la referencia del objeto a la variable

Se llama al constructor respectivo de la clase.


Uso de los métodos y variables del objeto:
NombreObjeto.variable = <Valor>
NombreObjeto.Método(<argumentos>)

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Arreglos de objetos

Acceso a los elementos del arreglo:
Tipo primitivo:
NombreArreglo[Indice] = <valor>

Tipo referenciado:

NombreArreglo[Indice] = VariableObjeto1

NombreArreglo[Indice].Atributo = VariableObjeto2.Atributo

NombreArreglo[Indice].Atributo = Variable

VariableObjeto2.Atributo = NombreArreglo[Indice].Atributo

Variable = NombreArreglo[Indice].Atributo

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Paquetes

La sentencia import.

Declaración de paquetes.

Opciones de proyecto referentes a paquetes.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Paquetes

Para facilitar la reusabilidad, Java permite agrupar varias definiciones de clases en una
agrupacíón lógica llamada paquete.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Paquetes. La sentencia import



En Java, uno puede importar un paquete que use frecuentemente:
import java.applet.*;

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Paquetes. Declaración de paquetes



El nombre de paquete debería estar en una carpeta con el mismo nombre. Esto
permite al compilador Java localizar fácilmente el paquete.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Paquetes. Opciones de proyecto referentes a


paquetes

Source Path: Ruta que usa JDeveloper para ubicar fuentes.

Class Path: Ruta donde buscar archivos .class.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORÍTMICA III

Resumen

Creamos una instancia de objeto con la palabra clave new.

Un constructor asigna recursos y un finalizador es un método que se llama
automáticamente antes de destruir un objeto.

Para herencia se utiliza extends.

Una interfaz como una clase abstracta pero no puede contener código o variables no
constantes.

CARRERA DE
INGENIERÍA
DE SISTEMAS

También podría gustarte