Sie sind auf Seite 1von 51

Fundamentos de programacin orientada a objetos

POO

Objetos y clases

Cuando escribe un programa de computacin en un lenguaje orientado a objetos est creando 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.

Objetos y clases

Estos objetos deben estar representados en el modelo computacional que se est creando.
Los objetos pueden ser organizados en categoras y una clase describe, en forma abstracta, todos los objetos de un tipo en particular.

Objetos y clases

Suponga que desea modelar una simulacin de trfico. Un tipo de entidad con la que tendr que trabajar es autos.
Qu es un auto en nuestro contexto? Es una clase o es un objeto? Algunas preguntas nos ayudarn a tomar una decisin.

Objetos y clases

De qu color es un auto? Cuan rpido puede marchar? Dnde est en este momento?
Observar que no podemos responder estas preguntas a menos que hablemos de un auto especfico

Objetos y clases

La razn 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

Objetos y clases

Si digo Mi viejo auto se encuentra estacionado en el garaje de casa, podemos responder todas las preguntas anteriores:

este auto es rojo, no marcha demasiado rpido y est en mi garaje. Ahora estoy hablando de un objeto, un ejemplo particular de un auto

Objetos y clases

Generalmente, cuando nos referimos a un objeto en particular hablamos de una instancia.


De aqu en adelante usaremos regularmente el trmino instancia. Instancia es casi un sinnimo de objeto.

Nos referimos a objetos como instancias cuando queremos enfatizar que son de una clase en particular (como por ejemplo, cuando decimos este objeto es una instancia de la clase auto)

Objetos y clases

InicieBlueJ y abra el ejemplo que est bajo el nombre figuras.


Ver una ventana similar a la que se muestra en la Figura 1.1.

Objetos y clases

En esta ventana aparece un diagrama en el que cada uno de los rectngulos coloreados representa una clase en nuestro proyecto.
En este proyecto tenemos las clases de nombre Circulo, Cuadrado, Triangulo y Canvas.

Objetos y clases

Haga clic con el botn derecho del ratn sobre la clase Circulo y seleccione el elemento

new Circulo()

del men contextual. El sistema solicita el nombre de la instancia (name of the instance), haga clic en Ok ya que, por ahora, el nombre por defecto es

Objetos y clases

Ver un rectngulo rojo ubicado en la parte inferior de la ventana, etiquetado con el nombre circulo1

Objetos y clases

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

Invocar mtodos

Concepto:

Podemos comunicarnos con los objetos invocando sus mtodos. Generalmente, los objetos hacen algo cuando invocamos un mtodo.

Invocar mtodos

Haga un clic derecho sobre un objeto crculo (no sobre la clase!) y ver un men contextual que contiene varias operaciones.
De este men, seleccione volverVisible; esta operacin dibujar una representacin de este crculo en una ventana independiente. (Figura 1.3.)

Invocar mtodos

Observe que hay varias operaciones en el men contextual del crculo. Pruebe invocar un par de veces las operaciones moverDerecha y moverAbajo para desplazar al crculo ms cerca del centro de la pantalla.
Tambin podra probar volverlnvisible y volverVisible para ocultar y mostrar el

Invocar mtodos

Los elementos del men contextual del crculo representan las operaciones que se pueden usar para manipular el crculo. En Java, estas operaciones se denominan mtodos. Usando la terminologa comn, decimos que estos mtodos son llamados o invocados. De aqu en adelante usaremos esta terminologa que es ms adecuada. Por ejemplo, podramos pedirle que invoque el mtodo moverDerecha de circulo1.

Invocar mtodos

Los valores adicionales que requieren algunos mtodos se denominan parmetros.


Un mtodo indica el tipo de parmetros que requiere. Por ejemplo, cuando invoca al mtodo moverHorizontal tal como muestra la Figura 1.4, la caja de dilogo, muestra en su parte superior la lnea

void moverHorizontal(int distancia)

Invocar mtodos

Invocar mtodos

