You are on page 1of 6

Fundamentos de Programacin. Lenguaje JAVA 1.

- INTRODUCCIN

1.- INTRODUCCIN
La mayora de los programadores alguna vez han escuchado hablar o han usado alguna de las siguientes formas de programacin:

Programacin Lineal. Programacin Estructurada. Programacin Modular. Programacin Orientada a Objetos.

En las siguientes secciones se discute brevemente en que consiste cada una de estas tcnicas resaltando las ventajas y desventajas respecto a las otras. 1.1.- PROGRAMACIN LINEAL Usualmente, cualquier programador empieza escribiendo programas pequeos y simples, los cuales consisten de una parte principal. En este caso el ''programa principal'' consiste de una secuencia de comandos o declaraciones que modifican datos globales a travs de todo el programa. Lo anterior se ilustra en la siguiente figura:

Esta es la manera tradicional en que un principiante se inicia como programador y ni tiene mayor dificultad. Por otro lado, es bien conocido que esta forma de programacin tiene tremendas desventajas una vez que el programa es lo suficientemente grande. Por ejemplo, si la misma secuencia de declaraciones se necesita en lugares diferentes del programa, entonces dicha secuencia debe ser copiada en cada lugar donde haga falta. Lo anterior gener la idea de extraer secuencias y ponerlas en algn ''lugar'' desde donde sea posible ejecutarlas para luego regresar al programa principal. El ''lugar'' se conoce como subrutina, procedimiento o funcin, dependiendo del lenguaje, y es la base de la programacin estructurada.

1.2.- PROGRAMACIN ESTRUCTURADA En la programacin estructurada se pueden conjuntar secuencias de declaraciones e instrucciones en un mismo lugar, las que despus pueden ser usadas por el programa principal desde cualquier punto. La secuencia se conoce como subrutina, procedimiento o funcin dependiendo del lenguaje que se trate. Se dice que se hace una llamada para invocar al procedimiento. Despus de que la secuencia es procesada, el control de flujo regresa al programa principal justo despus de donde se hizo la llamada, vase la figura:

Fundamentos de Programacin. Lenguaje JAVA 1.- INTRODUCCIN

La inclusin de procedimientos hace a los programas estructurados y con menos posibilidad de errores. Por ejemplo, si un procedimiento es correcto, cada vez que sea ejecutado producir, en principio, resultados correctos. Por el contrario, en caso de que el procedimiento contenga errores, se puede agilizar la bsqueda de stos ltimos y repararlos rpidamente. Un programa puede verse como una secuencia de llamadas a procedimientos. El programa principal es el responsable de pasar los datos individuales en cada llamada, los datos son procesados y una vez que el programa finaliza, se presentan se obtienen los resultados finales. De esta manera, el control de flujo de datos puede ser ilustrado como una grfica jerrquica como se muestra en la siguiente figura.

En resumen, la programacin estructurada, consiste en dividir un programa en pequeas piezas llamadas procedimientos y cada procedimiento es ejecutado o llamado por el programa principal desde diferentes lugares de ste para resolver un problema. La programacin estructurada resuelve algunos problemas que se tienen con la programacin lineal. Sin embargo existen algunos otros que se mencionarn a continuacin.

1.3.- PROGRAMACIN MODULAR La programacin modular permite agrupar procedimientos, que tienen una funcionalidad comn, en mdulos separados. Por lo tanto, un programa ya no consiste de una sola parte. El programa ahora se divide en varias partes ms pequeas que interactan a travs de interfaces y llamadas a procedimientos, vase figura

Fundamentos de Programacin. Lenguaje JAVA 1.- INTRODUCCIN

Cada mdulo puede contener sus propios datos. Esto permite que cada mdulo maneje un estado interno el cual es modificado por las llamadas a sus procedimientos.

1.4.- PROGRAMACIN ORIENTADA A OBJETOS En la POO, la estructura es organizada por los datos. Los datos se consideran la parte ms importante del programa, de modo que se agrupan en objetos. Primero se seleccionan las representaciones de los datos (objetos) que mejor cumplen con los requerimientos del problema, y luego se decide qu hacer con ellas, que es justo lo contrario a la programacin modular. Ahora se va a interactuar con objetos cada uno manteniendo su propio estado, ver figura

Podra decirse que cada objeto implementa su propio mdulo permitiendo coexistir a varios objetos del mismo tipo. Cada objeto es responsable de su inicializacin y destruccin. Los objetos modelan las caractersticas de los problemas del mundo real, su comportamiento ante estas caractersticas y su forma de interactuar con otros elementos. 1.4.1.- Conceptos de la POO 1.4.1.1.- Objetos Un objeto en la POO, es la implementacin sw de un objeto del mundo real. En el mundo real, un objeto se distingue de otros objetos por tener unas determinadas caractersticas y servir para algo, o dicho de otra forma, se pueden realizar distintas operaciones con/sobre ese objeto.

Fundamentos de Programacin. Lenguaje JAVA 1.- INTRODUCCIN

Ejemplo: Una casa es un objeto. CARACTERSTICAS: Nmero de pisos, altura total en metros, color de la fachada, nmero de ventanas, nmero de puertas, ciudad, calle y nmero donde est ubicada, etc. OPERACIONES: Construir, destruir, pintar fachada, etc. Evidentemente, cada objeto puede definirse en funcin de multitud de caractersticas y se pueden realizar innumerables operaciones sobre l. Ya en trminos de programacin, ser misin del programador determinar qu caractersticas y que operaciones interesa mantener sobre un objeto. Siguiendo con el ejemplo anterior, sobre el objeto casa puede no ser necesario conocer su ubicacin y por lo tanto, dichas caractersticas no formarn parte del objeto sw definido por el programador. Lo mismo podra decirse sobre las operaciones. En terminologa de programacin orientada a objetos, a las caractersticas del objeto se les denomina ATRIBUTOS y a las operaciones MTODOS. Cada uno de estos mtodos es un procedimiento o una funcin perteneciente a un objeto. Un objeto est formado por una serie de caractersticas o datos (atributos) y una serie de operaciones (mtodos). No puede concebirse nicamente en funcin de los datos o de las operaciones sino en su conjunto.

