Está en la página 1de 4

Desarrollo de proyectos de software

DESARROLLO ORIENTADO A OBJETOS Introduccin La historia del desarrollo de software se ha evolucionado en base una misma idea: Hacer que la tarea de realizar programas para computadoras sea cada mas simple, flexible y portable. Esta evolucin la podemos ver desde la poca en que las mquinas eran gigantescas y se programaban a travs de tarjetas perforadas, hasta la poca actual en los dispositivos se hacen cada vez mas pequeos y el software tiene la necesidad de ser cada da mas portable. Desde las primeras generaciones de computadoras se ha buscado lograr que la vida sea cada vez mas fcil mediante el empleo de herramientas de cmputo, esto ha ocasionado que el desarrollo de software tambin sufra evoluciones que han ido desde el lenguaje mquina hasta los entornos de programacin visuales que ahora conocemos. La primera gran evolucin del desarrollo de software fueron los lenguajes estructurados, los cuales aportaron conceptos novedosos, pero que dejaban el trabajo pesado a los programadores, teniendo ellos que cargar con las rutinas para determinados procesos, ocasionando con esto que desviaran su atencin del principal problema que deban resolver. El mas reciente avance del desarrollo de software es la programacin orientada a objetos, la cual ofrece mucho mayor dominio de los programas. El programador puede ocuparse en realizar aplicaciones ms complejas al exigir menor esfuerzo de atencin. La Programacin Orientada a Objetos, POO (OOP, Object Oriented Programming, en ingles), es una tcnica de programacin cuyo soporte fundamental es el objeto. Es un modo de trabajo ms natural, que permite al desarrollador centrarse en solucionar el problema en lugar de tener que andar pensando en cmo decirle a la computadora que haga esto o lo otro. La programacin orientada a objetos es un modo de trabajo ms natural, que te permite centrarte en solucionar el problema en lugar de tener que andar pensando en cmo decirle a la computadora que haga esto o lo otro. Pongamos por ejemplo que, en lugar de disear un programa, ests conduciendo un coche. Qu esperas que suceda cuando pisas el acelerador? Pues esperas que el coche acelere. Ahora bien, cmo haga el coche para decirle al motor que aumente de revoluciones te tiene sin cuidado.

Aurelio Lpez Ovando

http://aureliux.wordpress.com

Desarrollo de proyectos de software

Clases y objetos A menudo es fcil confundir ambos trminos. Ambas cosas son iguales? No, Para que pueda haber un objeto debe existir previamente una clase, pero no al revs: la clase es la "plantilla" en la que nos basamos para crear el objeto. Volvamos al ejemplo del coche: todos ellos tienen una serie de caractersticas comunes: todos tienen un motor, ruedas, un volante, pedales, chasis, carrocera...; todos funcionan de un modo parecido para acelerar, frenar, meter las marchas, dar las luces...; sin embargo, cada uno de ellos es diferente de los dems, puesto que cada uno es de su marca, modelo, color..., propiedades que lo diferencian de los dems, aunque una o varias de ellas puedan coincidir en varios coches.

De un modelo de auto (clase) pueden fabricarse muchos otros autos (objetos)

Diramos entonces que todos los coches estn basados en una plantilla, o un tipo de objeto, es decir, pertenecen todos a la misma clase. Sin embargo, cada uno de los coches es un objeto de esa clase: todos comparten la "interfaz", pero no tienen por qu compartir los datos (marca, modelo, color, etc). Se dice entonces que cada uno de los objetos es una instancia de la clase a la que pertenece, es decir, un objeto. En resumen, la clase es algo genrico (la idea que todos tenemos sobre lo que es un coche) y el objeto es algo mucho ms concreto (el coche del vecino, el nuestro, el papamvil...). Identificadores, atributos y mtodos La Programacin Orientada a Objetos tiene como punto medular el uso de objetos, que en realidad son estructuras lgicas que representan elementos o entidades del mundo real. Esta representacin se basa en los siguientes aspectos: Se usan nombres (identificador descriptivo) que permiten hacer una rpida asociacin con el correspondiente objeto. Por ejemplo: para representar un vehculo, se puede definir un objeto o entidad denominado Auto. Para representar el estado del objeto, se utilizan variables, denominadas atributos o propiedades, que almacenan diferentes valores que pueden ir cambiando en el tiempo. Por ejemplo: el auto puede estar representado por cilindraje, velocidad, etc. Para describir el comportamiento del objeto y cmo ste interacta con otros de su mismo tipo o de otro tipo, se definen mtodos (operaciones), que corresponden a acciones especficas del objeto, una vez ms, simulando el mundo real. Por ejemplo: avanzar, frenar, abrir la puerta delantera derecha, etc. Por ejemplo: El objeto Automvil en el mundo real.
Atributos:

