martes, 22 de junio de 2010

Java 1.5 Tipos de datos II

Una vez vistos los tipos de datos básicos, ampliamos un poco el repertorio con:

- Array (vectores y matrices)
- List (listas ordenadas)
- Set (conjuntos)
- Otras clases

Arrays: son los vectores y matrices del lenguaje Java, tienen dimensión conocida, es decir, que cuando los inicializamos hay que darles un tamaño.
Pros:
- Están ordenados por índice, desde 0 hasta tamaño-1.
- Se puede acceder de forma indexada, por índices (vector[0] = 4).
- Son simples en la declaración, simplemente añadiendo [].
- Funcionan con cualquier tipo de clase sin operaciones adicionales.
Contras:
- Hay que darles un tamaño en el momento de la inicialización.
- No tienen operaciones.



~/<span class="blsp-spelling-error" id="SPELLING_ERROR_10">Arrays</span>.java/*Ejemplos de declaración e inicialización de Arrays*/
/*Podemos usar 3 metodos*/

// declaración
int[] v;

// declaración y inicializacion a la vez
int[] v = new int[4];

// declaración, inicializacion y asignacion de contenido a la vez
// el tamaño esta implicito en el numero de elementos asignados
int[] v = {1,2,3,4}

/*Si tenemos un array ya declarado para darle tamaño hay que hacer
la instruccion new reserva espacio en memoria para el array*/
boolean[] v;
v = new boolean[10];

/*Para asignar el contenido del array tenemos diferentes formas*/

//Asignacion por indice, acdedemos a la posicion del array que indica []
int[] v = new int[10];
v[0] = 25;
v[4+5] = 32;

//Asignacion por recorrido

int tam = 25;
int[] v = new int[tam];
for (int i=0; i<tam; i++) v[i] = 4687;


List: la listas son estructuras de datos dinámicas, es decir, su tamaño puede ser variable, crecer y decrecer en memoria, además son estructuras ordenadas. Por suerte Java nos evita el engorroso trabajo de programar una lista enlazada y nos proporciona una clase List con la cual implementar este tipo de estructura.
Pros:
- Tamaño indefinido, infinito si es necesario.
- Esta ordenada.
- Permite el acceso indexado.
- Funciona con cualquier tipo de clase sin operaciones adicionales.
- Proporciona operaciones muy útiles.
Contras:
- Un poco mas difíciles de declarar que los arrays.
- Recorrido mas complicado ya que es necesario el uso de iteradores.
- Necesario saber las operaciones(no es problema con NetBeans).

~/<span class="blsp-spelling-error" id="SPELLING_ERROR_58">List</span>.java./*Declaración de una lista*/

/*Se han de utilizar las clases envolventes de los tipos basicos*/
List<Integer> listaEnteros;
List<Boolean> listaBooleanos;
List<String> listaString;

/*Inicializacion, aquí iniciare con ArrayList aunque existen otras formas*/
listaEnteros = new ArrayList<Integer>();
listaBooleanos = new ArrayList<Boolean>();
listaString = new ArrayList<String>();

/*Una vez creada la lista tenemos diferentes operaciones*/

/*Añadir un elemento, se mantiene el orden de insercion. El primer elemento

sera el 4 y el ultimo sera el 4*8*9+6-3 */
Integer a = 4;
listaEnteros.add(a);
listaEnteros.add(4);
listaEnteros.add(-898564);
listaEnteros.add(4*8*9+6-3);

/*Borrar un elemento de la lista, borra el elemento que esta en la posicion indicada, en este caso borraria el 4*/
int posicion = 0;
listaEnteros.remove(posicion);

/*Borrar todos los elementos*/
listaEnteros.clear();

/*Obtener un elemento de la lista, en este caso nos retornaria el 4*/
int posicion = 0;
int elemento = listaEnteros.get(posicion);

/*Comprobar si la lista esta vacia*/
boolean vacia = listaEnteros.isEmpty();

/*Obtener el tamaño de la lista*/
listaEnteros.size();

/*Recorrer una lista es un poco especial ya que es una estructura dinamica, para ello se ha de definir un iterador, una especie de indice que recorre la lista, la estructura de un recorrido de una lista que imprime por pantalla su contenido seria esta*/

/*Bucle for*/
for (Iterator<Integer> it = lista.iterator(); it.hasNext();) {
Integer elemento = it.next();
System.out.println(elemento);
}

/*Bucle while*/
Iterator<Integer> it = lista.Iterator();
while(it.hasNext()) {
Integer elemento = it.next();
System.out.println(elemento);
}



Sets: proximamente.
Cualquier duda dejar un comentario.

domingo, 20 de junio de 2010

Java 1.4 Tipos de datos I (básicos)

