La programación orientada a objetos en Java define clases que describen objetos y sus propiedades (atributos) y comportamientos (métodos). Se presentan ejemplos de clases como Rectángulo y Persona. La herencia permite que las subclases extiendan las propiedades y comportamientos de las superclases.
10. Clases Abstracción que describe propiedades y comportamientos importantes para una aplicación e ignora lo restante. Describe un conjunto posiblemente infinito de objetos individuales. Los elementos de este conjunto tienen propiedades semejantes ( atributos ), como el comportamiento ( operaciones ) y las relaciones (ejemplo, enlaces ) con otros objetos , semejantes.
11. Como una colección de campos y métodos (funciones y procedimientos) que trabajan juntos para acometer una tarea específica de programación. Clases
12. Una clase es una pantilla implementada en software que describe un conjunto de objetos con atributos y comportamiento similares. Una instancia u objeto de una clase es una representación concreta y específica de una clase y que reside en la memoria del ordenador. Ejemplo Clase
13. Objeto Un elemento independiente de un programa de computadora que representa un numero de recursos relacionados y es proyectado para cumplir tareas específicas.
14. Atributos Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.
16. Método Es un conjunto de instrucciones que realizan una determinada tarea. Son similares a las funciones de los lenguajes estructurados.
17. Del mismo modo que hay variables de instancia y de clase , también hay métodos de instancia y de clase. En el primer caso, un objeto llama a un método para realizar una determinada tarea, en el segundo, el método se llama desde la propia clase . Métodos de instancia y de clase
18.
19.
20. Crear una clase Se utiliza la palabra reservada class y a continuación el nombre de la clase. La definición de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase empieza por letra mayúscula. Ejemplo: class Rectangulo{ //miembros dato //funciones miembro }
21. Crear clase class mamifero { String color; String sex; boolean hambre; } Se crean tres variables de instancias. Faltan métodos. Nota Nota
22. Métodos void alimentarMamifero () { If (hambre == true) { System.out.printl (“dale comida al animalito”); hambre=false; }else System.out.printl (“El animal esta en forma”); } // Hay mas
23. class mamifero { String color; String sex; boolean hambre; } void alimentarMamifero () { If (hambre == true) { System.out.printl (“dale comida al animalito”); hambre=false; }else System.out.printl (“El animal esta en forma”); } //Hay mas Hasta ahora tenemos
24. Falta un método void showAttributes () { System.out.printl (“Este es un” + sexo+”” +color+”mamifero”); If (hambre == true) System.out.printl (“El animal esta con hambre”); else System.out.printl (“El animal esta lleno”); }
25. class mamífero { String color; String sex; boolean hambre; } void alimentarMamifero () { If (hambre == true) { System.out.printl (“dale comida al animalito”); hambre=false; }else System.out.printl (“El animal esta en forma”); } void showAttributes () { System.out.printl (“Este es un” + sexo+”” +color+”mamifero”); If (hambre == true) System.out.printl (“El animal esta con hambre”); else System.out.printl (“El animal esta lleno”); }
26. Ejecutar el programa mamifero.class Producirá un error del tipo: In class mamifero :void main (string []) is not defined. Ocurre porque el interpretador asume que se trata de una aplicación, cuando se intenta ejecutar en la línea de comando.
27.
28. Los miembros dato Los valores de los atributos se guardan en los miembros dato o variables de instancia. Los nombres de dichas variables comienzan por letra minúscula, como ya hemos visto.
29.
30.
31. Ámbito de una variable No se puede declarar una variable con el mismo nombre que una de ámbito exterior. Ejemplo. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal. Class Ambito { int i = 1; // ámbito exterior { // crea un nuevo ámbito int i = 2; // error de compilación } }
32. Vamos a crear otra clase denominada Rectángulo, que describa las características comunes a estas figuras planas que son las siguientes: El origen del rectángulo: el origen o posición de la esquina superior izquierda del rectángulo en el plano determinado por dos números enteros x e y. Las dimensiones del rectángulo: ancho y alto, otros dos números enteros Otro ejemplo
33. class Rectangulo{ int x; int y; int ancho; int alto; //faltan las funciones miembro } Clase rectángulo
34. Las funciones miembro En el lenguaje C++ las funciones miembro se declaran, se definen y se llaman. En el lenguaje Java las funciones miembro o métodos solamente se definen y se llaman. Como ya vimos el nombre de las funciones miembro o métodos comienza por letra minúscula y deben sugerir acciones (mover, calcular, etc.).
35. Forma general tipo nombreFuncion(tipo parm1, tipo parm2, tipo parm3){ //...sentencias } Entre las llaves de apertura y cierre se coloca la definición de la función. tipo indica el tipo de dato que puede ser predefinido int, double, etc, o definido por el usuario, una clase cualquiera.
36. Llamar a un función miembro o método retorno=objeto.nombreFuncion(arg1, arg2, arg3); Cuando se llama a la función, los argumentos arg1, arg2, arg3 se copian en los parámetros parm1, parm2, parm3 y se ejecutan las sentencias dentro de la función. La función finaliza cuando se llega al final de su bloque de definición o cuando encuentra una sentencia return. Cuando se llama a la función, el valor devuelto mediante la sentencia return se asigna a la variable retorno.
37. Cuando una función no devuelve nada se dice que es de tipo void. void funcion(....){ //sentencias... } VOID
38. Puede finalizar antes del llegar al final de su definición void funcion(....){ //sentencias... if(condicion) return; //sentencias.. } Una función
39. Puede devolver un valor (un tipo de dato primitivo o un objeto). double funcion(....){ double suma=0.0; //sentencias... return suma; } Una función
40. Cualquier variable declarada dentro de la función tiene una vida temporal, existiendo en memoria, mientras la función esté activa. Se trata de variables locales a la función. Por ejemplo: void nombreFuncion(int parm){ //... int i=5; //... } La variable parm, existe desde el comienzo hasta el final de la función. La variable local i, existe desde el punto de su declaración hasta el final del bloque de la función. Vida de las variables
41. EJEMPLO: La clase Rectángulo Calcular el área: class Rectangulo{ int x; int y; int ancho; int alto; int calcularArea(){ return (ancho*alto); } }
42. La función no devuelve nada es de tipo void. class Rectangulo{ int x; int y; int ancho; int alto; void desplazar(int dx, int dy){ x+=dx; y+=dy; } } Desplazar el rectángulo
43. La función que determina si un punto está o no en el interior del rectángulo, devolverá true si el punto se encuentra en el interior del rectángulo y devolverá false si no se encuentra, es decir, será una función del tipo boolean . La función necesitará conocer las coordenadas de dicho punto. Determinar si un punto pertenece a un rectángulo
44. Para que un punto de coordenadas x1 e y1 esté dentro de un rectángulo cuyo origen es x e y, y cuyas dimensiones son ancho y alto, se deberá cumplir a la vez cuatro condiciones x1>x y a la vez x1<x+ancho También se debe cumplir y1>y y a la vez y1<y+alto Como se tienen que cumplir las cuatro condiciones a la vez, se unen mediante el operador lógico AND simbolizado por &&. Para ello
45. class Rectangulo{ int x; int y; int ancho; int alto; boolean estaDentro(int x1, int y1){ if((x1>x)&&(x1<x+ancho)&&(y1>y)&&(y1<y+alto)) { return true; } return false; } } Solución
46. Herencia Con la herencia definiremos nuevas clases ( subclases ) a partir de clases ya existentes ( superclases ) adaptando el código de esta última o añadiendo nuevo código pero “sin tocar” la clase original, es decir sin afectar la funcionalidad ya existente para la superclase .
47. Herencia La herencia permite expresar jerarquías de tipos que favorecen un mejor modelado y diseño a la vez que permiten obtener mas flexibilidad gracias al polimorfismo y el principio de sustitución
48. ¿ Cómo se dice en java que una clase está heredando de otra? class nombreSubClase extends nombreSuperClase { ...... }
49. abstract Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia. final Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final. public Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas. Tipos de clases
50. Resumen Clase : Un modelo para un objeto que contiene variables para describirlos y métodos para describir como ellos se comportan. Las clases pueden heredar variables y métodos de otras clases. Objeto: Una instancia de una clase. Varios objetos que sean instancia de la misma clase tienen acceso a los mismos métodos, pero frecuente mente tienen valores diferentes para sus variables.
51. Método: Un grupo de instrucciones en una clase que define como los los objetos de la clase se comportan. Los métodos son análogos a las funciones en otros lenguajes, pero siempre deben estar localizados dentro de una clase. Método de instancia, variable de clase, variable de instancia Resumen
52. Fin de la clase Próximo tema: Clases y superclases
53. Nota 1 En el lenguaje Java, si la primera condición es falsa no se evalúan las restantes expresiones ya que el resultado es false. Ahora bien, si la primera es verdadera true, se pasa a evaluar la segunda, si ésta es falsa el resultado es false, y así sucesivamente.
54. Nota 2 Un String es un termino genérico que significa un grupo de caracteres, pero un objeto String es creado en Java usando una de las clases patrones de Java. Una clase String es usada para almacenamiento de texto y para muchas funciones de tratamiento de texto .
55. Nota 3 Las booleanas representan un tipo especial de variables que solo pueden contener el valor true o false. ASl contrario de otros lenguajes en java los valores booleanos no poseen valores numéricos donde uno es equivalente a true y 0 equivalente a false.
56. Nota 4 Esta línea es una línea de comentario. Los comentarios se ponen para que alguien que esta revisando el código fuente sepa lo que se esta haciendo. A la computadora no le interesa. En la clase mamífero se esta usando para indicar que se sustituirá por algo.
57. Nota 5 El método main es declarado de esta forma y la primera línea será siempre parecida a la vista en el programa
58. Nota 6 Con mamifero a = new mamifero(); se crea un nuevo objeto de la clase mamifero y almacena una referencia a este objeto en una variable llamada a. Normalmente en java no se opera directamente sobre las clases. Se crean objetos y se llama a los métodos de esos objetos para operarla.