Sunteți pe pagina 1din 10

CLASES – OBJETOS

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.

Para definir los métodos se emplea la siguiente sintaxis:


[modifVisibilidad] [modifFunción] tipo nombreFunción (listaParámetros)
[throws listaExcepciones]
{
}
Para modifVisibilidad se aplica las mismas normas que para atributos:

 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.

tipo es el tipo del valor devuelto por la función, pudiendo ser:

 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.

listaParámetros es la lista de los parámetros que tomará la función separados por


comas y definidos cada uno de ellos como:
tipo nombreParámetro

modifFunción puede tener los siguientes valores:

 static: el método pertenece a la clase, no a los objetos creados a partir de la clase.


 final: el método no puede ser sobrescrito en una clase derivada.
 abstract: En esta clase no se proporciona el código para la función, se debe de
proporcionar en alguna clase derivada. En el caso de poseer un método abstracto
la clase debe de llevar a su vez el modificador abstract. En caso de ser abstracto
un método, se debe de sustituir las llaves que contienen el código por un punto y
coma.
 native: Es un método no escrito en java, sino en código nativo, que será usado
en java como un método propio de java.
 synchronized: Es un método que sólo puede ser ejecutado por un hilo, y hasta
que ese hilo no acabe la llamada al método no puede comenzar la llamada al
método otro hilo. Lo emplearemos al trabajar con hilos.

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.

Como vemos, ambos métodos tienen el mismo nombre y el mismo número de


argumentos, en cambio el argumento que reciben es de distinto tipo de modo que cuando
se llame al método unMetodo(15), se ejecutará el primero, y cuando se llame de esta
manera unMetodo(15.5f), se ejecutará el segundo.

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.

El ejemplo anterior obtendrá un error en tiempo de compilación avisándonos de que


hay dos métodos iguales, ya que ambos tienen el mismo nombre, el mismo número de
argumentos, y estos son del mismo tipo.

A continuación podréis ver un ejemplo completo utilizando sobrecarga de métodos y


constructores en un caso real.
 VARIABLES
Las variables de Java almacenan valores de datos o referencias a objetos. La siguiente
variable de ejemplo almacena un valor detipo entero primitivo:
int myNum = 5;

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";
}

public class JavaApplication61 {


public static void main(String[] args) {
ObjectFactory of = new ObjectFactory();
CreatedClass cc = of.getNewObject();
System.out.println(cc.tag);
}
}

 ARRAYS A MÉTODO
Resultado:

 MÉTODO A ARRAYS
Codigo:

//Devolver arrays desde métodos.


package javaapplication62;

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();

for(int loop_index = 0; loop_index < array.length; loop_index++){


System.out.println("Array["+loop_index+"] = "+array[loop_index]);
}

}
}

Resultado:
run:
Array[0] = 1
Array[1] = 2
Array[2] = 3
Array[3] = 4
Array[4] = 5

S-ar putea să vă placă și