Sie sind auf Seite 1von 12

PROGRAMACIN ORIENTADA A OBJETOS

La programacin orientada a objetos (POO) es un modelo de programacin que utiliza objetos, ligados mediante mensajes, para la solucin de problemas. Como ejemplo, consideremos una entidad bancaria. En ella identificamos entidades que son cuentas: cuenta del cliente 1, cuenta del cliente 2, etc. Una cuenta puede verse como un objeto que tiene unos atributos, nombre, nmero de cuenta y saldo, y un conjunto de mtodos como IngresarDinero, RetirarDinero, AbonarIntereses, SaldoActual, Transferencia etc. Realizamos una transferencia mediante la sentencia: cuenta0l.Transferencia(cuenta02); Transferencia es un mensaje que el objeto cuenta02 enva al objeto cuenta01, solicitando le sea hecha una transferencia, siendo la respuesta a tal mensaje la ejecucin del mtodo Transferencia.

MECANISMOS BSICOS DE LA POO


mensajes, mtodos y clases.

Los mecanismos bsicos de la programacin orientada a objetos son: objetos, Objetos

objeto es una entidad que tiene unas propiedades particulares (atributos) y unas formas de operar sobre ellas, los mtodos.

Un programa orientado a objetos se compone solamente de objetos. Un

Por ejemplo, una ventana de una aplicacin Windows es un objeto. El color de fondo, la anchura, la altura, etc. son sus atributos. Las rutinas, que permiten maximizar la ventana, minimizarla, etc. son sus mtodos. Mensajes Cuando se ejecuta un programa orientado a objetos, los objetos reciben, interpretan y responden a mensajes de otros objetos. Un mensaje est asociado con un mtodo, de tal forma que cuando un objeto recibe un mensaje la respuesta a ese mensaje es ejecutar el mtodo asociado. Por ejemplo, cuando un usuario quiere maximizar una ventana de una aplicacin Windows, lo que hace simplemente es pulsar el botn de la misma que realiza esa accin. Eso, provoca que Windows enve un mensaje a la ventana para indicar que tiene que maximizarse. Como respuesta a este mensaje se ejecutar el mtodo programado para ese fin.

Mtodos Un mtodo se implementa en una clase de objetos, y determina cmo tiene que actuar el objeto cuando recibe el mensaje vinculado con ese mtodo. A su vez, un mtodo puede tambin enviar mensajes a otros objetos solicitando una accin o informacin. En adicin, las propiedades (atributos) definidas en la clase permitirn almacenar informacin para dicho objeto. Cuando se disea una clase de objetos, la estructura ms interna del objeto se oculta a los usuarios que lo vayan a utilizar, manteniendo como nica conexin con el exterior, los mensajes. Esto es, los datos que estn dentro de un objeto solamente podrn ser manipulados por los mtodos asociados al propio objeto.

La ejecucin de un programa orientado a objetos realiza fundamentalmente tres cosas: 1. 2. 3. Crea los objetos necesarios. Los mensajes enviados a unos y a otros objetos dan lugar a que se procese internamente la informacin. Finalmente, cuando los objetos no son necesarios, son borrados, liberndose la memoria ocupada por los mismos.

Clases Una clase es un tipo de objetos definido por el usuario. Una clase es la generalizacin de un tipo especfico de objetos. Un objeto de una determinada clase se crea en el momento en que se define una variable de dicha clase. Por ejemplo, la siguiente lnea declara el objeto cliente01 de la clase o tipo Cuenta. Cuenta clienteO1 = new Cuenta ( ) ; // nueva cuenta

Cuando escribe un programa utilizando un lenguaje orientado a objetos, no se definen objetos, se definen clases de objetos, donde una clase se ve como una plantilla para mltiples objetos con caractersticas similares

No se tienen que escribir todas las clases que se necesitan en un programa, ya que Java proporciona una biblioteca de clases estndar para realizar las operaciones ms habituales que podamos requerir.

