1 / 35

Lenguaje Java

Lenguaje Java. Fundamentos del lenguajes de programación Sergio Cardenas Renzo Flores Hugo Gallardo. Contenido. Variables Subrutinas Objetos & Clases Excepciones. Variables.

delora
Download Presentation

Lenguaje Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lenguaje Java Fundamentos del lenguajes de programación Sergio Cardenas Renzo Flores Hugo Gallardo

  2. Contenido • Variables • Subrutinas • Objetos & Clases • Excepciones

  3. Variables • Todas las variables han de declararse antes de usarlas, la declaración consiste en una sentencia en la que figura el tipo de dato y el nombre que asignamos a la variable. Una vez declarada se le podrá asignar valores. • Java tiene tres tipos de variables: de instancia de clase locales

  4. Variables de instancia • se usan para guardar los atributos de un objeto particular. • Las variables de instancia son inicializadas automáticamente, de la siguiente forma: • Las numéricas a 0. • Las booleanas a false. • Las char al caracter nulo (hexadecimal 0). • Las referencias a null. • Nota: null es un literal que indica referencia nula.

  5. Variables de Clase • Son similares a las variables de instancia, con la excepción de que los valores que guardan son los mismos para todos los objetos de una determinada clase.

  6. Variables Locales • Se utilizan dentro de las funciones miembro o métodos. Una variable local existe desde el momento de su definición hasta el final del bloque en el que se encuentra. En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias. Es una buena costumbre inicializar las variables en el momento en el que son declaradas. Las variables locales no se inicializan automáticamente. Se debe asignar un valor antes de ser usadas. Si el compilador detecta una variable local que se usa antes de que se le asigne un valor produce un error.

  7. Variables II • Las variables no son mas que un espacio en la memoria principal del computador que nos sirve para almacenar datos, en donde su tamaño dependerá principalmente del tipo de variable con la que es declarada. Los tipos de datos pueden ser numéricos, alfabéticos o booleanos y los datos que contengan pueden ir variando en la ejecución del programa. Para poder utilizar una variable es necesario primero crearla y darle un identificador con el cual haremos referencia a dicho espacio de memoria.

  8. Para crear una variable en Java se hace de la siguiente manera: Tipo_de_variableIdentificador; El identificador puede empezar con minúscula, mayúscula, con un guion bajo ( _ ) o con el signo peso ( $ ), pero no puede empezar con números ni mucho menos llamarse igual que a una palabra reservada del lenguaje.

  9. TIPOS DE DATOS  • Java es un lenguaje con control fuerte de Tipos (Strongly Typed). Esto significa que cada variable y cada expresión tiene un Tipo que es conocido en el momento de la compilación. El Tipo limita los valores que una variable puede contener, limita las operaciones soportadas sobre esos valores y determina el significado de la operaciones. El control fuerte de tipos ayuda a detectar errores en tiempo de compilación. 

  10. Tipos de datos II • El lenguaje Java utiliza el conjunto de caracteres Unicode, que incluye no solamente el conjunto ASCII sino también carateres específicos de la mayoría de los alfabetos. Así, podemos declarar una variable que contenga la letra ñ • int año=1999;

  11. Asignación • El proceso en el cual se almacena un dato en una variable se llama asignación y se realiza mediante el operador de asignación “=”, se pueden asignar también valores de otras variables del mismo tipo, o relacionadas. • Ejemplo: float pi = 3.14159; double x = pi;

  12. Asignación II • Java además proporciona varios operadores de asignación que permiten realizar un atajo en la escritura de código.

  13. Subrutinas En Java una función (subrutina) es una parte del programa separado del cuerpo principal, que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa, a otra función o a un procedimiento que la halla invocado. • La forma general de una función es: tipodatoregresa Nom_fun(parámetros) { cuerpo de instrucciones; instrucción return; }

  14. tipodatoregresa Nom_fun(parámetros) { cuerpo de instrucciones; instrucción return; } Tipodatoregresa: Es el tipo que especifica el valor que la función regresara utilizando la instrucción return. Si no se especifica un tipo se asume de default que el tipo regresado es int. La lista de parámetros es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la función, estas variables actúan como locales dentro del cuerpo de la función. Aunque no se ocupen parámetros los paréntesis son requeridos.

  15. Es permitido poner más de un return en el cuerpo de instrucciones sobre todo en condiciones, pero solo un return se ejecutara. Ejemplo; if (suma >= 10) { return 10; } else { return 20; }

  16. Es importante recordar que en java, los parametros de los tipos primitivos (int, long, etc.) y objetos, SIEMPRE se pasan por valor. Paso por valor: Significa que cuando un argumento se pasa a una función, la función recibe una copia del valor original. Por lo tanto, si la función modifica el parámetro, sólo la copia cambia y el valor original permanece intacto.

  17. Tipos de retornos: • En un método que devuelve un objeto (de hecho, una referencia), se puede devolver null publicButton metodo(){returnnull;} • Un array (o arreglo) es un tipo de retorno legal publicString[] metodo(){returnnewString[] {"hugo","paco","luis"};} • Un método con tipo de retorno void no devuelve nada! public void inicializar(){return;}

  18. En un método con un tipo de dato primitivo como retorno, se puede devolver cualquier valor o variable que pueda ser implícitamente convertida hacia el tipo de retorno declarado public int Turno(){    char c = 'c';return c; //devuelve un char casteado a int} • En un método con un tipo de dato primitivo como retorno, se puede devolver cualquier valor o variable que pueda ser casteada hacia el tipo de retorno declarado public int Peso(){    float f = 79.5f;return (int) f; } • En un método con un objeto como tipo de retorno se puede devolver cualquier tipo de objeto que pueda ser implícitamente convertido hacia el tipo de retorno declarado public Figura getFigura(){returnnew Triangulo; }

  19. Tiempo de vida • En java el tiempo de vida de una variable u objeto es controlada mediante el “Recolector de Basura”. • Cuando ya no se necesita un objeto simplemente puede dejar de referenciarse. No existe una operación explícita para 'destruir' un objeto o liberar el área de memoria usada por él. • La liberación de memoria la realiza el recolector de basura (garbage collector) que es una función de la JVM. El recolector revisa toda el área de memoria del programa y determina que objetos pueden ser borrados porque ya no tienen referencias activas que los apunten. El recolector de basura actua cuando la JVM lo determina (tiene un mecanismo de actuación no trivial).

  20. Tiempo de Vida II • El método finalize es invocando por la JVM antes de liberar la memoria por el recolector de basura, o antes de terminar la JVM. No existe un momento concreto en que las áreas de memoria son liberadas, sino que lo determina en cada momento la JVM en función de sus necesidades de espacio.

  21. OBJETOS & CLASES Clases • Las clases son el mecanismo por el que se pueden crear nuevos Tipos en Java. Las clases son el punto central sobre el que giran la mayoría de los conceptos de la Orientación a Objetos. • Una clase es una agrupación de datos y de código que actúa sobre esos datos, a la que se le da un nombre. 

  22. Clase II • Una clase contiene: • Datos (se denominan Datos Miembro). Estos pueden ser de tipos primitivos o referencias. • Métodos (se denominan Métodos Miembro). • Sintaxis general:

  23. Objetos • Un objeto es una instancia (ejemplar) de una clase. La clase es la definición general y el objeto es la materialización concreta (en la memoria del ordenador) de una clase. El fenómeno de crear objetos de una clase se llama instanciación

  24. Objetos II • Los objetos se manipulan con referencias. Una referencia es una variable que apunta a un objeto. Las referencias se declaran igual que las variables de Tipos primitivos (tipo nombre). Los objetos se crean (se instancian) con el operador de instanciación new. La referencia no apunta a ningún sitio. A los miembros de un objeto se accede a través de su referencia usando el operador “.”. La sintaxis es: • nombre_referencia.miembro Ejemplo: Punto p;p = new Punto();Punto q = new Punto(); //MIEMBROSp.x = 1;p.y = 3;

  25. Excepciones • Java tiene mecanismos para excepciones que permiten ver qué excepción se ha producido e intentar recuperarse de ella • La palabra clave finally define un bloque de código que se quiere que sea ejecutado siempre, de acuerdo a si se capturó la excepción o no. • Se pueden definir excepciones propias, no hay por qué limitarse a las predefinidas; bastará con extender la clase Exception y proporcionar la funcionalidad extra que requiera el tratamiento de esa excepción. También pueden producirse excepciones no de forma explícita, sino de forma implícita cuando se realiza alguna acción ilegal o no válida.

  26. Excepciones II • Las excepciones, pueden originarse de dos modos: el programa hace algo ilegal (caso normal), o el programa explícitamente genera una excepción ejecutando la sentencia throw (caso menos normal). La sentencia throw tiene la siguiente forma: • throw ObtejoExcepction; • El objeto ObjetoException es un objeto de una clase que extiende la clase Exception.Las excepciones predefinidas, como ArithmeticException, se conocen como excepciones runtime. Actualmente, como todas las excepciones son eventos runtime, sería mejor llamarlas excepciones irrecuperables. Esto contrasta con las excepciones que generamos explícitamente, que suelen ser mucho menos severas y en la mayoría de los casos podemos recuperarnos de ellas.

  27. Excepciones III • Excepciones Comunes • ArithmeticException • Las excepciones aritméticas son típicamente el resultado de una división por 0: • int i = 12 / 0; • NullPointerException • Se produce cuando se intenta acceder a una variable o método antes de ser definido: class Hola extends Applet { Image img; paint( Graphics g ) { g.drawImage( img,25,25,this ); } }

  28. Excepciones IV • IncompatibleClassChangeException • El intento de cambiar una clase afectada por referencias en otros objetos, específicamente cuando esos objetos todavía no han sido recompilados. • ClassCastException • El intento de convertir un objeto a otra clase que no es válida. • y = (Prueba)x; // donde x no es de tipo Prueba

  29. Excepciones V • NegativeArraySizeException • Puede ocurrir si hay un error aritmético al intentar cambiar el tamaño de un array. • OutOfMemoryException • El intento de crear un objeto con el operador new ha fallado por falta de memoria. Y siempre tendría que haber memoria suficiente porque el garbage collector se encarga de proporcionarla al ir liberando objetos que no se usan y devolviendo memoria al sistema. • NoClassDefFoundException • Se referenció una clase que el sistema es incapaz de encontrar.

  30. Excepciones VI • ArrayIndexOutOfBoundsException • Es la excepción que más frecuentemente se produce. Se genera al intentar acceder a un elemento de un array más allá de los límites definidos inicialmente para ese array. • UnsatisfiedLinkException • Se hizo el intento de acceder a un método nativo que no existe. Aquí no existe un método a.kk class A { native void kk(); } y se llama a a.kk(), cuando debería llamar a A.kk().

  31. Capturación de Excepciones • Cualquier método que lance una excepción también debe capturarla, o declararla como parte de la interface del método. Las excepciones no simplifican el trabajo del control de errores. Tienen la ventaja de que se puede tener muy localizado el control de errores y no tenemos que controlar millones de valores de retorno, pero no van más allá. • Las excepciones lanzadas por un método que pueda hacerlo deben recoger en bloque try/catch o try/finally.

  32. Capturar Excepciones II try • Es el bloque de código donde se prevé que se genere una excepción. El bloque try tiene que ir seguido, al menos, por una cláusula catch o una cláusula finally catch • Es el código que se ejecuta cuando se produce la excepción.. En este bloque tendremos que asegurarnos de colocar código que no genere excepciones. Se pueden colocar sentencias catch sucesivas, cada una controlando una excepción diferente. No debería intentarse capturar todas las excepciones con una sola cláusula.

  33. Capturar Excepciones III • Se pueden controlar grupos de excepciones, es decir, que se pueden controlar, a través del argumento, excepciones semejantesEl operador instanceof se utiliza para identificar exactamente cual ha sido la identidad de la excepción.

  34. Capturar Excepciones IV finally • Es el bloque de código que se ejecuta siempre, haya o no excepción. Hay una cierta controversia entre su utilidad, pero, por ejemplo, podría servir para hacer un log o un seguimiento de lo que está pasando, porque como se ejecuta siempre puede dejarnos grabado si se producen excepciones y nos hemos recuperado de ellas o no. • Este bloque finally puede ser útil cuando no hay ninguna excepción. Es un trozo de código que se ejecuta independientemente de lo que se haga en el bloque try.

  35. Propagación de Excepciones • La cláusula catch comprueba los argumentos en el mismo orden en que aparezcan en el programa. Si hay alguno que coincida, se ejecuta el bloque y sigue el flujo de control por el bloque finally (si lo hay) y concluye el control de la excepción. • Si ninguna de las cláusulas catch coincide con la excepción que se ha producido, entonces se ejecutará el código de la cláusula finally (en caso de que la haya). Lo que ocurre en este caso, es exactamente lo mismo que si la sentencia que lanza la excepción no se encontrase encerrada en el bloque try.

More Related