Mostrando las entradas con la etiqueta Java básico. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Java básico. Mostrar todas las entradas

martes, 20 de agosto de 2013

EL uso del AND y OR

El uso del (AND, OR)  , ( Y, O) para los amigos latinos, son operadores  booleanos, los cuales nos ayudan a tomar decisiones en el flujo de nuestros programas.

Tienen su mismo significado que en la vida real donde sirven como operadores a ciertas preposiciones para cumplir o no una condición lógica.

vamos a ver sus tablas de verdad.





El resultado esta en la tercera fila, y para el caso del operador AND todas las preposiciones, en este caso P1 y P2 deben ser verdaderas para que el resultado sea verdadero, en todo caso el resultado sera falso, por lo contrario en el caso del operador OR con que una preposición se cumpla el resultado será verdadero.

:S

ok, veamoslo con un ejemplo más coloquial.


Supongamos que tenemos una chica super sexy que quiera un novio con las siguientes características.

chica sexy: quiero un novio rico, guapo e inteligente.

como podemos ver esta utilizando el operador AND, ya que requiere que todas las preposiciones(rico,guapo e inteligente) se cumplan para que el resultado sea satisfactorio.

sin embargo, despues de un par de años solterona y ya no de tan buen ver, es decir ya una dejada jejeje.

decide cambiar sus restricciones y ahora piensa de la siguiente manera.

Chica ex sexy quedada: bueno quiero un novio rico, guapo o inteligente.


ahora como ya se quedo, pues ha dejado de ser tan exigente en sus gustos y decidió tener uno novio que al menos cumpla una de esas características. esta utilizando el operador OR.

pues llevémoslo a código.


salidas del operador AND


Todas se cumplieron




















Una no se cumplió



















Ninguna se cumplió






















Salidas del operador OR

Todas se cumplieron

























Al menos una se cumplió

























Ninguna se cumplió






















Bueno espero que les ayude este ejemplo un poco burdo a entender mejor las operaciones booleanas, y un consejo para las chicas, no sean tan exigentes, o ustedes que opinan chicos?


saludos y nos estamos viendo en el siguiente.


lunes, 19 de agosto de 2013

Programación orientada a Interfaces

Uno de los temas más importante y quizás que muchos desarrolladores no toman en cuenta, es la programación basada en interfaces o programación orientada a interfaces, y este tema es uno de los más importantes para tener buenas prácticas de programación y tener códigos escalables.

 Y bueno.



¿Qué es la Programación orientada a Interfaces?

Bueno, la programación orientada a interface esta basada en la creación de una interface a la cual se le generan n implementaciones para así disminuir el código intrusivo en nuestro sistema, creando atributos de tipo interface en lugar de clases concretas. 
veamoslo con ejemplo:

Supongamos que tenemos la interface Herramienta.


public interface Herramienta {

String getNombre();
String getHabilidad();


}


Esta interface contiene dos métodos, bueno sabemos que en una interface todos sus métodos no tienen implementación y por dafult son públicos.  solo se definen los métodos pero no se implementan a diferencia de las clases concretas.


¡¡¿¿¿???!!! What do that fuck?? que es una interface y que es una clase concreta.

ok.

bueno les presento a la interface. :)

public interface Interface{

void nombreMetodo();
String nombreMetodo();


}


Ahora les presento a la clase concreta :)


public class ClaseConcreta{

String nombreMetodo(){

         }
String getHanombreMetodobilidad(){
     
        }


}


ok, bien, entonces en resumen, una interface no tiene implementación de sus métodos, mientras que una clase concreta tiene implementación en todos sus métodos, esto nos lleva a recordar otro tipo de clase llamada clase Abstracta, que se encuentra entre las interfaces y las clases concretas. ya que puede ser un híbrido, algunos de sus métodos pueden ser abstractos y otros no. veamoslo como sería una clase abstracta.



public abstract class ClaseAbstracta {

/**
* @param args
*/
public void metodoConcreto(){
}
abstract void metodoAbstracto();

}

como podemos ver, para definir una clase abstracta, debemos anteponer la palabra reservada abstract antes de la palabra reservada class, y si queremos que un método sea abstracto debemos anteponer la palabra abstract antes del tipo de retorno del método.


