1. Java Básico

Un objeto es un contenedor (repositorio) de datos y con un comportamiento que manipula a dichos datos.

Un objeto es un componente reutilizable de software que se modela en tèrminos comùnes a los utilizados para describir las cosas del mundo real. 

Un objeto tiene propiedades o atributos, en las cuales se almacenan los datos.

El comportamiento del objeto està dado por los mètodos, que son rutinas que manipulan a los datos.

Una clase es un tipo de dato definido por el programador y que especifica las propiedades y mètodos de un objeto.

Un objeto es un ejemplar de una clase

Por cada clase, pueden existir uno o mas objetos. 

Un objeto tiene un tipo de dato, que es la clase.

Cuando se crea un nuevo tipo de clase, se deben realizar dos etapas fundamentales: determinar los atributos y el comportamiento de los objetos.

Un objeto es una instancia de una clase.

Una clase tiene un nombre, una colecciòn de operaciones para manipular a sus instancias y una representaciòn.
Las operaciones que manipulan las instancias de una clase (los objetos) se llaman mètodos.

El estado o representaciòn de una instancia se almacena en variables de la instancia, llamadas propiedades o atributos.

El envìo de mensajes a objetos (instancias) es similar a la llamada a procedimientos en lenguajes de programaciòn tradicionales.

La programaciòn orientada a objetos es la tècnica de codificaciòn de software que se fundamenta en los conceptos de clase,objetos,mètodos, mensajes, herencia y polimorfismo.

Un objeto se compone de datos y mètodos que operan sobre esos objetos. 

El enfoque orientado a objetos es reutilizar còdigo o clases ya existentes y construir nuevas clases. Este enfoque se conoce como bottom-up.

Difiere al de la programaciòn estructurada que obligaba a concebir todo el sistema desde la funciòn principal y que se fuera diviendo en funciones màs especificas (top-down); pero que no concebia la reutilizaciòn como parte de su enfoque y obligaba al programador a tener todo planeado al momento de codificar.

2. Elementos bàsicos de Java.

Java se originò en Sun Microsystems como un proyecto para los dispositivos electrodomèsticos inteligentes. Java se utiliza actualmente para crear aplicaciones, sistemas cliente/servidor, aplicaciones Web, y para aplicaciones de dispositivos mòviles.

Java actualmente està dividido en tres plataformas: 
- Java 2 Standard Edition (J2SE) que ofreeece los elementos bàsicos del lenguaje (manipulaciòn de clases, estructuras de datos, archivos, componentes de interfase gràfica de usuario, comunicaciones TCP/IP y  Web, multihilado, XML, multimedia, JavaBeans, còdigo movil como applets)
- Java 2 Enterprise Edition (J2EE) que offfrece componentes para programaciòn de sistemas cliente/servidor tales como componentes Web (Servlets,JSP), componentes transaccionales (Enterprise Java Beans), componentes de conectividad (Java Database Connectivity, Java Naming Directory Interface, JavaMail, Java Connector Architecture).
- Java 2 Micro Edition (J2ME) que ofrece   componentes para programaciòn de dispositivos mòviles, con la implantaciòn de Midlets

Los programas en Java consisten en varias piezas que se llaman clases. Estas clases consisten de piezas llamadas mètodos, los cuales realizan tareas y devuelven informaciòn cuando completan esas tareas. La mayorìa de los programadores de Java utilizan las colecciones de clases existentes en las bibliotecas de clases Java.
 
Los nombres de archivos de còdigo fuente en Java terminan con la extensiòn .java. El nombre del archivo es idèntico al nombre de la clase.

El compilador de Java (javac) traduce un  programa Java a còdigo de bytes (bytecodes): el lenguaje que el intèrprete de Java puede entender. Si un programa se compila correctamente, el compilador produce un archivo con la extensiòn .class. Este es el archivo que contiente los còdigos de bytes que interpretàn durante la fase de ejecuciòn.

Un programa Java debe colocarese en memoria antes de que pueda ejecutarse. De esto se encarga el cargador de clases, que toma el archivo (o archivos) .class que contiene los còdigos de bytes y los transfiere de la memoria principal. El archivo .class puede cargarse desde un disco en el sistema operativo o a travès de una red.

