Sintaxis Básica de Java

Comentarios

Antes que nada (y ya para quitarme eso de encima), aquí esta como se escriben los comentarios en Java:

//Comentario de una línea para algo rápido

/** Comentario largo,
*ideal para la Documentación
*/

 


API de Java

Podemos entenderlo como un conjunto de muchísimas clases que ya trae hecha Java para ahorrarnos el trabajo. También las conocen como las librerías de Java.

import java.Bla.Bla

No se preocupen si no le encuentran ningún sentido a esto, solo sigan leyendo.

 


Atributos

En Java, hay varias clases de “variables” que podemos ocupar, por eso en Java se usa el término “Tipos de datos” para englobar a cualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores o características durante la ejecución del programa.

En Java diferenciamos dos tipos de datos:

  • Tipos primitivos, que se corresponden con los tipos de variables en lenguajes como C y que son los datos elementales que hemos citado.
  • Los Tipos Objeto, son mucho más inteligente y te permiten realizar muchas cosas más fácilmente.

También podemos dividir los atributos en dos tipos:

  • Estáticos (es decir que atributos que nunca van a cambiar, también los conocen como MACROS) .
  • Dinámicos (es un atributo que puede variar, así que lo consideramos, valga la originalidad, solo un atributo).

 


Tipos Primitivos

Sin métodos, no son objetos, no necesitan una invocación para ser creados. Fáciles y sencillitos.

A continuación te muestro todos los tipos de datos primitivos disponibles en Java:

Nombre Tipo Ocupa Rango
byte Entero 1 byte -128 a 127
short Entero 2 bytes -32768  a 32767
int Entero 4 bytes 2*109
long Entero 8 bytes Muy grande
float Decimal

simple

4 bytes Muy grande
double Decimal

doble

8 bytes Muy grande
char Carácter

Usa comillas simples

2 bytes
boolean Valor:

true o false

1 byte

 

Una vez que hayas decidido cual de todos estos vas a ocupar, tienes que seguir este sintaxis (si, es muy muy parecida a C).

 


Sintaxis

//FORMA BASICA
TipoDeDato NombreDeDato;

//FORMA DECLARAR VARIAS
TipoDeDato Dato1, Dato2, Dato3;

//FORMA DECLARAR Y INICIALIZAR
TipoDeDato Dato1 = Valor;
TipoDeDato Dato2 = Valor2, Dato3 = Valor3;

 


Tipos Objeto

Con métodos, necesitan una invocación para ser creados.

Tipos de la biblioteca estándar de Java String (cadenas de texto)

Muchos otros (p.ej. Scanner, TreeSet, ArrayList…)

Tipos definidos por el programador Cualquiera que se nos ocurra, por ejemplo Taxi, Autobus, Tranvia.
Arrays Serie de elementos o formación tipo vector o matriz.

Lo consideraremos un objeto especial que carece de métodos.

Tipos envoltorio o wrapper
(Equivalentes a los tipos primitivos pero como objetos…Cool)
Byte
Short
Integer
Long
Float
Double
Character
Boolean

 

 


Operadores

Matemáticos

Símbolo Operación
+ Suma
Resta
* Multiplicación
% Módulo

(Resto de división)

 

Simplificaciones

Forma Simple Forma Compleja
x += y x = x+y
x -= y x = x-y
x *= y x = x*y
x /= y x = x/y
x++ x = x+1
x– x = x-1

 

Lógicos

Operador Significado
!      NOT
>      Mayor que
<      Menor que
==     Igual
&&      AND
||      OR
^     XOR
>=      Mayor o igual que
<=      Menor igual que
!=      No igual

 

Y listo, hemos terminado con la parte más difícil de Java, bueno, al menos la más aburrida, así que para compensarlo, toma, un gatito :3

cat

 

btn1 btn
btn

Introducción a Java

El Lenguaje

java.pngLa principal característica de Java es la de ser un lenguaje compilado e interpretado.

Todo programa en Java ha de compilarse y el código que se genera: bytecodes es interpretado por una máquina virtual. De este modo se consigue la independencia de la máquina (ósea en teoría se puede ejecutar en cualquier Sistema Operativo) , el código compilado se ejecuta en máquinas virtuales que si son dependientes de la plataforma.

Osea…en español.. ¡Que Java no se ejecuta en tu computadora, sino en un programa especial, se “ejecuta” en una maquina virtual y como hay maquinas virtuales de Java para todos los sistemas operativos, Java te permite hacer aplicaciones que funcionen en cualquier computadora del mundo!

¿Para qué usarlo?

Java es un lenguaje orientado a objetos de propósito general. Aunque Java comenzará a ser conocido como un lenguaje de programación de applets que se ejecutan en el entorno de un navegador web, se puede utilizar para construir cualquier tipo de proyecto. 

Java y Seguridad ❤

