domingo, 29 de marzo de 2009

Base de la Programación en Java

En Java  la línea finaliza con un “ ; ”

string nombre = Alan Cardel;
Aquí estamos declarando y llenando una variable de tipo  string y al final de la línea cerramos con un “;”

Comentarios:

Los comentarios en Java se realizan antemponiendo  dos diagonales“ //”

// Esto es un comentarioi

y si son muchas lineas puede ser asi

public class Nombre{

string nombre = Alan Cardel;

/* Comentario con mas

de una línea*/
}

Altamente Tipiado:

Como se comento anteriormente el lenguaje java es altamente tipiado, por lo cual es muy sensible al uso de las minúsculas y mayúsculas tanto para el manejo de las variables, funciones, métodos,etc.

un ejemplo de esto es:

system.out.println("Nombre : ");              <-Forma Incorrecta.

System.out.println("Nombre : ");              <- Forma Correcta

como podemos ver, en la primera linea “System” esta escrito con minúscula esto causa error en Java.

Tipos de Datos:

Tipos de datos            Rango de valores         Descripción

Números enteros

byte                         8-bit complemento a 2      Entero de un Byte

short                       16-bit complemento a 2     Entero corto

int                            32-bit complemento a 2      Entero

long                         64-bit complemento a 2     Entero largo

Números reales    

float                          32-bit IEEE 754  flotante de precisión simple

double                     64-bit IEEE 754   flotante de precisión doble

otros tipos

char                         16-bit Caracter               Un sólo carácter

STRING                     SEGÚN LONG  se utiliza para cadenas de Caracteres

boolean                  true o false  Un valor booleano (verdadero o falso)

Alcance de miembros Java:

Public:

Los elementos declarados como Public son accesibles tanto desde fuera como desde dentro de la clase.

Private:

Los elementos declarados como Private son accesibles sólo desde la misma clase donde fueron definidos.

Protected:

Los elementos declarados como Protected son accesibles desde la misma clase donde fueron definidos y en sus subclases.

Conversiones de Tipos:

En Java hay una serie de funciones que realizan la conversión entre los distintos tipos de datos. Las conversiones pueden ser,  de número a carácter, de número a cadena, entre números, de carácter a número, de carácter a cadena y de cadena a número. Este tipo de funciones se utilizará  también en los applet.

DE NÚMERO A CARÁCTER

var_char=Character.forDigit(var_num,base);

DE NÚMERO A CADENA: El dato a convertir debe ser un objeto de una clase numérica.

var_String=objeto.toString();

var_String=String.valueOf(var_numerica);

ENTRE NUMEROS: El dato a convertir debe ser un objeto de una clase numérica.

          clase_num objeto=new clase_num(valor);

var_tipo=objeto.tipoValue();

          Float F=new Float(3.1416);

          int i=F.intValue();

          long l=F.longValue();

          float f=F.floatValue();

          double d=F.doubleValue();

 

Arreglos:

Como otras variables, antes de poder utilizar un array primero se debe declarar. De nuevo, al igual que otras variables, la declaración de un array tiene dos componentes primarios: el tipo del array y su nombre. Un tipo de array incluye el tipo de dato de los elementos que va contener el array. Por ejemplo, el tipo de dato para un array que sólo va a contener elementos enteros es un array de enteros. No puede existir un array de tipo de datos genérico en el que el tipo de sus elementos esté indefinido cuando se declara el array.

Aquí  la declaración de un array de enteros:

int[] arrayDeEnteros;