CMO CREAR UNA CLASE DE OBJETOS Un objeto contiene, por una parte, atributos que definen su estado, y por otra, operaciones que definen su comportamiento. Tambin sabemos que un objeto es la representacin concreta y especfica de una clase. Cmo se escribe una clase de objetos? Como ejemplo, podemos crear una clase PC. class PC { // ... } Para declarar una clase hay que utilizar la palabra reservada classseguida del nombre de la clase y del cuerpo de la misma. El cuerpo de la clase incluir entre { y } los atributos y los mtodos u operaciones que definen su comportamiento. Los atributos son las caractersticas individuales que diferencian un objeto de otro. El color de una ventana Windows, la diferencia de otras; el CURP. de una persona la identifica entre otras; el modelo de un ordenador le distingue entre otros; etc. La clase PC puede incluir los siguientes atributos: Marca: Mitac, Toshiba, Ast Procesador: Intel, AMD Pantalla: TFT, DSTN, STN

Los atributos tambin pueden incluir informacin sobre el estado del objeto; por ejemplo, en el caso de un ordenador, si est encendido o apagado, si la presentacin en pantalla est activa o inactiva, etc. Dispositivo: encendido, apagado Presentacin: activa, inactiva

Todos los atributos son definidos en la clase por variables:

c lass PC { String Marca; String Procesador; String Pantalla; boolean PCEncendido; boolean Presentacin; // ... } Se han definido cinco atributos: tres de ellos, Marca, Procesador y Pantalla, pueden contener una cadena de caracteres del tipo String. Los otros dos atributos, PCEncendido y Presentacin, son de tipo bolean. El comportamiento define las acciones que el objeto puede emprender. Por ejemplo, un objeto de la clase PC puede realizar algunas acciones como: o o o o o Ponerse en marcha Apagarse Desactivar la presentacin en la pantalla Activar la presentacin en la pantalla Cargar una aplicacin

Para definir este comportamiento hay que crear mtodos. Los mtodos son rutinas de cdigo definidas dentro de la clase, que se ejecutan en respuesta a alguna accin tomada desde dentro de un objeto de esa clase o desde otro objeto de la misma o de otra clase. Los objetos se comunican en ellos mediante mensajes. Agreguemos a la clase PC un mtodo que responda a la accin de ponerlo en marcha: void EncenderPC ( ) { i f ( PCEncend ido == true) // si est encendido... System.out.pr in t l n("El ordenador ya est en marcha."); else // si no est encendido, encenderlo. { PCEncendido = true; System.out.pr in t l n("El ordenador se ha encendido."); } } Un mtodo consta de su nombre precedido por el tipo del valor que devuelve cuando finalice su ejecucin (la palabra reservada void indica que el mtodo no devuelve ningn valor) y seguido por una lista de parmetros separados por comas y encerrados entre parntesis. Los parntesis indican a Java que el identificador

EncenderPC se refiere a un mtodo y no a un atributo. A continuacin se escribe

el cuerpo del mtodo encerrado entre { y }.

El mtodo EncenderPC comprueba si el ordenador est encendido; si lo est, simplemente visualiza un mensaje indicndolo; si no lo est, se enciende y lo comunica mediante un mensaje. Agreguemos un mtodo ms para que el objeto nos muestre su estado: void Es tado ( ) { System.out.pr in t l n( " \ n E s t ado de l ordenador : " + " \ nMarca " + Marca + " \ nP r o ce sado r " + Procesador + " \ nPan ta l l a " + Panta l l a + " \ n " ) ; i f ( PCEncend ido == t r ue ) / / s i e l ordenador es t encend ido . . . System.out.pr in t l n( " E l ordenador es t encend ido . " ) ; else / / s i no es t encend ido . . . System.out.pr in t l n( " E l ordenador es t apagado . " ) ; }
El mtodo Estado visualiza los atributos especficos de un objeto. Para poder crear objetos de la clase PC y trabajar con ellos, tenemos que aadir a esta clase el mtodo main . Siempre que se trate de una aplicacin (no de un applet) es obligatorio que la clase que define el comienzo de la misma incluya un mtodo main . Cuando se ejecuta una clase Java compilada que incluye un mtodo main , ste es lo primero que se ejecuta. Aadiendo el mtodo main a la clase PC el cdigo completo es el siguiente:

class PC { StringMarca; String Procesador ; String Panta l l a ;

boolean PCEncendido; boolean Presentac in ; void EncenderPC() { i f (PCEncendido == t rue) / / s i est encendido. . . System.out.print ln("E l ordenador ya est encendido. " ) ; else / / s i no est encendido, encender lo . { PCEncendido = true; System.out.print ln("E l ordenador se ha encendido." ) ; } } void Estado( ) { System.out.print ln(" \nEs tado del ordenador: " + "\nMarca " + Marca + "\nProcesador " + Procesador + "\nPantalla " + Pantalla + "\n"); i f (PCEncendido == t rue) / / s i el ordenador est encendido. . . System.out.print ln("E l ordenador est encendido. " ) ; else / / s i no est encendido. . . System.out.print ln("E l ordenador est apagado." ) ; } public static void main r i ng [ ] (St { PC MiPC = new PC(); MiPC.Marca = "Toshiba"; MiPC.Procesador = "Intel Pentium"; MiPC.Pantalla = "TFT"; MiPC.EncenderPC(); MiPC.Estado(); } } args)

El mtodo main siempre se declara pblico y esttico, no devuelve un resultado y tiene un parmetro args que es un arreglo de cadenas de caracteres. El mtodo main del ejemplo hace lo siguiente: La primera lnea crea un objeto de la clase PC y almacena una referencia al mismo en la variable MiPC. Esta variable se utiliza para acceder al objeto.
MiPC. Se puede observar que para acceder a los atributos o propiedades del objeto

Las tres lneas siguientes establecen los atributos del objeto referenciado por

se utiliza el operador punto (.).

En las dos ltimas lneas el objeto recibe los mensajes EncenderPC y Estado. La respuesta a esos mensajes es la ejecucin de los mtodos respectivos. Para acceder a los mtodos del objeto se utiliza el operador punto. Para acceder a un miembro de una clase (atributo o mtodo) se utiliza la sintaxis siguiente:
nombre_objeto.nombre_miembro

Al ejecutar el programa se pueden observar los resultados siguientes: El ordenador se ha encendido. Estado del ordenador: Marca Toshiba Procesador Intel Pentium Pantalla TFT El ordenador est encendido. Otra forma de crear objetos de una clase y trabajar con ellos es incluir dicha clase en el mismo archivo fuente de una clase ejecutable. Una clase ejecutable es aquella que incluye el mtodo main y crea objetos de otras clases. Por ejemplo, en vez de aadir el mtodo main a la clase PC, aadimos una nueva clase pblica denominada MiPC que incluya el mtodo main : publ i c c lass MiPC { publ i c stat i c void main t r i n g [ ] (S { // ... }

args )

c lass PC { // ... } Una aplicacin se construye mediante una clase cuyo nombre debe coincidir con el del programa fuente que la contenga, respetando maysculas y minsculas. Por lo tanto, el cdigo anterior se guarda en un archivo fuente denominado MiPC java. Finalmente se completa el cdigo, se compila y ejecuta. Ahora es la clase MiPC la que crea un objeto de la clase PC publ i c c lass MiPC { publ i c stat i c void main t r i n g [ ] args ) (S { PC MiPC =new PC( ) ; MiPC .Marca = "Tosh i ba " ; MiPC .P ro cesado r = " I n t e l Pent i um" ; MiPC .Pan ta l l a = "TFT" ; MiPC .EncenderPC ( ) ; MiPC .Es t ado ( ) ; } } c lass PC { Str ing Marca ; Str ing Procesado r ; Str ing Panta l l a ; boolean PCEncend ido ; boolean Presen tac i n ; { void EncenderPC() i f (PCEncendido == t rue) / / s i est encendido. . . System.out.print ln("E l ordenador ya est encendido. " ) ; else / / s i no est encendido, encender lo . { PCEncendido = true; System.out.print ln("E l ordenador se ha encendido." ) ; }

void Estado( )

} }

System.out.print ln(" \nEs tado del ordenador: " + "\nMarca " + Marca + "\nProcesador " + Procesador + "\nPantalla " + Pantalla + "\n"); i f (PCEncendido == t rue) / / s i el ordenador est encendido. . . System.out.print ln("E l ordenador est encendido. " ) ; else / / s i no est encendido. . . System.out.print ln("E l ordenador est apagado." ) ;

La aplicacin MiPC java tiene dos clases: la clase ejecutable MiPC y la clase PC. La clase ejecutable es pblica (public) y la otra no. Cuando se incluyen

varias clases en un archivo fuente, slo una puede ser pblica y su nombre debe coincidir con el del archivo donde se guardan. Al compilar este archivo, Java crear tanto archivos .class como clases separadas hay.

CARACTERSTICAS DE LA POO
encapsulamiento, herencia y polimorfismo.

Las

caractersticas

fundamentales

de

la

POO

son:

abstraccin,

Abstraccin Por medio de la abstraccin conseguimos no preocuparnos por los detalles concretos de las cosas, sino generalizar y centrarse en los aspectos que permitan tener una visin global del problema. Encapsulamiento Esta caracterstica permite ver un objeto como una caja negra en la que se ha introducido de alguna manera toda la informacin relacionada con dicho objeto. Esto nos permitir manipular los objetos como unidades bsicas, permaneciendo oculta su estructura interna. La abstraccin y el encapsulamiento estn representados por la clase. La clase es una abstraccin, porque en ella se definen las propiedades o atributos de un determinado conjunto de objetos con caractersticas comunes, y es una encapsulacin porque constituye una caja negra que encierra tanto los datos que almacena cada objeto como los mtodos que permiten manipularlos. Herencia La herencia permite el acceso automtico a la informacin contenida en otras clases. De esta forma se garantiza la reutilizacin del cdigo. Con la herencia

todas las clases estn clasificadas en una jerarqua. Cada clase tiene su superclase (la clase superior en la jerarqua), y cada clase puede tener una o ms subclases (las clases inferiores en la jerarqua).

Clase PC

Clase PC_Escritorio

Clase PC_Portatil

Las clases que estn en la parte inferior en la jerarqua se dice que heredan de las clases que estn en la parte superior en la jerarqua. El trmino herencia significa que las subclases disponen de todos los mtodos y propiedades de su superclase. Este mecanismo proporciona una forma rpida y cmoda de extender la funcionalidad de una clase. En Java cada clase slo puede tener una superclase, lo que se denomina herencia simple. En otros lenguajes orientados a objetos, como C++, las clases pueden tener ms de una superclase, lo que se conoce como herencia mltiple.

En este caso, una clase comparte los mtodos y propiedades de varias clases. Esta caracterstica, proporciona un poder enorme a la hora de crear clases, pero complica excesivamente la programacin, por lo que es de escasa o nula utilizacin. Java, intentando facilitar las cosas, soluciona este problema de comportamiento compartido utilizando interfaces. Una interfaz es una coleccin de nombres de mtodos, sin incluir sus definiciones, que puede ser aadida a cualquier clase para proporcionarle comportamientos adicionales no incluidos en los mtodos propios o heredados. Polimorfismo Esta caracterstica permite implementar mltiples formas de un mismo mtodo, dependiendo cada una de ellas de la clase sobre la que se realice la implementacin. Esto hace que se pueda acceder a una variedad de mtodos distintos (todos con el mismo nombre) utilizando exactamente el mismo medio de acceso.

CONSTRUCTORES Y DESTRUCTORES Un constructor es un procedimiento especial de una clase que es llamado automticamente siempre que se crea un objeto de esa clase. Su funcin es iniciar el objeto. Un destructor es un procedimiento especial de una clase que es llamado automticamente siempre que se destruye un objeto de esa clase. Su funcin es realizar cualquier tarea final en el momento de destruir el objeto. Otro Ejemplo: Se va a construir una clase para representar nmeros racionales. Un nmero racional como objeto, tendra dos atributos: el numerador y el denominador. Y los mtodos aplicables 'sobre los nmeros racionales son numerosos: suma, resta, multiplicacin, simplificacin, etc. Pero slo consideraremos dos mtodos: denominador;
AsignarDatos,

para

establecer los

valores

del

numerador

del

VisualizarRacional, para visualizar un nmero racional.

La aplicacin propuesta, queda como se muestra a continuacin:

c lass Rac i ona l { in t Numerador ; in t Denominador ; void As i gna rDa tosin t num, int den) ( { Numerador = num; if (den == 0) den = 1; // el denominador no puede ser cero Denominador = den; void VisualizarRacional() { . System.out.println(Numerador + / + Denominador); }

publ i c stat i c void main t r i n g [ 1 args ) (S { // Punto de entrada a la aplicacin Racional rl = new Rac i ona l ( ) ; / / c rea r un ob je t o Rac iona l rl.AsignarDatos(2, 5); rl.VisualizarRacional(); } }
Racional.java.

Una vez editado el programa, se guarda en el disco con el nombre Qu hace esta aplicacin?

Fijndonos en el mtodo principal, main , vemos que se ha declarado un objeto r1 de la clase Racional. Racional r1 = new Rac i ona l ( ) ; En el siguiente paso se enva el mensaje AsignarDatos al objeto r1. El objeto responde a este mensaje ejecutando su mtodo AsignarDatos que almacena el valor 2 en su numerador y el valor 5 en su denominador; ambos valores han sido pasados como argumentos. r1.AsignarDatos(2, 5); Finalmente, se enva el mensaje VisualizarRacional al objeto r1. El objeto responde a este mensaje ejecutando su mtodo VisualizarRacional que visualiza sus atributos numerador y denominador en forma de quebrado; en nuestro caso, el nmero racional 2/5: r1.VisualizarRacional(); Al finalizar, se compila; y luego se ejecuta la aplicacin.

EJERCICIOS PROPUESTOS 1. Aadir a la aplicacin PC.java el mtodo ApagarPC.

2. Disear una clase Coche que represente coches. Incluir los atributos marca, modelo y color; y los mtodos que simulen, enviando mensajes, las acciones de arrancar el motor, cambiar de velocidad, acelerar, frenar y parar el motor.

Das könnte Ihnen auch gefallen