entonces visto esto, vemos que tenemos 3 niveles de abstracción.

1.- primero las interfaces --> 100% abstractas

2.- segundo las clases abstractas --> no se sabe, depende como lo decida el programador.

3.- tercero las clases concretas  --> 100 % concretas .


ya aclarado esto, vamos a continuar.

ok, regresemos a la interface Herramienta.

public interface Herramienta {

String getNombre();
String getHabilidad();


}

upss, apenas voy a empezar con el tema :S  ,  ok, pues como ya tenemos la interface, ahora vamos a crear una implementación de la misma, es decir una clase que implemente sus dos métodos en este caso.


public class Martillo implements Herramienta {

@Override
public String getNombre() {
// TODO Auto-generated method stub
return "martillo";
}

@Override
public String getHabilidad() {
// TODO Auto-generated method stub
return "golpear clavos";
}
}

una clase para poder implementar una interface debe hacerlo con el operador implements seguido del nombre de la interface a implementar, de hecho puedes implementar más de una interface en una misma clase, a diferencia de la herencia que solo puedes heredad de una.


podemos ver que si no ponemos los métodos de getNombre y getHabilidad nos marcaría error en tiempo de compilación diciendo o que la clase no es abstracta o que no hemos implementado los métodos de la interface, en este caso es la segunda opción.


bien, yo creo que todos vamos bien hasta aquí, así que seguiré para crear otra implementación llamada Jeringa:



public class Jeringa implements Herramienta {

@Override
public String getNombre() {
// TODO Auto-generated method stub
return "jeringa";
}

@Override
public String getHabilidad() {
// TODO Auto-generated method stub
return "hacer sufrir";
}
}


cae bajo las mismas reglas que martillo.


ahora que ya tenemos dos clases concretas ( Martillo y Jeringa) que implementan de la interface Herramienta, vamos a crear otra clase concreta llamada Trabajador.


la cual quedaría de la siguiente forma.

public class Trabajador {

private Herramienta herramienta;



public Herramienta getHerramienta(){

       return herramienta;
}

public void setHerramienta(Herramienta herramienta){

   this.herramienta=herramienta;

 }

}

podemos ver que tiene un atributo de tipo Herramienta, el cual es un tipo interface.


Ya que estamos hablando de manera muy abstracta, al trabajador no le importa el tipo de Herramienta que utilice, pero si le damos vida a ese trabajador, por así decirlo, es decir que ese trabajador fuera un chofer, un che, un ingeniero, un vendedor, etc, etc, etc. su herramienta podría variar, en términos de programación estamos dejando de ser tan intrusivos en la clase Trabajador, ya que el puede implementar su Herramienta sin alterar el código de Trabajador, bueno veámoslo como podemos cambiar dicha implementación de su herramienta.
para eso vamos a crear una clase con un método Main.

Como podemos ver en la imagen, en la linea 21, tenemos el proceso de downcasting, que no es más que implementar una interface con alguna de sus implementaciones.

Se llama downcasting, porque si lo vemos de una forma jerárquica, sería de la siguiente manera.



 entonces como martillo o Jeringa esta abajo de Herramienta, por eso se llama downcasting , anyway ....


bien, ahora vamos a implementar la misma  herramienta pero como Jeringa, así que veamos la imagen.




Como podemos ver con tal solo cambiar una palabra, nuestra implementacion del método getNombre() de la herramienta cambio, pero bueno estamos hablando de una insignificante salida en un método print(), sin embargo si lo trasladamos a un sistema real, esto nos ahorraría mucho tiempo de programación y nuestro sistema sería altamente escalable y no intrusivo, que quiero decir con no intrusivo, bueno a la clase Trabajador no se le tubo que hacer ningún cambio al tener un tipo interface en lugar de clase concreta como atributo.

Herramienta herramienta;


pero como se vería si fuera código intrusivo?..,
a pues así.

Martillo martillo;
o
Jeringa jeringa;