- Color - Marca - Cantidad de Puertas - Velocidad a la que se desplaza


Representacin Lgica del Automvil Clase Automvil

Mtodos (acciones):
- Avanzar - Frenar - Cambiar Velocidad - Abrir Puerta

Aurelio Lpez Ovando

http://aureliux.wordpress.com

Desarrollo de proyectos de software

Encapsulamiento Es la capacidad que tienen los objetos de ocultar su cdigo al cliente y proteger sus datos, ofreciendo nica y exclusivamente una interfaz que garantiza que el uso del objeto es el adecuado. La ocultacin del cdigo es algo evidente: por ejemplo cuando se pisa el acelerador del coche, lo nico que sabemos es que el coche acelerar, pero el cmo lo haga es algo que no podremos ver. En cuanto a la proteccin de datos, fjate tambin en un detalle del ejemplo: no podemos modificar directamente el valor de la velocidad, dado que es una accin que como conductores tenemos restringido, la nica forma de hacerlo es acelerando y/o frenando. Esta importante caracterstica asegura que la velocidad del coche se va a manejar del modo adecuado.

ENCAPSULAMIENTO: La parte interna de un auto no la conocemos, solo sabemos lo que podemos hacer con ello

Herencia Gracias a ella podemos definir clases nuevas basadas en clases antiguas, aadindoles ms datos o ms funcionalidad. Para ver esto ms claro sigamos con el ejemplo del coche. Siguiendo con el ejemplo de los autos: Tenemos este modelo antiguo que se muestra en la figura, originalmente se necesitaba que se le diera cuerda para poder arrancar, su velocidad era muy deficiente y su interior sumamente incmodo, sin embargo tuvo las suficientes caractersticas para iniciar la revolucin de la industria automotriz, despus de este auto las empresas empezaron a Modelo antiguo construir nuevos modelos que tomaban lo mejor de cada generacin de autos y la complementaban con nuevas caractersticas, de tal manera que cada coche tena caractersticas de algn modelo anterior e incorporaba sus propias caractersticas

HERENCIA: Cada auto heredaba las caractersticas de algn modelo anterior e incorporaba sus propias caractersticas

De igual manera se hereda el cdigo en la programacin orientada o objetos, al grado que de una clase sencilla se pueden construir otras clases ms complejas, sobre este aspecto, lo ideal para construir una clase coche hubiera sido construir clases ms sencillas (ruedas, motor, chasis, carrocera, volante, ...), y despus construir la clase coche derivndola de todas ellas. NOTA: Una clase puede derivarse de otra, pero no de varias.

Aurelio Lpez Ovando

http://aureliux.wordpress.com

Desarrollo de proyectos de software

Polimorfismo Siguiendo con el ejemplo de los coches, pensemos que tenemos un auto mgico, que se pueda transformar para cada situacin que yo desee, pero que en el fondo siga siendo el mismo auto, por ejemplo: Que se convierta en un coche elegante para una cita, o en un carro de fuerza para salir al campo, o en auto deportivo para presumir a los amigos

Para una cena

Para una carrera

Para da de campo

POLIMORFISMO El mismo auto se transforma para cada situacin especial

Pues esto es, ms o menos, lo que proporciona el polimorfismo en la POO. No es necesario modificar el cdigo de la clase original. Si esta est bien diseada, basta con derivar otra clase de la original y modificar el comportamiento de los mtodos necesarios. Ciclo de vida de un software Se entiende por ciclo de vida de un proyecto software a todas las etapas por las que pasa un proyecto: Concepcin de la idea que hace surgir la necesidad de disear un sistema software. Anlisis que comprende la parte lgica, se deben elaborar diagramas, ponerse en el zapato de usuario y pensar como El, debemos hacerla de analista, de tcnico, etc se debe evitar a toda costa encerrarnos a pensar slo como programadores. Desarrollo, en esta tapa se le da vida al programa, es la parte de la codificacin. Implantacin que comprende la parte tcnica del software, se debe tener cuidado donde se va a instalar, previamente se debi haber analizado los requisitos de hardware. Mantenimiento esta etapa ya no le corresponde al desarrollador, pero si debe dejar toda la documentacin que facilite esta labor a quien se vaya a encargar de hacerla, en esta etapa de mantenimiento se puede estropear si no se hace de la manera correcta. Sustituido, en esta vida nada es eterno, y el software tampoco, asi que llegado este momento se debe tener en cuenta que el software que va sustituir al viejo debe cumplir todas las expectativas del que ya se tiene instalado y superarlas

Aurelio Lpez Ovando

http://aureliux.wordpress.com