[Tutorial rapido]Programación orientada a objetos en Java(Para programadores)

Iniciado por PabloPbl, 19 Noviembre 2015, 09:11 AM

0 Miembros y 1 Visitante están viendo este tema.

PabloPbl

Hola gente, bueno hoy quiero aportar mi granito de arena a esta comunidad que me ayudado bastante a resolver mis problemas  ;-) En este tutorial explicare como funciona la POO en Java.

Antes que nada quiero decir que este tutorial va dirigido a personas que ya tienen conocimientos de programación, en especial si vienes de otro lenguaje orientado a objetos. No me voy a poner a explicar a fondo para que funciona cada cosa, simplemente explicare como es la estructura de la POO en Java.

Creando clases:
NOTA: Cuando creas una clase, dicha clase tiene que ser almacenada en un archivo de texto con la extensión ".java", y ese archivo tiene que tener el mismo nombre de la clase.
Ya dentro del archivo creas la clase de la siguiente manera:

Código (java) [Seleccionar]
public class NombreDeLaClase {}

Como vemos, en Java es recomendable que sigamos en siguiente formato para el nombre de las clases, empezamos con mayúsculas y cuando empieza otra palabra, la primera letra en mayúscula, a esta forma de escribir se denomina UpperCamelCase.

Y entre las llaves de la clase definiremos, los atributos, métodos, y todas las características que queremos que tenga la clase.

Creando métodos:
La estructura de un método en Java es la siguiente:
Código (java) [Seleccionar]
public void nombreDelMetodo() {}

Como vemos, en Java es recomendable que sigamos en siguiente formato para el nombre de los métodos, empezamos con minúscula y cuando empieza otra palabra, la primera letra en mayúscula, a esta forma de escribir se denomina lowerCamelCase.

Y dentro de las llaves del método, implementaremos nuestro código.

En Java podemos tener varios métodos con el mismo nombre, pero con la diferencia que deben recibir diferentes parámetros.

Recibir parámetros:
Para que un método reciba parámetros, debemos especificarlos entre los paréntesis, así:
Código (java) [Seleccionar]
public void nombreDelMetodo(String cadena) {}

Devolviendo valores:
En Java para que un método devuelva un valor, primeros debemos especificar que va devolver ese método, no podemos devolver cualquier valor que nosotros queramos, como se haría en Python por ejemplo, en Java primero se define que es lo que se va a devolver, si es un String, un entero, etc. Y eso lo definimos de la siguiente manera:
Cuando un método tiene la palabra "void", significa que no va a devolver nada:
Código (java) [Seleccionar]
public void nombreDelMetodo() {}
Si queremos que devuelva algo, simplemente cambiamos el "void", por el valor que queremos devolver, si qusieramos devolver una cadena, lo haríamos de la siguiente forma:
Código (java) [Seleccionar]
public String nombreDelMetodo() {}
También es posible devolver, arreglos y hasta objetos, solo es cuestión de especificar que devolver.

Atributos y ámbitos:
Con ámbito, me refiero al alcance que tienen las variables para que se puedan llamar unas a otras dentro de la clase.
En Java tenemos básicamente 2 ámbitos de las variables, ellas pueden ser:
Variables de clase:
Estas variables son visibles para toda la clase, es decir que pueden ser accedida por todos los métodos de la misma.
Estas se definen fuera de los métodos, es decir al mismo nivel en el que se definen los métodos de la clase:
Código (java) [Seleccionar]
public class NombreDeLaClase {
    String cadena = "Hola mundo";
}

Variables de método:
Estas variables, se definen dentro de los métodos, y solo pueden ser accedidas por el método en donde fueron declaradas:
Código (java) [Seleccionar]
public class NombreDeLaClase {
    public void nombreDelMetodo() {
         String cadena = "Hola mundo";
    }
}

Si quisiéramos llamar la variable cadena, desde otro método, simplemente no podremos, dará error y dirá que no se encuentra esa variable.

Constructor de la clase:
Como en todo lenguaje siempre tenemos el constructor, que es el primer método que se ejecuta cuando se instancia un objeto de la clase, para crear un constructor basta con crear un método con el mismo nombre de la clase y ya tendremos uno:
Código (java) [Seleccionar]
public class Animal {
    public void Animal() {
         //Código a ejecutar
    }
}


También podemos tener varios constructores con el mismo nombre, pero con la diferencia que deben recibir diferentes parámetros.

NOTA: Los constructores no pueden devolver valores, ni siquiera se pone el "void", pero si pueden contener parámetros.

Herencia:
En Java solo podemos hacer una herencia de otra clase, no se permite la herencia múltiple.
Para heredar de otra clase, simplemente debemos poner al lado del nombre de la clase lo siguiente:
Código (java) [Seleccionar]
extends NombreDeLaClaseAHeredar
Y se vería de la siguiente forma:
Código (java) [Seleccionar]
public class Perro extends Animal{
}

En este ejemplo estaríamos heredando los atributos y métodos de la clase Animal.

Llamar al constructor de la superclase:
En muchos casos necesitaremos llamar al constructor de la superclase para pasarle parámetros.
Para hacerlo, llamamos este método super() y entre los paréntesis, le pasamos los parámetros que requiere la superclase. Pero este método solo puede llamarse desde el constructor, y debe estar en la primera linea del método constructor:
Código (java) [Seleccionar]
public class Perro extends Animal{
    public Animal() {
         super("perro");
    }
}


Modificadores de acceso(Encapsulamiento):
En Java existen los modificadores de acceso, que son los permisos que le podemos poner a los atributos y métodos. Estos nos permiten determinar si los atributos o métodos, pueden ser accedidos desde un determinado lugar.
Estos modificadores se colocan al principio de la definición de un atributo o método, por ejemplo el modificador "private":
Código (java) [Seleccionar]
private String cadena = "Hola mundo";//Atributo
private void metodo() {}//Metodo


Tenemos diferentes modificadores:
public:
El método o atributo podrá ser accedido desde cualquier lugar.
protected:
El método o atributo que lo posea, solo podrá ser accedido por la misma clase o por las clases que lo hereden.
defualt:
Este "modificador" en realidad no es un modificador, y se define cuando no ponemos ningún modificador de acceso. Y el método o atributo que lo posea solo podrá ser accedido por clases que estén en el mismo paquete.
private:
El método o atributo que lo posea, solo podrá ser accedido por la misma clase.

Creando objetos:
Para crear objetos es tan sencillo como hacer esto:
Código (java) [Seleccionar]
Perro perro1 = new Perro("Toby");
Como ven primero especificamos de que tipo sera nuestra variable, en este caso sera una clase, de tipo "Perro", luego le ponemos un nombre, y después del signo ponemos la palabra reservada "new", para indicar que estamos creando un nuevo objeto, después volvemos a escribir el nombre de la clase("Perro") y entre los paréntesis le pasamos los parámetros al constructor del objeto, si es que lo requiere.

Accediendo a los atributos y métodos del objeto:
Luego que tengamos nuestro objeto creado, podremos acceder a los atributos y métodos que posea el objeto. Para ello debemos poner el nombre del objeto y luego un punto y después podremos llamar atributos y ejecutar funciones de ese objeto:
Código (java) [Seleccionar]

Perro perro1 = new Perro("Toby");
perro1.ladrar();
String nombrePerro1 = perro1.getName();



Hasta ahí lo mas básico de la programación orientada a objetos en Java, espero que sirva de ayuda para la gente que quiera aprender este maravilloso lenguaje, sobre todo para los que ya tienen experiencia en otros lenguajes y no quieran empezar un curso de cero.

Un saludo a todos!  ;D