Una introducción a Java Capitulo 0.

80
Una introducción a Java Capitulo 0. Dra. Maria Lucia Barrón Estrada [email protected] Aesoria: 13:00-14:00 Oficina de posgrado Agosto-Diciembre 2007

description

Una introducción a Java Capitulo 0. Dra. Maria Lucia Barrón Estrada [email protected] Aesoria: 13:00-14:00 Oficina de posgrado Agosto-Diciembre 2007. Contenido. Instalación de Java Fundamentos del lenguaje Java Conceptos de POO con Java. Instalación de Java. - PowerPoint PPT Presentation

Transcript of Una introducción a Java Capitulo 0.

Page 1: Una introducción a Java Capitulo 0.

Una introducción a JavaCapitulo 0.

Dra. Maria Lucia Barrón [email protected]

Aesoria: 13:00-14:00Oficina de posgrado

Agosto-Diciembre 2007

Page 2: Una introducción a Java Capitulo 0.

Contenido

Instalación de Java Fundamentos del lenguaje Java Conceptos de POO con Java

Page 3: Una introducción a Java Capitulo 0.

Instalación de Java Descargar el Java SE http://java.sun.com

http://java.sun.com/javase/downloads/index.jsp

Instalar el JDK 6 siguiendo las instrucciones

Verificar que se hayan creado todos los directorios.

Verificar la instalación con un programa de prueba

Page 4: Una introducción a Java Capitulo 0.

Directorio de archivos instalados

Page 5: Una introducción a Java Capitulo 0.

Editar, Compilar y Ejecutar un programa

Crear el archivo fuente. Almacenarlo en el directorio bin con el mismo nombre de la clase y extensión java.

Compilar el programa usando:> javac Nombre.java Si el programa no tiene errores se creara un

archivo de bytecodes llamado Nombre.class, si tiene errores se debe editar el programa y corregirlos.

Ejecutar el programa con el interprete de java:> java Nombre

Page 6: Una introducción a Java Capitulo 0.

Editar el programa

Page 7: Una introducción a Java Capitulo 0.

Compilar y ejecutar

Page 8: Una introducción a Java Capitulo 0.

Fundamentos del Lenguaje

1. Palabras reservadas y comentarios

2. Estructura de un programa3. Tipos de datos4. Variables.5. Operadores.6. Expresiones.7. Instrucciones.8. Bloques.9. Control de flujo

Page 9: Una introducción a Java Capitulo 0.

Comentarios Los comentarios permiten a los programadores

comunicar sus pensamientos independientemente del codigo escrito.

Los comentarios NO generan codigo ejecutable, el compilador los ignora.

En Java existen dos tipos de comentarios De fin de linea - inician con // Entre lineas - estan delimitados por /* */

Page 10: Una introducción a Java Capitulo 0.

Palabras Reservadas

abstract default goto operator synchronized

boolean do if outer this

break double implements package throw

byte else import private throws

byvalue extends inner protected transient

case false instanceof public true

cast final int rest try

catch finally interface return var

char float long short void

class for native static volatile

const future new super while

continue generic null switch

Son palabras que tienen un significado especial en el lenguaje y no pueden ser usadas como identificadoes.

Page 11: Una introducción a Java Capitulo 0.

Estructura de un programa

Los programas Java tienen una estructura basica simple que se basa en la definicion de una clase.

// Definicion de la clase HolaMundo.javapublic class HolaMundo { public static void main (String[] args) { System.out.println(“Hola Mundo!"); }

}

comentario

Encabezado de la clase

Cuerpo de la clase

Metodo principal

Page 12: Una introducción a Java Capitulo 0.

Tipos de DatosEn el lenguaje de programación Java, existen dos categorías de datos: Primitivos Referenciales

Una variable de tipo primitivo contiene un valor simple del tamaño y formato apropiado para su tipo: un número, un carácter, o un valor booleano (condicional verdadero ó falso).

Una variable de tipo referencial contiene una referencia a un objeto del tipo especificado o cualquier otro derivado de el.

Page 13: Una introducción a Java Capitulo 0.

Tipos de Datos PrimitivosLa siguiente tabla lista, por palabras reservadas, todos los tipos de datos primitivos soportados por Java, sus tamaños y formatos, y una breve descripción de cada uno:

