1 Prof. Gerardo Barrientos 4to. Bachillerato en Computación Estructura de un programa en Java Clases y Objetos 1 2 3 4 5 Como lo hemos mencionado anteriormente Java es un programa orientado a objetos, lo cual quiere decir que se compone solamente de objetos. Un objeto es la concreción de una clase. Una clase equivale a la generalización de un tipo específico de objetos. La clase define los atributos del objeto así como los métodos para manipularlos. Toda aplicación Java está formada por, al menos, una clase que define un método nombrado main, como se muestra a continuación: public class CMiAplicación{ public static void main (String[ ] args){ //código que se desea ejecutar } // fin del método main }fin de la clase. Idea de programación: Una clase que contiene un método main es una plantilla para crear un objeto aplicación que tiene como misión iniciar y finalizar la ejecución de la aplicación. El método main es el punto de entrada y de salida de nuestra aplicación. Pensando en objetos Para explicar cómo es la estructura de un programa Java, vamos a plantear un ejemplo sencillo de un programa que presente una tabla de equivalencia entre grados Centígrados y grados Fahrenheit: Centígrados Fahrenheit -30 -24 -18 -12 -6 -22 -11.20 -0.39 10.39 21.2 La relación viene dada por la expresión: Grados Fahrenheit= 9/5 * GCentígrados+32. Los cálculos los vamos a realizar para un intervalo de -30 a 100 grados centígrados con incrementos de 6. ¿De qué trata este problema? De grados. Podemos, pensar en objetos grados que encapsulen un valor en grados centígrados y los métodos necesarios para asignar al objeto un valor en grados centígrados, así como para obtener su equivalente en Fahrenheit. En base a eso, podríamos escribir una clase CGrados como se puede observar a continuación: 2 Prof. Gerardo Barrientos 4to. Bachillerato en Computación 1 class CGrados{ 2 private float gradosC; //Grados centígrados 3 public void CentigradosAsignar (float gC) { 4 //Establecer el atributo grados centígrados 5 gradosC=gC; 6 } 7 public float FahrenheitObtener(){ 8 //Retornar los grados fahrenheit equivalentes a gradosC 9 return 9F/5F * gradosC+32; 10 } 11 public float CentigradosObtener(){ 12 return gradosC;//Retornar los grados centígrados. 13 } 14 } El código anterior muestra que un objeto de la clase CGrados tendrá una estructura interna formada por el atributo: o gradosC, grados centígrados. Y una interfaz de acceso formada por los métodos: o CentigradosAsignar que permite asignar a un objeto un valor en grados centígrados. o FahrenheitObtener que permite retornar el valor grados Fahrenheit equivalente a gradosC o CentigradosObtener que permite retornar el valor almacenado en el atributo gradosC Ahora bien, recuerde que toda aplicación Java tiene que tener un objeto aplicación, que aporte un método main, por donde empezará y terminará la ejecución de la aplicación. ¿Cómo podemos imaginar esto de forma gráfica? mensajes /respuestas Objeto Aplicación CentigradosAsignar FahrenheitObtener Objeto CGrados ¿Qué debe hacer el objeto Aplicación?: Debe visualizar cuántos grados Fahrenheit son -30, -24 , 18 Centígrados y así sucesivamente hasta llegar a 100. ¿Cómo lo hace? : Debe enviar al objeto CGrados los mensajes CentigradosAsignar y FahrenheitObtener una vez para cada valor desde -30 a 100 grados centígrados con incrementos de 6. El objeto CGrados responderá ejecutando los métodos vinculados con los mensajes que recibe. Veamos ahora el código de la clase que dará lugar al objeto aplicación: import java.lang.System; // importar la clase System public class CApGrados{ // Definición de constantes final static int limInferior = -30; final static int limSuperior = 100; final static int incremento = 6; 3 Prof. Gerardo Barrientos 4to. Bachillerato en Computación public static void main(String[] args) { // Declaración de variables Cgrados grados = new Cgrados(); int gradosCent = limInferior; float gradosFahr = 0; while (gradosCent <= limSuperior) { // Asignar al objeto grados el valor en grados centígrados grados.CentigradosAsignar(gradosCent); // Obtener del objeto grados los grados Fahrenheit gradosFahr = grados.FahrenheitObtener(); // Escribir la siguiente línea de la tabla System.out.println(gradosCent + “ C” + “\t” + gradosFahr + “ F”); // Siguiente valor gradosCent += incremento; } } } Probablemente en este punto se pueda pensar que era más sencillo crear solamente el objeto aplicación y efectuar dentro del método main la operación y mostrar el resultado. Lo cual es completamente cierto. Sin embargo se incluye este ejemplo para demostrar como un programa en Java es un conjunto de objetos que se comunican entre sí mediante mensajes, con el fin de obtener el resultado deseado. Una vez analizado el problema se podrá crear una nueva aplicación, escribiendo la clase CGrados (la cual no es pública). A continuación, escribir, en el mismo archivo pero antes de CGrados la clase aplicación CApGrados (esta clase sí es pública) . Guardar la aplicación con el nombre de la clase aplicación (CApGrados.java), compilar y ejecutar la aplicación. (La aplicación se encuentra adjunta a esta Guía Didáctica para que revise si tiene dudas). Resumen En el ejemplo anterior podemos observar que una aplicación Java consta de: o Sentencias import (para establecer vínculos con otras clases de la biblioteca Java o realizadas por nosotros) o Una clase aplicación pública (la que incluye el método main). o Otras clases no públicas. Sabemos también que una clase encapsula los atributos de los objetos que describe y los métodos para manipularlos. Pues bien, cada método consta de: o Definiciones y / o declaraciones. o Sentencias a ejecutar. En un archivo se pueden incluir tantas definiciones de clase como desee pero sólo una de ellas puede ser declarada public. Cada clase pública debe ser guardada en un archivo con su mismo nombre y extensión .java 4 Prof. Gerardo Barrientos 4to. Bachillerato en Computación Anexo – Aplicación Ejemplo CApGrados.java /** * Conversión de grados centígrados a fahrenheit: F = 9/5 * C + 32 * Ejemplo incluido en la Guía Didáctica de la Semana 4 */ import java.lang.System; // importar la clase System public class CApGrados { // Definición de constantes final static int limInferior = -30; final static int limSuperior = 100; final static int incremento = 6; public static void main(String[] args) { // Declaración de variables CGrados grados = new CGrados(); int gradosCent = limInferior; float gradosFahr = 0; while (gradosCent <= limSuperior){ // Asignar al objeto grados el valor en grados centígrados grados.CentigradosAsignar(gradosCent); // Obtener del objeto grados los grados fahrenheit gradosFahr = grados.FahrenheitObtener(); // Escribir la siguiente línea de la tabla System.out.println(gradosCent + " C" + "\t" + gradosFahr + " F"); // Siguiente valor gradosCent += incremento; } } } /** * Clase CGrados. Un objeto de esta clase almacena un valor en grados centígrados. * Atributos: * gradosC * Métodos: * CentigradosAsignar, FahrenheitObtener y CentígradosObtener */ class CGrados{ private float gradosC; // grados centígrados public void CentigradosAsignar(float gC) { // Establecer el atributo grados centígrados gradosC = gC; } public float FahrenheitObtener() { // Retornar los grados fahrenheit equivalentes a gradosC return 9F/5F * gradosC + 32; } public float CentigradosObtener() { 5 Prof. Gerardo Barrientos return gradosC; // retornar los grados centígrados } } 4to. Bachillerato en Computación