y pues esto nos hubiera llevado a cambiar también los constructores y setters y getters de nuestro atributo, que feo :(

pero al usar la programación orientada a interfaces nos ahorramos eso.

bueno espero les sirva y saludos.






El uso del If

Bueno hasta ahora me he concentrado en escribir sobre temas de Java Básico y creo que de cierta manera esta bien para poder aclarar dudas desde lo más sencillo a temas avanzados, pero bueno en esta entrada voy a escribir sobre un problema que normalmente algunos principiantes en la programación suelen tener, y es el uso del if.  vs if else .  

:)


bueno veamoslo con un ejemplo sencillo.




public class Escuela {
    
    public static void main(String arg[]){
        Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");
        
        int promedio=entrada.nextInt();
        
        
        if(promedio ==100)
            System.out.println("eres un matado");
        if(promedio >=90)
            System.out.println("eres un ñoño");
        
        if(promedio >=80)
            System.out.println("tienes vida social");
        if(promedio >=70)
            System.out.println("estas panzando las materias");
        else
            System.out.println("a que vas a la escuela");
    } 
         
}

bueno como podemos ver, este ejemplo en el segmento de código :

       Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");        
        int promedio=entrada.nextInt();

Nos pide una entrada desde el teclado, el cual la va interpretar como un entero al utilizar el método nextInt de nuestro objeto entrada, el cual es un objeto de la clase Scanner :).

ese valor se le asigna a nuestra variable promedio, la cual entra en diferentes condiciones lógicas.
 ok, supongamos que nosotros somos unos matados, y ponemos 100 desde el teclado, que pasara?, bueno pasará lo siguiente.


Introduce tu promedio :)
100
eres un matado
eres un ñoño
tienes vida social
estas panzando las materias

ya que si tu promedio es de 100, se cumplirán todas las condiciones a excepción de la última, ya que tu promedio es igual a 100  por lo tanto eres matado, luego pregunta  en el otro if, si tu promedio es mayor o igual a 90, lo cual también se cumple por lo que también eres un ñoño y así hasta llegar a que tienes vida social.. entonces? esto no es lo que queremos.., a partir de que entra a una condición todas las demás también se cumplen :S . 

Bueno lo que tenemos que hacer es, que las condiciones no sean excluyentes una de la otra, es decir si se cumple la primera, ya no nos interesa que se cumplan las demás, debemos relacionar dichas condiciones, para lograrlo vamos a modificar nuestro código de la siguiente manera.


public class Escuela {
    
    public static void main(String arg[]){
        Scanner entrada=new Scanner(System.in);
        System.out.println("Introduce tu promedio :)");
        
        int promedio=entrada.nextInt();
        
        
        if(promedio ==100)
            System.out.println("eres un matado");
       else  if(promedio >=90)
            System.out.println("eres un ñoño");
        
        else  if(promedio >=80)
            System.out.println("tienes vida social");
        else  if(promedio >=70)
            System.out.println("estas panzando las materias");
        else
            System.out.println("a que vas a la escuela");
    } 
         
}

Ahora si, si la primera condición se cumple, ya no pregunta por las demás ya que las condiciones están ligadas entre sí, si no se cumple sigue con la siguiente, si no se cumple con la siguiente y así hasta terminar en el else.

en pocas palabras solo puede ejecutarse una sola condición ya que las condiciones están relacionadas entre sí. 

suponiendo que elegimos que nuestro promedio es 80, la salida sería "tienes vida social", 

sin embargo ambas soluciones son útiles y tienen su aplicación, así sea de manera excluyente o no. 







domingo, 18 de agosto de 2013

Utilizando el famoso String arg[]

Muchos se preguntan porque siempre ponemos el famoso String arg[] en el método main y para que nos sirve, bueno en esta entrada vamos a dar una breve explicación de su uso.

bueno primero no es necesario ponerle arg[] a nuestro parámetro, aunque es mas común encontrarlo así, pero puedes ponerle el nombre que desees.

luego pues tenemos identificado que es un arreglo, por que al momento de compilar este puede utilizarse de la siguiente manera.



public class HolaMundo2{


public static void main(String arg[]){


System.out.println("hola "+arg[0]);
System.out.println("tu edad es "+arg[1]);
}

}

si tenemos dudas de como compilar y ejecutar desde comando, podemos ver la entrada anterior
http://tutorialesjavamx.blogspot.mx/2013/08/primer-hola-mundo-desde-consola.html