Palabra Reservada

Descripción Tamaño

byte Entero c/longitud byte

8-bit

short Entero corto 16-bit

int Integer 32-bit

long Entero largo 64-bit

float Punto flotante simple p.

32-bit

double Punto flotante doble p.

64-bit

char Un carácter simple 16-bit

boolean Un carácter booleano

true o false

Page 14: Una introducción a Java Capitulo 0.

Datos Tipo ReferenciaArreglos, clases e interfaces son datos tipo referencia. El valor de un dato tipo referencia, en contraste con uno de tipo primitivo, es que es una referencia a (una dirección de) el valor, o conjunto de valores representados por la variable.

Una referencia es denominada apuntador ó dirección de memoria en otros lenguajes. Java no soporta el uso explicito de direcciones como otros lenguajes. Se emplea el nombre de variable en su lugar.

Page 15: Una introducción a Java Capitulo 0.

Datos Tipo Referenciapublic class MiFecha{

private int dia=1;

private int mes = 1;

private int año=2000 

public String toString(){

return dia+”-”+mes+”-”+año;

}

}

 // Podemos usar la clase MiFecha como sigue: 

public class PruebaMiFecha {

public static void main(String[] args) {

MiFecha hoy = new MiFecha();

}

} La variable hoy es una referencia a un objeto de tipo MiFecha.

Page 16: Una introducción a Java Capitulo 0.

Variables El nombre de variable debe ser un identificador válido, -- un

número ilimitado de caracteres Unicode que comienza con una letra.

No debe ser una palabra reservada, un literal booleano (true or false), ó la palabra reservada null.

Debe ser única dentro de su ámbito. Un nombre de variable puede ser repetida si su declaración aparece en un ámbito diferente.

El tipo de variable determina que valores puede contener y que operaciones se pueden realizar en ella.

Una variable debe ser declarada para poder ser utilizada Ejemplos.

int x; // define una variable de tipo entero llamada x String nombre; // define una variable de tipo string llamada nombre Object c; Bicicleta miBici;

Page 17: Una introducción a Java Capitulo 0.

