C2 clases en java

59
Java Dr. Febles La programación orientada a objetos java

Transcript of C2 clases en java

Page 1: C2 clases en java

Java Dr. Febles

La programación orientada a objetos

java

Page 2: C2 clases en java

Java Dr. Febles

De la clase de ayer

PREGUNTAS

Page 3: C2 clases en java

Java Dr. Febles

• Java.

• JVM.

•POO.

Qué es:

Page 4: C2 clases en java

Java Dr. Febles

• Independencia de plataforma.

•No es necesario liberar la memoria

Que significa:

Page 5: C2 clases en java

Java Dr. Febles

•Tres funciones de la JVM

•Tres virtudes de Java

Diga

Page 6: C2 clases en java

Java Dr. Febles

La programación orientada a objetos

java

Page 7: C2 clases en java

Java Dr. Febles

Temas

•La organización de los programas en elemento llamados objetos

•La definición de clases a partir de elementos de su estructura

•La herencia de clases

Page 8: C2 clases en java

Java Dr. Febles

Objetivos

•Entender el concepto de clases

•Entender el concepto de Objeto

•Entender el concepto de método.

•Tener nociones de Herencia

Page 9: C2 clases en java

Java Dr. Febles

Pensando en términos de objetos

Un programa

3.Conjunto de instrucciones que dicen a la computadora que hacer.

2. Un grupo de pequeños programas que responden a eventos específicos

La POO ve un programa como un conjunto de objetos que trabajan juntos de manera predefinida para realizar tareas.

Page 10: C2 clases en java

Java Dr. Febles

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.

Page 11: C2 clases en java

Java Dr. Febles

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

Page 12: C2 clases en java

Java Dr. Febles

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

Page 13: C2 clases en java

Java Dr. Febles

Objeto

Un elemento independiente de un programa de computadora que representa un numero de recursos relacionados y es proyectado para cumplir tareas específicas.

Page 14: C2 clases en java

Java Dr. Febles

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.

Page 15: C2 clases en java

Java Dr. Febles

Comportamiento

El comportamiento de los objetos de una clase se implementa mediante funciones miembro o métodos.

Page 16: C2 clases en java

Java Dr. Febles

Método

Es un conjunto de instrucciones que realizan una determinada

tarea. Son similares a las funciones de los lenguajes

estructurados.

Page 17: C2 clases en java

Java Dr. Febles

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

Page 18: C2 clases en java

Java Dr. Febles

Ejemplos de clases

• Clase personas (atributos: nombre, edad, dirección; operaciones: actualizar_edad, cambiar_dirección).

• Clase polígonos (atributos: vértices, color del borde y color del interior; operaciones: diseñar, borrar y mover).

Nota: Cada objeto es denominado instancia de su clase.

Page 19: C2 clases en java

Java Dr. Febles

Ejemplos de Instancias de las clases

•(Juan, 30, calle 12 # 125 ...)

•(María, 45, calle14 # 300 ...)

•Triángulo 1 ((0,0),(1,0),(0,1)), negro, blanco),

•Triángulo 2 ((0,0),(1,0),(0,1)), negro, blanco),

•Rectángulo 1 ((0,0),(1,0),(1,2),(0,2)), azul, rojo),

•Cuadrado 1 ((0,0),(1,0),(1,1),(0,1)), verde, amarillo).

Page 20: C2 clases en java

Java Dr. Febles

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}

Page 21: C2 clases en java

Java Dr. Febles

Crear clase

class mamifero {

String color;

String sex;

boolean hambre;

}Se crean tres variables de instancias. Faltan métodos.

Nota

Nota

Page 22: C2 clases en java

Java Dr. Febles

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

Page 23: C2 clases en java

Java Dr. Febles

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

Page 24: C2 clases en java

Java Dr. Febles

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”); }

Page 25: C2 clases en java

Java Dr. Febles

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”); }

Page 26: C2 clases en java