cuando ejecutemos nuestro archivo sería de la siguiente manera

java HolaMundo2 "juan perez" 33

el cual nos daría la siguiente salida.




Primer Hola Mundo desde consola

Ahora vamos a generar nuestro primer ejemplo llamado HolaMundo.java, para esto es necesario a ver visto la anterior entrada de este blog, que fue de como configurar las variables de entorno, les comparto el link





Ok, pues ahora vamos a un blog de notas, en el cual vamos a escribir lo siguiente:



public class HolaMundo{


public static void main(String arg[]){


System.out.println("hola");
}

}


es un ejemplo básico, y lo guardamos en un director con el mismo nombre de la clase, en este caso HolaMundo y con la extensión .java, cuidado no lo graben con la extensión txt.

Ok, ahora vamos al directorio donde guardamos nuestro archivo pero desde consola.


abrimos la consola y tecleamos  cd rutadenuestroarchivo, en mi caso


cd  c:\java


ya dentro de esa carpeta tecleamos el comando dir

como podemos ver, dentro de nuestro directorio solo se encuentra un archivo que fue el que creamos, ahora vamos a compilar dicho archivo llamado en este caso HolaMundo.java

javac HolaMundo.java

después de compilarlo, volvemos a teclear el comando dir, y como podemos ver en la imagen ya tenemos dos archivos uno con el mismo nombre, uno con la extensión .java y otro con la extensión .class que es el que se crea una vez nuestras clases ya estén compiladas.





Ahora vamos a ejecutar nuestra clase, para ello lo hacemos mediante el comando java, de la siguiente manera

java HolaMundo

como podemos ver, no es necesario poner la extensión para este comando.

con esto podemos ver la salida de nuestro ejemplo.



Con esto tenemos listo nuestro primer ejemplo en consola. saludos.

Instalación y configuración del JDK


En esta entrada vamos a instalar y configurar nuestro JDK para poder crear programas en Java, muchos confunden el concepto y usualmente suelen decir, voy a instalar Java, lo cual es incorrecto ya que una parte de Java ya viene instalado en tu máquina desde el momento en que la compraste, esa parte es el JRE (Java Runtime Environment), y como su nombre lo dice, es la parte de Java que nos permite correr aplicaciones hechas en Java en nuestro ordenador. Pero, cuando nosotros deseamos ser desarrolladores Java, necesitamos instalar aquella parte que nos permita desarrollar y es justo el JDK (Java Development Kit).

si instaláramos tanto el JRE y el JDK entonces si estaríamos instalado Java (JRE + JDK), solo que es difícil o casi imposible que alguna máquina actual no tenga el JRE, al menos que instalarás una versión muy antigua, un windows 95 quizás :)

bueno vamos a proceder a instalar nuestro JDK.

Primero vamos a descargar nuestro JDK, que se encuentra en su página oficial  de oracle.

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnes


aquí elegimos la versión adecuada a nuestro sistema operativo, en este caso vamos a instalarlo sobre Windows.

Una vez inicie el wizard de instalación les recomiendo que la ruta donde instalen el JDK sea un lugar corto y no el defaul, por ejemplo yo lo instalaría en C:/Java/jdk, aunque esto no es necesario, puedes dejar el defaul si quieres.


Ahora para que nuestro sistema operativo reconozca los comandos de Java, vamos a configurar las variables de entorno correspondientes.

Hagamos los siguientes pasos.

1.- clic en el botón de inicio --> clic derecho sobre equipo y en el menú contextual elegimos Propiedades





 2.- En el menú emergente seleccionamos la opción Configuración avanzada del sistema



3.- seleccionamos Variables de entorno.


4.- Procedemos a crear una variable del sistema, ojo del sistema, muchos crean variables de usuario. :)
chequen bien la imagen en que pestaña de nuevo le estoy dando


5.- Procedemos a crear la variable llamada JAVA_HOME, cuyo valor de la variable debe ser donde instalaron su JDK.



En mi caso lo instale en la carpeta de jdk7 :) , para no tener dudas sobre la carpeta que elegiste, el contenido de jdk7 en mi caso, debe tener el siguiente contenido aproximadamente.