Programa de Ejemplo Declaración de Variablespublic class MaxVariablesDemo {

public static void main(String args[]) { // integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE;

long largestLong = Long.MAX_VALUE; // real numbers

float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE;

// other primitive types char aChar = 'S'; boolean aBoolean = true; }

}

Page 18: Una introducción a Java Capitulo 0.
Page 19: Una introducción a Java Capitulo 0.

Ámbito de las Variables

El ámbito de una variable es la región de un programa dentro del cual la variable puede ser referenciada con su nombre simple.

Ámbito es diferente de visibilidad, el cual aplica sólo a variables miembro y determina si la variable puede ser usada desde fuera de la clase dentro de la cual es declarada.

La visibilidad se establece con un modificador de acceso.

Page 20: Una introducción a Java Capitulo 0.

Ámbito de las Variables 2La localización de la declaración de la variable dentro del programa establece su ámbito y la coloca dentro de una de estas cuatro categorías:

Variable miembro (pertenece a

una clase). Variable local Parámetro de método. Parámetro de manejador de excepciones.

Page 21: Una introducción a Java Capitulo 0.

Inicialización de VariablesLas variables locales y variables miembro pueden ser inicializadas con una instrucción de asignación en el momento que son declaradas. El tipo de dato debe ser acorde al valor asignado.Ej. byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE;

Los parámetros de métodos y los parámetros de manejadores de excepciones no pueden ser inicializados de esta forma. El valor para un parámetro es fijado por el llamador.

Page 22: Una introducción a Java Capitulo 0.

Constantes (final)Se puede declarar una variable en cualquier ámbito para que sea final.El valor de una variable final no puede cambiar después de que ha sido inicializada. Tales variables son similares a las constantes en otros lenguajes.Para declarar una variable final, emplee la palabra reservada final antes del tipo:Ej. final int aFinalVar = 0;

En el caso del ejemplo, se ha declarado e inicializado la variable en un solo paso. Se puede hacer en dos pasos si se prefiere. Hecho esto, si se intenta asignar posteriormente un valor a ésta variable, produciría un error de compilación.

Page 23: Una introducción a Java Capitulo 0.

Resumen - Variables Existen dos categorías: primitivas y de referencia.

La ubicación de una declaración de variable indica implícitamente el ámbito de la variable. Hay cuatro categorías de ámbito: miembro de variable, variable local, parámetro y parámetro de manejador de excepciones.

Se puede proveer un valor inicial para una variable dentro de su declaración empleando el operador de asignación (=).

Se puede declarar una variable como final. El valor de una variable final no puede ser cambiado después de que ha sido inicializada.

Page 24: Una introducción a Java Capitulo 0.

Class Byte java.lang

Class Byte java.lang.Object java.lang.Number java.lang.Byte All Implemented Interfaces: Serializable,

Comparable<Byte> public final class Byte extends Numberimplements

Comparable<Byte> The Byte class wraps a value of primitive type byte

in an object. An object of type Byte contains a single field whose type is byte.

In addition, this class provides several methods for converting a byte to a String and a String to a byte, as well as other constants and methods useful when dealing with a byte.

Since: JDK1.1 See Also: Number, Serialized Form

Page 25: Una introducción a Java Capitulo 0.

Campos de la clasestatic byte MAX_VALUE

          A constant holding the maximum value a byte can have, 27-1.

static byte MIN_VALUE           A constant holding the minimum value a byte can have, -27.

static int SIZE           The number of bits used to represent a byte value in two's complement binary form.

static Class<Byte> TYPE           The Class instance representing the primitive type byte.

Page 26: Una introducción a Java Capitulo 0.

Constructores

Byte(byte value)           Constructs a newly allocated Byte object that represents the specified byte value.

Byte(String s)           Constructs a newly allocated Byte object that represents the byte value indicated by the String parameter.

Page 27: Una introducción a Java Capitulo 0.

Métodos de la clase byte byteValue()

          Returns the value of this Byte as a byte. int compareTo(Byte anotherByte)

          Compares two Byte objects numericallystatic Bytedecode(String nm)

          Decodes a String into a Byte. Double doubleValue()

          Returns the value of this Byte as a double. Boolean equals(Object obj)

          Compares this object to the specified object.float floatValue()

          Returns the value of this Byte as a float. int hashCode()

          Returns a hash code for this Byte. int intValue()

          Returns the value of this Byte as an int. long longValue()

          Returns the value of this Byte as a long.static byte parseByte(String s)

          Parses the string argument as a signed decimal byte.static byte parseByte(String s, int radix)

          Parses the string argument as a signed byte in the radix specified by the second argument. short shortValue()

          Returns the value of this Byte as a short. String toString()

          Returns a String object representing this Byte's value.static String toString(byte b)

          Returns a new String object representing the specified byte.static Byte valueOf(byte b)

          Returns a Byte instance representing the specified byte value.static Byte valueOf(String s)

          Returns a Byte object holding the value given by the specified String.static Byte valueOf(String s, int radix)

          Returns a Byte object holding the value extracted from the specified String when parsed with the radix given by the second argument.

Page 28: Una introducción a Java Capitulo 0.

Usando la clase Byte

Page 29: Una introducción a Java Capitulo 0.
Page 30: Una introducción a Java Capitulo 0.

OperadoresUn operador realiza una función en uno, dos o tres operandos. Un operador que requiere un operando es denominado operador unario.Ej. ++ es un operador unitario que incrementa en uno el valor de su operando.

Un operador que requiere dos operandos es un operador binario.Ej. = es un operador binario. Se usa para asignación de valores a variables.

Un operador que requiere tres operadores se denomina ternario. Existe un operador ternario ?: que es una abreviación de la instrucción if-else.

Existen también tres modalidades de notación: prefija, postfija e infija.

Page 31: Una introducción a Java Capitulo 0.

Operadores AritméticosJava soporta varios operadores aritméticos para todos los números enteros y de punto flotante: + (suma), - (resta), * (multiplicación), / (división) y % módulo.

Ej. ArithmeticDemo.java Operador Uso Descripción

+ op1 + op2 Suma op1 y op2

- op1 - op2 Resta op2 de op1

* op1 * op2 Multiplica op1 por op2

/ op1 / op2 Divide op1 entre op2

% op1 % op2 Calcula el remanente.

Page 32: Una introducción a Java Capitulo 0.

Operadores Aritméticos 2

Los operadores abreviados de incremento/decremento son sumarizados en la siguiente tabla:

Operador

Uso Descripción

++ op++ Incrementa op en 1. Asigna primero, incrementa después.

++ ++op Incrementa op en 1. Incrementa primero, asigna después.

-- op-- Decrementa op en 1. Asigna primero, decrementa después.

-- --op Decrementa op en 1. Decrementa primero, asigna después.

Page 33: Una introducción a Java Capitulo 0.

Operadores RelacionalesUn operador relacional compara dos valores y determina la relación entre ellos. Por ejemplo, != retorna verdadero si los dos operandos son diferentes. A continuación una tabla de opradores:

Ej. RelationalDemo.javaOperador Uso Retorna verdadero

> op1 > op2 op1 es mayor que op2

>= op1 >= op2 op1 es mayor que o igual que op2

< op1 < op2 op1 es menor que op2

<= op1 <= op2 op1 es menor que o igual que op2

== op1 == op2 op1 y op2 son iguales

!= op1 != op2 op1 y op2 son diferentes

Page 34: Una introducción a Java Capitulo 0.

Operadores CondicionalesLos operadores relacionales frecuentemente son empleados con operadores condicionales para construir más complejas expresiones de toma de decisiones. El lenguaje de programación Java soporta seis operadores condicionales – cinco binarios y uno unario - como aparece en la siguiente tabla:

Operador

Uso Retorna verdadero si

&& op1 && op2 op1 y op2 son ambos verdad. (shortcircuit)

| | op1 | | op2 o op1 o op2 es verdad. (shortcircuit)

! !op op es falso.

& op1 & op2 op1 y op2 son ambos verdad. (non-shortcircuit)

| op1 | op2 op1 o op2 es verdad. (non-shortcircuit)

^ op1 ^ op2 si op1 y op2 son diferentes – esto es si uno u otro de los operandos es verdad, pero no los dos.

Page 35: Una introducción a Java Capitulo 0.

Otros OperadoresLa siguiente tabla lista los otros operadores que el lenguaje Java soporta:

Operador Descripción

?: Abreviación if - else

[ ] Empleado para declarar arreglos y accesar elementos.

. Usado para formar nombres cualificados

( parametros )

Delimita una lista de parámetros separados por coma

( tipo ) Convierte un valor al tipo especificado

new Crea un nuevo objeto ó un nuevo arreglo

instanceof Determina si su primer operando es una instancia del segundo operando. (descendencia directa o no).

Page 36: Una introducción a Java Capitulo 0.

ExpresionesVariables y operadores, los cuales aparecen en las secciones previas, son bloques básicos que conforman los programas. Se pueden combinar literales, variables, y operadores para formar expresiones – segmentos de código que realizan cálculos y retornan valores. Una expresión es una serie de variables, operadores y llamadas a métodos (construidas de acuerdo a la sintaxis del lenguaje) que resultan en un valor simple.Ej. count = 1

(count == 0) x1 = -b + Math.sqrt((Math.sqr(b) + a*c)/ (2*a)) contador++ carácter = s1.charAt(0) bandera = !bandera Character.isUpperCase(aChar)

Page 37: Una introducción a Java Capitulo 0.

public class Cuadrado{ //atributo int lado; // constructor public Cuadrado (int l){ lado = l; } // metodos public int perimetro(){ return 4*lado; } public int area(){ return lado*lado; } public String toString(){ return "Cuadrado Lado = "+lado; }}

Page 38: Una introducción a Java Capitulo 0.

public class PruebaCuadrado{ public static void main(String[] args){ Cuadrado c = new Cuadrado(5); System.out.println(c); System.out.println("El perimetro es "+ c.perimetro()); System.out.println("El area es "+ c.area()); }}

Page 39: Una introducción a Java Capitulo 0.

Instrucciones (Sentencias)

Una instrucción forma una completa unidad de ejecución. Los siguientes tipos de expresiones pueden ser convertidas en instrucciones finalizando la expresión con un punto y coma, ( ; ).

Expresiones de asignación. Cualquier uso de ++ ó --. llamadas a métodos. Expresiones de creación de objetos.

Page 40: Una introducción a Java Capitulo 0.

BloquesUn bloque es un grupo de cero o más instrucciones entre llaves balanceadas (que abren y cierran) y que puede ser usada en cualquier sitio donde una simple instrucción sea permitida. El listado siguiente muestra dos bloques del programa MaxVariablesDemo, conteniendo una instrucción simple:

if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); }

