Definición de Clases por parte del usuario/programador Capítulo 4 – Libro: Programación Orientada a objeto con Java – Thomas C. Wu. 4º Semestre – Ing. Informática
Objetivos Definir una clase con múltiples métodos y miembros de datos. Diferenciar entre variables locales y de instancia. Definir y usar los métodos de devolución de valor. Distinguir entre métodos privados y públicos. Pasar tanto datos primitivos como objetos a un método.
Definición y Uso de una Clase Se propone un programa que rastree las bicicletas que se utilizan en un campus universitario al asignarle alguna forma de identificación junto con la información relevante, tal como el nombre y número de teléfono del propietario. Se propone un programa de ejemplo, por tanto se procede a diseñar una clase central que modele una bicicleta. Se entiende que no existe una clase de nombre “Bicicleta” entre el grupo de clases estándares, así que se debe definir una por cuenta del programador.
Definición y Uso de una Clase Clases definidas por el programadorPara el ejemplo que se propone, se podría asignar y recuperar el nombre del propietario. Primero se verá como usar la clase previamente creada de nombre “Bicicleta”. Se crean dos objetos Bicicleta, se les asigna el nombre de los propietarios y luego se visualiza la información por medio de la impresión en pantalla. Para distinguir ésta clase de las demás clases estándares, a la clase bicicleta creada, y otras que se van creando, se lo llama: Clases definidas por el programador.
Archivo fuente RegistraBicicleta BicicletaPara el programa del ejemplo, se crearon dos clases: RegistraBicicleta que seria la clase principal, el cual contiene al método «main», y la otra clase de nombre Bicicleta que es la clase creada por el programador.
Métodos de la clase Bicicleta. El primer método se llama constructor. MétodoParámetroDescripción BicicletaNingunoInicia el nombre del propietario en «Desconocido», que seria el valor por defecto. obtenNomPropietarioNingunoDevuelve el nombre del Propietario. estableceNomPropietarioNombre del Propietario (cadena) Asigna el nombre del propietario de la bicicleta al valor pasado.
Modificador de accesibilidad El miembro de dato de la clase Bicicleta, tiene un modificador llamado private. Este modificador se llama modificador de accesibilidad o modificador de visibilidad y restringe a quien tenga un acceso directo a la miembro de datos. Si el modificador es private, entonces sólo los métodos definidos en la clase pueden tener acceso a él en forma directa.
Definición y uso de una clase. Ejemplo 1: Clase de Nombre Registro de Bicicleta, que sería la clase como Clase principal
Definición y uso de una clase. Ejemplo 1: Clase de Nombre Bicicleta clases definidas por el programador. Para ser distinguida de las clases estándares, llamamos a Bicicleta y a otras clases que definimos, como clases definidas por el programador.
Diagrama de clase El diagrama de dependencia entre las dos clases son: o El resultado sería el siguiente:
Definición y uso de clases múltiples. Se define una clase nueva de nombre «cuenta». Un objeto cuenta, tiene el nombre del propietario (String) y el saldo (double). Se tiene tres métodos, uno constructor, otro agrega y deduce, con el objetivo de depositar y retirar dinero de la cuenta. Se va a usar la clase Bicicleta del Programa Principal, con modificaciones, para que al compilar el nuevo programa principal, funcione la clase Bicicleta, el archivo de la clase Bicicleta, debe estar en la misma carpeta (directorio) del segundo ejemplo.
class SegundaPrincipal
Este programa crea un objeto Bicicleta y un objeto Cuenta, fija el nombre de sus propietarios como «Juan Java», inicia el saldo de la cuenta en $250.00, añade $25.00 a la cuenta, deduce $50.00 de la cuenta y, por último, imprime alguna información de los objetos Bicicleta y Cuenta. El diagrama de clases del programa es:
class Cuenta
//Devuelve el saldo actual de esta cuenta Public double obtenSaldoActual ( ) { return saldo; { //Devuelve el nombre del propietario de esta cuenta public String obtenNomPropietario ( ) { return nomPropietario; } //Establece el saldo inicial a la cuenta public void activaSaldoInicial (double cantidad) { saldo = cantidad; } //Asigna el nombre del propietario de esta cuenta Public void estableceNomPropietario (String nombre) { nomPropietario = nombre; } class Cuenta (continuación)
Diagrama de Clase Cuenta Un diagrama de clase de la clase Cuenta con dos miembros de datos, un constructor y seis métodos.
EJERCICIO DE PRÁCTICA SOBRE CLASES DEFINIDAS POR EL PROGRAMADOR
Definición de métodos Parque de atraccionesSe propone como ejemplo de definición de métodos a un Parque de atracciones, en donde se tienen varias atracciones. Cada atracción será un objeto y se tendrá que crear métodos para controlarlas
Definición de métodos Procede a crear las clases en Java, siguiendo la guía del presente trabajo.
Creación del objeto atracciones
Definición de atributos. Tengan en cuenta a que a los atributos también se los conoce como propiedades. En el paso anterior se definió una objeto de nombre atracciones, ahora se debe asignar sus respectivas propiedades: Nombre de la atracción. Lugar donde está situada. Si está Encendida/Apagada. Velocidad a la que está funcionando.
Definición del comportamiento de las atracciones. Aumentar la velocidad Disminuir la velocidad Apagar o encender Consultar estado (ver un informe que indique si está encendida o apagada y su velocidad)
Definición de una nueva clase En este proyecto se tendrá dos clases: 1.Una que sería la clase principal, desde donde indicaremos las instrucciones y la otra; 2.Donde definir todas las propiedades y métodos.
Clase de Atributos y métodos Hacer clic en el botón derecho sobre el paquete “controlAtracciones”, luego seleccionar New y Java Class.
Nombrar a la clase “Atraccion”En la pantalla que aparece, escribiremos el nombre “Atraccion” como nombre de la clase que tendrá a los atributos y métodos.
Extensión de un proyecto A partir de ahora ya se tendrá dos proyectos: una “Atracción.java” y la otra “ControlAtracciones.java”. Como el último proyecto creado es “Atracción”, esa es la que debería de estar abierto por defecto.
Definición de propiedades Debajo de public class Atraccion { //será donde se escribirá las propiedades y métodos.
Utilización del string y boolean Otros de los dos tipos de datos que son muy utilizados en múltiples lenguajes de programación, incluyendo Java es el String y Boolean. El tipo String sirve para almacenar cadenas de texto.
Utilización del string y boolean El tipo Boolean debe su nombre al inventor del Álgebra de Boole, George Boole. El álgebra de Boole, entre otras cosas, es lo que permite que los ordenadores sean posibles. Es una variable que sólo puede tener dos estados: 1 y 0. En ocasiones, debido a que los lenguajes de programación intentan acercarse al lenguaje humano, pueden utilizarse las expresiones true o false (verdadero o falso) para representar 1 ó 0.
Definición de métodos Debajo de las propiedades se va a añadir los métodos que podremos aplicar al objeto.
Definición de métodos void encender() Void es una palabra especial y reservada del lenguaje java. Este método sólo ejecuta una acción, no trabaja con datos. Al igual que en el párrafo anterior comentábamos que el método no necesita ningún dato para funcionar, tampoco devuelve un dato al final. Si devolviera algún dato, tendríamos que sustituir void por int, string, boolean o el tipo de datos que correspondiera.
Definición de métodos Después tenemos una estructura condicional: if if (encendido==true) Que literalmente se traduce por “Si encendido vale true…”. Lo que haya debajo de esta línea se ejecutará sólo en el caso de que la condición se cumpla.
Definición de métodos Se debe tener claro la diferencia entre el doble igual y el igual simple. Si utilizamos ésta expresión: numero1=10; en este caso había un símbolo =, pero ahora hay dos. Cuando hay dos, lo que hace Java es comparar si lo que hay a la izquierda es igual que lo que hay a la derecha. Un símbolo = -> Es asignación Dos símbolos == -> Es comparación
Definición de métodos System.out.println("Esta atracción ya está funcionando."); Esto ya sabemos lo que hace. Hemos comprobado si la atracción está encendida, en caso de que sea cierto, el programa nos dice que ya está funcionando. Caso contrario se tiene lo siguiente:else{encendido=true; System.out.println("La atracción " + nombre + " se ha encendido."); }
Definición de métodos Es importante fijarse en otro detalle. En la parte del if no hemos utilizado las llaves para “encerrar” el código, aquí en cambio sí. Esto es porque debajo de if sólo había una instrucción pero else tiene dos. Al haber dos instrucciones tenemos que utilizar las llaves obligatoriamente. Si hemos llegado al else (sino), resulta que es porque la atracción no estaba funcionando, de modo que el programa la enciende: encendido = true ;
Definición de métodos Y muestra un mensaje que incluye su nombre indicando que se ha encendido: System.out.println("La atracción " + nombre + "se ha encendido.");
Manipulación de métodos Ahora que se vio cómo se enciende la atracción, intenta escribir el método que permita apagar la atracción. Se puede hacer de varias formas, no hay un método único. Es importante para retener la declaración de código de que se vaya tipeando, no es recomendable copiar y pegar en el editor de código. Programar requiere pensar y es un ejercicio que requiere práctica.
Cambio de velocidad Lo que se visualiza en la siguiente diapositiva es una propuesta de cómo cambiar la velocidad. Básicamente, primero dice la velocidad que tenía la atracción y su nombre, después aumenta o disminuye la velocidad y por último muestra en pantalla la velocidad actualizada.
Descripción del estado Por último, decíamos que necesitábamos un método que nos diera información sobre el estado de la atracción. Simplemente se trata de mostrar las variables por pantalla para que las vea el usuario.
Crear el programa principal Se necesita un método que nos diera información sobre el estado de la atracción. Simplemente se trata de mostrar las variables por pantalla para que las vea el usuario.
Elaborar el programa principal Volvemos al archivo ControlAtracciones haciendo clic en la pestaña correspondiente de la parte superior del panel.
Crear objetos para invocar a los atributos y métodos. Ahora se tiene que crear tantos objetos como atracciones se tenga. Como la clase ya está creada, sólo se debe especificar a Java que se quiere uno nuevo. Escribir lo siguiente dentro del método main: Atraccion Entretenimiento1 = new Atraccion(); Atraccion Entretenimiento2 = new Atraccion();
Crear objetos para invocar a los atributos y métodos. –Estas dos sentencias crea dos objetos de tipo Atraccion: el objeto entretenimiento1 y el objeto entretenimiento2. –Ahora se le debe asignar las propiedades creadas en la clase anterior. //Se establece las propiedades: Entretenimiento1.nombre = “Entretenimiento1”; Entretenimiento1.lugar = “Jockey Club”; Entretenimiento1.encendido = false; Entretenimiento1.velocidad = 1;
Crear objetos para invocar a los atributos y métodos. Entretenimiento2.nombre = “Parque 2”; Entretenimiento2.lugar = “Parque Carlos A. López”; Entretenimiento2.encendido = false; Entretenimiento2.velocidad = 2;
Crear objetos para invocar a los atributos y métodos. /*Ahora se va a mostrar la información del Entretenimiento1 Se subirá la velocidad, se va a encender la atracción y por último mostrar su estado*/ Entretenimiento1.estado(); Entretenimiento1.masrapido(); Entretenimiento1.encender(); Entretenimiento1.estado();
Crear objetos para invocar a los atributos y métodos. Ahora que se ha creado el programa, se debe añadir los objetos y trabajar con ellos. Public static void main(String [] args) { //Se crea los objetos Atracciones Entretenimiento1 = new Atracciones(); Atracciones Entretenimiento2 = new Atracciones();
Crear objetos para invocar a los atributos y métodos. Ahora que se ha creado el programa, se debe añadir los objetos y trabajar con ellos. // Se establece las propiedades Entretenimiento1.nombre = “Parque 1”; Entretenimiento1.lugar = “Jockey Club”; Entretenimiento1.encendido = false; Entretenimiento1.velocidad = 1;
Crear objetos para invocar a los atributos y métodos. Ahora que se ha creado el programa, se debe añadir los objetos y trabajar con ellos. Entretenimiento2.nombre = “Entretenimiento2”; Entretenimiento2.lugar = “Parque Carlos A. Lopez”; Entretenimiento2.encendido = false; Entretenimiento2.velocidad = 2;
Crear objetos para invocar a los atributos y métodos. //Ahora se muestra la información del entretenimiento1. //Se incrementa la velocidad, y se enciende la atracción. //y por ultimo se vuelve a mostrar su estado. Entretenimiento1.estado(); Entretenimiento1.masrapido(); Entretenimiento1.encender(); Entretenimiento1.estado();
El resultado sería lo siguiente: run: Atraccion: Entretenimiento1 Situada en: Jockey Club La atraccion está apagada Su velocidad es: 1 Velocidad anterior de entretenimiento1: 1 Velociada actual de entretenimiento1: 2 La atraccion entrenimiento1 se ha encendido. Atraccion: Entretenimiento1 Situada en: Jockey Club Está encendida Su velocidad es: 2 BUILD SUCCESSFUL (total time: 0 seconds)
Introducir salto de línea. Se puede hacer que una vez que se termine el método, el programa haga un salto de línea para que la información no aparezca tan seguida: AtraccionSólo se tiene que modificar los métodos de la clase Atraccion para que esto ocurra. Añadir la siguiente linea al final de las instrucciones de cada método: System.out.println(“\n”); El código \n lo que hace es insertar un salto de línea.
DESARROLLAR EL TRABAJO DE PROCESO
Ejercicios Propuestos De manera individual resuelve: 1.Lanzamiento de Dados. Pag Tarjetas de Lotería. Pag Calculadora de Préstamo. Pag TP 2.2 Nombre y Apellido Guarda el archivo como: TP 2.2 Nombre y Apellido y publica en la asignación.