You are on page 1of 18
Concepto Los objetos Java modelan objetos que provienen de! dominio de un problema, Concepto Los objetos se crean a partir de clases. La clase describe la categoria del objeto. Los objetos represenian casos individuales de una Principales conceptos que se abordan en este capitulo: @ objetos @ métodos @ clases @ parametros Con este capitulo comienza nuestro viaje por el mundo de la programacién orientada a objetos. Es aqui donde introducimos los conceptos mas importantes que aprenderi: objetos y clases. Al finalizar el capitulo comprendera: qué son los objetos y las clases, para qué se usan y cémo interactuar con ellos. Este capitulo sienta las bases para la exploracién del resto del libro, Objetos y clases Cuando escribe un programa de computacién en un lenguaje orientado a objetos esti crean- do en su computadora un modelo de alguna parte del mundo real. Las partes con que se construye el modelo provienen de los objetos que aparecen en el dominio del problema. tos objetos deben estar representados en el modelo computacional que se esti creando. Los objetos pueden ser organizados en categorias y una clase describe, en forma abs- tracta, todos los objetos de un tipo en particular. Podemos aclarar estas nociones abstractas mediante un ejemplo. Suponga que desea modelar una simulaci6n de trafico, Un tipo de entidad con la que tendra que trabajar es autos. {Qué es un auto en nuestro contexto? {Es una clase o es un objeto? Algunas preguntas nos ayudarin a tomar una decisién. {De qué color es un auto? {Cuan ripido puede marchar? ,Dénde est en este momento? Observari que no podemos responder estas preguntas a menos que hablemos de un auto especifico. La raz6n es que, en este contexto, la palabra «auto» refiere a la clase auto puesto que estamos hablando de los autos en general y no de uno en particular. Gare Si digo «Mi viejo auto se encuentra estacionado en el garaje de casa», p. ponder todas las preguntas anteriores: este auto es rojo, no marcha demasiad® rj ve esti en mi garaje. Ahora estoy hablando de un objeto, un ejemplo particularide gryauto. 4 Capitulo 1M Objetos y clases Figura 1.1 El proyecto figuras fen Blued Generalmente, cuando nos referimos a un objeto en particular hablamos de una ins- tancia, De aqui en adelante usaremos regularmente el término «instancian. Instancia es casi un sinénimo de objeto. Nos referimos a objetos como instancias cuando que- remos enfatizar que son de una clase en particular (como por ejemplo, cuando decimos «este objeto es una instancia de la clase auto»). Antes de continuar con esta discusién bastante teérica, veamos un ejemplo. Crear objetos Inicie! BlueJ y abra el ejemplo que esta bajo el nombre figuras. Vera una ventana similar a la que se muestra en la Figura 1.1 1 Project Edt Tools View (ueweiass.J == [cabal (eomone_} Intialsing vitual machine...Done En esta ventana aparece un diagrama en el que cada uno de los rectingulos colore- ados representa una clase en nuestro proyecto. En este proyecto tenemos las clases de nombre Circulo, Cuadrado, Triangulo y Canvas. Haga clic con el botén derecho del ratén sobre la clase Circulo y seleccione el ele- mento new Circulo() del meni contextual. El sistema solicita el «nombre de la instancia» (name of the ins- tance), haga clic en Ok ya que, por ahora, el nombre por defecto es suficientemente ' Esperamos que mientras lee este libro realice regularmente algunas actividades y ejercicios. este punto asumimos que sabe cémo iniciar Blue! y abrir los proyectos de ejemplo. De no ser asi, lea primero el Apéndice A. Figura 1.2 Un objeto en el banco de objetos ‘Concepto Podemos comunicarnos con los objetos invocando sus métodos. Generaimente, los objetos hacen algo ‘cuando invocamos un método, 1.3 Invocar métodos 5 bueno. Verd un rectingulo rojo ubicado en la parte inferior de la ventana, etiquetado con el nombre «circulo1» (Figura 1.2) Creating object... Done jAcaba de crear su primer objeto! El icono rectangular «Circulo» de la Figura 1.1 representa la clase Circulo mientras que circulo1 es un objeto creado a partir de esta clase, La zona de la parte inferior de la ventana en la que se muestran los objetos se denomina banco de objetos (object bench). Convencién Los nombres de las clases comienzan con una letra maytiscula (como Circulo) y los nombres de los objetos con letras mintisculas (circulo1). Esto ayuda a distinguir de qué elemento estamos hablando. Ejercicio 1.1 Cree otro circulo. Luego, cree un cuadrado. Invocar métodos Haga un clic derecho sobre un objeto circulo (ino sobre la clase!) y verd un menit con- textual que contiene varias operaciones. De este ment, seleccione volverVisible; esta operacién dibujard una representacién de este circulo en una ventana indepen- diente. (Figura 1.3.) Observe que hay varias operaciones en el menii contextual del circulo. Pruebe invocar un par de veces las operaciones moverDerecha y moverAbajo para desplazar al cir- culo mas cerca del centro de la pantalla. También podria probar volverInvisible y volverVisible para ocultar y mostrar el circulo. Ejercicio 1.2 {Qué ocurre si llama dos veces a moverAbajo? £0 tres veces? zQué pasa si llama dos veces a volverInvisible? Los elementos del meni contextual del circulo representan las operaciones que se pueden usar para manipular el cfrculo. En Java, estas operaciones se denominan métodos. Usando la terminologia comtn, decimos que estos métodos son Hamados 0 invocados. De aqui en adelante usaremos esta terminologia que es mas adecuada. Por ejemplo, podriamos pedirle que «invoque el método moverDerecha de circulot». 6 Capitulo 1 Ml Objetos y clases Figura 1.3 El dibujo de un ea teu a Parametros Ahora invoque el método moverHorizontal. Apareceri una caja de didlogo que le solicita que ingrese algunos datos (Figura 1.4). Ingrese el mimero 50 y haga clic en Concepto G Ok. Verd que el circulo se mueve 50 pixeles? hacia la derecha. Los métodos pueden iene’ parimeros | El método moverHorizontal que acaba de nombrar, esti escrito de modo tal que para proporconar | requiere informacién adicional para ejecutarse. En este caso, la informacién requerida fommecen eden! | es la distancia (cuanto debe moverse el circulo) y esto hace que el método moverHo- free rizontal sea mas flexible que los métodos moverDerecha 0 moverIzquierda. Los tiltimos métodos mueven siempre al circulo una distancia determinada mientras que moverHorizontal permite especificar cudnto se quiere mover. led: Method Call Caja de didlogo de Ls una llamada a método ‘a itueve ef circulo horizontamente una clea “distancla" ce pels ‘eaparam distancia ef nimero de pixels que se desea mover void maverHorizontaiint distancia) cult moverHorzertal ( Ejercicio 1.3 Antes de seguir leyendo, intente invocar los métodos mover- Vertical, moverLentoVertical y cambiarTamanio. Descubra cémo usar moverHorizontal para mover el circulo 70 pixeles hacia la izquierda 2 Un pixel es un punto en la pantalla. Toda su pantalla esti compuesta por una grilla de sim- ples pixeles. Concepto El encabezado de tun métado se denomina su signatura y pproporciona la informacion necesaria para invocarlo. Concepto Los parémetros tienen tipos de dato, El tipo de dato define la clase de valores que un parametro puede tomar 1.5 Tipos de dato 7 Los valores adicionales que requieren algunos métodos se denominan pardmetros. Un método indica el tipo de parametros que requiere. Por ejemplo, cuando invoca al método moverHorizontal tal como muestra la Figura 1.4, la caja de diélogo muestra en si parte superior la linea void moverHorizontal(int distancia) Esta linea se denomina signatura del método. La signatura proporciona algo de infor- macién sobre el método en cuestién, La parte comprendida entre paréntesis (int dis- tancia) es la informacién sobre el parimetro requerido. Para cada parimetro se define un fipo y un nombre. La signatura anterior establece que el método requiere un pard- metro de tipo int y de nombre distancia. El nombre oftece alguna pista sobre el significado del dato esperado. Tipos de dato Un tipo especifica la naturaleza del dato que debe pasarse a un parimetro. El tipo int significa niimeros enteros (en inglés, «integer numbers», de aqui su abreviatura «inb»), En el ejemplo anterior, la signatura del método moverHorizontal establece que antes, de que el método pueda ejecutarse, necesitamos suministrarle un niimero entero espe- cificando la distancia a mover. El campo de entrada de datos que se muestra en la Figura 1.4 nos permite ingresar este numero. En los ejemplos que hemos trabajado hasta aqui, el tnico tipo de dato que hemos visto ha sido int. Los pardmetros de los métodos mover y del método cambiarTamanio son todos de ese tipo Una mirada mas de cerca al meni contextual del objeto nos muestra que los métodos del meni incluyen los tipos de dato de los parimetros. Si un método no tiene para- metros, aparece un par de paréntesis vacios al final del nombre del método. Si tiene un parametro, se muestra el tipo de dato del mismo. En la lista de los métodos del cir- culo podri ver un método con un tipo de parimetro diferente: el método cambiar- Color tiene un parimetro de tipo String. El tipo de dato String indica que se espera el ingreso de un fragmento de texto (por ejemplo, una palabra o una frase). Llamaremos cadenas a estas secciones de texto. Las cadenas van siempre encerradas entre comillas dobles. Por ejemplo, para ingresar la palabra rojo como una cadena escribimos —Pojo_ La caja de didlogo para la invocacion de métodos incluye una seccién de texto deno- minada comentario ubicada por encima de la signatura del método. Los comentarios se incluyen para ofrecer informacién al lector (humano) y se describen en el Capitulo 2. El comentario del método cambiarColor describe los nombres de los colores que el sistema reconoce. Ejercicio 1.4 Invoque el método cambiarColor sobre uno de los objetos cir- culo e ingrese la cadena «rojo». Esta accion deberia modificar el color del cir- culo. Pruebe con otros colores. Ejercicio 1.5 Este proyecto es un ejemplo muy simple y no admite demasiados colores, Vea qué ocurre si especifica un color no reconocido por el sistema. 8 Capitulo 1M Objetos y clases ‘Concepto Instancias miitiples. Se pueden crear muchos abjetos similares a partir de una sola clase. Concepto Los objetos tienen Un estado. El estado ‘esta representado por los valores ‘almacenados en sus ‘campos. Ejercicio 4.6 Invoque el método cambiarColor y escriba el color sin las comillas, en el campo del parametro. {Qué ocurre? Cuidado Un error muy comin entre los principiantes es olvidar las comillas dobles cuando esoriben un valor de tipo String. Si escribe verde en lugar de «verde» aparecera un mensaje de error diciendo «Error: cannot resolve symbol». («no puede resolver el simbolo»). Java admite otros varios tipos de dato incluyendo, por ejemplo, nimeros decimales y caracteres. No abordaremos todos los tipos ahora, pero volveremos sobre este punto mis adelante. Si quiere encontrar informacién sobre los tipos de datos en Java, vea el Apéndice B. Instancias multiples Ejercicio 1.7 Cree en el banco de objetos algunos objetos circulo. Puede hacerlo seleccionando new Circulo() del mend contextual de la clase Cir- culo. Vuélvalos visibles y luego desplacelos por la pantalla usando los métodos «mover». Haga que un circulo sea grande y amarillo y que otro sea pequefio y verde. Pruebe también con las otras figuras: cree algunos triéngulos y algunos cuadrados. Cambie sus posiciones, tamafios y colores. Una vez que tiene una clase, puede crear tantos objetos (0 instancias) de esa clase como desee. Puede crear muchos circulos a partir de la clase Circulo. A partir de la clase Cuadrado puede crear muchos cuadrados Cada uno de esos objetos tiene su propia posicién, color y tamaiio. Usted cambia un atributo de un objeto (como su tamaiio, por ejemplo) Ilamando a un método de ese objeto, y esta accién afectara a ese objeto en particular, pero no a los otros También puede haber notado un detalle adicional sobre los parimetros. Observe el método cambiarTamanio del triangulo, Su signatura es void cambiarTamanio (int nuevoAlto, int nuevoAncho) Este es un ejemplo de un método que tiene mis de un parimetro. Este método tiene dos parimetros que estin separados por una coma en la signatura. De hecho, los métodos pueden tener cualquier nimero de parimetros: Estado Se hace referencia al conjunto de valores de todos los atributos que definen un objeto (tales como las posiciones x e y, el color, el didmetro y el estado de visibilidad para un circulo) como el estado del objeto. Este es otro ejemplo de terminologia comin que usaremos de aqui en adelante. En Bluel, el estado de un objeto se puede inspeccionar seleccionando la funcién Jns- pect del meni contextual del objeto. Cuando se inspecciona un objeto, se despliega una ventana similar a la que se muestra en la Figura 1.5 denominada Inspector del Objeto (Object Inspector). Figura 1.5 Didlogo de inspeccién de un objeto 1.8 {Qué es un objeto? 9 Ejercicio 1.8 Asegurese de tener varios objetos en el banco de objetos y luego inspeccione cada uno de ellos. Pruebe cambiar el estado de un objeto (por ejemplo, llamando al método moverIzquierda) mientras mantiene abierto el inspector. Deberia ver que los valores cambian en el inspector del objeto. Algunos métodos, cuando son Ilamados, cambian el estado de un objeto. Por ejemplo, moverIzquierda modifica el atributo posicionX. Java se refiere a los atributos de os objetos como campos (fields). EBlueJ: Object Inspector private int clametro private int posicionX -rivate int posicionY private String color private boolean esVisible [true ‘Show stato elds éQué es un objeto? AL inspeccionar objetos diferentes observara que todos los objetos de la misma clase tienen los mismos campos; es decir que el nimero, el tipo de dato y los nombres de los campos de una misma clase son los mismos, mientras que el valor de un campo en particular de cada objeto puede ser distinto. Por el contrario, los objetos de clases diferentes pueden tener diferentes campos. Por ejemplo, un circulo tiene un campo «diametro», mientras que un triéngulo tiene los campos «ancho» y «alton. La raz6n es que el niimero, el tipo de dato y el nombre de los campos se definen en una clase, no en un objeto. Por ejemplo, la clase Circulo declara que cada objeto cir- culo tendra cinco campos cuyos nombres son diametro, posicionX, posiciony, esVisible y color. También define los tipos de dato para cada uno estos campos; es decir, especifica que los tres primeros son de tipo int, mientras que color es de tipo String y la bandera esVisible es de tipo boolean. (El tipo boolean o légico € un tipo que permite representar s6lo dos valores: verdadero y falso (true y false), sobre los que hablaremos con mas detalle més adelante.) Cuando se crea un objeto de la clase Circulo, tendra automaticamente estos campos. Los valores de estos campos se almacenan en el objeto, lo que asegura, por ejemplo, que cada circulo tiene un color y que cada uno puede tener un color diferente (Figura 1.6). La historia es similar para los métodos. Los métodos se definen en la clase del objeto. Como resultado, todos los objetos de una clase dada tienen los mismos métodos. Sin embargo, los métodos se invocan desde los objetos, y esto aclara por ejemplo, cual es el objeto que se modifica cuando se invoca el método moverDerecha. 10 Capitulo 1 Ml Objetos y clases Figura 1.6 Una clase y sus objetos con campos y valores Ejercicio 1.9 Use las figuras del proyecto figuras para crear la imagen de una casa y un sol, similar a la de la Figura 1.7. Mientras lo hace, escriba las acciones que lleva a cabo para lograr el resultado esperado. ¢Podria lograr la misma imagen de diferentes maneras? int diametro int posicionX int posicion” String color boolean esVisible es una instancia de es una instancia de Interaccion entre objetos En la proxima seccién trabajaremos con un proyecto de ejemplo diferente. Cierre el proyecto figurus si es que todavia lo tiene abierto y abra el proyecto de nombre cuadro. Ejercicio 1.10 Abra el proyecto cuadro. Cree una instancia de la clase Cuadro e invoque su método dibujar. Pruebe también los métodos poner - BlancoYNegro y ponerColor. Ejercicio 1.14 {Como piensa que dibuja la imagen la clase Cuadro? Cuatro de las clases de este proyecto son idénticas a las clases del proyecto figuras, pero ahora tenemos una clase adicional: Cuadro, Esta clase esti programada para que haga exactamente lo mismo que ya hemos hecho a mano en el Ejercicio 1.9. En realidad, si queremos que se haga en Java una serie de tareas, normalmente no las hacemos a mano como en el Ejercicio 1.9, sino que creamos una clase que haga dichas tareas por nosotros. Es el caso de la clase Cuadro. La clase Cuadro esti escrita de modo que, cuando se crea una instancia, esta instancia crea dos objetos cuadrado (uno para la pared y otro para la ventana), un tridngulo y Figura 1. Una imagen creada a partir de un conjunto de objetos Concepto ] Lamada de métodos. Los objelos se pueden comunicar entre ellos imocando los métodos de otros objetos, Concepto El cédigo fuente de una clase determina la estructura y el comportamiento (los sMIpOS ¥ Ios, métodos) de cada uno de los objetos | de dicha clase. 1.10 Cédigo fuente 11 un circulo, los mueve y cambia sus colores y tamafio, hasta que el resultado se parezca a la imagen que vemos en la Figura 1.7. ee iu El punto importante es que los objetos pueden crear otros objetos y pueden llamar a cada uno de sus métodos. Un programa Java normal puede tener centenares 0 miles de objetos. El usuario de un programa s6lo lo inicia (y por lo general, en el inicio se crea un primer objeto) y todos los otros objetos son creados, directa o indirectamente, por ese objeto. Ahora, la gran pregunta es scribimos la clase para un objeto como éste? Cédigo fuente Cada clase tiene algin cédigo fuente asociado. El cédigo fuente es un texto que defi los detalles de la clase. En BlueJ, se puede visualizar el cédigo fuente de una clase seleccionando la funcién Open Editor del menii contextual de la clase o haciendo doble clic en el icono de la clase. Ejercicio 1.12 Observe nuevamente el menu contextual de la clase Cuadro. Vera una opcién etiquetada como Open Eaitor. Seleccidnela. Esta accion abre el editor de textos mostrando el cédigo fuente de esta clase. El cédigo fuente (0 simplemente el e6digo) es un texto escrito en lenguaje de progra- macién Java y define qué campos y métodos tiene la clase y qué ocurre cuando se invoca un método. En el préximo capitulo hablaremos sobre qué contiene exactamente el cédigo de una clase y como esti estructurado. Gran parte del aprendizaje del arte de la programacién consiste en aprender como escribir estas definiciones de clases y para lograrlo, deberemos aprender a usar el Jen- guaje Java (aunque existen otros lenguajes de programacién que se podrian usit escribir el e6digo). Fe] 12 Capitulo 1 Ml Objetos y clases Cuando realiza algin cambio en el cédigo y cierra el editor’, el icono de esta clase en el diagrama aparece rayado. Las rayas indican que el fuente ha cambiado. En estos casos, la clase necesita ser compilada haciendo clic en el botén Compile. (Para més informacién sobre lo que ocurre cuando se compila una clase puede leer la nota «Acerca de la compilacién».) Una vez que una clase ha sido compilada, se pueden crear nue- vamente objetos y probar sus cambios Nota: acerca de la compilacién Cuando las personas escriben programas de computacién usan generalmente un lenguaje de programacién de alto nivel, como por ejemplo Java. El problema que se presenta es que la computadora no puede ejecutar directamente el cédigo Java. Java fue disefiado para ser razonablemente facil de leer para los humanos, pero no para las computadoras. Internamente, las computadoras trabajan con una repre- sentacién binaria de un cédigo maquina cuyo aspecto es muy diferente al de Java. Nuestro problema es que este cédigo es tan complejo que no queremos escribirio directamente, preferimos escribir en Java. {Qué podemos hacer? La solucién es un programa denominado compitador. EI compilador traduce el cédigo Java a cédigo maquina, Podemos escribir en Java, ejecutar el compilador (que genera el cédigo maquina) y la computadora puede entonces leer el codigo maquina, Como resultado, cada vez que cambiamos el cédigo debemos ejecutar el compilador antes de poder usar nuevamente la clase para crear un objeto. Por otra parte, no existe la versién del cédigo maquina que necesitan las computadoras. Ejercicio 1.13 Busque en el codigo de la clase Cuadro la parte que efecti vamente dibuja la imagen. Cambie el cédigo de modo que el sol resulte ser azul en lugar de amarillo. Ejercicio 1.14 Agregue un segundo sol a la imagen. Para hacer esto, centre su atencién en las declaraciones de campos que estan en la parte superior de la clase. Encontrara este cédigo: private Cuadrado pared; private Cuadrado ventana; private Triangulo techo; private Circulo sol; Aqui es donde necesita agregar una linea para el segundo sol, por ejemplo: private Circulo sol2; Escriba el cédigo adecuado para crear el segundo sol Ejercicio 1.15 Desafio (que sea un ejercicio «desafion significa que puede que no lo resuelva rapidamente. No esperamos que todos los lectores sean capaces de resolverlo en este momento. Si lo logra, grandioso; de lo contrario, no se preocupe. Las cosas se irén aclarando a medida que siga leyendo. Vuelva En BlueJ no es necesario grabar explicitamente el texto del editor antes de cerrarlo, Si cierra el editor, el codigo se graba automaticamente. Concepto Resultados. Los metodos pueden devolver informacion de algun objeto mediante un valor de retorno, 1.12 Valores de retorno 13 a este ejercicio mas adelante). Agregue una puesta de sol a la version de Cuadro que tiene un Unico sol. Es decir, haga que el sol descienda lentamente. Recuerde que el circulo tiene un método moverLentoVertical y puede usarlo para lograr que el sol descienda. Ejercicio 1.16 Desafio. Si agregé la puesta de sol al final del método dibujar (de modo que el sol baja automaticamente cuando se dibuja la imagen), haga la siguiente modificaci6n. Queremos que la puesta de sol la lleve a cabo un método independiente, de modo que podamos invocar a dibujar y ver el sol en Io alto de la imagen, y luego invocar al método atardecer (jun método independiente!) para hacer que el sol descienda. Otro ejemplo Ya hemos tratado en este capitulo un gran mimero de conceptos nuevos. Ahora los vol- veremos a ver en un contexto diferente para ayudarle a comprender estos conceptos Con este fin usaremos un ejemplo diferente. Cierre el proyecto cuadro si es que todavia lo tiene abierto y abra el proyecto curso-de-laboratorio. Este proyecto es una parte de una base de datos de estudiantes simplificada, disefiada para registrar el recorrido de los estudiantes en los cursos de laboratorio ¢ imprimir las listas de alumnos de estos cursos. Ejercicio 1.17 Cree un objeto de clase Estudiante. Vera que en este caso no sélo se le solicita ingresar el nombre de la instancia sino también el valor de algunos otros pardmetros. Complete los datos antes de hacer clic en Ok. (Recuerde que los parametros de tipo String deben escribirse entre comillas dobles.) Valores de retorno Tal como ocurrié anteriormente, puede crear varios objetos, y nuevamente los objetos disponen de métodos que usted puede invocar en sus propios menus contextuales. Ejercicio 1.18 Cree algunos objetos estudiante. Invoque el método obte- nerNombre de cada objeto. Explique qué ocurre, Cuando Hamamos al método obtenerNombre de la clase Estudiante notamos algo nuevo: los métodos pueden devolver un valor como resultado. De hecho, la signatura de cada método nos informa si devuelve o no un resultado y qué tipo de resultado es. La signatura de obtenerNombre (tal como muestra el menit contextual de! objeto) esti definida de la siguiente manera: String obtenerNombre() La palabra String que aparece antes del nombre del método especifica el tipo de retorno. En este caso, establece que este método devolverd un resultado de tipo String cuando sea invocado. La signatura de cambiarNombre es: void cambiarNombre(String nuevoNombre) La palabra void indica que este método no retorna ningiin resultado. 14 Capitulo 1 Ml Objetos y clases on sobre Los métodos que devuelven 0 retornan valores nos permiten obtener informa un objeto mediante una llamada al método. Quiere decir que podemos usar métodos tanto para cambiar el estado de un objeto como para investigar su estado. Gee Objetos como parametros Ejercicio 1.19 Cree un objeto de clase CursoDeLaboratorio. Tal como lo indica su signatura, usted necesita especificar el nimero maximo de estudiantes de ese curso (un entero), Ejercicio 1.20 Invoque el método numeroDeEstudiantes de ese curso. {Qué hace este método? Ejercicio 1.21 Observe la signatura del método inscribirEstudiante. Vera que el tipo del parametro esperado es Estudiante. Asegurese de tener en el banco de objetos dos o tres objetos estudiante y un objeto CursoDeLa- boratorio; luego invoque el método inscribirEstudiante del objeto Cur- soDeLaboratorio. Con el cursor ubicado en el campo de entrada de la caja de didlogo, haga clic sobre uno de los objetos estudiante —esta accién ingresa el nombre del objeto estudiante en el campo del parémetro del método ins- cribirEstudiante (Figura 1.8)—. Haga clic en Ok, y queda agregado el estudiante al CursoDeLaboratorio. También agregue uno o més estudiantes. Figura 1. Agregar un estudiante a CursoDeLaboratorio PSP ut nee # Agregar un estudiante a la ClaseDeLaboratorio void inscribirEstudiante(Estudiante nuevoEstudiante) claseDeLt inscribitstuciarte ( SNEERE |) Ejercicio 1.22 Liame al método imprimirLista del objeto CursoDeLabo- ratorio. Vera en la ventana terminal de BlueJ una lista de todos los estu- diantes de este curso (Figura 1.9) Tal como muestra el ejercicio, los objetos pueden ser pasados como parimetros a los métodos de otros objetos. En el caso de que un método espere un objeto como pari- metro, el nombre de la clase del objeto que espera se especifica como el tipo de pari- metro en la signatura de dicho método. Explore un poco mis este proyecto. Pruebe identificar en este contexto los conceptos tratados en el ejemplo figuras. 1.14 Resumen 15 Ltatl ed WBWues: Terminal Window - CursoDel aboratorio Salida de la lista de! CursoDeLaboratorio Sees Curso de Laboratorio tunes 1 Instructor: P, Stephenson Aube: U23 Lista de 1a clase: Voltgang Amadeus Mozart (100234) Lisa Simpson (122044) Charlie Brom (12003?) Miaero de estudiantes: 9 Ejercicio 1.23 Cree tres estudiantes con los detalles siguientes: Blanca Nieves, ID de estudiante: 100234, créditos: 24 Lisa Simpson, |D de estudiante: 122044, créditos: 56 Charlie Brown, ID de estudiante: 12003P, créditos: 6 Luego inscriba a los tres estudiantes en un curso de laboratorio e imprima una lista en la pantalla, Ejercicio 1.24 Use el inspector del CursoDeLaboratorio para desoubrir los campos que tiene. Ejercicio 1.25 Determine el instructor, el aula y el horario de un curso de laboratorio y muestre la lista en la ventana terminal para controlar que aparezcan estos nuevos detalles. En este capitulo hemos explorado los conceptos basicos de clase y de objeto. Hemos tratado el hecho de que los objetos son especificados por las clases. Las clases repre- sentan el concepto general de una cosa, mientras que los objetos representan instan- cias coneretas de una clase. Podemos tener varios objetos de cualquier clase. Los objetos tienen métodos que podemos usar para comunicarnos con ellos. Podemos usar un método para modificar al objeto o para obtener informacién acerca de él. Los métodos pueden tener parimetros y los parimetros tienen tipos. Los métodos pueden tener tipos de retorno que especifican el tipo de dato que devuelven. Si el tipo de retorno es void, el método no devuelve nada 16 Capitulo 1 Ml Objetos y clases Los objetos almacenan datos en sus campos (que también tienen tipos). Se hace refe- rencia al conjunto de todos los datos de un objeto como el estado del objeto. Los objetos se crean a partir de las definiciones de una clase que deben escribirse en un lenguaje particular de programacién, Gran parte de la programacién en Java con- siste en aprender a escribir definiciones de clases. Un programa grande escrito en Java puede contener muchas clases, cada una de ellas con muchos métodos que se invocan unos a otros de muchas maneras diferentes. Para aprender a desarrollar programas en Java necesitamos aprender cémo escribir las definiciones de clase, incluyendo los campos y los métodos, y también, cémo reunir todas estas clases. El resto de este libro trata estas cuestiones, Términos introducidos en este capitulo objeto, clase, instancia, método, signatura, pardmetro, tipo, estado, cédigo fuente, valor de retorno, compilador Resumen de conceptos objeto Los objetos Java modelan los objetos del dominio de un problema. clase Los objetos se crean a partir de las clases. La clase describe la categoria del objeto; los objetos representan instancias individuales de la clase. '@ método Podemos comunicarnos con los objetos invocando sus métodos. General- mente, los objetos hacen algo cuando invocamos un método. parémetro Los métodos pueden tener parametros para aportar informacién adicional para realizar una tarea ™ signatura El encabezado de un método se denomina su signatura. Proporciona la informacién necesaria para invocar dicho método. tipo Los parémetros tienen tipos, El tipo define la clase de valor que un parametro puede tomar 1 instancias miltiples Se pueden crear muchos objetos similares a partir de una sola clase. im estado Los objetos tienen un estado. El estado esta representado por los valores almacenados en los campos. llamar métodos Los objetos se pueden comunicar invocando los métodos de cada uno de los otros objetos. ™ cédigo fuente EI cédigo de una clase determina la estructura y el comportamiento (los campos y los métodos) de cada uno de los objetos de dicha clase. 1 resultado Los métodos pueden devolver informacion de un objeto mediante valores de retorno. Ejercicio 1.26 En este capitulo hemos mencionado los tipos de dato int y String. Java tiene més tipos de datos predefinidos. Averigie cudles son y para qué se usan. Para hacerlo puede recurrir al Apéndice B o buscar en 1.14 Resumen 17 otro libro de Java o en un manual online sobre lenguaje Java. Uno de estos manuales es: http: //java.sun.com/docs/books/tutorial/java/nutsandbolts/ datatypes .html Ejercicio 1.27 {CuAl es el tipo de los siguientes valores? 0 _hola_ For 1 true 8_ 3.1415 Ejercicio 1.28 Para agregar a un objeto circulo un nuevo campo, por ejemplo de nombre nombre, gqué debe hacer? Ejercicio 4.29 Escriba la signatura de un método de nombre enviar que tiene un pardmetro de tipo String y que no retorna ningun valor. Ejercicio 1.30 Escriba la signatura de un método de nombre promedio que tiene dos parametros, ambos de tipo int, y que retorna un valor int. Ejercicio 1.34 Vea el libro que esta leyendo en este momento, ges un objeto © una clase? Si es una clase, mencione algunos objetos; si es un objeto, men- cione su clase. 4.32 ,Puede un objeto provenir de diferentes clases? Discutalo.

You might also like