Page 41: Una introducción a Java Capitulo 0.

Instrucciones de Control de Flujo

Se pueden emplear instrucciones de control de flujo para: condicionalmente ejecutar instrucciones, repetidamente ejecutar bloques de instrucciones y cambiar el flujo secuencial de control.

Ej: char achar; ... if (Character.isUpperCase(aChar))

System.out.println("The character " + aChar + " is upper case."); else System.out.println("The character " + aChar + " is NOT a upper case.");

Page 42: Una introducción a Java Capitulo 0.

If/Else

La instrucción if / else permite al programa ejecutar selectivamente otras instrucciones, basando la selección en el resultado de una expresión booleana. La forma general sería:

Ej: IfElseDemo.java

if (expression) statement

if (expression) statement else statement

Page 43: Una introducción a Java Capitulo 0.

Ejemplos usando if

if (height <= MAX) adjustment = 0;else adjustment = MAX-height;

if (total < 7) System.out.println(“Total menor que 7”);

if (firstCh != ‘a’ && limit < MAX) count++;else count = count /2;

Page 44: Una introducción a Java Capitulo 0.

class IfElseDemo { public static void main(String[] args) {

int testscore = 76; char grade;

if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } System.out.println("Grade = " + grade); }}

Page 45: Una introducción a Java Capitulo 0.