security-in-javaEn el diseño de Java se prestó especial atención a la seguridad. Existen varios niveles de seguridad en Java, desde el ámbito del programador, hasta el ámbito de la ejecución en la máquina virtual. Con respecto al programador, Java realiza comprobación estricta de tipos durante la compilación, evitando con ello problemas tales como el desbordamiento de la pila. (¡bien!)

¿Qué necesito para empezar a Programar?

  • Muchas ganas y paciencia (en especial al principio)
  • Java JDK: Es las herramientas de desarrollo, puedes descargarlo aquí
  • IDE: Tu programa o “entorno” para programar, yo.. YO estoy enamorado de IntelliJ IDEA 

14693_1 java

 

¿Dudas con esto? Para eso esta Google, así que resuelve blanca palomita ¡Creo en ti! ; )

 

 


Hola Mundo

Antes que nada vamos a quitarnos esto de encima, así se ve un hola mundo en Java:

public class NombreDeClase{
  public static void main(String[] args) {
    System.out.println("Hola Mundo");
  }
}

 

No se ve sencillo ¿verdad? No te preocupes, esta bien, como te imaginas primero vamos a ver un poco de sintaxis para poder entender este desastre de palabras.

Así que es hora de ponernos con la sintaxis.

 

btn1 btn
btn

Fundamentos de POO

La mayoría de los lenguaje de programación creados en los últimos 30 años tiene algo en común, se basan en algo llamado: “Programación Orientada a Objetos”

Antes que nada, no POO (su abreviatura) no es un lenguaje, sino un paradigma.

Ok, ok, ¿Qué demonios es un paradigma?

Paradigma: Forma de Pensar. Así de fácil, POO (ó OOP en inglés, por si algún día te lo encuentras) es una forma de pensar  la programación de manera diferente a lo “tradicional”.

¿Y qué es lo tradicional para empezar?

Pues lo tradicional es la Programación Estructurada, donde en general (y digo general porque si, tienen funciones y cosas así, pero no importa ahora) tu programa es como una receta de cocina: Un conjunto de instrucciones y nada más.

poo1

Tú le dictas a la computadora que quieres que haga y lo hace, sencillo, ¿no?

Pues POO no piensa que sea la manera más fácil (y esto es debatible pero eso queda para otro post) POO piensa que es mucho más fácil si hacemos que todo sea como las cosas de la vida real, si hacemos que todo en la computadora sea como …como objetos.

POO piensa diferente, así que agarrate de tu asiento, porque te voy a mostrar una nueva forma de programar completamente diferente a lo que viste arriba:


¿Qué es POO?

Los objetos de los que hablamos no representan cosas abstractas o “raras” su objetivo es representar cosas de la vida real, como los siguientes:

Se ve fácil, ¿no es así?

Bueno, para seguir adelante tenemos que traer a la mesa dos conceptos, y con ellos lo más difícil de memorizar de toda esta lección.


Clase

Una clase es un plano, es una idea, es una descripción, es una definición.

“Describe como es algo, pero no es ese algo en si”

Podemos tener una definición formal en la que una clase es un prototipo o del que contiene una colección de datos (atributos)  un conjunto de operaciones (métodos) con esos datos que manipulan ESOS datos.

Como por ejemplo el plano de una casa:

plano.png

Plano de una casa

O un ejemplo más común de clases son como los siguientes:

clases.png

Y TODA clase define dos cosas en esencia:

  • Atributos: Estas son las características de tu objeto, son sus cualidades en sí.
  • Comportamiento: Son lo que puede hacer, su forma de comportarse.

Por ejemplo si estuviéramos haciendo una clase de una persona podemos tener algo así:

c1

Pero como a los programadores siempre nos encanta darles nombres raros a las cosas, los nombre comunes con los que se describen esto son:

c2

  • Propiedades: Estas son las características de tu objeto, son sus cualidades en sí.
  • Métodos: Son lo que puede hacer, su forma de comportarse.

Una clase define características y comportamientos comunes compartidos por un tipo de objeto. Se parece más a una plantilla cuando se crea cierto tipo de objeto.

Por ejemplo, tenemos un objeto llamado Cris, y clasificamos a Cris como un humano. No sabemos quién es Cris, pero podemos decir que tiene manos, dedos, ojos, etc. porque sabemos que es humano. Lo mismo sucede con otros objetos del mundo real. Podemos decir cuáles son esas cosas apenas sabiendo sus clases.

Otro ejemplo sería Cris es un programador y su jefe es el gerente, pero podemos decir con seguridad que Cris y su jefe son empleados (en esta frase, hay otro conocimiento sobre OOP, hablaremos de esto más adelante), porque ellos Comparten una característica común, que es su descripción del trabajo.

Pero al final de la historia la clase esta describiendo estas cosas de forma abstracta, después de todo una clase solo es una descripción de algo, te dirá que una persona por ejemplo tiene un nombre o una edad pero no te dirá una edad en especial.

Tenemos una cápsula genérica, un prototipo , del cual parten todos las cápsulas u objetos.

plantilla.png

Esta clase es un nuevo tipo de dato.

