2. Contenidos tema 3 – Introducción a Java Comenzamos Bases del lenguaje Java Programación Orientada a Objetos (OOP) Clases y objetos Creando clases Paquetes y java classpath Javabeans Herencia Clases abstractas e interfaces Polimorfismo Clases internas Excepciones Logging Networking 2
3. Contenidos de este tema 3 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
4. Contenidos de este tema 4 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
12. 7 Trabajando con clases built-in OOP, Programación Orientada a Objetos Es una de las características principales de Java Estos objetos definen propiedades y métodos
13. 8 Trabajando con clases built-in OOP trata de reproducir el mundo real, basándose en objetos. Estos objetos están definidos por sus: Propiedades (o características) Métodos (o acciones que pueden hacerse sobre ellos) Imaginemos un objeto COCHE: Propiedades: color, matrícula, número puertas, … Métodos: arrancar, parar, consultar kilómetros, …
14. Contenidos de este tema 9 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
15. 10 Encapsulación OOP trata de reproducir el mundo real, basándose en objetos. Estos objetos están definidos por sus: Propiedades (o características) Métodos (o acciones que pueden hacerse sobre ellos) Imaginemos un objeto COCHE: Propiedades: color, matrícula, número puertas, … Métodos: arrancar, parar, consultar kilómetros, …
16. 11 Encapsulación Lo podemos considerar como un esquema de caja negra Se sabe lo que necesita en la entrada, y lo que produce, pero no cómo lo hace internamente. Esto nos asegura que la implementación puede cambiar sin afectar al resultado y sin tener que modificar la llamada al método
17. Contenidos de este tema 12 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
18. 13 Clases y objetos Clase Podemos considerala como una plantilla, un prototipo Es la estructura fundamental en la OOP Objeto Propiedades Especifican los datos definidos en la clase Métodos Especifican las operaciones sobre las propiedades. También definidos en la clase. Un objeto es una instancia de una clase Los valores de las propiedades de una instancia son diferentes de los de otra/s instancia/s Las instancias de la misma clase comparten los mismos métodos
19. Contenidos de este tema 14 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
21. Contenidos de este tema 16 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
22. 17 Creación de instancias Para crear una instancia de una clase, usamos el operador new Por ejemplo, si queremos crear una instancia de la clase String, escribimos el siguiente código: La clase String es especial, es la única que puedes crear sin usar la palabra reservada new String str2 = new String(“Hello world!”); o String str2 = "Hello world!“;
23. 18 Creación de instancias El operador new: Reserva memoria para el objeto y retorna una referencia de la memoria Cuando creas un objeto se invoca el constructor de la clase El constructor: Es un método especial que ejecuta las inicializaciones, tiene el mismo nombre de la clase
24. Contenidos de este tema 19 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
25. 20 Métodos Es un trozo de código que lleva a cabo una acción más o menos compleja y que puede ser invocado Características de los métodos: Puede retornar un valor o ninguno Se le pueden pasar cuantos parámetros (argumentos) se quieran Después de finalizar la ejecución del método pasa el control al método que lo ha invocado
26. 21 Métodos Los métodos contienen un propósito (lógica de negocio) La solución a veces pasa por la descomposición del problema en varios métodos Esto lo podemos hacer en Java creando cuantos métodos sean necesarios La experiencia es la única buena consejera para valorar el ámbito de acción de un determinado método
27. 22 Métodos Dos tipos de métodos: De instancia: Se deben llamar después de crear la instancia Son los más comunes Static Se llaman de la forma [ClassName].[methodName]
28. 23 Métodos Para ilustrar cómo llamar a los métodos, vamos a usar la clase String como ejemplo: Puedes usar la Java API documentation para ver la referencia completa de todos los métodos de la clase String Después crearemos métodos propios, pero de momento vamos a usar String para probar Para llamar a un método escribimos lo siguiente: nombreDelObjeto.nombreDelMetodo(parametros); String strInstancia1 = new String (“soy una instancia de la clase String”); char x = strInstancia1.charAt(2);
29. 24 Métodos Vamos a ver dos ejemplos de la clase String: public char charAt (int index); public boolean equalsIgnoreCase (String cadena); Un ejemplo: String str1 = "Hello"; char x = str1.charAt(0); //will return the character H //and store it to variable x String str2 = "hello"; //this will return a boolean value true boolean result = str1.equalsIgnoreCase( str2 );
30. 25 Métodos Métodos static: Se pueden invocar sin instanciar la clase Pertenece a la clase y no a una determinada instancia Se distinguen de los métodos de una instancia por la palabra reservada static Para invocar un método static: NombreClase.nombreMetodoStatic (parametros);
31. 26 Métodos Ejemplos de métodos static: //converts the String 10, to an integer int i = Integer.parseInt(“10”); //Returns a String representation of the integer argument as // an unsigned integer base 16 String hexEquivalent = Integer.toHexString( 10 );
32. Contenidos de este tema 27 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
33. 28 Paso de parámetros Paso por valor Cuando un pass-by-value ocurre, el método crea una copia de la variable pasada. De esta manera, el método no puede modificar accidentalmente el valor original, aunque modifigue los parámetros durante los cálculos. Todos los datos de tipos primitivos son pass-by-value
35. 30 Paso de parámetros Paso por referencia Cuando ocurre un pass-by-reference, la referencia al objeto es pasada al método llamador. Esto significa que el método crea una copia de la referencia de la variable pasada al método. Sin embargo, a diferencia del paso por valor, el método puede modificar el objeto actual al cual la referencia está apuntando es la misma
37. Contenidos de este tema 32 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
38. 33 Variables Son los identificadores de datos. En Java los llamamos PROPIEDADES Contienen valores que queremos guardar a lo largo de un determinado tiempo de ejecución Hay 3 tipos de variables: Local (automatic): Declarada dentro de método Visible sólo dentro del método Se mantiene internamente en pila Instancia Declarada dentro del cuerpo de instancia, pero fuera de cualquier método Pertenece a la propia instancia No se puede referir a ella desde el contexto static Class (static) Declarada dentro del cuerpo de clase, pero fuera de cualquier método Va precedida del modificador static Pertenece a la clase Compartida por todas las instancias de la clase
39. Contenidos de este tema 34 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
40. 35 Scope de una variable Determina dónde es accesible la variable dentro del programa. Podemos hablar de ámbito de la variable. Determina, también y por tanto, el ciclo de vida de una variable, o cuánto tiempo estará ésta presente en memoria Es determinado por el lugar de declaración de la variable dentro del programa
41. 36 Scope de una variable Determina dónde es accesible la variable dentro del programa. Podemos hablar de ámbito de la variable. Determina, también y por tanto, el ciclo de vida de una variable, o cuánto tiempo estará ésta presente en memoria Es determinado por el lugar de declaración de la variable dentro del programa
42. 37 Scope de una variable – ejemplo 1 El código que tenemos a continuación representa 5 scopes indicados: The scope of variable i is A. The scope of variable j is B. The scope of variable k is C. The scope of variable m is D. The scope of variable n is E.
43. 38 Scope de una variable – ejemplo 1 En el main los scopes son: ages[] - scope A i in B - scope B i in C – scope C In the test method, the scopes of the variables are, arr[] - scope D i in E - scope E
44. Contenidos de este tema 39 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
45. 40 Casting Significa mapeo de un tipo de objeto a otro Se puede hacer casting de: Tipos de datos primitivos Objetos con herencia El casting entre tipos de datos primitivos habilita la conversión de un tipo de valor en otro Normalmente entre tipos numéricos Hay un tipo de datos primitivos que no podemos hacer Existe un tipo de datos al cual no le podemos hacer casting: boolean Tipos de casting: Implícito Explícito
46. 41 Casting Suponemos que queremos guardar el valor de un int en una variable de tipo double: int numInt = 10; double numDouble = numInt; //implicit cast En este ejemplo se hace un casting implícito, ya que el tipo double soporta un rango mayor de valores que incluye también los de tipo int Otro ejemplo: int numInt1 = 1; int numInt2 = 2; //result is implicitly casted to type double double numDouble = numInt1/numInt2;
47. 42 Casting En el casting explícito están implicadas clases relacionadas por herencia Employee emp = new Employee(); VicePresident veep = new VicePresident(); // no cast needed for upward use emp = veep; // must cast explicitly veep = (VicePresident)emp;
48. Contenidos de este tema 43 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
49. 44 Wrapper classes Muchas de esas clases tienen los mismos nombres que los tipos de datos, excepto que el nombre comienza con una letra mayúscula: Integer es una clase envoltura de la primitiva int Double es una clase envoltura de la primitiva double Long es una clase envoltura de la primitiva long Usando las clases que corresponden a cada tipo de primitiva se puede crear un objeto que recoja el mismo valor
50. 45 Wrapper classes La siguiente sentencia crea una instancia de la clase Integer con un valor entero de 7801: Integer dataCount = new Integer(7801); Y algunos ejemplos más: int newCount = dataCount.intValue(); String pennsylvania = "65000"; int penn = Integer.parseInt(pennsylvania);
51. Contenidos de este tema 46 Programación Orientada a Objetos (OOP) Trabajando con clases built-in Encapsulación Clases y objetos Características Creación de instancias Métodos Paso de parámetros Variables Scope de una variable Casting Wrapper classes Comparación de objetos
53. Es importante que recordeis… “Si haces todos los días lo mismo no llegarás más lejos de lo que otras veces has llegado” Adelante!!! Jesús Muñoz jesus@iluego.com