Para asignar memoria a los elementos de un array, primero se debe ejemplarizar el array. Se puede hacer esto utilizando el operador new de Java. (Realmente, los pasos que se deben seguir para crear un array son similares a los se deben seguir para crear un objeto de una clase: declaración, ejemplificación e inicialización.



La siguiente sentencia asigna la suficiente memoria para que arrayDeEnteros pueda contener diez enteros.



int[] arrayDeEnteros = new int[10]


Operadores:


Operadores Aritméticos: Los habituales



  • Suma + .


  • Resta - .


  • Multiplicación * .


  • División / .


  • Resto de la División % .



Operadores de Asignación: El principal es ‘=’ pero hay más operadores de asignación con distintas funciones que explicamos brevemente ahora.




  • ‘+=’ : op1 += op2 a op1 = op1 + op2


  • ‘-=’ : op1 -= op2 a op1 = op1 - op2


  • ‘*=’ : op1 *= op2 a op1 = op1 * op2


  • ‘/=’ : op1 /= op2 a op1 = op1 / op2


  • ‘%=’ : op1 %= op2 a op1 = op1 % op2



Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.


Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.




  • NombreObjeto instanceof NombreClase



Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.




  • ‘++’


  • ‘–’



Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o relacción mayor/menor. Devuelven siempre un valor boolean.




  • ‘>’: Mayor que


  • ‘<’: Menor que


  • ‘==’: Iguales


  • ‘¡=’: Distintos


  • ‘>=’: Mayor o igual que


  • ‘<=’: Menor o igual que



Operadores Lógicos: Nos permiten construir expresiones lógicas.




  • ‘&&’ : devuelve true si ambos operandos son true.


  • ‘||’ : devuelve true si alguno de los operandos son true.


  • ‘!’ : Niega el operando que se le pasa.


  • ‘&’ : devuelve true si ambos operandos son true, evaluándolos ambos.


  • ‘|’ : devuelve true uno de los operandos es true, evaluándolos ambos.



Operador de concatenación con cadena de caracteres ‘+’:




  • Por Ejemplo: System.out.println("El total es"+ result +"unidades");



Operadores que actúan a nivel de bits: Son mucho menos utilizados por eso los explicamos mas por encima.




  • ‘>>’: desplazamiento a la derecha de los bits del operando


  • ‘<<’: desplazamiento a la izquierda de los bits de operando


  • ‘&’: operador and a nivel de bit.


  • ‘|’: operador or a nivel de bit



Sentencias condicionales:



*Sentencia If:



Anteriormente hablamos de las sentencias, en este espacio nos enfocaremos a las condicionales.

Aquí mostramos distintos tipos de una sentencia If, todas validas en JAVA.



if (x > 10) if (x < 10) if (x < 10) if (x < 10)



HacerAlgo(); { { {



Hacer1(); Hacer1(); Hacer1();



Hacer2(); } }



} else else if (x > 20)



{ {



Hacer2(); Hacer2();



} }



else



{



Hacer3();



}



* sentencia case:



Aquí mostramos una estructura de la sentencia “Case”.



int a = 0;



switch(a) {



case 1:{//CODIGO 1



break;



}



case 2: {//CODIGO 2



break;



}



default:{//CODIGO DEFAULT



break;



}



}



 



* Sentencias For y While:


Anterior mente explicamos estas sentencias en general, a continuacion la estructura de cada una de ellas en JAVA.



For:



for (int i=1; i < 10; i++)



{



}



WHILE:



bool condicion = true;



while (condicion == true){



//En algún momento poner condicion = false



}



Declarar Clases en JAVA:



class CuentaBancaria



{



//Definicion de miembros



}



PUNTO DE ENTRADA:



public class HolaMundo {



public static void Main(string[] args){



//Punto de entrada de la aplicación



}



}



MEtodos:



Métodos: acciones que un objeto puede llevar a cabo.



Ahora la estructura:





public void HacerDeposito(int importe) //No devuelve valor



{



}



public int ObtenerInventario(int codArticulo) //Devuelve un entero



{



}



Constructores:



Constructor: métodos dentro de la clase que son llamados automáticamente cuando se crea una instancia de dicha clase.,   tienen el mismo nombre de la clase



Ejemplo:



class CtaCte



{



public CtaCte(){...} //Const. por default



public CtaCte(int i){...} //Const. con un parametro



}



Sobrecarga de Métodos:



Sobrecarga: varios métodos con el mismo nombre pero diferente “firma”.







public void HacerDeposito(int importe)  //<-Metodo



{



}



public void HacerDeposito(int importe, bool acreditar)  //<-Sobrecarga



{



}



Métodos estáticos:



Miembros que no requieren de una instancia para ser invocados. también se les  llama métodos de clase.



public static void HacerDeposito(int importe)



{



}



Asignar  Propiedades a objetos:



Propiedad: característica o atributo de un objeto





Estructura:



class CtaCte



{



int balance;



public int Balance



{



get



{



return balance;



}



set



{



balance = value;



}



}



}



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



CtaCte cc = new CtaCte();



cc.Balance = 100; //Asignación



Mostrar(cc.Balance); //Obtención



 



definición de herencia:



class Cuenta //Clase Base



{



}



class CtaCte extends Cuenta //Clase Derivada  extends  indica la herencia



{



}



 



si una clase es abstracta, las clases que se deriben de ella, deben llevar los mismos metodos abstractos.



Ejemplo:



public abstratc class Cuenta //Clase Base



{



abstract void HacerDeposito(int importe) //No devuelve valor




{



}




}



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



public  class Cuenta2 extends Cuenta //Clase Base



{



void HacerDeposito(int importe) //No devuelve valor




{



}




}



Excepciones:



Excepción: condición anómala de funcionamiento de una aplicación, es decir, se previene que en caso de que suceda algún error y no se pueda realizar alguna operación realice otra.



try



{



int resultado = x/y;



}



catch(DivideByZeroException e)  // si falla el Try entra al bloque Catech.



{



//Error division por cero



}






Interprete y Compilador de Java:

En el lenguaje JAVA, las dos partes se han separado por completo, y tenemos el compilador de JAVA, que traduce los fuentes a bytecode, y el intérprete de JAVA, que en realidad interpreta bytecode.

El paquete de Java lleva por re “JDK”                                                    El compilador de lenguaje Java es gratuito y puede descargarse en la web oficial de Sun, compañía creadora de este lenguaje. La última versión ocupa unos 90 MB e incluye compilador (javac) y muchas otras herramientas: intérprete (java), visualizador de applets (appletviewer), etc.

Herencias, Interfaces y Polimorfismo:

Herencias:

“Es una relación entre clases en la cual una clase comparte la estructura y comportamiento definido en otra clase “(Grady Booch)

Cada clase que hereda de otra posee:

* Los atributos de la clase base además de los propios

* Soporta todos o algunos de los métodos de la clase base

* Una subclase hereda de una clase base

image

En el ejemplo de arriba, Transporte, es la Clase Base y de ella se derivan las otras dos, que son automóvil y avión,  ambas clases utilizan los métodos y atributos de la clase base, ese decir, que tanto un auto como un avión llevan pasajeros, avanzan y se detienen.

la subclase es un tipo específico de la superclase

* Un Cuadrado es un Rectángulo

* Un perro es un mamífero

* Un automóvil es un vehículo a motor

Interfaces:

Recurso de diseño soportado por los lenguajes orientados a objetos que permite definir comportamiento

Permite que clases que no están estrechamente relacionadas entre sí deban tener el mismo comportamiento

La implementación de una interfaz es un contrato que obliga a la clase a implementar todos los métodos definidos en la interfaz

Se crean las interfaces que definen comportamiento

Hidroavión deberá definir los comportamientos de cada una de las interfaces que implemente

image

Polimorfismo:

Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al objeto correspondiente recién en tiempo de ejecución

El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es así

image

Por un lado tenemos la clase base “Transporte”, que posee los métodos “Avanzar” y “Frenar”. Por otro lado tenemos tres clases distintas derivadas de la clase “Transporte”, cada una de las cuales podrá sobrescribir la implementación de los métodos Avanzar y Frenar para que su comportamiento sea más específico.

Ahora bien, como todas heredan de la misma clase base, las clases derivadas pueden ser tratadas genéricamente. Esto quiere decir que podríamos tener un array que almacene objetos de tipo Transporte, y recorrerlo luego para llamar al método “Avanzar” de cada uno. De esta forma, en tiempo de codificación es imposible saber a qué método “Avanzar” se está llamando en realidad (al del Auto? Al del caballo? Al del transbordador?), sino que esta decisión es tomada en tiempo de ejecución en base al tipo particular de objeto que esté instanciado.

“El polimorfismo es hacer lo mismo, pero de forma distinta”.

Programación Orientada a Objetos:

* un Objeto Es :

Informalmente, un objeto representa una entidad del mundo real

Entidades Físicas   (Ej.: Vehículo, Casa, Producto)

Entidades Conceptuales (Ej.: Proceso Químico, Transacción Bancaria)

Entidades de Software  (Ej. Lista Enlazada, Interfaz Gráfica)

“Un objeto es un concepto, abstracción o cosa con un significado y límites claros en el problema en cuestión”

Todos los objetos tienen 3 características principales:

-Estado: representa la definición de atributos internos del objeto, sus características. Por ejemplo, un auto tiene un cierto número de puertas, un cierto número de ruedas, un volante, un motor, pedales, etc.

-Comportamiento: representa la definición del comportamiento del objeto, las acciones que éste puede realizar. Por ejemplo, un auto puede “arrancar”, “frenar”, “doblar”, “acelerar”, etc.

Identidad: Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto

image 

En esta imagen observamos el ejemplo: los autos son el mismo modelo y mismas características, pero siempre serán 2 objetos separados, cada objeto es único.

Una Clase Es:

“Una clase es una definición abstracta de un objeto”.

“Un objeto es una instancia de una clase”.

Una clase es una descripción de un grupo de objetos con:

*Propiedades en común (atributos)

*Comportamiento similar (operaciones)

*La misma forma de relacionarse con otros objetos (relaciones)

*Una semántica en común (significan lo mismo)

Una clase es una abstracción que:

*Enfatiza las características relevantes

*Suprime otras características (simplificación)

La clase es el molde del objeto, de este molde podemos crear todos los objetos que deseemos y todos tendrán las mismas características.

image

Estructuras de Control Repetitivas

While:

Mientras condición hacer

sentencia/s

…..

fin_mientras

 

La estructura repetitiva while (mientras) es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condición. Por esta razón, a estos bucles se los conoce como bucles condicionales. Cuando la sentencia while se ejecuta, la primera cosa que sucede es la evaluación de la expresión lógica. Si se evalúa como falsa, ninguna acción se realiza y el programa sigue en la siguiente sentencia después del bucle. Si la expresión lógica se evalúa como verdadera, entonces se ejecuta el cuerpo del bucle y se evalúa de nuevo la expresión. Este proceso se repite mientras que la expresión lógica permanezca verdadera. Después de cada iteración la expresión lógica se evalúe y se verifica de nuevo; si cambia de verdadera a falsa la sentencia while finaliza. Mientras que la condición sea verdadera el bucle se ejecutará. Esto significa que el bucle se ejecutará indefinidamente a menos que algo en el interior del mismo modifique la condición haciendo que su valor pase a falso. Si la expresión nunca cambia de valor, entonces el bucle no termina nunca y se denomina bucle o loop infinito (en general, esta situación no es deseable).

Ejemplo de While en Java:
while(A==1)
{
  c++;
}

For:

FOR

* desde variable <- valor_inicial hasta valor_final hacer

sentencia/s

…..

fin_desde

 

Ejemplo en Java:

for(int i = 0;i< 100;i++)

        {
        n1 =  n1++
         }

Estructuras de Control:

El orden de ejecución de las sentencias de un programa determina su flujo de control

Las estructuras de control permiten alterar el orden del flujo de control

Existen dos tipos básicos

* De Selección

* De Repetición o Iteración

Estructuras de Control Selectivas :

Dirigen el flujo de ejecución según el resultado de evaluación de expresiones

IF :

* si expresion_logica

entonces hacer acción A

sino hacer acción B

fin_si

 

Un ejemplo de if en Java:

if (B == A)
         {
            System.out.println("Ejemplo If Java");
         }

else

{

System.out.println("else es igual a -sino-” );

}

CASE:

lsegún_sea selector hacer

C11,C12,…: sentencia 1

C21,C22,…: sentencia 2

…..

[sino sentencia x]

fin_según

 

La sentencia Case se utiliza para elegir entre diferentes alternativas. Una sentencia case se compone de varias sentencias simples. Cuando case se ejecuta, una (y sólo una) de las sentencias simples se selecciona y ejecuta.

Reglas:

-La expresión selector se evalúa y se compara con las listas de constantes; las listas de constantes son listas de uno o más posibles valores de selector separados por comas. Sólo se ejecuta una sentencia.

-La cláusula sino es opcional, como en la sentencia if.

-Si el valor del selector no está comprendido en ninguna lista de constantes y no existe la cláusula sino, nada sucede y el programa sigue su flujo normal. Si el valor del selector no coincide con alguna constante se ejecutan las sentencias a continuación de la cláusula else.

-El selector debe ser un tipo ordinal (número entero, caracter, o booleano). Los números reales no pueden ser utilizados ya que no son ordinales.

-Todas las constantes Case deben ser únicas y de un tipo ordinal compatible con el tipo de selector.

 

Ejemplo Case en Java:

switch (cas) {
        case 'a': if (a[0][0]== 'A'){a[0][0] = 'O'; S = 0;}else{S=3;} break;
        case 'b':if (a[1][0]=='B'){a[1][0] = 'O';S = 0;}else{S=3;} break;
        case 'c':if(a[2][0]=='C'){a[2][0] = 'O';S = 0;}else{S=3;} break;
        case 'd':if(a[0][1]=='D'){a[0][1] = 'O';S = 0;}else{S=3;} break;
        case 'e':if(a[1][1]=='E'){a[1][1] = 'O';S = 0;}else{S=3;} break;
        case 'f':if(a[2][1]=='F'){a[2][1] = 'O';S = 0;}else{S=3;} break;
        case 'g':if(a[0][2]== 'G'){a[0][2] = 'O';S = 0;}else{S=3;} break;
        case 'h':if(a[1][2]=='H'){a[1][2] = 'O';S = 0;}else{S=3;} break;
        case 'i':if(a[2][2]=='I'){a[2][2] = 'O';S = 0;}else{S=3;} break;
        default:System.out.println("La Casilla esta Ocupada o No existe."); S=3; break;
    } //   case seria el nombre de la Variable en cuestion.

Operadores y Expresiones En Java:

Procesan variables y constantes

Una expresión es un conjunto de datos unidos por operadores que tiene un único resultado

* Expresiones aritméticas

* El resultado es un número

* a = ((2+6) / 8) * 3

* Expresiones lógicas

* El resultado es un valor verdadero o falso

* (a < 10) y (b > 50)

Existen diversos tipos

* Aritméticos: suma, resta, multiplicación, etc.

* De relación: igual, mayor, menor, distinto, etc.

* Lógicos: and, or, not, etc. (en Java : &,||,!)

Existen diversos tipos de operadores En JAVA, por ejemplo:

-Aritméticos: son apropiados únicamente para tipos numéricos. Ejemplos de operadores aritméticos son “ + ”, “ - ”, “ * ” y “ / ”, los cuales permiten obtener el resultado de la suma, la resta, la multiplicación y la división de dos datos respectivamente.

-De relación: los operadores de relación ( o relacionales) se utilizan para expresar condiciones y describen una relación entre dos valores. Ejemplos de operadores relacionales son “ < ” (Menor que), “ >” (Mayor que), “ == ” (Igual a) y “ ¡= ” (Distinto a).

Los operadores aritméticos y los relacionales se utilizan de la siguiente forma: variable o constante operador variable o constante. Por ejemplo: a + b, c/d, a<b, c ¡= d, etc.

-Lógicos: estos operadores se utilizan con constantes lógicas de forma similar al modo en que los operadores aritméticos se utilizan con las constantes numéricas. Estos operadores trabajan con operandos que son expresiones lógicas. La operación and (&) combina dos condiciones simples y produce un resultado verdadero sólo si los dos operandos son verdaderos. La operación or (||) es verdadera si uno de los dos operandos es verdadero. La operación not (!) actúa sobre una sola condición simple u operando y simplemente niega (o invierte) su valor. Existen otros operadores lógicos además de los mencionados.

2.- Variables y Sentencias

El Tipo de Dato determina la naturaleza del conjunto de valores que un dato puede tomar

Ejemplos:                                                                                          *Número Entero

*Número Real

*Cadena de Caracteres

*Valor Lógico o Booleano (Verdadero o Falso)

A los lenguajes que exigen que todos los datos utilizados deban tener sus tipos declarados explícitamente se los conoce como “fuertemente tipiados”, Java es uno de estos programas.

El tipo de un dato puede ser convertido bajo ciertas condiciones a otro tipo. Este mecanismo explícito de conversión de tipos de datos se suele denominar “CAST”.

2.1.- Variables y Constantes:

Presentación2

Los dos tipos de datos llevan nombre y tipo, por medio del nombre representan una dirección en memoria que contiene el valor.

2.2.- Sentencias:

Describen acciones algorítmicas que pueden ser ejecutadas

Se clasifican en

*Ejecutables / No ejecutables

*Simples / Estructuradas

En general, las sentencias se clasifican en ejecutables (especifican, por ejemplo, operaciones de cálculos aritméticos y entradas/salidas de datos) y no ejecutables (no realizan acciones concretas ni afectan a la ejecución del programa, sino que ayudan a su legibilidad).

-Sentencias Simples: son sentencias que no contiene ninguna otra sentencia. El ejemplo más típico de sentencia simple es la sentencia de asignación, la cual se utiliza para almacenar un valor en una variable. La operación de asignación se suele representar en pseudocódigo con el símbolo ‘<-’, para denotar que el valor situado a su derecha se almacena en la variable situada a la izquierda:

-Variable <-Valor

-En la mayoría de los lenguajes, el operador <- se sustituye por el “=”. Ej.: a = 2. (la asignación sólo será válida si el valor es válido para el tipo de dato definido para la variable).

-Sentencias estructuradas: son sentencias compuestas de otras sentencias que se ejecutan en secuencia, condicionalmente o repetidamente.

JAVA: Fundamentos e Introducción.

1.-El Software:

Las operaciones que debe realizar el hardware son especificadas con una lista
de instrucciones, llamadas programas, o software. El software se divide en dos
grandes
grupos:
Software del sistema, y Software de aplicaciones.

Presentación1

1.2 Lenguajes de Programación:

Lenguajes utilizados para escribir programas de computadoras que puedan ser entendidos por ellas

Se clasifican en tres grandes categorías

1.-lenguajes de máquina *instrucciones directamente entendibles por la computadora (lenguaje binario)

2.-lenguajes de bajo nivel *Proveen un juego de instrucciones más comprensibles por los humanos

3.-lenguajes de alto nivel *Utilizan instrucciones escritas con palabras similares a los lenguajes humanos. *Son independientes de la máquina en la que se *Necesitan ser traducidos a instrucciones en lenguaje máquina (Compilación)

Los lenguajes de alto nivel también se dividen en grupos:

*Estructurados *Orientados a Objetos *Declarativos *Funcionales

El lenguaje Java pertenece al grupo de los “Orientados a Objetos”, es decir, java es un lenguaje Orientado a Objetos.