1.4.1.2.- Mensajes Se dice que los objetos sw interactan y se comunican entre s mediante mensajes. En un programa escrito en algn LOO (Lenguaje Orientado a Objetos), varios objetos coexisten en el programa, y para el desarrollo del programa es necesario que interacten y se comuniquen entre s. Cuando un objeto quiere que otro objeto haga algo, a de llamar al mtodo correspondiente del otro objeto. Esa llamada a mtodo es lo que se considera un mensaje.

1.4.1.3.- Clases Los conceptos de objeto y clase estn muy unidos en la POO. Tal como cuando en el mundo real hay objetos que tienen caractersticas y funcionalidades similares se dice que son del mismo tipo, en la POO se dice que hay objetos que son de la misma clase. Una clase sw en POO se puede considerar como una plantilla, a partir de la cual se pueden crear objetos sw. As, una clase describe los mtodos y atributos que definen las caractersticas comunes a todos los objetos de esa clase. Segn este concepto, un objeto sw es una instancia de una clase en tiempo de ejecucin de un programa. Al decir instancia, nos referimos a copia en memoria. Ejemplo:

Fundamentos de Programacin. Lenguaje JAVA 1.- INTRODUCCIN

Mundo real: El plano de un arquitecto es una clase, y los edificios que se construyen a partir de l, objetos. Los edificios, al fin y al cabo, son copias de lo indicado en el plano, en el mundo real. Programacin en C: Un tipo de dato sera equivalente al concepto de clase, y cada vez que se declara una variable, esa variable sera un objeto de esa clase. En tiempo de ejecucin, un programa crea objetos a partir de las clases. Cada objeto ser nico y reconocible, guardar informacin en sus atributos y realizar operaciones sobre sus atributos mediante sus mtodos. Ejemplo: Podramos tener una clase alumno, en la que guardaramos datos como el nombre, la edad, en sus atributos, y tendramos mtodos para modificar y visualizar esos datos. Instanciando la clase alumno, podramos tener un objeto alumno1, cuyo atributo nombre tuviese un valor Aitor, el atributo edad un valor 24, y los mtodos especificados en la definicin de su clase. Se podra volver a instanciar la clase alumno, y tener un objeto alumno2. Los valores que se dan a los atributos son irrelevantes, de cualquier forma, hay dos objetos de la clase alumno en memoria, alumno1 y alumno2.

1.4.2.- Caractersticas de la POO 1.4.2.1.- Encapsulamiento El encapsulamiento consiste en la propiedad que tienen los objetos de ocultar sus atributos, e incluso los mtodos, a otras partes del programa u otros objetos. La forma natural de construir una clase es la de definir una serie de atributos que, en general, no son accesibles fuera del mismo objeto, sino que nicamente pueden modificarse a travs de los mtodos que son definidos como accesibles desde el exterior de esa clase.

1.4.2.2.- Herencia Es una de las principales ventajas de la POO. Esta propiedad permite definir clases derivadas de otras, de forma que la nueva clase (la clase derivada) hereda de la clase antecesora todos sus ATRIBUTOS y MTODOS. La nueva clase puede definir nuevos atributos y mtodos o incluso puede redefinir atributos y mtodos ya existentes (por ejemplo: cambiar el tipo de un atributo o las operaciones que realiza un determinado mtodo). Es la forma natural de definir objetos en la vida real. La mayora de la gente dira, por ejemplo, que un chalet es una casa con jardn. Tiene las mismas caractersticas y propiedades u operaciones que pueden realizarse sobre una casa y, adems, incorpora una nueva caracterstica, el jardn.

Fundamentos de Programacin. Lenguaje JAVA 1.- INTRODUCCIN

En otras ocasiones, se aadir funcionalidad (mtodos) y no atributos. Por ejemplo: un pato es un ave que nada. Mantiene las mismas caractersticas que las aves y nicamente habra que declarar un mtodo sobre la nueva clase (el mtodo nadar). La caracterstica de herencia permite la reutilizacin del cdigo, siendo muy fcil aprovechar el cdigo de clases ya existentes, modificndolas mnimamente para adaptarlas a las nuevas especificaciones.

1.4.2.3.- Polimorfismo El polimorfismo permite que un mismo mensaje enviado a objetos de clases distintas haga que estos se comporten tambin de forma distinta (objetos distintos pueden tener mtodos con el mismo nombre o incluso un mismo objeto puede tener mtodos con el mismo nombre pero con distintos parmetros).

1.5.- PROGRAMACIN ESTRUCTURADA VS. POO Ilustraremos la diferencia de resolver un problema en Programacin Estructurada y en Programacin Orientada a Objetos, mediante un ejemplo: PROBLEMA: Tomarse un caf en la cafetera RESOLUCIN: PROGRAMACIN ESTRUCTURADA El cliente entra en la cafetera. El cliente pasa detrs de la barra. El cliente prepara la cafetera. El cliente hace el caf con la cafetera. El cliente se sirve el caf. El cliente se toma el caf. POO El cliente entra en la cafetera. El cliente pide un caf al camarero. El camarero prepara la cafetera. La cafetera hace el caf. El camarero sirve el caf al cliente. El cliente se toma el caf.