Você está na página 1de 39

Programacin orientada a objetos con JAVA

Iniciacin a la programacin

Qu es JAVA?
JAVA es un lenguaje orientado a objetos y su sintaxis es muy parecida a la de C++.  Es multiplataforma, usando la JVM.  OO (orientacin a objetos) significa que cualquier elemento que creemos y que usemos ser un objeto, en el amplio sentido que conocemos, con sus elementos y su utilidad.


Cmo programamos en JAVA?




Para poder crear programas en Java necesitamos, al menos, 2 cosas:


JDK, aconimo de Java Developement Kit o Kit de desarrollo para Java y Un editor de texto.


En nuestro caso, sustituiremos el editor de texto por un entorno ms til llamado ECLIPSE en su versin 3.2.1

Cmo es su estructura?
En Java, todos los objetos pertenecen a una CLASE. Podramos decir que una clase como una ESTRUCTURA en C++ pero con muchos matices.  Existe una clase superior que engloba a todas las dems clases. Es la clase OBJECT y todas cuelgan de ella.


Cmo es su estructura?
Un archivo Java tiene la extensin .java y puede contener varias clases pero SLO UNA DE ELLAS puede ser public.  public significa que se puede ser vista desde el exterior y el nombre de esa clase debe coincidir exactamente con el nombre del archivo .java ya que distingue entre maysculas y minsculas.


Cmo es su estructura?
Podemos crear muchas clases y agruparlas en packages o paquetes, que no son ms que libreras de clases relacionadas, por ejemplo, matemticas.  Para ejecutar un programa debemos crear un mtodo main() en una de las clases del paquete (Su funcionamiento es igual que en C++).


Qu es exactamente una clase?


Una clase es un conjunto de datos (variables) y mtodos (funciones) para operar con dicha clase.  En Java, como en C++, tenemos los tipos primitivos del lenguaje, como son int, double, String, pero tambin podemos usar variables de otras clases.


Tipos de variables y mtodos


Imaginaos una clase Punto, que contiene las coordenadas de un punto como dos variables de tipo double y  Una clase Circulo, con contiene un Punto como centro y un double como radio



Vemos como un objeto de una clase puede contener otros objetos de otras clases

Convenios en la nomenclatura


En Java se ha tomado en general el siguiente convenio:


Es habitual que todos los nombres de objetos y mtodos se escriban en minsculas, salvo en las siguientes excepciones:
Cuando un nombre consta de varias palabras, cada una de ellas comenzar en Mayusculas, p.e. prPunto Todas las clases comenzarn con Mayusculas, Punto. Las variables finales o Constantes se escriben completamente en MAYUSCULAS, p.e. PI

Eclipse 3.2.1. Un primer vistazo.

Eclipse 3.2.1. Un primer vistazo.

Zona de exploracin de paquetes y jerarqua de proyectos

Eclipse 3.2.1. Un primer vistazo.


Zona donde se mostrarn las variables y mtodos que podemos utilizar.

Zona de exploracin de paquetes y jerarqua de proyectos

Eclipse 3.2.1. Un primer vistazo.


Zona donde se mostrarn las variables y mtodos que podemos utilizar.

Zona de exploracin de paquetes y jerarqua de proyectos

Zona de edicin de los archivos abiertos. Es donde escribiremos nuestro cdigo java.

Eclipse 3.2.1. Un primer vistazo.


Zona donde se mostrarn las variables y mtodos que podemos utilizar.

Zona de exploracin de paquetes y jerarqua de proyectos

Zona de edicin de los archivos abiertos. Es donde escribiremos nuestro cdigo java.

Zona de salida de datos. Aqu aparecern advertencias a la hora de ejecutar/compilar y la salida estndar de nuestros programas.

Crear un nuevo proyecto




Iremos a Archivo -> Nuevo -> Proyecto -> Proyecto Java Por norma general tomaremos que los nombres de los proyectos deben comenzar con minusculas. Ms concretamente tomaremos por convenio comenzar con pr, por ejemplo prPunto. Pulsaremos sobre el botn Finalizar

Crear una nueva clase


 