bien, ahora le damos Aceptar y listo, vamos a proceder con el siguiente paso.

6.- vamos a crear la variable CLASSPATH de la misma forma que creamos la variable JAVA_HOME




cuyo valor de la variable explicaré a continuación..


vamos a dividirlo en dos partes, de hecho para eso sirve el símbolo ";" , entonces tomemos lo que tenemos antes y después de este símbolo.

Tenemos un punto antes de la ";" que significa esto?.. a ok. pues significa que primero va buscar en la carpeta donde te encuentres compilando tu clase alguna dependencia de clase que estés utilizando, luego va a la otra ruta después de ";", que es 

%JAVA_HOME%/lib.

aquí cabe mencionar que tenemos la variable JAVA_HOME entre dos símbolos de %, de esa manera se llama a alguna variable que ya hallamos configurado con anterioridad.
si sustituimos el valor de la variable en mi caso sería como poner lo siguiente.

C:\jdk7\lib, que de esta manera también sería correcto. 


también pudiéramos ponerlo al revés, que primero busque en la carpeta lib de nuestro jdk y luego en el directorio donde nos encontremos, y sería así.

%JAVA_HOME%/lib;.
aunque esto no es recomendable, por lo que lo vamos a dejar como en la imagen ya explicada :)  .

bien, le damos aceptar y listo, ya tenemos nuestra variable CLASSPATH.

7.-Ahora vamos a modificar una variable de nuestro sistema, ojo, vamos a modificar, no a crear una nueva, y esta es la variable path, así que a buscarla. 




le damos en Editar y nos vamos al final de su valor de variable, y ojo por segunda vez, no vallan a quitar lo que ya tienen, vamos agregar al final del contenido lo siguiente.


En mi caso es como si yo hubiera puesto .
C:\jdk7\bin

bien al igual que la CLASPATH, ponemos entre el símbolo de % la variable JAVA_HOME, esto es más re-utilizable ya que si quisieras cambiar la ruta del JDK o más bien instalar otra versión a futuro, pues solo modificas la variable JAVA_HOME y sin tener que cambiar referencias a ella estaría listo.

8:-Ahora por último vamos a ver si ya son reconocidos los conocidos de Java por nuestro sistema, así que procedamos abrir una terminal y escribamos lo siguiente.

java -version

la salida debe ser parecida a la siguiente:




si te sale que el comando no es reconocido, puede ser por dos cosas:

que ya tenias la terminal abierta y debes cerrarla y volverla abrir o hiciste algo mal :). bueno nos vemos en la siguiente entrada, saludos.



sábado, 17 de agosto de 2013

Ejemplo POO (Segunda parte)

Bien vamos a continuar con nuestro post anterior, el cual se encuentra en el siguiente link

http://tutorialesjavamx.blogspot.mx/2013/08/ejemplo-de-poo.html



resumiendo lo de la entrada anterior sería lo siguiente

creación de los atributos -- creación de los métodos constructores y creación de los métodos setters y getters. 

Bien ahora vamos hacer unas cuantas modificaciones..


Así que vamos al método setEdad y vamos a poner lo siguiente.


este es un operador ternario y su equivalente sería lo siguiente







pero la primera opción es más clara, además de menos código.


ok. pues lo que hice en este método set fue validar la entrada del atributo edad, para así evitar números negativos, también pudiéramos o debiéramos validar todos nuestros métodos setters como una buena práctica de programación, pero con fines prácticos, me conformo con validar este.


Bien, ahora vamos a proceder a realizar un cambio en el método constructor que tenemos. 

vamos a quitar las asignaciones correspondientes:

        this.nombre = nombre;
        this.apellidoPaterno = apellidoPaterno;
        this.apellidoMaterno = apellidoMaterno;
        this.edad = edad;

        this.casado = casado;

y en su lugar vamos a llamar a sus respectivos métodos getters, nuestro constructor quedaría de la siguiente manera.








de esta manera evitamos realizar doble validación, es decir una en los setters y otra en los constructores.

Listo, ahora vamos a proceder a crear una clase Main para nuestro proyecto.
vamos al menú file-new file y en categoría seleccionamos java, en file types seleccionamos Java Main Class y la guardamos en el paquete de modelo, al nombre de la clase le dajamos el de NewMain o si desean cambiarlo, adelante.