Una aplicaciòn es un programa que generalmente se guarda y se ejecuta en el equipo local del usuario. Las aplicaciones se cargan en memoria y despues se ejecutan mediante el intèrprete java.

Un applet es un programa que generalmente se guarda en un equipo remoto, al cual se conectan los usuarios mediante un navegador Web.

Una aplicaciòn en Java es un programa independiente qe se ejecuta utilizando el interprete java, que es la implantaciòn de la màquina virtual de Java (Java Virtual Machine o JVM)

Los programadores insertan comentarios para documentar los programas y mejorar su legibilidad. Un comentario que empieza con // es un comentario de una linea. Un comentario que empieza con /* y termina con */ es un comentario tradicional y puede abarcar varias lineas.

Una cadena de caracteres contenido entre comillas dobles se conoce como String.

En el còdigo Java, las lìneas en blanco, los caracteres de espacio, nueva lìnea y tabuladores son caracteres de espacio en blanco, que, cuando se encuentran fuera de las cadenas de caracteres, son ignorados por el compilador.

Las palabras clave estàn reservadas para uso en Java y deben aparecer completamente en minùsculas. Nunca utilizar esas palabras para nombres de clases, variables o mètodos.

Las palabras reservadas son:

abstract	else		int		static
boolean		extends		inteface	super
break		false		long		switch
byte		final		native		synchronized
case		finally		new		this
catch		float		null		throw
char		for		package		throws
class		goto		private		transient
continue	if		protected	true
default         implements	public		try
do		import		return		void
double		instanceof	short		volatile
						while
	


La palabra class introduce la declaraciòn de una clase y va seguida por el nombre de la clase que, por convenciòn debe comenzar con mayùscula. Si el nombre de una clase contiene màs de una palabra, la primera letra de cada palabra debe estar en mayùscula.

Un identificador es una serie de caracteres que consisten en letras, digitos, guiones bajos (_) y signos de moneda ($) que no empieza cn un digio, no contiene espacios y no es una palabra reservada.

Java es sensible a mayùsculas y minùsculas, es decir, distingue la diferencia entre letras mayùsculas y minùsculas.

Una llave izquierda {, y una derecha }, delimita el cuerpo de la declaraciòn de una clase.

La sintàxis es

class NombreClase {
//cuerpo de la clase
}

Los mètodos puede realizar tareas y devolver informaciòn cuando las han complementado.

Las aplicaciones en Java comienzan su ejecuciòn en el mètodo main. La primera lìnea del mètodo main debe ser:
public static void main (String [] args)

Una llave izquierda {, y una derecha, }, delimitan el cuerpo de la declaraciòn de un mètodo.

System.out es el objeto de salida estàndar o pantalla. System.out prermite a las aplicacions en Java mostrar cadenas en la ventana de comandos en la que se ejecuta la aplicaciòn.

Los mètodos print y println del objeto System.out imprimen la informaciòn en la ventana de comandos. Cuando el mètodo print termina de mostrar su argumento, no coloca el cursor de salida al principio de la siguiente lìnea en la ventana de comandos. El siguiente caracter mostrado en la ventana de comandos aparece inmediatamente despuès del ultimo caracter mostrado con print. Cuando println completa su tarea, coloca el cursor de salida al principio de la siguiente lìnea en la ventana de comandos.

Cada instrucciòn Java debe terminar con un punto y coma (el terminador de la instrucciòn)

Java contiene muchas clases predefinidas que se agrupan en paquetes (categorìas de clases relacionadas). En conjunto, estos paquetes forman la biblioteca de clases de Java, conocida como la Interfaz de Programaciòn de Aplicaciones (Application Programming Interface o API) de Java.

Una variable es una ubicaciòn en la memoria de la computadora, en donde puede guardarese un valor para que un programador lo utilice. Todas las variables tienen un nombre, tipo, tamaño y valor. El nombre de una variable puede ser cualquier identificador vàlido. Todas las variables deben declararse con un nombre y un tipo para que puedan utilizarse en un programa.

Las declaraciones terminan con un punto y coma (;) y pueden dividirse en varias lineas,separando cada variable en la declaraciòn con una coma (formando una lista, separada por comas, de nombres de variables)