Bueno una vez iniciado el entorno y la introducción a Java. Empiezo con lo que es el lenguaje propiamente dicho. En esta entrada introduciré los tipos de datos básicos de Java o los que creo yo que son los básicos. De todas formas dejo un manual que me ayudo a realizar un proyecto de la universidad y que creo que es intuitivo y directo http://www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf .
Bueno, los tipos de datos básicos de Java(envolventes) son:

- Integer ----> para variables enteras o numeros enteros: 0,1,2,3...,-1,-2,-3,....15416
- Boolean ----> para variables ciertas o falsas, solo 2 valores posibles: true,false
- Float ----> para variables de coma flotante, es decir: 1.3256, 3.14164, ...
- String ----> para cadenas de texto: "El panxo va dirli al pinxo", "a", ....
- Character ----> para variables de tipo carácter: 'a', 'b' , '\n', ...

en version reducida:

- int
- boolean
- float
- String
- char

La diferencia entre la versión reducida y las clases de tipos básicos es que estas contienen operaciones de cast(conversion entre tipos) ente otras. Asi para declarar una variable dentro de una función con utilizar el tipo reducido basta, en cambio para declarar los atributos de una clase es recomendable y nosotros lo haremos de esa forma, declarar los atributos que sean variables básicas en su versión completa. Cuando pueda pondre un par de ejemplos.


~/MiClaseJava.java.html




class MiClaseJava {

  /*Atributos de la clase, siguiendo el convenio

  los atributos que son tipos básicos siempre los

  delcaramos en su versión completa(con su clase

  envolvente)*/

  private Integer entero;

  private Boolean booleano;

  private Float real;

  private String palabra;

  private Character caracter;

        

  /*Constructor de la clase*/

  public MiClaseJava() {}

  

  /*Operacion cualquiera*/

  public void operacionQueNoHaceNada() {

    /*Las variables de las operaciones y las axuiliares

    las podemos declarar en version simple*/

    int i=0;

    char c = 'a';

    String s = "ViscaElBarça";

    float f = 4.5;

    boolean b = false;

    while (i != 0) {

      System.out.println(c);

      System.out.println(s);

      System.out.println(f);

      System.out.println(b);

    }

  }

}



En este trozo de código hemos seguido el convenio marcado, atributos declarados con tipos completos y variables de operaciones declaradas con tipos reducidos. Cualquier duda o sugerencia, dejar un comentario en la entrada correspondiente.

jueves, 17 de junio de 2010

UML Introducción

Una vez ha quedado claro el concepto de clase ya se tiene un punto a partir del cual comenzar a desarrollar un proyecto software, independientemente del número de clases que éste pueda llegar a tener.

Es importarse darse cuenta de que un proyecto software que puede tener un gran número de clases y puede ser engorroso si no se especifica antes qué clases habrá en el sistema y los atributos y operaciones que tendrá cada una.

Para poder especificar un sistema software se usa el lenguaje UML (Unified Modeling Languaje), es un estándar de lenguaje de modelado que surgió en el año 2005 y tiene mucha importancia en el campo de la ingeniería del software. Con UML se pueden hacer varios tipos de diagramas para especificar completamente la composición y el comportamiento del sistema. Primeramente nos centraremos en la parte estática de un sistema software, el diagrama de clases.

Hay muchas herramientas para hacer diagramas UML, algunos de los más conocidos son ArgoUML, IBM Rational Software Modeler, Dia, etc.

Un diagrama de clases es un tipo de diagrama que describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos. Como ejemplo práctico podemos ver en la siguiente imagen la representación en UML de la clase Persona que se describe en una entrada anterior:
Aquí no se muestran las operaciones de consulta de dni y modificación de nombre que se ven en la entrada anterior, la inclusión de operaciones en los diagramas de clases se verán más adelante.

En las siguientes entradas también se verán diagramas con más de una clase y la representación de las relaciones que pueden haber entre ellas.

Java 1.3 Concepto de Clase (objeto)

Me he referido en entradas anteriores al concepto de clase. Java es un lenguaje de programación orientado a objetos, y como tal utiliza el concepto de clase para desarrollarse.

Concepto de clase: una clase de objetos es una estructura donde se agrupan las propiedades y operaciones que forman parte de un objeto, como objeto se puede entender una persona, una manzana, una ventana de un programa,o la clase Main(objeto donde se encuentra el hilo principal de ejecución de un programa).

En una clase de objetos tanto en Java como en cualquier otro lenguaje orientado a objetos distinguimos dos tipos de elementos:
- Los atributos: propiedades del objeto.
- Operaciones: funciones o acciones/métodos asociados al objeto.

Un ejemplo:

-------------------------------------------------------------------------------------------------

clase Persona:
- atributos:dni,nombre.
- operaciones: consultar dni, modificar nombre.

-------------------------------------------------------------------------------------------------

Ahora en Java:

-------------------------------------------------------------------------------------------------

package nuevoproyecto;



/**

* @author hector

*/

public class Persona {



    // atributos

    private String dni;

    private String nombre;



    //constructora de la clase