De la misma manera que no tiene un mísero sentido hacer un plano si no quieres hacer una casa, no tiene sentido hacer una clase a menos que quieras crear un objeto.


Objetos

“La cosa en si pues”

Los objetos son creados a partir de una clase, de hecho otro nombre muy común de estos son instancias, son instancias de una clase.

casa.png

Plano-Clase y Casa-Objeto

Además podemos crear más de un objeto de una misma clase.

Ejemplo:

Vamos a tomar un ejemplo más detallado de una clase:

Clase: Pokemon

Propiedades:
  nombre
  tipo
  elemento
  tamaño
  sonido

Metodos:
  ataque
  llorar

A continuación, permite crear un objeto de estas características y comportamientos:

Propiedades:
  nombre: Pikachu
  tipo: tipo de ratón pokemon
  elemento: electric
  tamaño: pequeño
  sonido: pika, pika

Metodos:
  cry: Produce un "pika, pika"
  ataque: Ataca a otro pokemon.

La programación orientada a objetos (POO) es un método de implementación en el cual los programas están organizados como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases las cuales están unidas a través de relaciones de herencia.


Puntos Clave de POO

Podemos resumir todas las ideas de POO en los siguientes puntos:

  • Encapsulamiento: Recuerda que las clases son como una caja cerrada, todos los métodos y las variables están dentro y toda la información solo puede ser accedido por medio de sus sistemas propios, esto hace que sea de verdad como una caja cerrada, su información solo entra y sale por las formas y de la forma en que la clase quiera. Puede incluso no importante como funciona por dentro, todo lo que necesitas saber es que funciona.

pildora

  • Herencia o Jerarquía:  Esto es clave, la herencia permite que una clase pueda servir como plantilla para la creación de futuras clases, no te preocupes, explicaremos esto a detalle después.

viejo

  • Polimorfismo: Un solo nombre de una clase o método puede representar diferentes implementaciones. Al igual que un Ferrari y un Porsche. Sabemos que los 2 coches tienen motores diferentes y mecanismos diferentes, pero se que ambos son coches y se conducirlos. Eso es polimorfismo, utilizando diferentes implementaciones pero solo una interfaz.

mariposa

 

Otra de las característica en POO en si se vinculan las funciones y los datos, cosa que no exista.

 

 


Principios de POO

columna

Principios son las Columnas en las que se sustenta POO

Toda esta filosofía se puede simplificar en varias columnas, son los pilares que fundamentan este paradigma.

  • Principio de Abstracción

Modelar, este principio dice que POO busca modelar los objetos, busca atraerse y simplificar un objeto de la vida real a solo un par de atributos. En otras palabras, buscaremos transformar un objeto de la vida real en atributos (características) y sus acciones (métodos). Consiste en encontrar las partes fundamentales de un sistema para describirlas de manera simple y precisa.

cat.png

  • Principio de Jerarquía

Todo conocimiento o modulo de tu programa puede ordenarse como un árbol como por ejemplo (transporte-raíz, y las hojas sean autos, barcos, caballos), de que el que esta más abajo hereda todas las características de los de arriba.

  • Principio de Tipificación 

Todo lenguaje en POO esta tipificado, es decir tenemos diferentes TIPOS de datos.

  • Principios de Encapsulamiento

Este principio dice que todos lo atributo que se relacionan a una clase tiene que estar declarados dentro de la misma clase.

poo2

poo1.png

  • Principios de Modularidad
    • Descomposición Modular: Descompón tu programa en módulos para que sea más fácil. Llamadas clases.
    • Composición Modular: Todos estos modelos tiene que estar conectados, son partes de un todo.
    • Comprensibilidad Modular: Tiene que ser posible entender un modulo sin necesidad de conocer los demás módulos.
    • Continuidad Modular: Si realizo cambios (mejoro o corrijo errores) en un módulo no debe de importarle en nada a los demás.
    • Protección Modular: Sin importar que haga, debería ser imposible para mi afectar negativamente a un módulo desde fuera de este.

Podemos también hablar de varias reglas:

Correspondencia Directa: Que podamos ser capaces de mejorar un modulo y el programa debe de funcionar de manera normal.

Pocas Interfaces: Busca que tus clases no se relacionen a menos que sea totalmente necesario, evitando así errores al actualizar un módulo.

Pequeñas Interfaces: Busca que la relación, que la cantidad de atributos sean los menores posibles, busca una mayor independencia de cada módulo.

Interfaces Explicitas: Evita que varios módulos modifiquen un mismo atributo para evitar conflicto de escritura o lectura.

Ocultación de la Información: Solo la clase misma debería poder ser capaz de modificar sus atributos.

 

Y si…no es ni de lejos todo lo que POO pero nos dará una idea bastante exacta de esta nueva idea a de entender la programación.

homer

Ya se POO

Así que listo, regresa por donde has venido y ve a aprender ese lenguaje que tanto quieres, Java, C++ o Python.