Como vemos Netbeans nos da muchas plantillas para ahorrarnos un poco de codificación.





Bien vamos a proceder a teclear el siguiente código



Creo que la imagen se explica sola.

vamos a crear un segundo objeto mediante el constructor que inicializa todos los atributos



Bueno, como podemos ver, cualquier de las dos formas nos es útil para crear objetos, eso depende de nuestras propias necesidades :).

Ejemplo De POO

En esta entrada vamos a explicar un pequeño ejemplo de programación orientada a objetos utlizando el IDE NetBeans.

Primero vamos a crear un proyecto Java (Menu File --> New Proyect), en la sección de Categories elegimos Java y por último en la sección de Proyects elegimos Java Application.

Le damos siguiente, le damos nombre a nuestro proyecto, en este caso le puse IntroPoo-->la ruta donde queremos guardarlo,  desactivamos la casilla de verificación de Create Main Class para que no nos cree una clase Main, y le damos en finalizar.

y bueno ya listos para empezar a programar.

bien, lo que vamos hacer es crear una clase llamada Persona con ciertos atributos y métodos. 


1.-Clic en el menú File --> New File--> en Categories seleccionamos Java --> en File Types seleccionamos Java Class.
en el nombre de la clase podemos Persona, recordemos que el nombre de las clases deben iniciar con mayúscula por convención, es decir no es necesario para que tu código compile, pero si como una buena práctica de programación, si tu clase tuviera dos palabras sería en el siguiente formato NombreClase.

bien, ahora no es recomendable utilizar el paquete por defaul para las clases que diseñemos, así que en la opción de package vamos a poner modelo




bien, ya es hora de echar código, vamos a crear 5 atributos de la clase que serán los siguientes.



Bueno las palabras de color azul que en este caso es private, son los modificadores de acceso de nuestros atributos de clase, recordemos que existen 3( public, protected y private), pero uno de los pilares de la programación orientada a objetos es el encapsulamiento de la información y para ello, una de las reglas es poner private a todos los atributos de las clases, así evitamos que accedan directamente a ellos y dejar inconsistentes sus valores.

Para un buen diseño de clases debemos tener un orden de codificación y este es el siguiente ( atributos --- constructores -- setters y getters) , ya tenemos los atributos, ahora vamos a crear los constructores de clase, para ello vamos ayudarnos de nuestro IDE.

damos clic derecho sobre cualquier espacio en blanco de nuestra clase después de la declaración de nuestros atributos y le damos en la opción de  insert code , elegimos la opción de Constructor, nos debe salir una pestaña como en la siguiente imagen.


Podemos ver que salen todos nuestros atributos de la clase para crear nuestro constructor mediante este wizard, pero vamos a crear un constructor vacío, así que simplemente le damos en Generate.



repetimos el proceso para generar otro constructor pero con todos los parámetros, es decir que vamos a seleccionar todos. 
Nuestro código hasta el momento se vería así.



Hasta ahora tenemos dos constructores, es decir que tenemos una sobrecarga de métodos, y no es más que dos métodos con el mismo nombre pero diferente firma, pero.. que es la firma?..

la firma es el orden, el tipo y el número de parámetros que tiene un método, en este caso un método constructor.

"pudiéramos tener más constructores".

Bien ahora vamos a crear los métodos setters y getters.
para eso también nos vamos apoyar de nuestro IDE NetBeans.

le damos clic derecho en cualquier parte en blanco después de la creación de los métodos constructores, le damos en Insert Code y le damos la opción de Getters and Setters y seleccionamos todos los atributos.





el código que acabamos de insertar es el siguiente :






vemos que por cada atributo tenemos dos métodos uno set y otro get.

cabe mencionar que tanto para métodos y atributos también tenemos convenciones de llamado y son muy parecidas, deben iniciar con minúscula y si están compuestas por dos palabras la nomenclatura es la siguiente nombreAtributo y nombreMetodo.

bueno que observar de los métodos setters y getters.

1.-primero hablemos de los setters.
que aunque pueden tener algún otro nombre por ejemplo establer, es también convención poner la palabra set seguida del nombre del atributo y respetando las convenciones de llamado ( setNombreAtributo)

