Está en la página 1de 66

Curso J2EE

GFI Informática
Parte 2
Orientación a Objetos

19 de abril de 2023 © GFI Informática


Orientación a Objetos (POO)

Inciso: Clases Java

19 de abril de 2023 © GFI Informática Curso Java Página 2


Orientación a Objetos (POO)

 Clase I
• Define las características comunes a todos los objetos de un cierto
tipo, es decir, especifica los atributos y comportamientos comunes
para los objetos del mismo tipo.
• Es la “plantilla” que usamos para crear objetos.
• ATRIBUTOS
• Define el estado del objeto.
• COMPORTAMIENTO (métodos)
• Conjunto de acciones o operaciones que el objeto
puede realizar

19 de abril de 2023 © GFI Informática Curso Java Página 3


Orientación a Objetos (POO)

 Clase II
• Convenciones
• El nombre de la clase comienza con mayúscula y
cada palabra subsiguiente comienza también por
maýuscula
public class MiClase() { }
• El nombre de los métodos comienza en minúscula
y cada palabra subsiguiente comienza por
maýuscula.
objRectangulo.calcularArea();

19 de abril de 2023 © GFI Informática Curso Java Página 4


Orientación a Objetos (POO)

19 de abril de 2023 © GFI Informática Curso Java Página 5


Orientación a Objetos (POO)

 Clase III
