PDF de programación - Programación Orientada a Objetos - Tema 2: Elementos Básicos de la Orientación a Objetos

Imágen de pdf Programación Orientada a Objetos - Tema 2: Elementos Básicos de la Orientación a Objetos

Programación Orientada a Objetos - Tema 2: Elementos Básicos de la Orientación a Objetosgráfica de visualizaciones

Publicado el 3 de Julio del 2017
1.428 visualizaciones desde el 3 de Julio del 2017
2,7 MB
65 paginas
Creado hace 17a (16/10/2006)
Programación Orientada a Objetos

Tema 2: Elementos Básicos de la

Orientación a Objetos

Eduardo Mosqueira Rey

LIDIA
Laboratorio de Investigación y
desarrollo en Inteligencia Artificial

Departamento de Computación
Universidade da Coruña, España

Objetivos

• Conocer los elementos fundamentales que forman la

base de todo lenguaje orientado a objetos.

• Conocer las características de implementación de

clases y objetos en los lenguajes de programación:
gestión de memoria, mecanismos de visibilidad, etc.
• Aprender a crear definiciones de clases e instanciar
objetos en un lenguaje de programación orientado a
objetos como Java.

• Conocer el concepto de metaclase y aprender a como

usar las metaclases como mecanismo de reflexión.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

2

Índice

1. Clases
2. Objetos
3. Metaclases

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

3

Índice

1. Clases

– Definición
– Declaración
– Ejemplo

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

4

Clases
Definición

• Programa orientado a objetos

– Se compone de objetos que se comunican entre si intercambiando

mensajes

• Relación clases - objetos

– Similar a la existente entre tipos y variables (una clase es la

declaración de un tipo objeto)

– Las clases se utilizan como plantillas que describen como se

construyen ciertos tipos de objetos.

– Cada vez que se construye un objeto a partir de una clase decimos que
estamos ejemplificando (o instanciando) dicha clase (un objeto es una
ejemplificación de una clase)

• Definición de clase abarca:

– Definición estructural: en donde se define el estado y el

comportamiento que tendrán los objetos de esa clase

– Propósito de creación de nuevos objetos: en donde define los

procedimientos para construir nuevos objetos de esa clase.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

5

Clases

Declaración