Java Dr. Febles

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.

Page 27: C2 clases en java

Java Dr. Febles

Cuando una aplicación se ejecuta

•El punto de partida de un programa es su método main.

•Como la clase mamifero no posee un método main el interprete no sabe que hacer con el.

Page 28: C2 clases en java

Java Dr. Febles

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.

Page 29: C2 clases en java

Java Dr. Febles

Solución

Dos formas:

2.Crear una aplicación o un applets separada que utilice esta clase.

3.Incluir un método main() en la clase mamífero de manera que ella pueda ser ejecutada directamente.

Page 30: C2 clases en java

Java Dr. Febles

Crear un método main

public static void main (String arguments[] {

mamifero a = new mamifero();

a.color=“orange”;

a.sex= “male”;

a.hambre=“true”;

System.out.printl(“calling showAtributtes…”);

a.showAtributtes();

System.out.printl(“-------”);

System.out.printl(“Alimentando al mamifero…”);

a.alimentarMamifero();

System.out.printl(“-------”);

System.out.printl(“calling showAtributtes…”);

a.showAtributtes();

System.out.printl(“-------”);

System.out.printl(“alimentando al mamifero…”);

a.alimentarMamifero();

}

Creando un método main

Page 31: C2 clases en java

Java Dr. Febles

Á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 } }

Page 32: C2 clases en java

Java Dr. Febles

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

Page 33: C2 clases en java

Java Dr. Febles

class Rectangulo{int x;int y;int ancho;int alto;//faltan las funciones miembro}

Clase rectángulo

Page 34: C2 clases en java

Java Dr. Febles

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.).

Page 35: C2 clases en java

Java Dr. Febles

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.

Page 36: C2 clases en java

Java Dr. Febles

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.

Page 37: C2 clases en java

Java Dr. Febles

Cuando una función no devuelve nada se dice que es de tipo void.

void funcion(....){//sentencias...}

VOID

Page 38: C2 clases en java

Java Dr. Febles

Puede finalizar antes del llegar al final de su definiciónvoid funcion(....){//sentencias...if(condicion) return;//sentencias..}

Una función

Page 39: C2 clases en java

Java Dr. Febles

Puede devolver un valor (un tipo de dato primitivo o un objeto). double funcion(....){double suma=0.0;//sentencias...return suma;}

Una función

Page 40: C2 clases en java

Java Dr. Febles

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

Page 41: C2 clases en java

Java Dr. Febles

EJEMPLO: La clase Rectángulo

Calcular el área:class Rectangulo{int x;int y;int ancho;int alto; int calcularArea(){return (ancho*alto); }}

Page 42: C2 clases en java

Java Dr. Febles

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

Page 43: C2 clases en java

Java Dr. Febles

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

Page 44: C2 clases en java

Java Dr. Febles

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

Page 45: C2 clases en java

Java Dr. Febles

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

Page 46: C2 clases en java

Java Dr. Febles

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.

Page 47: C2 clases en java

Java Dr. Febles

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

Page 48: C2 clases en java

Java Dr. Febles

¿ Cómo se dice en java que una clase está heredando de otra?

class nombreSubClase extends nombreSuperClase

{

......

}

Page 49: C2 clases en java

Java Dr. Febles

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

Page 50: C2 clases en java

Java Dr. Febles

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.

Page 51: C2 clases en java

Java Dr. Febles

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

Page 52: C2 clases en java

Java Dr. Febles

Fin de la clase

Próximo tema: Clases y superclases

Page 53: C2 clases en java

Java Dr. Febles

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.

Page 54: C2 clases en java

Java Dr. Febles

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.

Page 55: C2 clases en java

Java Dr. Febles

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.

Page 56: C2 clases en java

Java Dr. Febles

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.

Page 57: C2 clases en java

Java Dr. Febles

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

Page 58: C2 clases en java

Java Dr. Febles

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.

Page 59: C2 clases en java

Java Dr. Febles