    public Persona(String d, String n) {

        dni = d;

        nombre = n;

    }



    // Operaciones



    public String getDni() {

        return dni;

    }



    public void setNombre(String n) {

        nombre = n;

    }

}


Ahora hemos visto nuestra primera clase Java. Tanto por los requisitos de Java(solo es posible trabajar con clases) como por principios lógicos de organización todo software de cierta embergadura se programa siempre por clases, ya que estas se pueden: relacionar y comunicarse entre ellas, establecer jerarquías de herencia(la clase Trabajador heredaria de la clase Persona por ejemplo), agrupar en paquetes(como cajas de clases), etc.

En próximas entradas iré introduciendo los componentes del lenguaje Java y las relaciones entre clases. Cualquier duda al Emilio xD.

Dejo una foto de NetBeans con la clase Persona programada en Java.



PD: perdón por el código fuente de arriba tan espaciado, aun estoy aprendiendo a utilizar esto.

Java 1.2 Primer Proyecto NetBeans+Java (HelloWorld)

Una vez instalado NetBeans empezasmos con la primera aplicación practica.

Paso 1. Crear un Proyecto -> En archivo, crear nuevo proyeto, seleccionar Aplicación Java. A continuación asignamos el nombre al proyecto, la carpeta donde se guardaran los archivos, si debe o no debe tener clase main(clase ejecutable) y si queremos que se configure como proyecto principal. Le damos a finalizar y NetBeans genera el proyecto.



Paso2. El entorno -> en el espacio lateral izquierdo podemos observar los diferentes paquetes de código fuente que tiene la aplicación, la librerias, etc. Observamos que se ha creado un paquete por defecto que contiene el código fuente de nuestra clase Main(clase ejecutbale).

Paso3. Introducimos el código del HelloWorld en la clase main.

Paso4. Ejecutamos el proyecto con el botón de play verde que hay en la barra de herramientas. Si el código es correcto y no tiene errores obtendremos un resultado como el de la fotografía. En la consola blanca nos saldrán las palabras HelloWorld.



Acabamos de realizar un proyecto Java con NetBeans. A partir de aquí iré introduciendo propiedades del lenguaje en si Java y iré haciendo puntualizaciones sobre NetBeans. Es imposible describir todas las funcionalidades del IDE, cada uno que investige las que cree que le pueden ser útiles y cualquier duda se la preguntan a Emilio.

Java 1.1 Para programar en Java, mejor con un IDE. NetBeans


Para programar en Java solo con tener un editor de textos y el compilador Java es suficiente. Sin embargo para realizar proyectos de cierta magnitud es necesario introducir una herramienta de desarrollo integrado (IDE).

Un IDE nos facilita: la edición de código, la compilación y la ejecución además de muchísimas otras herramientas, como por ejemplo la edición de GUIs (Interfaces gráficas de usuario - ventanas de aplicación) o la sincronización con otras herramientas, nos permite llevar un control de versiones entre otras utilidades. Por estas razones se hace inprescindible utilizar el IDE para el desarrollo de software.


NetBeans
: NetBeans es uno de los IDEs mas completos para la programación en Java, aunque también da soporte a otros lenguajes (c++,php, etc), pero su fortaleza esta en Java. Producto del año en el 2008 es un entorno realmente muy util para el desarrollo de sotware Java. NetBeans funciona tanto en Windows como en Linux y solo se necesita tener instalado el JDK(compilador java) para empezar a programar. Pensamos que NetBeans es el entorno ideal para la realización de cualquier tipo de proyecto Java.

Para descargar NetBeans:

En Windows (.exe): http://netbeans.org/downloads/index.html
En Linux: $sudo apt-get install netbeans

Para descargar el compilador Java JDK(Java Devoloper Kit):

En Windows (.exe): http://java.sun.com/javase/downloads/index.jsp
En Linux: $sudo apt-get install jdk

Una vez descargado e instalado tendremos una pantalla como la del principio.

miércoles, 16 de junio de 2010

Java 1.0 Inicios en Java

Java es un lenguaje de programación orientado a objetos. Un pequeño ejemplo para empezar a conocer este lenguaje:

fichero a crear -> HelloWorld.java
-------------------------------------------------------------------------------------

import java.io.*;
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World");
}
}

-------------------------------------------------------------------------------------

import java.io.* : importa la libreria necesaria.
public class HelloWorld : declara la clase java HelloWorld
public static void main(String args[]) : hilo de ejecución principal main.
System.out.println("Hello World"); : muestra el texto por el canal de salida estandar del sistema.

Para compilar i ejecutar el archivo abrir en un terminal i hacer:
compilar -> javac HelloWorld.java
ejecutar -> java HelloWorld

Y asi construimos nuestra primera aplicacion Java.

Nota: para poder compilar un programa .java se necesita el JDK(Java Devoloper Kit) que es el compilador de Java. Se puede descargar para Windows en: http://java.sun.com/javase/downloads/index.jsp