Download Modulo 11. Clases y Objetos en Java Clases y Objetos En el mundo

Document related concepts
no text concepts found
Transcript
El siguiente texto es una traducción no oficial del documento publicado por el grupo JEDI, “Introduction to
Programming 1”, no pretende en ningún momento reemplazar los contenidos generados por este grupo. Por ser una
traducción puede traer consigo errores de interpretación. También se han realizado algunos cambios para el contexto
del curso.
Se realizarían las acciones necesarias si el grupo JEDI o un representante del mismo exigieran la no utilización de
este material.
Modulo 11. Clases y Objetos en Java
Clases y Objetos
En el mundo del software, un objeto es un componente de software con estructura similar a los
objetos del mundo real. Cada objeto está compuesto por un juego de datos (propiedades y/o
atributos) que son las variables que describen las características esenciales del objeto, también
consiste en un juego de métodos (comportamientos) que describen como el objeto se comporta.
La clase es la estructura fundamental en la programación orientada a objetos. Esta se puede tomar
como una plantilla, un prototipo o un anteproyecto de los objetos. Esta consiste en dos tipos de
miembros que son llamados campos (propiedades o atributos) y métodos. Los campos
especifican el tipo de datos definidos por la clase, mientras que los métodos especifican las
operaciones. Un objeto es una instancia de una clase.
Las clases proporcionan la propiedad de la reusabilidad, los programas de software pueden usar
una clase una y otra vez para crear muchos objetos.
Variables de instancia
Cuando se crea una instancia de un objeto se obtiene un juego nuevo de variables, sin embargo, la
implementación de los métodos es compartida entre los objetos de la misma clase.
Variables estáticas
Adicional a las variables de instancia, es posible definir variables de la clase, siendo estas
variables pertenecientes a la clase. Estas variables almacenan el mismo valor para todos los
objetos de la misma clase, incluso aún cuando no existe ninguna instancia de la clase. Estas
variables son conocidas como Variables Estáticas.
CLASES
Instancia de una clase
Para crear un objeto o una instancia de una clase, utilizamos el operador new, ejemplo, se escribe
el siguiente código si se desea crear una instancia de la clase String.
Ó
El operador new localiza memoria para el objeto y retorna una referencia a la posición de
memoria.
Cuando se crea un objeto, se esta invocando al constructor. El constructor es el método
encargado de construir todas las instancias de la misma clase.
Declaración de una clase en Java.
La declaración de una clase en java no es diferente a escribir en sintaxis Java una clase de la
programación orientada a objetos, por esto es primordial comprender los conceptos de clase,
objeto, herencia, interfaz, encapsulación, variables (estados) de los objetos, comportamiento de
los objetos.
Recordemos que una clase es el modelo de determinado tipos de objetos, es la definición del
objeto en si.
Una clase en java se declara de la siguiente forma:
ModificadorAcceso class NombreClase {
// Variable, campos o estados;
// Constructor; y
// Funciones, métodos o mensajes
}
Modificador de acceso se estudiara más adelante.
En detalle la sintaxis se refiere a:
class es la palabra reservada del lenguaje que se usa para especificar que se esta
declarando una clase.
Variables, campos o estados son exactamente eso, variables de clase, estados de los
objetos de este tipo de clase, recordemos el concepto de encapsulación.
Funciones, métodos o mensajes, son las declaraciones a las funciones o mensajes para
legrar la comunicación con los objetos de este tipo o clase.
Constructor, es un método que se ejecuta cuando se “instancia” o se crea un nuevo
objeto de esta clase.
Ahora bien, en la programación orientada a objetos se estudiaron también conceptos como la
herencia o las interfaces. Así que:
Declaración de una clase en Java que hereda otra clase.
ModificadorAcceso class NombreClaseHija extends ClasePadre {
// campos o estados;
// Constructor; y
// Funciones, métodos o mensajes
}
La clase hija contiene todos los métodos y variables de la ClasePadre, en java no existe la
herencia múltiple, ósea, una clase no puede heredar más de una ClasePadre, por lo menos no
directamente.
Otro concepto estudiado es el concepto de interfaz, así que:
Declaración de una clase en Java que implemente una interfaz.
ModificadorAcceso class NombreClaseImplementación implements
ClaseInterfaz1, ClaseInterfaz2
{
// campos o estados;
// Constructor; y
// Funciones, métodos o mensajes
}
Esta clase implementa dos interfaces, la lista de interfaces que implementa esta separada por
el carácter coma (,).
Nota: El nombre de la clase NombreClaseImplementación no contiene espacios, la primera
letra de cada palabra esta en mayúscula.
Modificador de acceso de una clase.
Es la forma de determinar como otras clases pueden acceder a la clase, los modificadores de
acceso de una clase son
private: Se permite acceder a la clase solo desde clases que se encuentren ubicadas
dentro del mismo paquete.
public: Con este se permite que se acceda a la clase desde cualquier otra clase, no
importando su ubicación.
Tipos de variables en una clase.
En una clase existen 3 tipos de variables:
a. Variables miembros de la clase – campos.
En la programación orientada a objetos estas variables son los campos o estados de
la clase.
Se construyen mediante 3 componentes:
Uno o más modificadores de acceso. Dentro de los más utilizados están:
private: Solo es posible acceder al campo dentro de la clase.
public: Es posible acceder al campo desde cualquier otra clase.
Importante, estos modificadores actúan diferente que los modificadores de
la clase.
El tipo de dato, recordemos que Java tienen tipos de datos primitivos
como int, short, double, boolean, char. El tipo de dato puede ser también un
tipo de Clase en particular, para lo cual la variable sería un objeto de dicha
clase.
El nombre de la variable, debe cumplir las reglas de creación de
variables estudiadas en el modulo 5.
Ejemplo:
ModificadorAcceso class NombreClase {
private static int campoEntero;
// Constructor; y
// Funciones, métodos o mensajes
}
b. Variables en bloques de código, incluyendo el bloque de código de los métodos.
Se conocen con el nombre de variables locales, se encuentran dentro de un bloque
de código o dentro del cuerpo de un método. La variable solo existe en el ámbito
sobre el cual fue creada, es decir, dentro del bloque que fue creada.
La forma de declarar estas variables es:
El tipo de dato
El nombre de la variable
Ejemplo:
ModificadorAcceso class NombreClase {
private static int campoEntero;
// Constructor; y
public void unMetodo()
{
char variableLocal;
}
// Funciones, métodos o mensajes
}
c. Variables en la declaración de un método – parámetros de un método.
Las variables utilizadas en la declaración de un método son los llamados
parámetros del método, su construcción esta dada por:
El tipo de dato
El nombre de la variable
La lista de parámetros a pasar en un método esta separada por el carácter coma (,).
Ejemplo:
ModificadorAcceso class NombreClase {
private static int campoEntero;
// Constructor; y
public void unMetodo()
{
char variableLocal;
}
public void otroMetodo(int primerP, char segundoP)
{
// Cuerpo del método, primerP y segundoP solo existen en
este ámbito
}
// Funciones, métodos o mensajes
}
Metodos de Instancia
Para realizar la llamada de un método de un objeto instacia de una clase seguimos la siguiente
notación:
miObjetoInstacia.miNombreMetodo( parámetros )
Métodos estaticos
Cuando realizamos la llamada a un método estatico se esta realizando una llamada al método en
la clase y no es necesario tener una instancia de la clase. Se diferencian de los demás métodos en
la clase al momento de escribirlos por que tienen la palabra reservada static.
MiClase.metodoEstatico( parámetros )
2. Declaración de un método.
ModificadorAcceso void otroMetodo(int primerP, char segundoP)
{
// Cuerpo del método, primerP y segundoP solo existen en este
ámbito
}
2.1. Componentes de un método:
Modificador de Acceso, es desde donde se puede acceder al método,
public: Se puede acceder al método desde cualquier clase.
private: Solo se puede acceder al método desde otros métodos de la misma clase.
Tipo de datos a retornar, la palabra reservada void significa que no se retornara ningún
dato, recordemos que Java tiene tipos de datos primitivos y que nosotros podemos crear
nuestras propias clases, así que un método puede un tipo de dato de una Clase en
particular.
Nombre del método, existen actualmente convenciones para la construcción del nombre
de los métodos.
Lista de parámetros, esta lista debe ir dentro de paréntesis y debe estar separada por
comas, recordemos un poco más atrás que decía “Variables en la declaración de un
método)
Lista de Excepciones, este tema se tratará en un modulo más adelante.
El cuerpo del método o bloque de código del método, debe estar entre corchetes.
2.2. Convenciones en el nombre de un método
Existen algunas reglas básicas para el nombre de un método, no significa que Java restrinja si
se utiliza un nombre o el otro, solo que por orden y estándar se siguen los siguientes
enunciados.
El nombre debe ser un verbo, ejemplo: correr, obtener, traer, llevar, partir, etc.
Se debe escribir en minúscula y si es compuesto de varias palabras se debe iniciar la
siguiente palabra con mayúscula.
Si el nombre es compuesto por varias palabras, la primera palabra es un verbo y la
segunda un adjetivo.
Entre otras.
2.3. Sobrecarga de Métodos.
La firma de un método esta compuesta por su nombre y lista de parámetros que recibe, en
Java los métodos se pueden sobrecargar, es decir, pueden existir métodos con el mismo
nombre, lo importante es que su firma sea diferente. Si el nombre es el mismo la firma es
diferente solo cuando su lista de parámetros es diferente.
Para que la lista de parámetros sea diferente se debe tener en cuenta cantidad y tipo de datos
usados en la lista.
La sobrecarga se utiliza mucho cuando se quiere tener solo un método y reciba parámetros
diferentes.
El tipo de datos a retornar no se encuentra dentro de la firma, por lo tanto un método no
difiere de otro por esta característica.
Paso de variables a los métodos
Pasar variables a los métodos no es más que pasar parámetros al metdo al momento de realizar su
llamado, Java distingue entre dos tipos de variables a pasar en los métodos, la primera es paso
por valor, la segunda es paso por referencia
Paso de variables por valor
Cuando un paso por valor se presenta, el método crea una copia exacta del valor de la variable
que fue pasada al método. De esta manera el método no puede modificar el argumento original
durante los cálculos o lógica en el cuerpo del método.
Ejemplo:
Por defecto todos los datos de tipo primitivo (int, char, long, etc) se pasan por valor.
Paso de variables por referencia
Cuando el paso por referencia ocurre, la refencia de la variable es pasada en el método. Esto hace
que el método cree una copia de la refencia de la variable pasada al método. Sin embargo, como
no es por valor, el método puede modificar el objeto al que la referencia esta apuntando, Aunque
diferentes refencias existen en los métodos, la localización de los datos en memoria es la misma .
REFERENCIAS
JEDI, “Introduction to Programming 1”