Las variables tienen los siguientes tipos
Tipo		Tamaño		Valores que puede tomar		Uso habitual
boolean. 	1 bit 		true o false			banderas, condiciones para estructuras de control		
byte		8 bits		De -128 a 127			Bucles for, indices, manipulaciòn de flujos de archivos
char		16 bits		De '\u0000' a '\uFFFF'		Para representar un caracter en formato Unicode
short		16 bits		De -32768 a 32767		Conteo, aritmetica de enteros
int		32 bits		-2147483648 a 2147483647	Aritmetica de enteros en general
long		64 bits 	-923372036854775808 a		Calculos con enteros en general
				 923372036854775807
float		32 bits		IEEE 754			Precision de 7 digitos
double		64 bits		IEEE 754			Precision de 15 digitos



Los anteriores tipos son conocidos como escalares o nativos.
Todos los que no estan en la lista, son no escalares o de tipo objeto o referencia.
Un ejemplo de un tipo no nativo es String.

Toda variable se declara como
tipodedato nombre;

donde tipodedato es escalar o referencia
el nombre sigue las reglas de un identificador

Toda variable que se declara en un metodo, antes de ser usada, debe ser inicializada.

3. Operadores y expresiones


Java soporta operadores unitarios, binarios y de otros tipos.

Una expresiòn es un elemento de un programa que toma un valor o realiza una operaciòn.

La sintaxis para usar expresiones:
variable = expresion

donde la variable es un identificador vàlido Java y declarado como variable
expresion es un constante, otra variable a la que se ha asignado previamente un valor o una formaula que se ha evaluado y cuyo resultado es del mismo tipo que el de la variable


Los operadores de asignaciòn en Java son
Simbolo		Uso		Equivalencia no abreviada	Descripciòn
=		a = b						Asignar el valor de la variable b a la variable a
+=		a+= b		a=a+b				Suma b con a y lo asigna a la variable a
-=		a-= b		a=a-b				Resta b de a y lo asiiigna a la variable a
*=		a*= b		a=a*b				Producto de b con a y lo asigna a la variable a
/=		a/= b		a=a/b				Divide a entre b y lo asigna a la variable a
%=		a%= b		a=a%b				Mòdulo o residuo de la division de a entre b y 
								lo asigna a la variable a

Los operadores aritmèticos son


Operador		Tipo Entero		Tipo Real
+			Suma			Suma
-			Resta			Resta
*			Producto		Producto
/			Division entera		Division con punto flotante
			cociente
%			Division entera		No aplica
			residuo

Los operadores aritmèticos unarios son + y -. El ùltimo convierte a valor negativo cualquier variable de tipo numèrico entera o real.

Los operadores de incremento y decremento son:
Operador	Significado
a--
--a		a=a-1;
a++
++a		a=a+1;
b=a++		b=a; a=a+1;
b=++a		a=a+1; b=a;
b=a--		b=a; a=a-1;
b=--a		a=a-1; b=a;


Los operadores relacionales son utilizados para producir valores de tipo boolean, y comparan dos variables entre si.

Operador	Significado
==		Igual a
!=		No igual a
>		Mayor que
<		Menor que
>=		Mayor o igual que
<=		Menor o igual que


Los operadores lògicos permite combinar varias expresiones de tipo boolean
Operador	Significado		Ejemplo
!		No lògico		!(x>=y)
^		XOr logico		x9
||		Or logico		m==5 || n>10
&&		And logico		mj


Tabla de verdad
a	b	a||b		a&&b		a^b
false	false	false		false		false
false	true	true		false		true
true	false	true		false		true
true	true	true		true		false

En Java se pueden realizar asignaciones de tipo boolean

boolean isMayor = (a>10) || (b>c);
boolean isIgual = x==y;


Los operadores de cadena de caracteres permiten concantentar una o mas variables de tipo String con tipos nativos
El operador es + y tiene la siguiente sintaxis
variable-string= variable-string + variable_string_o_nativa;


El operador ternario, ? tiene la siguiente sintaxis:
variable = expresion-boolean ?expresion-cierto: expresion-falso

y es equivalente a :
	if (expresion-boolean)
		variable=expresion-cierto
	else
		variable=expresion-falso

 