La Instrucción SwitchSe emplea la instrucción switch para condicionalmente ejecutar instrucciones basadas en expresiones de enteros.

Ej: SwitchDemo.javaswitch (expresion) { case expresion : estatutos; break; case expresion : estatutos; break; // mas casos

default : estatutos}

Page 46: Una introducción a Java Capitulo 0.

La instrucción switch evalúa su expresión, y ejecuta la instrucción (case) adecuada.

La expresion debe ser de tipo char, byte, short o int.

La expresion de cada caso, debe ser del mismo tipo de la expresion del switch.

La expresion de cada caso debe ser UNICA. La seccion default es opcional y se ejecuta cuando

ningun caso coincide con la expresion. Instrucción break después de cada caso (case). Cada

instrucción break termina el bloque de switch, y el flujo de control continúa con la primera instrucción que sigue después del bloque de switch. Si no se colocaran instrucciones break, el cursor de ejecución seguiría ejecutando otros bloques case.

Page 47: Una introducción a Java Capitulo 0.

Ejemplo usando switchchar opcion;System.out.println(“Selecciona la opcion deseada (A o B)”);opcion = Keyboard.readChar(); switch (opcion){ case ‘A’ : System.out.println(“Seleccionaste la opcion A”); break; case ‘b’ : // acepta b o B case ‘B’ : System.out.println(“Seleccionaste la opcion B”); break; default : System.out.println(“Opcion Invalida”);}

Page 48: Una introducción a Java Capitulo 0.

class SwitchDemo { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Invalid month.");break; } }}

Page 49: Una introducción a Java Capitulo 0.

class SwitchDemo2 { public static void main(String[] args) { int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0) ) numDays = 29; else numDays = 28; break; default: System.out.println("Invalid month."); break; } System.out.println("Number of Days = " + numDays); }}

Page 50: Una introducción a Java Capitulo 0.

Instrucción ForLa instrucción for provee una forma compacta de iterar sobre un rango de valores. La forma general de la instrucción for puede ser expresada como esto:

for (initialization; termination; increment) { estatuto

} La expresion initialization es una expresión que inicializa el bucle. Es ejecutada una vez al comienzo del bucle. La expresión termination determina cuando terminar el bucle. Esta expresión es evaluada al tope de cada iteración del bucle. Cuando la expresión evalúa a falso, el bucle termina. La expresión increment es invocada después de cada iteración. Todos esos componentes son opcionales.Los bucles for son frecuentemente utilizados para iterar sobre los elementos de un arreglo, o los caracteres de un String. Ej. ForDemo.java