Iremos a Archivo -> Nuevo -> Clase Tomaremos por convenio que los nombre de las clases comenzarn por Maysculas, por ejemplo, Punto. Pulsaremos sobre el botn Finalizar. No entraremos en detalle del resto de opciones, por ahora.

Cmo ha quedado la clase?

Ya podemos ver nuestro proyecto, nuestro paquete predeterminado, nuestro archivo Punto.java y las clases que lo componen.

Cmo ha quedado la clase?

Ya podemos ver nuestro proyecto, nuestro paquete predeterminado, nuestro archivo Punto.java y las clases que lo componen.

Aqu vemos que ya tenemos creada la clase publica Punto

Cmo ha quedado la clase?

Ya podemos ver nuestro proyecto, nuestro paquete predeterminado, nuestro archivo Punto.java y las clases que lo componen.

Este es el cdigo java que genera nuestra clase Punto. Ahora tenemos que completarla.

Aqu vemos que ya tenemos creada la clase publica Punto

Definiendo nuestra clase




Para definir una clase debemos definir sus atributos y sus mtodos, como vimos anteriormente. En nuestro caso de estudio, el Punto, vamos a definir como atributos su coordenada X y su coordenada Y, de tipo double.

public class Punto { double coordenadaX, coordenadaY; }

Definiendo nuestra clase




Una de las cosas indispensables de una clase son sus mtodos CONSTRUCTORES que son los que se encargan de reservar memoria e inicializar el objeto cuando lo creamos.
Los constructores son mtodos especiales ya que no devuelven ningn valor y, adems, coinciden con el nombre de la clase.

public class Punto { double coordenadaX, coordenadaY; Punto(){ coordenadaX = 0.0; coordenadaY = 0.0; } }

Definiendo nuestra clase




Este constructor se denomina constructor por defecto o estndar porque no se le pasa ningn parmetro. Usualmente necesitaremos ms de un constructor, por lo que recurriremos a lo que se llama sobrecarga, que es usar un mismo nombre para funciones distintas, diferencindose entre si por sus parmetros. Aqu vemos un caso de esta sobrecarga con los constructores. Es una prctica muy habitual.

public class Punto { double coordenadaX, coordenadaY; Punto (){ coordenadaX = 0.0; coordenadaY = 0.0; } Punto (double x, double y){ coordenadaX = x; coordenadaY = y; } }

Uso de una clase




Una vez tenemos una clase creada, estamos en disposicin de usarla pero Cmo se usa una clase? Para ello vamos a definir una nueva clase, a la que llamaremos Test y ser la que se encargue de ejecutar el cdigo que queramos y usar las clases existentes. Esta nueva clase test ser la que contendr el mtodo main(). De nuevo iremos a Archivo -> Nuevo -> Clase

Crear una nueva clase Test




Para que el propio Eclipse nos cree nuestro mtodo main() slo necesitamos marcar la casilla que aparece marcada. No olvides que el nombre de nuestras clases comienzan por maysculas. Test, en nuestro caso.

La nueva clase Test

Creacin de Objetos. Uso de los constructores de clase.

Objetos creados
 

Aqu tenemos el cdigo que ejecutar nuestro compilador. Tenemos la clase Test, publica, que est compuesta por el mtodo main(), publico, esttico y que no devuelve ningn valor (void). static (mtodo esttico o de clase) significa que se puede invocar sin haber creado ningn objeto de esa clase (Test, en este caso), a diferencia de los mtodos normales (de instancia) que deben ser invocados a travs de un objeto de su clase.

public class Test { public static void main(String[] args) { Punto p1 = new Punto(); Punto p2 = new Punto(0.0, 0.0); } }

En este mtodo main() vemos como creamos 2 objetos de la clase Punto, uno con el constructor por defecto y el otro con el constructor con parmetros.

Uso de los objetos existentes




Como habamos dicho en un principio, los objetos son como variables de un tipo estructura (C++). Por tanto, para acceder a sus parmetros y mtodos usaremos el operador . Veremos como el entorno de desarrollo Eclipse nos va a ayudar bastante en esta labor, ya que nos dar informacin de las variables y mtodos que podemos invocar en cada objeto.