Esta lnea se denomina signatura del mtodo. La signatura proporciona algo de informacin sobre el mtodo en cuestin.
La parte comprendida entre parntesis (int distancia) es la informacin sobre el parmetro requerido. Para cada parmetro se define un tipo y un nombre. La signatura anterior establece que el mtodo requiere un parmetro de tipo int y de nombre distancia. El nombre ofrece alguna pista sobre el significado del dato esperado.

Invocar mtodos

Concepto:

El encabezado de un mtodo se denomina su signatura y proporciona la informacin necesaria para invocarlo.

Tipos de dato

Un tipo especifica la naturaleza del dato que debe pasarse a un parmetro.


El tipo int significa nmeros enteros (en ingls, integer numbers, de aqu su abreviatura int)

Tipos de dato

En el ejemplo anterior, la signatura del mtodo moverHorizontal establece que antes de que el mtodo pueda ejecutarse, necesitamos suministrarle un nmero entero especificando la distancia a mover.
El campo de entrada de datos que se muestra en la Figura 1.4 nos permite ingresar este nmero.

Tipos de dato

Concepto:

Los parmetros tienen tipos de dato. El tipo de dato define la clase de valores que un parmetro puede tomar.

Tipos de dato

En la lista de los mtodos del crculo podr ver un mtodo con un tipo de parmetro diferente: el mtodo cambiar-Color tiene un parmetro 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

_rojo_

Tipos de dato

Java admite otros varios tipos de dato incluyendo, por ejemplo, nmeros decimales y caracteres

Instancias mltiples

Concepto

Instancias mltiples. Se pueden crear muchos objetos similares a partir de una sola clase.

Instancias mltiples

Cada uno de esos objetos tiene su propia posicin, color y tamao.


Usted cambia un atributo de un objeto (como su tamao, por ejemplo) llamando a un mtodo de ese objeto, y esta accin afectar a ese objeto en particular, pero no a los otros.

Estado

Concepto:

Los objetos tienen un estado. El estado est representado por los valores almacenados en sus campos.

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 dimetro y el estado de visibilidad para un crculo) como el estado del objeto.
Este es otro ejemplo de terminologa comn que usaremos de aqu en adelante.

Estado

En BlueJ, el estado de un objeto se puede inspeccionar seleccionando la funcin Inspect del men contextual del objeto.

Qu es un objeto?

Al inspeccionar objetos diferentes observar que todos los objetos de la misma clase tienen los mismos campos; es decir que el nmero, 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 crculo tiene un campo dimetro, mientras que un tringulo tiene los campos ancho y alto.

Qu es un objeto?

La razn es que el nmero, 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 crculo tendr cinco campos cuyos nombres son:

dimetro, posicionX, posicionY, esVisible y color.

Tambin 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 lgico es un tipo que permite representar

Qu es un objeto?

Cuando se crea un objeto de la clase Circulo, tendr automticamente estos campos.


Los valores de estos campos se almacenan en el objeto, lo que asegura, por ejemplo, que cada crculo tiene un color y que cada uno puede tener un color diferente

Qu es un objeto?

La historia es similar para los mtodos. Los mtodos se definen en la clase del objeto.
Como resultado, todos los objetos de una clase dada tienen los mismos mtodos. Sin embargo, los mtodos se invocan desde los objetos, y esto aclara por ejemplo, cul es el objeto que se modifica cuando se invoca el mtodo moverDerecha

Interaccin entre objetos

Concepto

Llamada de mtodos. Los objetos se pueden comunicar entre ellos invocando los mtodos de los otros objetos.

Interaccin entre objetos

El punto importante es que los objetos pueden crear otros objetos y pueden llamar a cada uno de sus mtodos.
Un programa Java normal puede tener centenares o miles de objetos. El usuario de un programa slo 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: cmo escribimos la clase para un objeto como ste?

Abra el proyecto cuadro. Cree una instancia de la clase Cuadro e invoque su mtodo dibujar. Pruebe tambin los mtodos ponerBlancoYNegro y ponerColor.