Page 51: Una introducción a Java Capitulo 0.

Ejemplo usando for// imprime los primeros n numeros enterosfor (int i=0; i<=n; i++) System.out.println(i);

// imprime los primeros n numeros enteros paresfor (int i=0; i<=n; i++) System.out.println((i*2));

// suma los primeros n numeros enterosfor (int i=0; i<=n; i++) sum = sum + i;System.out.println(sum);

Page 52: Una introducción a Java Capitulo 0.

class EnhancedForDemo { public static void main(String[] args){ int[] numbers = {1,2,3,4,5,6,7,8,9,10}; for (int item : numbers) { System.out.println("Count is: " + item); } }}

Page 53: Una introducción a Java Capitulo 0.

While y Do-WhileSe debe usar una instrucción while para continuamente ejecutar un bloque de instrucciones mientras una condición permanezca verdadera. La sintaxis general de while es:

while (expression) { estatuto }

Primero, la instrucción while evalúa la expresión, la cual debe retornar un valor booleano. Si la expresión retorna verdadero, entonces la instrucción while ejecuta las instrucciones dentro del bloque asociado. El proceso se mantiene ininterrumpido hasta que la expresión retorne falso.Ej. WhileDemo.java

Page 54: Una introducción a Java Capitulo 0.

Ejemplo usando while// imprime los primeros n numeros enterosint i=0;while (i<=n) { System.out.println(i); i++;}

// ciclo infinitowhile (true) { System.out.println(i); i++;}

while (!bandera) { …}

Page 55: Una introducción a Java Capitulo 0.

Do - While

Esta instrucción es muy similar a la anterior, con la diferencia de que la evaluación de la instrucción se hace al final, no al principio. Esto permite ejecutar por lo menos una vez el bloque asociado sin evaluar la expresión. do estatuto; while (expresionBooleana);

Ej: DoWhileDemo.java

Page 56: Una introducción a Java Capitulo 0.

Ejemplo usando do while// imprime aun cuando la condicion es falsaint i=10;do { System.out.println(i); i++;} while (i<=5) {

Page 57: Una introducción a Java Capitulo 0.

class DoWhileDemo { public static void main(String[] args){ int count = 1; do { System.out.println("Count is: " + count); count++; } while (count <= 11); }}

Page 58: Una introducción a Java Capitulo 0.

Manejo de ExcepcionesEl lenguaje de programación Java provee un mecanismo conocido como excepciones para ayudar a los programas a reportar y manejar errores. Cuando un error ocurre, el programa arroja una excepción, lo cual significa que el flujo normal de ejecución a quedado interrumpido y que el entorno de runtime intenta encontrar un manejador de excepciones – un bloque de código que pueda manejar un tipo particular de error. El manejador de excepciones puede intentar recuperar del error ó, si determina que el error es irrecuperable, proveer una finalización gentil del programa. Hay tres instrucciones que juegan un rol en el manejo de excepciones: Try, Catch y Finally.

try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) }

En otro apartado ampliaremos este tema.

Page 59: Una introducción a Java Capitulo 0.

Instrucciones de Ramificación

El lenguaje de programación Java soporta tres instrucciones de ramificación:

Break

Continue

Return.

Page 60: Una introducción a Java Capitulo 0.

Instrucción Break

La instrucción break tiene dos formas: con etiqueta ó sin etiqueta. La forma sin etiqueta es empleada para terminar el bucle interno en que se encuentre, mientras que la forma con etiqueta permite terminar una instrucción marcada con una etiqueta.

Sin etiqueta Ej: BreakDemo.java

Con etiqueta Ej: BreakWithLabelDemo.java

Page 61: Una introducción a Java Capitulo 0.

Instrucción ContinueLa instrucción continue se emplea para saltar (obviar) la iteración actual de un bucle for, while ó do-while. La forma sin etiqueta salta hasta el final del bucle interno y evalúa la expresión booleana que controla el bucle, básicamente obviando el remanente de esta iteración del bucle. La forma con etiqueta salta (obvia) la iteración actual con la etiqueta dada. A continuación unos ejemplos con cada una de las formas:Sin etiqueta Ej: ContinueDemo.java