Uso de los objetos existentes




Como nuestra clase, por el momento, no tiene mucha funcionalidad, solamente seremos capaces de usar las coordenadas de cada uno de nuestros objetos. Para mostrar por pantalla datos y cadenas de texto (al igual que hacamos con cout en C++) usaremos el mtodo System.out.println(Object o); que acepta un objeto de cualquier tipo por parmetro y lo muestra en nuestra pantalla. Este mtodo es un ejemplo de mtodo sobrecargado, ya que acepta como parmetros objetos de muchas clases distintas y realiza su cometido, que es mostrar por pantalla el resultado. Veamos un ejemplo.

Uso de los objetos existentes




Escribamos en nuestro main(), justo despus de crear nuestros objetos las siguientes lneas de cdigo:

System.out.println("Punto 1: ("+ p1.coordenadaX +", "+p1.coordenadaY +")"); System.out.println("Punto 2: ("+ p2.coordenadaX +", "+p2.coordenadaY +")");

Ahora, guardamos ambos archivos y vamos a ejecutar nuestro cdigo. Para ello pulsaremos en el men superior:


Ejecutar -> Ejecutar como -> Aplicacin Java

Ejercicios a realizar


Una vez sabido como se crean clases, atributos y mtodos, realizar lo siguiente:
Un mtodo para trasladar un punto (x,y) posiciones. Un mtodo para mover un punto a la posicin (x,y). Una clase Circulo, definida por un Punto como centro y un double como radio. Crear los mtodos trasladar y mover para el Circulo

La clase Circulo


La clase Circulo est compuesta por un Punto llamado centro y un double llamado radio.
Hay que tener en cuenta que contiene un Punto pero no hereda de la clase Punto. Las propiedades de la herencia las veremos ms adelante. Circulo simplemente est compuesta por objetos de otras clases.

La clase Circulo - Constructores




La clase Circulo tendr 3 constructores:


Un constructor por defecto, sin parmetros. Un constructor con 2 parmetros que sern el Punto y el double correspondientes al centro y al radio. Un constructor con 3 parmetros. Los 2 primeros correspondern a las coordenadas del Punto centro y el 3 al radio.

La clase Circulo - Constructores




Como su nombre indica, un CONSTRUCTOR construye el objeto de su clase. Por tanto, si la clase est compuesta por otros objetos (como es nuestro caso) debemos tener creados los objetos que la compongan o crearlos nosotros.

La clase Circulo - Constructores




As quedaran nuestros constructores en la clase circulo. Destacar que el 2 constructor que acepta un por parmetro un Punto requiere que ese punto ya exista. Por eso, no lo creamos nosotros explcitamente como en los otros.

Mtodos Getter y Setter


En todas las clases deberamos implementar mtodos Getter y Setter.  En el ejemplo anterior veamos que para mostrar por pantalla los valores X e Y de las coordenadas de un punto accedamos directamente a esas variables pero y si esas variables no fuesen visibles desde el exterior? Cmo podramos leerlas?


Mtodos Getter y Setter




Los mtodos Getter son los encargados de leer esos parmetros. Normalmente existe un mtodo Getter y un Setter por cada parmetro. Como los Getter sirven para leer o adquirir (Get) el valor de las variables podemos intuir que los Setter escriben o modifican (Set) dichos parmetros. Por norma general, estos mtodos son pblicos.

Mtodos Getter y Setter




Los mtodos Getter, como cualquier mtodo devuelven un valor. En este caso, el valor que devuelve es el valor del propio parmetro que est leyendo sin recibir parametros. Los mtodos Setter, sin embargo, no devuelven nada, son void, pero aceptan como parmetros un objeto del tipo que se quiera modificar. Vemoslo en el ejemplo junto con su nomenclatura habitual.

Mtodos Getter y Setter




Ntese que los mtodos Getter comienzan con la palabra get y los Setter con la palabra set, seguidos del nombre del parmetro. Haremos esto tambin para la clase Punto.

Você também pode gostar