4. Instrucciones de Control.

Existen tres tipos de estructuras de control: secuencia, selecciòn y repeticiòn.

La estructura de secuencia està integrada en Java, de manera predeterminada, las instrucciones se ejecutan en el orden en el que aparecen.

Una estructura de selecciòn elige entre varios cursos alternativos de acciòn

La instrucciòn if ejectua una secciòn indica solamente cuando la condiciòn es verdadera

La sintaxis es 

if (condicion) 
  instrucciones-bloque-if

Las instrucciòn if ... else especifica acciones separadas a ejecutar cuando la condiòn es verdadera y cuando es falsa.

if (condicion) 
  instrucciones-bloque-if
else
  instrucciones-bloque-else

Cuando debe ejecutarse màs de una instrucciòn, las instrucciones deben ir encerradas entre llaves, formando un bloque.

Una instrucciòn vacia, la cual implica que no va a realizarse ninguna acciòn, se indica mediante un punto y coma (;)

Para probar varias condiciones, se puede usar if de la siguiente manera
if (condicion1) 
	instruccion-bloque-if
else if (condicion2)
	instruccion-bloque-if
else if (condicion3)
	instruccion-bloque-if
else
  instrucciones-bloque-else

La instrucciòn switch case permite evaluar mùltiples condiciones sobre variables de tipo char, byte, short o int  

La sintaxis es
switch (variable-condicion)
	case constante1: instruccion-bloque-case
			 break;
        case constante2:case constante3: instruccion-bloque-case
			 break;
	case constante4: instruccion-bloque-case
			 break;
	default: instruccion-bloque-default
		 break;

Una estructura de repeticiòn especifica que una acciòn va a repetirse mientras cierta condiciòn sea verdadera.

El formato para la instrucciòn while es

while ( condiciòn )
 instrucciones-bloque-while

El formato para la instrucciòn do-while es
do 
  instrucciones-bloque-do
while (condicion-do);

El formato para la instrucciòn for es:
for (instruccion-inicio;condicion-for;cambio-variable-control-for)
	instruccion-bloque-for



5. Clases y objetos

En Java, la unidad de còdigo es una clase.
Una clase se declara con sus atributos y mètodos.
La clase es la plantilla utilizada para construir objetos.

La estructura de una clase es

class NombreClase { 
//atributos, propiedades o variables de la clase
    tipoAtributo atributo1;
    tipoAtributo atributo2;
    tipoAtributo atributo3=valorInicial;
//constantes de la clase
    public final static tipoConstante CONSTANTE1=VALOR1;
    public final static tipoConstante CONSTANTE2=VALOR2;
    public final static tipoConstante CONSTANTE3=VALOR3;
//
    tipoRetorno metodo1(tipoParametro param1,tipoParametro param2) {
	//cuerpo del metodo que consiste en
        //declaraciones de variables del metodo
        //estructuras de control condicional, ciclos
        //instrucciones Java, expresiones
        //invocacion a otros metodos de la clase
        //creacion de objetos
        //invocacion de metodos o manipulacion de atributos de un objeto
        return variable_de_TipoRetorno;
    }
    tipoRetorno metodo2(tipoParametro param1,tipoParametro param2) {
        //cuerpo del metodo
     }
}

Donde 
tipoAtributo puede ser cualquier tipo escalar o de tipo objeto (clase)
tipoConstante puede ser cualquier tipo escalar o de tipo objeto 
tipoRetoron puede ser void, tipo escalar o de tipo objeto

En una clase se pueden declarar tantos atributos, constantes o mètodos se requieran. 
Los atributos de la clase pueden ser declarados e inicializados.

NOTA: No incluir còdigo Java de instrucciones de control, expresiones o invocaciones a metodos u objetos en el cuerpo 
de la clase. Solo se puede incluir en los metodos de la clase.

Una vez codificado una clase, se puede crear o instanciar un objeto del tipo de la clase.

Un objeto es manipulado por una variable de tipo referencia. La referencia tiene un tipo de dato, que es
el nombre de la clase del objeto.

Para crear un objeto

TipoObjeto variableReferencia = new TipoObjeto();