Con etiqueta Ej: ContinueWithLabelDemo.java

Page 62: Una introducción a Java Capitulo 0.

Instrucción ReturnSe emplea la instrucción return para salir del método actual. El flujo de control retorna a la instrucción que sigue al método llamador. La instrucción return tiene dos formas: una que retorna un valor y otra que no lo hace. Para retornar un valor, simplemente coloque el valor (o una expresión que calcule el valor) después de la palabra reservada return:

return ++count;

El tipo de dato del valor retornado debe ser acorde con el tipo de dato de retorno del método (en su declaración). Cuando un método es declarado void, use la forma de return que no retorna valor.

return;

Page 63: Una introducción a Java Capitulo 0.

Conceptos de Programación Orientada a Objetos

¿Que es un objeto? Es un ente que posee estado y comportamiento.

A un objeto en particular se le llama instancia.

- Estado: característica o condición del objeto.- Nombre, color, ruedas, engranaje actual, etc.

- Comportamiento: acciones que realiza el objeto.

- Ladrar, mover cola, acelerar, frenar

Page 64: Una introducción a Java Capitulo 0.

Encapsulación

• Empacar las variables de un objeto dentro de la custodia protectiva de sus métodos es denominado encapsulación.

• Este es el ideal por el que se esfuerzan los modeladores de sistemas POO, aunque muchas veces no se logra.

Page 65: Una introducción a Java Capitulo 0.

Ventajas de la Encapsulación

Modularidad: el código fuente para un objeto puede ser escrito y mantenido independientemente del código fuente de otros objetos.

Ocultamiento de información: un objeto tiene una interfaz pública que otros objetos pueden usar para comunicarse con él. El objeto puede mantener información privada y métodos que pueden ser cambiados en cualquier momento sin afectar los otros objetos que dependen de él. Se logra un funcionamiento tipo caja negra.

Page 66: Una introducción a Java Capitulo 0.

¿Qué es un Mensaje? Los programas creados para resolver problemas complejos del

mundo real generalmente constan de muchos objetos que interactúan muchas veces de forma compleja.

Los objetos de software interactúan y se comunican con cada uno por medio de enviar y recibir mensajes entre sí. Cuando el objeto A quiere que el objeto B ejecute uno de los métodos de B, el objeto A envía un mensaje al objeto B.

Page 67: Una introducción a Java Capitulo 0.

Ventajas que Proveen los Mensajes

1. El comportamiento de un objeto es expresado a través de sus métodos. así (aparte del acceso directo a variables) el envío de mensajes soporta todas las posibles interacciones entre objetos.

2. Los objetos no necesitan estar en el mismo proceso o aún en el mismo equipo para enviar y recibir mensajes entre ellos.

Page 68: Una introducción a Java Capitulo 0.

¿Qué es una Clase?

En el mundo real, uno se encuentra con muchos objetos de un mismo tipo. Ej, carros, bicicletas, etc.

Empleando terminología orientada a objetos, podríamos decir que su objeto bicicleta es una instancia de la clase de objetos conocidos como bicicletas. Las bicicletas tienen algún estado (engranaje actual, cadencia actual, dos ruedas) y comportamiento (cambio de engranaje, frenar) en común. Sin embargo, cada estado de cada bicicleta es independiente y puede ser diferente de las otras bicicletas.

Page 69: Una introducción a Java Capitulo 0.

Definición de Clase

En el software Orientado a Objetos, es también posible tener muchos objetos del mismo tipo que comparten características: rectángulos, empleados, registros, video clips, y así sucesivamente. Al igual que los fabricantes de bicicletas, se puede tomar ventaja del hecho que los objetos de la misma clase son similares y se puede crear un modelo o definición para esos objetos.

Una clase es un plano, definición, o prototipo, que define las variables y los métodos comunes a todos los objetos de un cierto tipo.

Page 70: Una introducción a Java Capitulo 0.

Ejemplo de Clase

La clase para nuestro ejemplo de bicicleta declararía las variables de instancia necesarias para contener el engranaje actual, la velocidad actual, y así sucesivamente, para cada objeto de bicicleta.

Variables de instancia

Page 71: Una introducción a Java Capitulo 0.