• Declaración
[Modificadores] class Nombre [extends clase][implements interface, ...]
{ // Lista de atributos // Lista de métodos }
• Modificadores de clase

– public: permite que la clase sea accesible desde otro paquete
– abstract: Define clases que no pueden instanciarse
– final: Define clases que no pueden extenderse con subclases

• Nota: si no se pone ninguno de los modificadores quiere decir que

la clase es no-public, no-abstract y no-final. No existen
modificadores por defecto

• Cláusula extends

– Define la superclase de la clase definida (por defecto Object)

• Cláusula implements

– Define los interfaces que implementa la clase

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

6

Clases
Ejemplo

• Definición de clase

public class Caja
{
// atributos
private int value;

// Métodos
public Caja ()
{value = 0;}

public void setValue (int v)
{ value = v; }

public int getValue ()
{ return value; }
}

• Instanciación de la clase

...

Caja x = new Caja();
x.setValue (7);

...

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

7

Índice

2. Objetos



Identidad
• Gestión de la memoria
• Comparación de objetos

– Estado

• Especificadores de acceso
• Modificadores


Tiempo de vida, inicialización y ámbito

– Comportamiento

Tipos de retorno y parámetros

• Definición de métodos

• Métodos constructores

• Destrucción de objetos
• Recolección de basura
• Métodos especiales

Tipos enumerados

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

8

Objetos

• Objeto: elemento identificable que contiene

– Características declarativas

• Utilizadas para determinar el estado del objeto.

– Características procedimentales

• Utilizadas para modelar el comportamiento del objeto.

– Características estructurales

• Utilizadas para organizar los objetos con respecto a otros

objetos de su entorno.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

9

Objetos
Identidad

• Identidad

– Propiedad de un objeto que lo distingue de todos los

demás.

– Esta unicidad se consigue a través de unos

identificadores de objetos (OID – object identifiers)
– Los OIDs son independientes de los atributos que
definen el estado del objeto y que normalmente se
implementan a través de punteros

– Generalmente los identificadores de objetos son

generados por el sistema y no pueden ser
modificados por el usuario.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

10

Objetos
Identidad

• Gestión de la memoria

– Pila (Stack)

• Estructura en la cual solo se pueden incorporar o eliminar

elementos por un solo punto denominado cima.

• Se utiliza para las llamadas a funciones, cuando se llama a una

función se reserva espacio en la pila para los valores locales y los
parámetros de dicha función.

– Montículo (Heap)

– En OO

• Parte de la memoria que no está ligada a la llamada de funciones y
en el cual la memoria se asigna cuando se solicita expresamente (a
través del operador new en Java)

• Para una mayor eficiencia la pila almacena tipos básicos cuyo

tamaño es conocido en tiempo de compilación (int, float, double,
etc.) entre los que se incluye el tipo puntero

• Los objetos se implementan como punteros que residen en la pila

pero que apuntan a una zona de memoria del montículo

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

11

Objetos
Identidad

• Gestión de la memoria

Stack

Matriz
NumVal

po
pc

var. locales
tipo retorno

.
.
.

Heap

Matriz

...
CalculaKappa (Matriz, NumVal, po, pc);
...

Bloque de
activación

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

12

Identidad de Objetos
Comparación de objetos

• Tipos de comparación:

– Identidad:

• Dos objetos son idénticos si y solo si son el mismo objetos

(es decir, tienen un mismo OID).

– Igualdad:

• Dos objetos se consideran iguales si, a pesar de ser objetos

distintos (con distinto OID), sus atributos son idénticos

• El problema se plantea con los objetos compuestos (objetos
que contienen a otros objetos) y que hace que se distingan
dos tipos de igualdad: igualdad superficial e igualdad
profunda.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

13



Identidad de Objetos
Comparación de objetos
Caja x = new Caja();
x.setValue (7);

Caja y=x;
y.setValue(11);

System.out.println("Valor de x= " + x.getValue());
System.out.println("Valor de y= " + x.getValue());


• Cajas idénticas



x



y



:Caja

11

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

14



Identidad de Objetos
Comparación de objetos
Caja x = new Caja();
x.setValue (11);

Caja y = new Caja();
y.setValue(11);

System.out.println("Valor de x= " + x.getValue());
System.out.println("Valor de y= " + x.getValue());


• Cajas iguales



x



y



:Caja

11

:Caja

11

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

15

Identidad de Objetos
Comparación de objetos
• Operadores de comparación “==” y

equals
– ¿Cuál sería el resultado de las siguientes



comparaciones?
Caja x = new Caja();
x.setValue (7);

Caja y = new Caja();
y.setValue(7);

if (x==y) System.out.println ("x e y son idénticos");
else System.out.println ("x e y NO son idénticos");

if (x.equals(y)) System.out.println ("x e y son iguales");
else System.out.println ("x e y NO son iguales");

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

16

Identidad de Objetos
Comparación de objetos

• Operadores de comparación “==” (identidad) y equals (igualdad)

– ¿Cuál es el resultado de las siguientes comparaciones?



Caja x = new Caja();
x.setValue (7);

Caja y = new Caja();
y.setValue(7);

if (x==y) System.out.println ("x e y son idénticos");
else System.out.println ("x e y NO son idénticos");

if (x.equals(y)) System.out.println ("x e y son iguales");
else System.out.println ("x e y NO son iguales");

• Primera comparación: “X e Y NO son idénticos”
• Segunda comparación: “X e Y NO son iguales”

– La primera respuesta parece clara, la segunda no tanto ¿por qué no

son iguales?

• En realidad sí son iguales
• El método equals está definido en la clase Object pero por defecto hace

comparaciones de identidad “==”

• Es necesario redefinirlo para conseguir el comportamiento adecuado

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

17

Identidad de Objetos
Comparación de objetos

• Redefinición del método equals en clases propias



public boolean equals (Object unObjeto)
{
if (unObjeto instanceof Caja)
{
Caja aux = (Caja)unObjeto;
return this.getValue() == aux.getValue();
}
else return false;
}

Error típico: poner la siguiente cabecera:
public boolean equals (Caja unaCaja)

De esta forma no se sobreescribe el método
equals de Object sino que se sobrecarga.
Ahora Caja tiene dos métodos equals con

funcionamientos dispares

Downcasting necesario para
acceder al método getValue

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

18

Identidad de Objetos
Comparación de objetos

• Tipos de igualdad

– Igualdad superficial (shallow): Dos objetos son superficialmente

iguales si los atributos de los objetos son idénticos. Es importante
destacar que esta definición no es recursiva.



x



y



:Caja



figura



:Caja



figura



:Figura



© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coru
  • Links de descarga
http://lwp-l.com/pdf4825

Comentarios de: Programación Orientada a Objetos - Tema 2: Elementos Básicos de la Orientación a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad