|
PROGRAMACION EN JAVA |
|
Objetos
En inform�tica, un OBJETO es un conjunto de variables y de los m�todos relacionadoscon esas variables. Los principios de la definici�n de objetos ayudan a los programadores a hacer c�digo m�s robusto, mantenible y seguro; porque se pueden aislar a cada uno de esos objetos y tratarlo como un ente �nico, con su propia personalidad, sin que haya cientos de caracter�sticas que tengamos que tener presentes, tal como se hac�a en la programaci�n orientada a procedimiento.
A continuaci�n se muestran algunas de las propiedades que se pueden aplicar a los objetos, tal como se han definido:
Casi todo puede ser considerado un objeto. El dinero, el helic�ptero, una bicicleta, los perros, el autom�vil. Los objetos representan cosas, simples o complejas, reales o imaginarias. Una antena parab�lica es un objeto complejo y real. Un objeto Profesor, representa los detalles y actividades de una persona, no es esa persona en s� misma, es pues, imaginario. Una frase, un n�mero complejo, una receta y una cuenta bancaria tambi�n son representaciones de cosas intangibles. Todas son objetos.
Algunas cosas no son objetos, sino atributos, valores o caracter�sticas de objetos. Es decir, no todas las cosas son objetos, ni son consideradas normalmente como objetos. Algunas de ellas son simplemente atributos de los objetos como el color, el tama�o y la velocidad. Los atributos reflejan el estado de un objeto, la velocidad del objeto avi�n, o el tama�o de un objeto edificio. Normalmente no tiene sentido considerar la velocidad como un objeto.
Abstracci�n Funcional
Muchas veces existen eventos o actividades propias del objeto, es decir las cosas que se sabe que el objeto hace, pero no se sabe como lo hace, es decir, no sabemos como est� implementado ese evento. Para esto es que utilizamos la abstracci�n funcional, de manera que nos preocupemos por identificar los eventos, para luego ver como implementarlos
Similarmente, tambi�n existen caracter�sticas propias de un objeto, y para identificarlas, nos valemos de la llamada abstracci�n de datos, es decir cosas que sabemos que son parte del objeto que modelamos.
Es el t�rmino de orientaci�n a objetos que describe la vinculaci�n de unas operaciones y estado a un objeto particular. La encapsulaci�n est� �ntimamente relacionada con la ocultaci�n de la informaci�n, definiendo qu� partes de un objeto son visibles y qu� partes est�n ocultas.
La encapsulaci�n abarca a la ocultaci�n de la informaci�n:
Algunas partes son visibles (el interfaz p�blico)
Otras partes son ocultas (o privadas)
Tambi�n se fomenta la reusabilidad, ya que el c�digo puede ser utilizado como una tecnolog�a de caja negra (igual que los circuitos integrados en la industria electr�nica). Y si se vuelve a pensar desde el punto de vista econ�mico, esto viene a representar una ventaja de indudable valor
Niveles de Acceso
El nivel de acceso m�s restringido es 'private'. Un miembro privado es accesible s�lo para la clase en la que est� definido. Se utiliza este acceso para declarar miembros que s�lo deben ser utilizados por la clase. Esto incluye las variables que contienen informaci�n que si se accede a ella desde el exterior podr�a colocar al objeto en un estado de inconsistencia, o los m�todos que llamados desde el exterior pueden poner en peligro el estado del objeto o del programa donde se est� ejecutando. Los miembros privados son como secretos, nunca deben contarseles a nadie. Para declarar un miembro privado se utiliza la palabra clave private en su declaraci�n. La clase siguiente contiene una variable miembro y un m�todo privados.
class Alpha {
private int soyPrivado;
private void m�todoPrivado() {
System.out.println("m�todoPrivado");
}
}
Los objetos del tipo Alpha pueden inspeccionar y modificar la variable soyPrivado y
pueden invocar el m�todo m�todoPrivado(), pero los objetos de otros tipos no pueden
acceder. Por ejemplo, la clase Beta definida aqu�.
class Beta {
void m�todoAccesor() {
Alpha a = new Alpha();
a.soyPrivado = 10; // ilegal
a.m�todoPrivado(); // ilegal
}
}
no puede acceder a la variable soyPrivado ni al m�todo m�todoPrivado() de un objeto del
tipo Alpha porque Beta no es del tipo Alpha.
Si una clase est� intentando acceder a una variable miembro a la que no tiene acceso--el
compilador mostrar� un mensaje de error similar a este y no compilar� su programa.
Beta.java:9: Variable iamprivate in class Alpha not accessible from class Beta. a.iamprivate = 10; // ilegal ^ 1 errorY si un programa intenta acceder a un m�todo al que no tiene acceso, generar� un error de compilaci�n parecido a este.
Beta.java:12: No method matching privateMethod() found in class Alpha. a.privateMethod(); // ilegal 1 error
El siguiente especificador de nivel de acceso es 'protected' que permite a la propia clase, las subclases (con la excepci�n a la que nos referimos anteriormente), y todas las clases dentro del mismo paquete que accedan a los miembros. Este nivel de acceso se utiliza cuando es apropiado para una subclase de la clase tener acceso a los miembros, pero no las clases no relacionadas. Los miembros protegidos son como secretos familiares - no importa que toda la familia lo sepa, incluso algunos amigos allegados pero no se quiere que los extra�os lo sepan. Para declarar un miembro protegido, se utiliza la palabra clave protected. Primero echemos un vistazo a c�mo afecta este especificador de acceso a las clases del mismo paquete. Consideremos esta versi�n de la clase Alpha que ahora se declara para estar incluida en el paquete Griego y que tiene una variable y un m�todo que son miembros protegidos.
package Griego;
class Alpha {
protected int estoyProtegido;
protected void m�todoProtegido() {
System.out.println("m�todoProtegido");
}
}
Ahora, supongamos que la clase Gamma, tambi�n est� declarada como miembro del paquete Griego (y no es una subclase de Alpha). La Clase Gamma puede acceder legalmente al miembro estoyProtegido del objeto Alpha y puede llamar legalmente a su m�todo m�todoProtegido().
package Griego;
class Gamma {
void m�todoAccesor() {
Alpha a = new Alpha();
a.estoyProtegido = 10; // legal
a.m�todoProtegido(); // legal
}
}
Esto es muy sencillo. Ahora, investiguemos c�mo afecta el especificador protected a una subclase de Alpha. Introduzcamos una nueva clase, Delta, que desciende de la clase Alpha pero reside en un paquete diferente - Lat�n. La clase Delta puede acceder tanto a estoyProtegido como a m�todoProtegido(), pero solo en objetos del tipo Delta o sus subclases. La clase Delta no puede acceder a estoyProtegido o m�todoProtegido() en objetos del tipo Alpha. m�todoAccesor() en el siguiente ejemplo intenta acceder a la variable miembro estoyProtegido de un objeto del tipo Alpha, que es ilegal, y en un objeto del tipo Delta que es legal. Similarmente, m�todoAccesor() intenta invocar a m�todoProtegido() en un objeto del tipo Alpha, que tambi�n es ilegal.
import Griego.*;
package Latin;
class Delta extends Alpha {
void m�todoAccesor(Alpha a, Delta d) {
a.estoyProtegido = 10; // ilegal
d.estoyProtegido = 10; // legal
a.m�todoProtegido(); // ilegal
d.m�todoProtegido(); // legal
}
}
Si una clase es una subclase o se cuenta en el mismo paquete de la clase con el miembro
protegido, la clase tiene acceso al miembro protegido.
El especificador de acceso m�s sencillo es 'public'. Todas las clases, en todos los paquetes tienen acceso a los miembros p�blicos de la clase. Los miembros p�blicos se declaran s�lo si su acceso no produce resultados indeseados, si un extra�o los utiliza. Aqu� no hay secretos familiares; no importa que lo sepa todo el mundo. Para declarar un miembro p�blico se utiliza la palabra clave public. Por ejemplo,
package Griego;
class Alpha {
public int soyPublico;
public void m�todoPublico() {
System.out.println("m�todoPublico");
}
}
Rescribamos nuestra clase Beta una vez m�s y la ponemos en un paquete diferente que la
clase Alpha y nos aseguramos que no est�n relacionadas (no es una subclase) de Alpha.
import Griego.*;
package Romano;
class Beta {
void m�todoAccesor() {
Alpha a = new Alpha();
a.soyPublico = 10; // legal
a.m�todoPublico(); // legal
Como se puede ver en el ejemplo anterior, Beta puede inspeccionar y modificar legalmente
la variable soyPublico en la clase Alpha y puede llamar legalmente al m�todo
m�todoPublico()
package Griego;
class Alpha {
int estoyEmpaquetado;
void m�todoEmpaquetado() {
System.out.println("m�todoEmpaquetado");
}
}
La clase Alpha tiene acceso a estoyEmpaquetado y a m�todoEmpaquetado().
Adem�s, todas las clases declaradas dentro del mismo paquete como Alpha tambi�n tienen
acceso a estoyEmpaquetado y m�todoEmpaquetado().
Supongamos que tanto Alpha como Beta son declaradas como parte del paquete Griego.
package Griego;
class Beta {
void m�todoAccesor() {
Alpha a = new Alpha();
a.estoyEmpaquetado = 10; // legal
a.m�todoEmpaquetado(); // legal
}
}
Entonces Beta puede acceder legalmente a estoyEmpaquetado y
m�todoEmpaquetado().
Las relaciones de herencia forman estructuras jer�rquicas similares a un �rbol. Una superclase existe en una relaci�n jer�rquica con sus subclases. Sin duda una clase puede existir sola, pero es cuando una clase con el mecanismo de herencia que se convierte ya sea en una superclase que proporciona atributos y comportamientos a otras clases, o en una subclase que hereda dichos atributos y comportamientos.
Una jerarqu�a de herencia puede tener una profundidad arbitraria dentro de las limitaciones f�sicas del sistema de que se trate, pero la mayor parte de las jerarqu�as de herencia s�lo tienen unos cuantos niveles.
![]()
|