La clase también declararía y proveería implementaciones para los métodos de instancia que permiten al ciclista cambiar engranaje, frenar, y cambiar la velocidad de pedal, como es mostrado en la figura siguiente:

métodos de instancia

Page 72: Una introducción a Java Capitulo 0.

Ejemplo de Clase 2

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

Una clase en Java, puede contener un metodo especial llamado main, que es donde inicia la ejecucion. En este ejemplo, la clase HolaMundo no contiene variables de instancia ni metodos de instancia. Solo contiene el metodo estatico main.

Page 73: Una introducción a Java Capitulo 0.

Instancias de la ClaseDespués que se ha creado la clase bicicleta, se pueden crear cualquier número de objetos bicicleta a partir de la clase.

Cuando se crea una instancia de una clase, el sistema reserva suficiente memoria para el objeto y todas sus variables de instancia. Cada instancia obtiene su propia copia de todas las variables de instancia definidas en la clase.

Page 74: Una introducción a Java Capitulo 0.

Variables de Clase (Atributos)

En adición a las variables de instancia, las clases pueden definir variables de clase. Una variable de clase contiene información que es compartida por todas las instancias de la clase.

Si un objeto cambia la variable, ésta cambia para todos los objetos de ése tipo. public class Circulo {

public int x;

private static int contador = 0;

private float y = 10000.00F;

private String nombre = “Circulo”;

}

La variable contador contiene un solo valor, el cual es compartido por todos los objetos de la clase Circulo.

Page 75: Una introducción a Java Capitulo 0.

Métodos de ClaseUna clase puede también declarar métodos de clase. Un método de clase se invoca directamente a partir de la clase, y no a traves de un objeto. La clase Math, contiene una serie de metodos de clase, los cuales son invocados usando el nombre de la clase y el nombre del metodo.

class Prueba{

public static void main(String[] args) { System.out.println(“La raiz cuadrada de 27 es “ + Math.sqrt(27)); }}

El metodo sqrt de la clase Math es estatico y por lo tanto se invoca usando el nombre de la clase

Page 76: Una introducción a Java Capitulo 0.

¿Qué es Herencia?En Java existe una jerarquia de clases que tiene como raiz a la clase Object.

Nuevas clases pueden ser definidas usando clases ya existentes.Las clases creadas a partir de una clase serían denominadas subclases o clase derivada. La clase usada para derivar una nueva clase se le llama clase padre o superclase.

Los objetos son creados usando clases.

Page 77: Una introducción a Java Capitulo 0.

Condiciones de Herencia

Cada subclase hereda estado (en la forma de atributos) y métodos a partir de la superclase.

Las subclases pueden agregar nuevas variables y métodos a aquellos que heredan de la superclase o bien pueden redefinir (sobreescribir) los metodos existentes para especializar su comportamiento.

Page 78: Una introducción a Java Capitulo 0.

Condiciones de HerenciaContinuación

No estamos limitados a solo una capa de herencia. El árbol de herencia, o jerarquía de clases, puede ser tan profundo como se necesite. En general, en la medida que se desciende en las capas de una jerarquía, más especializado es su comportamiento.

Page 79: Una introducción a Java Capitulo 0.

Beneficios de la Herencia Las subclases ofrecen comportamientos especializados a partir de la base de los elementos comunes que provee la superclase. A través del uso de la herencia, los programadores pueden reusar código en la superclase muchas veces.

Los programadores pueden implementar superclases denominadas clases abstractas que definen comportamientos genéricos. La superclase abstracta define y podría parcialmente implementar el comportamiento, pero mucho de la clase es indefinida y no implementada. Otros programadores se encargarían de especificar los comportamientos con subclases especializadas.

Page 80: Una introducción a Java Capitulo 0.

La Clase ObjectLa clase Object está en el tope de la jerarquía de clases, y cada clase es su descendiente (directa ó indirectamente).

Una variable de tipo Object puede contener una referencia a cualquier objeto, tal como una instancia de una clase o un arreglo. Object provee comportamientos que son requeridos para todos los objetos ejecutandose en la Maquina Virtual Java (Java Virtual Machine).

Por ejemplo, todas las clases heredan de Object el método toString, el cual retorna una representación del objeto.