ICOM 4015- PROGRAMACION AVANZADA Instructor: Héctor M Lugo Cordero e-mail: hector.lugo@ece.uprm.edu Laboratorio 3 – Métodos, Parámetros y Conversiones I Teoría En esta práctica aprenderán a crear clases en el lenguaje de programación de Java. A dicha clase le crearán una lista de métodos los cuales efectuarán las operaciones que dicha clase podrá realizar. Antes de proceder es necesario entender que es una clase. Una clase es un archivo que define un objeto y su comportamiento. Un objeto es un tipo de dato que tiene propiedades en común y es capaz de realizar ciertas operaciones a las que denotamos métodos. A continuación se les muestra la estructura de un método: <tipo_de_acceso> <tipo_de_retorno> <nombre_del_metodo>([parámetros …]){ Cuerpo del método } Note que la lista de parámetros es opcional y que un método puede recibir más de un parámetro. Los parámetros se escriben de la forma <tipo_de_dato> <nombre_de_la_variable> y son separados entre si por una coma (,). Ejemplo: public double MyPow(double r, int exp) { double result = r; for(int i = 1; i < exp; ++i) { result = result*r; } return result; } Dentro de una clase hay un método cuyo nombre es el mismo de la clase y no tiene tipo de retorno. A este método se le conoce como el constructor de la clase, el cual crea el objeto de dicha clase. 1 Ejemplo: public class MyClass{ private Object data; public MyClass() { data = new Object(); //creación e inicialización del objeto } } Tipos de acceso de un método: Acceso Descripción private El campo o el método sólo podrán ser vistos dentro de la misma clase. public El campo o el método podrán ser vistos fuera de la misma clase. protected Especifica que el campo/método está protegido y para poder ser utilizados deben ser implementados. package Agrupa en librerías una serie de clases. static Más bien modifica el acceso. Especifica que el valor de la variable no será cambiado y será el mismo para todas las instancias que existan del objeto. 2 Tipos de datos primitivos y conversiones: Tipo de dato “Wrapper Class” Descripción byte Byte utilizado para almacenar 8 bits con signo (números enteros entre -128 y 127) short Short Utilizado para almacenar números enteros entre -32768 y 32767 int Integer utilizado para almacenar números enteros entre - 2147483648 y 2147483647 long Long Utilizado para almacenar números enteros entre 9223372036854775808 y 9223372036854775807 float Float número con cifra decimal MIN_VALUE = 1.4E-45 MAX_VALUE = 3.4028235E38 double Double número con mayor precisión que float MIN_VALUE = 4.9E-324 MAX_VALUE = 1.7976931348623157E308 boolean Boolean almacena valores lógicos de cierto/falso char Character representa un caracter alfa-numérico, para cadena de caracteres utilizar el objeto String void Void se utiliza para representar la ausencia de valor Los “Wrapper Classes” vistos en la tabla superior son utilizados por el lenguaje para convertir un dato primitivo a un objeto para cuando sea necesario en la aplicación. Más adelante estudiarán programación genérica donde los datos deben de estar siempre en un objeto. 3 Existen también otras técnicas de conversiones. Las mismas envuelven utilizar los métodos brindados por las clases de objetos para los datos primitivos (valueOf, parseInt, parseDouble, etc.) o hacer la conversión mediante una técnica conocida como “casting”. Ejemplos: A. Variable numérica a variable numérica: int nro1 = 10; double nro2 = 3.1416; nro1 = (int)nro2; casting B. Variable numérica a string int numero1 = 50; String cad1 = String.valueOf(numero1); C. Variable numérica a objeto numérico Caso 1: usando constructor int nro3 = 80; Float nro4 = new Float(nro3); Caso 2: ya existe el objeto numérico Double nro5 = new Double(0); int nro6 = 30; nro5=Double.valueOf(String.valueOf(nro6)); D. String to variable numérica String cad2 = new String("3.5"); double nro8 = 0; nro8 = Double.parseDouble(cad2); E. String a Objeto numérico String cad3 = new String("50"); Double nro10 = new Double(0); nro10 = nro10.valueOf(cad3); 4 II Ejercicios Concatenación y comparación de cadenas. A. Usando el método CONCAT de la clase String implemente una clase que: //Declare los Strings: String cadena1 = "estaba”; String cadena2 = "desperto,"; String cadena3 = "alli"; String cadena4 = "todavía"; String cadena5 = "el dinosaurio"; String cadena6 = "Cuando"; //Construya la oración "Cuando desperto, el dinosaurio todavía estaba alli". B. Compare los nombres usando el método compareTo de la clase String. //Declare los Strings: String nombre1 = "Maria"; String nombre2 = "Isabel"; String nombre3 = "Luis"; String nombre4 = "Victor"; String nombre5 = "Isabel"; //Compare los nombres de: //Victor e Isabel //Luis y Maria //Maria y Victor //Isabel con Isabel //Describa como es que sabe si un nombre difiere o es igual a otro C. Escriba un programa que dados los String: a1 = "3" y a2 = "2". Luego almacene los valos en int num1 e int num2 respectivamente. Halle el coeficiente num1/num2 y verifique su resultado. Ahora haga las correcciones necesarias para que el resultado salga con sus cifras decimales. D. Cree una clase Complex que represente números en coordenadas rectangulares (a+bi) y realice las operaciones de: Suma, Resta y Conjugado Complejo. Recomendación: Resta C1 + C2*. C1 = a + bi; C2 = c + di. C1 + C2 = (a + c) + (b + d)i. 5