Documente Academic
Documente Profesional
Documente Cultură
CLASE
Una clase es la unidad fundamental de programación en Java, estas estructuras nos
sirven para crear plantillas de elementos del mundo real, esta representa al conjunto de
objetos que comparten una estructura y comportamientos comunes.
Estas incluyen por tanto atributos y métodos. Los atributos definen el estado de cada
objeto de esa clase y los métodos su comportamiento.
Definición mínima:
UN OBJETO
Un objeto es una instancia de una clase. Unidad atómica que encapsula estado y
comportamiento.
Un objeto puede caracterizar una entidad física (un teléfono, interruptor, cliente) o
una entidad abstracta (un número, fecha, ecuación matemática).
Todos los objetos son instancias de una clase. Los objetos se crean por instancias
de las clases.
Todos los objetos de una misma clase, comparten características: sus atributos y
el comportamiento que exhiben.
METODOS
Un método en Java es un conjunto de instrucciones definidas dentro de una clase, que
realizan una determinada tarea y a las que podemos invocar mediante un nombre.,
determinan el comportamiento y la responsabilidad que tendrán las clases. Esto significa
que debemos representara el uso que se les da a las clases en la lógica de negocios de
la vida real.
METODOS DE CLASE
Los métodos de clase son un comportamiento común a todas las instancias que
pertenecen a la misma clase. Al ser un método de clase, no hace falta instanciar un
objeto de la clase para utilizarlo. Estos métodos no hablan del estado actual de la clase,
sino solo de un comportamiento genérico de la clase, de un procedimiento que solo
utiliza los parámetros de entrada o las variables estáticas. Son para un uso particular y
es bien visible cuando un método debe ser estático.
public: indica que es un método accesible a través de una instancia del objeto.
private: indica que a través de una instancia no es accesible el método. Al heredar
el método se convierte en inaccesible.
protected: indica que a través de una instancia no es accesible el método. Al
heredar si se puede usar desde la clase derivada.
Sin especificar: indica visibilidad de paquete, se puede acceder a través de una
instancia, pero sólo de clases que se encuentren en el mismo paquete.
nombreFunc debe de ser un identificador válido en el lenguaje.
Un tipo básico.
Un objeto de una clase o interfaz. En este tipo de objetos se incluyen las matrices
o vectores.
void, en el caso de no devolver ningún valor.
MÉTODOS DE INSTANCIA
Los métodos de instancia como su nombre lo indica, son aplicables a una instancia de
la clase en particular. Es decir que un método de instancia trabaja sobre el estado actual
de la instancia y para cada instancia tendrá un resultado distinto, por ejemplo el hecho
de comer permitirá a la instancia Mario estar satisfecho, mientras que a la instancia María
estará insatisfecha hasta que también se le aplique el método comer.
SOBRECARGA DE METODOS
Una sobrecarga de métodos o funciones se conoce por tener mas de un mtodo con el
mismo nombre, aplciando hata e momento lo dicho generaría errores al momento de
compilar, en este punto se debe de aclarar ciertas características que posee la
sobrecarga de métodos:
los métodos sobrecargados poseen el mismo nombre sin importar el número de
métodos que hayan.
Se puede usar cualquier tipo de método.
Los parámetros o argumentos que posean los métodos sobrecargados pueden
ser diferentes tipos de datos y diferente cantidad.
Una nota importante es que el tipo de retorno NO sirve para distinguir métodos. Si dos
métodos tienen el mismo número de argumentos, y sus tipos son iguales, no podremos
sobrecargar dichos métodos utilizando diferentes tipos de retorno en cada uno.
VARIABLES DE INSTANCIA
Las variables de instancia almacenan los datos para las instancias individuales de una
clase. Por ejemplo, en la clase "Helper", la siguiente variable de instancia podría ser
declarada:
private String myName;
Esto normalmente aparece antes del método constructor, que puede crear una instancia
de la siguiente manera:
public Helper(String helperName) { myName = helperName; }
Es una práctica común asegurar que todas las variables de instancia tengan asignado
un valor en el momento en el que método constructor haya terminado de ejecutarse. Las
variables de instancia se declaran con visibilidad privada, lo que significa que sus valores
sólo pueden cambiarse dentro de la clase.
VARIABLES DE CLASE
Las variables de clase nos sirven cuando queremos que nuestros objetos tengan alguna
referencia a algún valor, que sea el mismo para todas las instancias de esa clase, y que
ademas pueda cambiar (por eso usamos una variable y no hardcodeamos ese valor en
el código del programa, asumiendo que es posible).
Si usáramos una variable de instancia con la intención de settear el mismo valor a todas
las instancias de esa clase, y luego queremos cambiar el valor de modo de afectar a
todas las instancias, tengo que poder encontrar todas las instancias ya existentes para
poder mandarles el mensaje para que actualicen su referencia... Y si tengo muchos
muchos objetos eso no esta bueno, no sólo por la complejidad innecesaria del problema,
sino también porque la performance puede verse afectada. Este problema desaparece
si tengo un único objeto que conozca este valor que quiero que varios objetos conozcan,
y como todo objeto conoce la clase a la que pertenece, podemos dejar que sea
responsabilidad de la clase recordar y manipular este estado, y que sus instancias usen
ese valor cuando lo necesiten.
Si tengo una variable de clase y cambio el valor al que referencia, automáticamente todas
las instancias que yo cree a partir de esa clase en la vida van a conocer ese nuevo valor,
porque lo conoce su clase y ellas conocen a su clase
COMO PASAR UN OBJETO A METODO
Luego: Recupera el código de la clase Persona que usamos anteriormente y crea la clase
Persona. Modifica el código de la clase TaxiCond que usamos anteriormente de forma que el
constructor pase a ser este:
Ahora debes tener tres clases: Taxi, Persona y TaxiCond. La clase Taxi representa un taxi, la
clase Persona representa una persona y la clase TaxiCond representa un taxi con conductor.
¿Por qué hemos usado una expresión como vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(),
objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() ); en vez de simplemente vehiculoTaxi =
objetoTaxi; ? La respuesta hay que buscarla en algo que tendremos que analizar más
ampliamente un poco más adelante: un objeto es algo distinto a un tipo primitivo y no
podemos aplicarle la lógica de los tipos primitivos. El hecho de crear nuevos objetos
responde a que no queremos modificar los objetos que se pasan como parámetro. Esto entra
dentro de la lógica y propiedades de los objetos que iremos estudiando poco a poco. De
momento, simplemente utilizaremos ahora este código sin pararnos a pensar demasiado en él.
Nos encontramos frente a un constructor que nos requiere como parámetros objetos complejos
y no tipos primitivos ni objetos simples de tipo String. Intenta ahora crear un objeto de tipo
TaxiCond pulsando sobre el icono de la clase y con botón derecho eligiendo la opción new
TaxiCond.
DEVOLVER OBJETOS DESDE METODOS
//Devolver objetos desde metodos.
package javaapplication61;
class ObjectFactory{
public CreatedClass getNewObject(){
return new CreatedClass();
}
}
class CreatedClass{
public String tag = "Esta es la etiqueta de datos";
}
ARRAYS A MÉTODO
Resultado:
MÉTODO A ARRAYS
Codigo:
class ArrayFactory{
public int[] getNewArray(){
int array[] = {1,2,3,4,5};
return array;
}
}
public class JavaApplication62 {
public static void main(String[] args) {
ArrayFactory af = new ArrayFactory();
int array[] = af.getNewArray();
}
}
Resultado:
run:
Array[0] = 1
Array[1] = 2
Array[2] = 3
Array[3] = 4
Array[4] = 5