Cdigo fuente

Cada clase tiene algn cdigo fuente asociado. El cdigo fuente es un texto que define los detalles de la clase. En BlueJ, se puede visualizar el cdigo fuente de una clase seleccionando la funcin Open Editor del men contextual de la clase o haciendo doble clic en el icono de

Cdigo fuente

El cdigo fuente (o simplemente el cdigo) es un texto escrito en lenguaje de programacin Java y define qu campos y mtodos tiene la clase y qu ocurre cuando se invoca un mtodo.

Cdigo fuente

Concepto

El cdigo fuente de una clase determina la estructura y el comportamiento (los campos y los mtodos) de cada uno de los objetos de dicha clase.

Cdigo fuente

Cuando realiza algn cambio en el cdigo 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 botn Compile.
Una vez que una clase ha sido compilada, se pueden crear nuevamente objetos y probar sus cambios.

Valores de retorno
Concepto

Resultados. Los mtodos pueden devolver informacin de algn objeto mediante un valor de retorno.

Valores de retorno

Abra el proyecto

curso-de-laboratorio

Este proyecto es una parte de una base de datos de estudiantes simplificada, diseada para registrar el recorrido de los estudiantes en los cursos de laboratorio e imprimir las listas de alumnos de estos cursos.

Valores de retorno

Cree un objeto de clase Estudiante.


Ver que en este caso no slo se le solicita ingresar el nombre de la instancia sino tambin el valor de algunos otros parmetros. Complete los datos antes de hacer clic en Ok. (Recuerde que los parmetros de tipo String deben escribirse entre comillas dobles.)

Valores de retorno

Cuando llamamos al mtodo obtenerNombre de la clase Estudiante notamos algo nuevo: los mtodos pueden devolver un valor como resultado.
De hecho, la signatura de cada mtodo nos informa si devuelve o no un resultado y qu tipo de resultado es. La signatura de obtenerNombre (tal como muestra el men contextual del objeto) est definida de la siguiente manera:

String obtenerNombre()

Valores de retorno

La palabra String que aparece antes del nombre del mtodo especifica el tipo de retorno.
En este caso, establece que este mtodo devolver un resultado de tipo String cuando sea invocado. La signatura de cambiarNombre es:

void cambiarNombre(String nuevoNombre)

La palabra void indica que este mtodo no retorna ningn resultado.

Objetos como parmetros

los objetos pueden ser pasados como parmetros a los mtodos de otros objetos. En el caso de que un mtodo espere un objeto como parmetro, el nombre de la clase del objeto que espera se especifica como el tipo de parmetro en la signatura de dicho mtodo.

Resumen

Hemos explorado los conceptos bsicos de clase y de objeto.


Hemos tratado el hecho de que los objetos son especificados por las clases. Las clases representan el concepto general de una cosa, mientras que los objetos representan instancias concretas de una clase. Podemos tener varios objetos de cualquier clase.

Resumen

Los objetos tienen mtodos que podemos usar para comunicarnos con ellos. Podemos usar un mtodo para modificar al objeto o para obtener informacin acerca de l. Los mtodos pueden tener parmetros y los parmetros tienen tipos. Los mtodos pueden tener tipos de retorno que especifican el tipo de dato que devuelven. Si el tipo de retorno es void, el mtodo no devuelve nada.

Resumen

Los objetos almacenan datos en sus campos (que tambin tienen tipos).
Se hace referencia al conjunto de todos los datos de un objeto como el estado del objeto.

Resumen

Los objetos se crean a partir de las definiciones de una clase que deben escribirse en un lenguaje particular de programacin.
Gran parte de la programacin en Java consiste en aprender a escribir definiciones de clases. Un programa grande escrito en Java puede contener muchas clases, cada una de ellas con muchos mtodos que se invocan unos a otros de muchas maneras diferentes.

Das könnte Ihnen auch gefallen