• Ejemplo
[Modificadores] class NombreClase [extends SuperClase] {

19 de abril de 2023 © GFI Informática Curso Java Página 6


Orientación a Objetos (POO)

 Clase IV
• Modificadores de clase I

public class NombreClase // visible fuera del paquete


Normalmente la clase se almacena en un fichero NombreClase.java
En un fichero .java puede haber como mucho una clase public

class C extends superclase // la clase hereda de otra


Sólo herencia simple (una sóla superclase)
Si no aparece extends la clase definida hereda (es una subclase) de un
objeto general del sistema llamada Object

19 de abril de 2023 © GFI Informática Curso Java Página 7


Orientación a Objetos (POO)

 Clase IV: Declaración de clase I


• Modificadores
• public: Todas las clases pueden crear instancias de esta clase.
• protected: Sólo subclases de esta clase pueden crear
instancias.
• private: Ninguna otra clase puede crear una instancia de esta
clase.
• final: Esta clase no podrá tener hijos.
• abstract: Se trata de una clase de la cual no se puede
instanciar ningún objeto.
• extends
• Identifica la superclase de la que hereda (Herencia)
• implements
• Identifica interfaz que se debe de implementar.

modificador class MiClase extends Superclase implements Interfaz { }

19 de abril de 2023 © GFI Informática Curso Java Página 8


Orientación a Objetos (POO)

• Clase IV: Cuerpo de clase I


• Cuerpo
• Constructores
• Variables o atributos de la clase
• Métodos
• Finalize()

19 de abril de 2023 © GFI Informática Curso Java Página 9


Orientación a Objetos (POO)

 Clase genérica Object-métodos útiles


Todas las clases en Java heredan implícitamente de la
clase Object. De esta forma, Object es la raíz de la jerarquía
de herencia (de implementación) en Java para los objetos
del mismo tipo.
Object define un conjunto de métodos útiles, que pueden ser redefinidos en cada
clase. En particular:
public boolean equals(Object o): Permite definir el criterio de igualdad
utilizado para los objetos de una determinada clase
(el operador == únicamente chequea la igualdad de referencias).
En Object, equals se define directamente como la identidad de referencias.
public String toString(): Permite decidir la representación externa de un
objeto como una cadena. Por defecto es el valor de su referencia,
etiquetada con el nombre de la clase.

19 de abril de 2023 © GFI Informática Curso Java Página 10


Orientación a Objetos (POO)

Orientación a Objetos

19 de abril de 2023 © GFI Informática Curso Java Página 11


Orientación a Objetos (POO)

 Introducción POO I
• Muy de moda en los años 90 aunque la filosofía surgió en los años 60
(SmallTalk, etc). Pretende conseguir una visión mas cercana a la
realidad.
• Principales ventajas:
• Estructura de programas mas cercana a nuestra forma de
pensar.
• Se maximiza la reutilización de código.
• Considera todo como una serie de objetos con propiedades y
atributos.

19 de abril de 2023 © GFI Informática Curso Java Página 12


Orientación a Objetos (POO)

 Introducción POO II
• Características
• Java es un lenguaje totalmente orientado a objetos.
• En Java todo es un objeto, a excepción de los tipos básicos de
variables:
enteros, reales, char y boolean.
• Un programa es una agrupación de objetos, independientes
entre si, que dialogan entre ellos mediante mensajes.
• La POO permite abordar con más posibilidades de éxito y con
un menor coste temporal grandes proyectos de software,
simplificándole además la tarea al programador.

19 de abril de 2023 © GFI Informática Curso Java Página 13


Orientación a Objetos (POO)

 Paradigmas de la POO I
• Abstracción
• Consiste en abstraer conceptualmente los atributos y
comportamiento (métodos) comunes a un determinado conjunto
de objetos y almacenarlos en una clase (plantilla).
• Encapsulamiento.
• El encapsulamiento es el principio por el cual se ocultan los
detalles de implementación al usuario. Cada clase consta de:
· Interfaz: es la parte pública con la que interactúa el usuario
(métodos públicos)
· Implementación: es el código que realiza todas las
operaciones de la clase (métodos privados).
• Una ventaja importante, se puede modificar la implementación
sin modificar el interfaz público
• Fomenta la reusabilidad de código muy importante en Ingeniería
del software.

19 de abril de 2023 © GFI Informática Curso Java Página 14


Orientación a Objetos (POO)

 Paradigmas de la POO II
• Composición : “tiene un”
• Herencia : “es un”
• La herencia permite crear una clase nueva (subclase o clase
derivada) que tenga el mismo comportamiento que otra
(superclase o clase base) y además extienda o adapte ese
comportamiento a unas necesidades específicas.
• La nueva subclase heredará los atributos y los métodos de la
clase base, los cuales se añadirán a los definidos en la propia
subclase.
• Esquema jerárquico, permite la reutilización de código
• En JAVA, cualquier clase hereda de la clase que está en el
principio de la jerarquía, esta clase es Object.
• Polimorfismo.
• El Polimorfismo es la respuesta distinta frente a una llamada a
un método dependiendo de la naturaleza del objeto.
• Consiste en definir métodos distintos, que comparten el mismo
nombre, pero que se aplican a clases diferentes.
19 de abril de 2023 © GFI Informática Curso Java Página 15
Orientación a Objetos (POO)

 Paradigmas de la POO III: Composición I


• Ejemplo Composición: clase Punto

19 de abril de 2023 © GFI Informática Curso Java Página 16


Orientación a Objetos (POO)

 Paradigmas de la POO III: Composición II


• Composición ejemplo clase Circulo:

19 de abril de 2023 © GFI Informática Curso Java Página 17


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia I


• Herencia Simple:
Animal

Mamifero

Primate Canino

Gorila Chimpance Perro Lobo

19 de abril de 2023 © GFI Informática Curso Java Página 18


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia II


• Herencia: La palabra reservada extends I
Cuando se crea un modelo y luego se necesita particularizar:

¡datos duplicados!

19 de abril de 2023 © GFI Informática Curso Java Página 19


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia III


• Herencia: La palabra reservada extends II
Se puede definir usando extends una clase
a partir de otra ya definida.

19 de abril de 2023 © GFI Informática Curso Java Página 20


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia IV


• Herencia: La palabra reservada this
Se utiliza para hacer referencia a variables propias
de la clase hija
• Herencia: La palabra reservada super
• Una clase utiliza super para apuntar a su superclase.
• Super se utiliza para apuntar a los miembros de la superclase.
• Los métodos de la superclase se invocan como si el objeto
fuera parte de la subclase.

19 de abril de 2023 © GFI Informática Curso Java Página 21


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia V


• Ejemplo de accesos a variables y métodos I

19 de abril de 2023 © GFI Informática Curso Java Página 22


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia VI


• Ejemplo de accesos a variables y métodos II

19 de abril de 2023 © GFI Informática Curso Java Página 23


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia VII


• Reescritura de método I
• La signatura de un método viene dada por su nombre, el tipo y
número de los parámetros.
• El tipo devuelto no forma parte de la signatura.
• Cuando se reescribe un método en una clase derivada la
signatura debe ser la misma que el método de la clase base.
• El tipo devuelto debe ser el mismo que el del método de la
clase base
• El atributo de acceso del método de la clase derivada tiene
que ser igual o mas general que el de la clase base (NO
puede ser mas restrictivo)
• El método de la subclase no puede provocar más excepciones
que el método del padre.

19 de abril de 2023 © GFI Informática Curso Java Página 24


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia VIII


• Reescritura de método II

19 de abril de 2023 © GFI Informática Curso Java Página 25


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia IX


• Reescritura de método III

19 de abril de 2023 © GFI Informática Curso Java Página 26


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia X


• INCISO: Interfaz como herencia múltiple I
• Definición:
• Una interfaz en Java es una colección de métodos abstractos
y propiedades.
• En ellas se especifica qué se debe hacer pero no su
implementación.
• Serán las clases que implementen estas interfaces las que
describan la lógica del comportamiento de los métodos.
• Ventajas:
• Organizar la programación.
• Obligar a que ciertas clases utilicen los mismos métodos
(nombres y parámetros).
• Establecer relaciones entre clases que no estén relacionadas.

19 de abril de 2023 © GFI Informática Curso Java Página 27


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia X


• INCISO: Interfaz como herencia múltiple II
• Para declarar una interfaz se utiliza:
modificador_acceso interface NombreInterfaz { .... }
• modificador_acceso puede ser public o no existir, siendo
entonces por defecto package. Los atributos que definamos en
el cuerpo de la interfaz serán atributos de tipo constante en las
clases en las que se implemente.
• Para implementarla en una clase, se utiliza la forma:
modificador_acceso NombreClase implements NombreInterfaz1
[, NombreInterfaz2]
• Una clase puede implementar varias interfaces, separando los
nombres por comas.

19 de abril de 2023 © GFI Informática Curso Java Página 28


Orientación a Objetos (POO)

 Paradigmas de la POO III : Herencia X


• INCISO: Interfaz como herencia múltiple III
• Para declarar una interfaz se utiliza:

• Para implementarla en una clase, se utiliza la forma:

19 de abril de 2023 © GFI Informática Curso Java Página 29


Orientación a Objetos (POO)

 Paradigmas de la POO III : Polimorfismo


• Ejemplo

19 de abril de 2023 © GFI Informática Curso Java Página 30


Orientación a Objetos (POO)

Variables

19 de abril de 2023 © GFI Informática Curso Java Página 31


Orientación a Objetos (POO)

 Identificadores
• Permiten nombrar los distintos elementos de un
programa
variables, objetos, clases, paquetes, interfaces
• Sintaxis:
Comienzan con letra (incluyendo _ y $)
Seguido de letras o dígitos
Cualquier longitud
Se distinguen mayúsculas de minúsculas
• Ejemplos:
x
_var1
MAXIMO
$Caractero

19 de abril de 2023 © GFI Informática Curso Java Página 32


Orientación a Objetos (POO)

 Variables
• Unidad básica de almacenamiento de información.
• Elementos cuyo valor puede cambiar durante el
programa

• Una variable de un determinado tipo proporciona:


• Capacidad para almacenar un valor simple
• Un conjunto predefinido de operadores

19 de abril de 2023 © GFI Informática Curso Java Página 33


Orientación a Objetos (POO)

 Declaración de variables I
• Declaración
tipo identificador;
tipo identificador [= valor_inicial] [, ident [=valor_ini] ] …;

• Ejemplos

int numero;
int max= 5;
boolean sino = true;

19 de abril de 2023 © GFI Informática Curso Java Página 34


Orientación a Objetos (POO)

 Declaración de variables II
• Especificadores de acceso
• private: Sólo pueden ser utilizadas dentro de la
clase donde son definidas.
• protected: Sólo pueden ser utilizadas dentro de la
clase donde son definidas y subclases de esta.
• public: Todas las clases pueden acceder a estas
variables.
• static
• Variable general de la clase, no de las instancias.
• Su valor es compartido por las instancias.
• final
• se emplea para definir constantes, un dato tipo
final no puede variar nunca su valor.
19 de abril de 2023 © GFI Informática Curso Java Página 35
Orientación a Objetos (POO)

 Declaración de variables II
• Static
• Permite utilizar la variable stática fuera de la clase sin crear
el objeto a priori
• Cuando tu declaras una variable/metodo no-static, para
poder usarlo fuera de la clase
(siempre y cuando los atributos de acceso te lo permitan)
tienes que hacer primero una instancia de la clase y luego
accesar al metodo o variable, como en:

// int myVar = myObj.nonStaticVar;


//(ERROR primero tienes que crear el objeto)
MyClass myObj = new MyClass();
myObj.nonStaticMethod();
int myVar = myObj.nonStaticVar;

19 de abril de 2023 © GFI Informática Curso Java Página 36


Orientación a Objetos (POO)

 Declaración de variables III


• Static

19 de abril de 2023 © GFI Informática Curso Java Página 37


Orientación a Objetos (POO)

Variables y tiempo de vida I


• Variables de clase.
• Son variables definidas fuera de un método pero
dentro de la definición de una clase.
• Se crean cuando se llama al constructor del objeto.
• Las variables de clase existen mientras el objeto
sigue siendo referenciado.
• Variables de método.
• Se definen como parámetro de método, con cada
llamada se crea una variable y dura mientras el
método existe.

19 de abril de 2023 © GFI Informática Curso Java Página 38


Orientación a Objetos (POO)

Variables y tiempo de vida II


• Variables locales.
• Son variables que se definen dentro de un
método y se llaman locales, autonómicas,
temporales o variables de pila.
• Se crean cuando el método se ejecuta y se
destruyen cuando se sale del método.
• Son variables que deben ser inicializadas para
evitar errores de compilación.

19 de abril de 2023 © GFI Informática Curso Java Página 39


Orientación a Objetos (POO)

Objetos

19 de abril de 2023 © GFI Informática Curso Java Página 40


Orientación a Objetos (POO)

Objetos y Mensajes
• ¿Qué son los Objetos?
• Los objetos son instancias de clases.
• ¿Qué son los Mensajes?
• Los objetos se comunican mediante mensajes (llamadas a
los métodos de las clases).
• Hay que enviar mensajes (métodos) a un objeto para que
realice algo.
• Los mensajes que pueden ser enviados son los que se
definen en la interfaz pública.

19 de abril de 2023 © GFI Informática Curso Java Página 41


Orientación a Objetos (POO)

Objetos: Declaración
• No crea el objeto, sólo notifica al compilador el tipo
de variable.
Clase objClase;
La declaración de tipos primitivos reserva memoria.
La declaración de tipos NO primitivos no reserva
memoria.
Los objetos declarados no son objetos, sino punteros
a objetos.
Persona p;

19 de abril de 2023 © GFI Informática Curso Java Página 42


Orientación a Objetos (POO)

 Objetos: Creación e Inicialización I


• Crear un ejemplar o instancia de una clase.
• Crear el objeto es sinónimo de reservar espacio
para sus variables.
• Inicializarlo es darle un valor a estas variables,
normalmente mediante sus constructores.
objClase = new Clase();
Operador new: Crea una instancia de la clase
indicada y devuelve una referencia a dicho objeto.
Se reserva espacio de memoria para los datos del
objeto
Un ejemplar es una copia individual de la plantilla de la clase
que tiene su propio conjunto de datos

19 de abril de 2023 © GFI Informática Curso Java Página 43


Orientación a Objetos (POO)

 Objetos: Creación e Inicialización II


Cuando se crea un objeto, las variables miembro (atributos)
se inicializan al reservar memoria con los siguientes valores:
byte, short, int 0
long 0L
float 0.0f
double 0.0d
char '\u0000' (null)
boolean false
tipos de referencia null
Las variables locales a un método se deben inicializar.
Éstas no se inicializan automáticamente.

19 de abril de 2023 © GFI Informática Curso Java Página 44


Orientación a Objetos (POO)

 Objetos: Creación e Inicialización III


• Ejemplo
int num = 5; //reserva espacio (tipo primitivo)

Rectangulo rect; // crea una referencia

rect = new Rectangulo(); // reserva espacio

Rectangulo otroRect; // crea una referencia


otroRect = rect; /// otroRect se refiere al mismo rectángulo que rect

num 5 x

y
rect

otroRect

19 de abril de 2023 © GFI Informática Curso Java Página 45


Orientación a Objetos (POO)

Asignación
• Por valor int i 10
int i=10;
int j=i; int j
10

• Por referencia
Employe e=new Employee();
Employe x=e; x

Employe e

Employe x

19 de abril de 2023 © GFI Informática Curso Java Página 46


Orientación a Objetos (POO)

Utilización de Objetos
• Los objetos se pueden utilizar después de ser
creados.
• Se puede controlar el acceso a variables y
métodos de una clase mediante los identificadores
private, protected.
• Se puede manipular sus variables (públicas).
objRectangulo.ancho
• Se puede llamar a sus métodos (públicos).
objRectangulo.calcularArea();

19 de abril de 2023 © GFI Informática Curso Java Página 47


Orientación a Objetos (POO)

Objetos Garbage Collector


• En otros lenguajes la creación y destrucción de
objetos es tediosa y propensa a errores.
• En java el proceso de liberación de memoria es
automatizado por la máquina virtual
• Un objeto es eliminado cuando ya no existen
referencias a él. (Termina su alcance o se le
asigna valor null).
• Más práctico y libera al programador de esta tarea
disminuyendo la probabilidad de errores.
• Todas las clases tienen un método por defecto que
se invoca antes de destruir el objeto (finalize)

19 de abril de 2023 © GFI Informática Curso Java Página 48


Orientación a Objetos (POO)

Métodos

19 de abril de 2023 © GFI Informática Curso Java Página 49


Orientación a Objetos (POO)

 Métodos I
• Definición
Funciones declaradas en la clase y que
determinan su comportamiento
tipoDevuelto nombreMetodo (listaParametros) {//instrucciones del método}

• Llamada a los métodos


La invocación a los métodos desde una instancia
se hace mediante el operador de acceso ( . )

referenciaObjeto.nombreMetodo(listaArgumentos);

19 de abril de 2023 © GFI Informática Curso Java Página 50


Orientación a Objetos (POO)

 Métodos II
• Ejemplos

19 de abril de 2023 © GFI Informática Curso Java Página 51


Orientación a Objetos (POO)

Métodos III
• Expresan el comportamiento de un objeto pudiendo cambiar su
estado.
• Normalmente su nombre comienza con un verbo.
• La información necesaria se pasa a través de parámetros.
• Los métodos pueden utilizar variables internas.
• Los métodos pueden retornar objetos.
• Java admite lo que se llama sobrecarga de métodos

19 de abril de 2023 © GFI Informática Curso Java Página 52


Orientación a Objetos (POO)

Métodos Declaración I
• Especificadores de acceso
• private: Sólo pueden ser utilizados dentro de la clase donde son
definidos.
• protected: Sólo pueden ser utilizados dentro de la clase donde
son definidos y subclases de esta.
• public: Todas las clases pueden acceder a estos métodos.
• static
• Método general de la clase, no de las instancias.
• Existe sólo una copia en memoria compartida por las instancias.
• No pueden acceder a variables de la instancia
• final
• No puede ser sobrescrito por subclases.
• syncronized
• Para ser usado por threads y no causar problemas típicos de
multiproceso.

19 de abril de 2023 © GFI Informática Curso Java Página 53


Orientación a Objetos (POO)

Métodos Declaración II
• Parámetros
• Se usan para pasar información a un método.
• Se debe declarar el tipo y nombre de cada uno.
• Se separan por comas.
• Pueden ser de cualquier tipo Java o cualquier Clase
declarada (import). Cuando se pasan Objetos por
parámetros se puede invocar los métodos de su clase
• Si el parámetro de entrada tiene el mismo nombre que
un atributo de la clase se utiliza “this” (referencia al
propio objeto)

19 de abril de 2023 © GFI Informática Curso Java Página 54


Orientación a Objetos (POO)

Métodos Declaración III


• Parámetros por valor
• Los parámetros en Java se pasan por valor.
• Tipos primitivos: El valor no cambia.
• Tipos por referencia: La referencia no cambia, pero
se pueden invocar sus métodos y modificar sus
variables (públicas).

19 de abril de 2023 © GFI Informática Curso Java Página 55


Orientación a Objetos (POO)

Métodos Declaración IV
• Parámetros
• El lenguaje Java sólo pasa los argumentos de tipos
básicos por valor.
• Cuando se pasa un objeto instanciado como argumento
a un método, el valor del argumento es el puntero al
objeto.
• Los contenidos del objeto se pueden cambiar dentro del
método al que se ha llamado (los objetos se pasan por
referencia), pero el puntero no se puede cambiar.

19 de abril de 2023 © GFI Informática Curso Java Página 56


Orientación a Objetos (POO)

Métodos ocultación de datos I


• Ocultación de datos
• private: con esta palabra reservada se permite una accesibilidad
total desde cualquier método de la clase, pero no desde fuera de
ella

19 de abril de 2023 © GFI Informática Curso Java Página 57


Orientación a Objetos (POO)

Métodos ocultación de datos II


• Ocultación de datos
Regla: definir datos privados y métodos
de acceso y modificadores públicos

19 de abril de 2023 © GFI Informática Curso Java Página 58


Orientación a Objetos (POO)

Métodos Constructores
• Constructores
• Métodos con el mismo nombre de la clase.
• No retornan ningún objeto (void).
• Los constructores se emplean para inicializar los
valores de los objetos y realizar las operaciones que
sean necesarias para la generación de este objeto.
• Una clase puede tener varios constructores, todos
con el mismo nombre pero diferente cantidad o tipo
de parámetros.
• Java provee de un constructor por defecto.
Rectangulo r = new Rectangulo(300,200)

19 de abril de 2023 © GFI Informática Curso Java Página 59


Orientación a Objetos (POO)

UML
Unified Modelling Language

19 de abril de 2023 © GFI Informática Curso Java Página 60


Orientación a Objetos (POO)

UML I
• ¿Qué es UML?
• Unified Modelling Language. Notación estándar que
permite modelar visualmente todos los procesos
implicados en el análisis, diseño y desarrollo orientado a
objetos de un sistema.
• ¿Que es un diagrama de clases?
• Es un tipo de diagrama estático que describe la estructura
de un sistema mostrando sus clases, atributos y las
relaciones entre ellos.
• Son utilizados durante el proceso de análisis y diseño de
los sistemas, donde se crea el diseño conceptual de la
información que se manejará en el sistema, y los
componentes que se encargaran del funcionamiento y la
relación entre uno y otro.
19 de abril de 2023 © GFI Informática Curso Java Página 61
Orientación a Objetos (POO)

UML II
• Diagrama de Clases

19 de abril de 2023 © GFI Informática Curso Java Página 62


Orientación a Objetos (POO)

UML III
• Diagrama de Casos de uso

19 de abril de 2023 © GFI Informática Curso Java Página 63


Orientación a Objetos (POO)

UML IV
• Diagrama de interacción

19 de abril de 2023 © GFI Informática Curso Java Página 64


Orientación a Objetos (POO)

UML V: Ejemplo Guerra


• Modelo de Clases.

19 de abril de 2023 © GFI Informática Curso Java Página 65


Orientación a Objetos (POO)

UML VI: EjemploGuerra


• Modelo de Clases.

19 de abril de 2023 © GFI Informática Curso Java Página 66

También podría gustarte