La variableReferencia recibe un valor que es igual a la localizaciòn del objeto creado en el modelo de memoria de la JVM.
Ese valor no tiene una interpretaciòn y es un identificador que permite a un programador al momento de depurar, el 
diferenciar los valores tomados por las referencias

Una variableReferencia puede tomar un valor null, indicando que esta referenciando a un objeto no existente.

Otro valor posible que puede tomar es resultado de aplicar la operacion new

Tambien puede tomar el valor de una referencia del mismo tipo de clase, implicando que una o mas referencias pueden manipular
al mismo objeto.

Las operaciones que pueden realizarse sobre una referencia son:

+ Declaracio de una referencia
TipoObjeto variableReferencia;

+ Asignaciòn de un valor null
variableReferencia=null;

+ Creacion de un objeto
variableReferencia = new TipoObjeto();

+ Asignaciòn o modificaciòn de una propiedad del objeto
tipoAtributo variable = variableReferencia.atributo1;
variableReferencia.atributo2= valortipoAtributo; //puede ser tambien una expresion Java

+ Invocacion de un mètodo que retorna un resultado
tipoRetorno variable = variableReferencia.metodo1(param1, param2);

+ Invocacion de un mètodo que no retorna resultados ni recibe paràmetros
variableReferencia.metodo3();

+ Cuando una referencia es utilizada para invocar metodos o manipular atributos, se dice que se està enviando un mensaje al objeto.

+ Asignaciòn de una referencia a otra referencia del mismo tipo
TipoObjeto variableReferencia2 = variableReferencia

+ Comparacion de dos referencias (la referencia1 "ve" al mismo objeto que la referencia2?)
boolean bandera = ( variableReferencia2 == variableReferencia1)

+ Comparacion de dos referencias (la referencia1 "ve" a un diferente objeto que la referencia2?)
boolean bandera = ( variableReferencia2 != variableReferencia1)

Las propiedades de un objeto pueden ser de tipo referencia. Para iniciar el valor de una propiedad referencia, se puede aplicar el operador new en la misma sentencia de declaraciòn.

Si las propiedades no son inicializadas, el valor que toma es el mìnimo del tipo de dato (para los nativos numericos es el valor 0, para el tipo boolean false, para char es caracter nulo y para referencias el valor null

El operador ".", al ser utilizado en una referencia permite manipular propiedades o metodos.

EL UTILIZAR AL OPERADOR "." CON UNA REFERENCIA CON VALOR null, PROVOCA QUE LA JVM GENERE UN ERROR O EXCEPCION CONOCIDA COMO java.lang.NullPointerException

Al conjunto de valores que tienen las propiedades de un objeto, se llama estado del objeto.

En cualquier còdigo Java,pueden existir uno o mas objetos.

Para usar una constante de una clase NO ES NECESARIO crear un objeto, basta con usar el nombre de la clase, al operador "." y al nombre de la constante.

tipoConstante v= Clase.CONSTANTE1;


A la operaciòn de creaciòn de un objeto se le conoce como instanciar 

6. Arreglos.

Un arreglo en Java es un objeto que contiene una secuencia de variables del mismo tipo

Cuando el tipo de dato de un arreglo es de tipo de dato clase, se conoce como un arreglo de objetos.

Todo arreglo en Java se trata como una referencia. Por lo tanto puede tomar dos valores, null o el valor asignado en el espacio de memoria de la JVM.

Las operaciones que se pueden realizar sobre un arreglo son:

+ Declaraciòn de un arreglo.
tipoArreglo [] referenciaArreglo;
+ Creaciòn de un arreglo
referenciaArreglo = new tipoArreglo[capacidadArreglo];
NOTA: Cuando un arreglo es creado, solo se pide espacio para cada celda del arreglo. Si el tipo del arreglo es escalar,
se inicializa con el valor minimo posible; si es de tipo de una clase, el valor es null. No se debe usar un arreglo de
objetos sin inicializar.
+ Preguntar  la longitud de un arreglo 
int capacidad= referenciaArreglo.length;
+ Inicializar un arreglo de objetos, llenando celda por celda
for (int i=0;i

    Source: geocities.com/gusdelact/cib4122006

               ( geocities.com/gusdelact)