como su nombre lo dice, estos métodos establecen el valor del atributo y deben ser de tipo void, es decir que no regresan nada. además de tener un parámetro del mismo tipo del atributo, el cual por convención también debe llamarse igual que el atributo, es por eso el uso de la palabra reservada this, que sirve para diferenciar entre una variable global o local.

2.- ahora los getters.
Estos métodos obtienen el valor del atributo y no tienen parámetros, además el tipo del método debe ser el mismo tipo del atributo que esta regresando


public tipoAtributo getNombreAtributo(){

return atributo;

}
cabe mencionar que tenemos un atributo de tipo boolean el cual es un caso particular y por convención no deben llamarse get si no is.

es decir la nomenclatura sería

public boolean isNombreAtributo(){

return atributo;
}
a claro, por convención, es decir no pasa nada si lo dejamos en get, pero is representa más el hecho de retornar una variable boolean, es decir es verdadero o no es verdadero.


Bien hasta ahora hemos creado una clase con sus respectivos setters y getter y constructores de clase, en la siguiente parte de la entrada vamos a desarrollar algunas validaciones en los métodos setters y modificaciones en los constructores, así como crear una clase main para poder demostrar el uso de estos métodos.

La segunda parte esta en este link






Introducción a la POO

Programación orientada a objetos



Paradigma o modelo de programación.

No es un lenguaje específico, o una tecnología, sino una forma de programar.


Lleva al mundo del código lo mismo que encontramos en El Mundo Real.

Clases y objetos



Por lo que Instancia es la relación entre objeto y clase, también conocido como instanciación.
La metodología de la programación orientada a objetos es una manera de ver las cosas.
 también se puede decir que la programación orientada a objetos es una forma de entender el problema, identificando las necesidades, por lo que se puede considerar como una herramienta, así que esta no varía según el lenguaje a utilizar.

¿Qué es un objeto?

Un objeto es una abstracción de la realidad
Los objetos agrupan ciertas cantidades de características y comportamientos similares que nos permiten emitir un concepto de común acerca de ellos.

Por lo tanto una clase es un grupo de objetos con  características y comportamientos comunes,
técnicamente se denominan atributos y métodos.


los 4 pilares de la programación orientada a objetos son los siguientes:

Encapsulamiento: 
El encapsulamiento oculta los detalles internos de un objeto










Si se desea flexibilidad, buen mantenimiento y extensibilidad, nuestro diseño en el código debe de incluir encapsulamiento, para ello debemos de hacer lo siguiente:s de hacer lo siguiente:
  • Mantener las variables de instancia protegidas
  • Hacer métodos de acceso públicos para forzar al acceso a las variables por medio de dichos métodos en lugar de acceder directamente
  • Utilizar las convenciones de código para los nombres de los métodos, p. ej., set y get
Abstracción: Énfasis en el que se hace, más que en el como se hace.

Herencia: En términos de programación, es la re utilización del código. pero se trata de heredad los atributos y métodos de una clase a la cual se le llama super clase a otras, las cuales se les llaman subclases, en Java solo se puede heredad de una clase, es decir no existe herencia múltiple, A solo puede Heredad de B. y nada más.

Polimorfismo: 

Nos permite programar en forma general, en lugar de hacerlo en forma específica

Este concepto esta relacionado con la herencia, aunque no necesariamente, pero en ambos casos, es la implementación de manera diferente de algún método que hereda de su superclase o implementa. el término polimorfismo se refiere a muchas formas, es decir que un método puede ser implementado de n formas por las clases que lo heredan o implementan.

supongamos que tenemos una clase A y la clase B y C son subclases de esta; la clase A tiene el método x, pero la clase B y la clase C pueden tener implementaciones diferentes para el método x. tomando como ejemplo :

clase A --> Figura

clase B --> Triangulo

clase C --> Cuadrado


metodo x --> obtenerArea

es obvio que el método x será diferente para clase B como para clase C, ya que la forma de sacar el área de un triángulo es diferente que la de un Cuadrado.

En resumen el polimorfismo consiste en obtener un mismo método con diferentes funciones.