Programacion Orientada A Objetos - Clases
martes, 19 de octubre de 2010
Programación oriendata a objetos (POO)
Programación oriendata a objetos (POO)
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.
Motivación
Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO.
Cómo se piensa en objetos
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.
Clases en POO
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en inglés significa ejemplar). Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto.
miCoche = new Coche()
Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche.
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación.
Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.
Otras cosas
Hay mucho todavía que conocer de la POO ya que sólo hemos hecho referencia a las cosas más básicas. También existen mecanismos como la herencia y el polimorfismo que son unas de las posibilidades más potentes de la POO.
La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos.
Son conceptos avanzados que cuesta explicar en las líneas de ese informe. No hay que olvidar que existen libros enteros dedicados a la POO y aquí solo pretendemos dar un repaso a algunas cosas para que os suenen cuando tengáis que poneros delante de ellas en los lenguajes de programación que debe conocer un desarrollador del web.
Ejemplo concreto de programación orientada a objetos
Para conseguir un ejemplo concreto de lo que es la programación orientada a objetos, podemos entrar en el Manual de PHP 5. Realmente este manual explica las características de orientación a objetos de PHP 5 y ofrece ejemplos concretos de creación de clases con características como herencia, polimorfismo, etc.
martes, 12 de octubre de 2010
Texto de Proyectos informaticos
La Informática o computación es la ciencia del tratamiento automático de la información mediante un computador (llamado también ordenador o computadora).
La Informática es la tecnologíaque estudia el tratamiento de la información.
La informática es un amplio campo que incluye los fundamentos teóricos, el diseño, la programacióny el uso de las computadoras (ordenadores).
El proyectorepresenta el enunciado de una intervención concreta de la que se espera tener resultados que contribuyan al logro de los efectos específicos que un programa define. Como tal, expresa el nivel operativo del proceso de planificación, por lo que sus metodologías y técnicasserán de uso habitual para los profesionales de la Intervención social.
Hasta no hace mucho tiempo el conceptode proyecto y los documentos, planificación y gestión eran consideradas únicamente en las grandes obras de ingeniería.
La informática, aun los grandes sistemas, era considerada mas como una labor artesana, muy próxima al programador, que como una técnica con necesidad de una planificación efectiva.
Actualmente el concepto de proyecto se aplica al campo de la informática. Este cambio no surgió de la noche a la mañana, sino que fue debido a la evoluciónde los propios sistemas informáticos. La informática constantemente dobla su capacidad y posibilidades, pero también las exigencias que debe cumplir, siendo la eficacia y rentabilidad de su sistema informática un factor muy importante para las empresas modernas.
Este notable aumento de la complejidad de la informática ha sido la que ha hecho necesario su consideración como proyecto, asociándose las técnicas y procedimientosde diseño, planificación y gestión del proyecto tradicional.
La definición de proyecto informática no varia de la definición de proyecto dada anteriormente, tan solo varia el campo de aplicación de las técnicas asociadas al proyecto.
Una de las fases más complejas del proyecto es la de definir los objetivos. La personaque encarga el proyecto rara vez conoce claramente los objetivos, tan solo tiene una idea general, quiere informatizar algo o gestionar algo. Este es uno de los problemas con que se encuentra el informática en las primeras fases del proyecto. El no definir los objetivos correctamente es la causa de muchos de los problemas que se presentan durante el cielo de desarrollo del proyecto:
El cliente puede no quedar satisfecho con el productofinal, ya que es posible que no haya definido correctamente lo que quiere.
El cliente puede introducir objetivos o restricciones durante la ejecución del proyecto que afecten de manera sustancial al mismo.
La no concreción o ambigüedad de los objetivos puede provocar que nadie se responsabilice de los fallos, ya que gran parte del proyecto habrá sido dejado al criterio del programador, en vez de ser este únicamente el técnico que permita obtener los objetivos impuestos por el cliente.
Los objetivos debe fijarlos pues quien encarga el proyecto, y se ha de conseguir que estos sean claros, definidos, concretos y no ambiguos.
Es el conjunto de operaciones limitadas en el tiempo, de las cuales resulta un producto final (Metas Presupuestarias), que concurre a la expansión de la acción de Gobierno. Representa la creación, ampliación y/o modernización de la producción de los bienes y servicios, implicando la variación sustancial o el cambio de procesosy/o tecnología utilizada por la Entidad. Luego de su culminación, generalmente se integra o da origen a una Actividad.
Aunque los aspectos puramente materialesy técnicos de diseñar son esenciales, es necesario considerar el componente no-técnico que igualmente influye en la viabilidad del proyecto. En realidad, cuando un problema no presenta aspectos como la legalidad, belleza, economía, etc., o bien factores de carácterpolítico, social, ético, el problema no es de ingeniería sino que más bien se está ante un problema de tipo exclusivamente técnico.
OBJETIVOS DEL PROYECTO
Existen tres tipos de familias de objetivos informáticos:
1.-De servicio: Este tipo de objetivos son definidos por el cliente, normalmente para alcanzar a largo plazo (3 meses a dos años) y afectan a la organización operativa y gestión del área usuaria. Pueden ser cualitativos (fiabilidad, calidad, etc.) y cuantitativos (beneficios de gestión, beneficios de funcionamiento, etc.)
2.-De producción:Son definidos por la informática, se han de cumplir a corto plazo y afectan al desarrollo y explotación del proyecto. Normalmente son cuantitativos (coste, plazo, calidad, rendimiento, etc.). En cuanto a los objetivos coste, plazo y calidad, lo más importante es señalar que no se pueden alanzar los tres simultáneamente. Si dos están especificados, es necesario que el tercero pueda variar.
3.-Estratégicos: Son definidos por el DG, su alcance es a largo plazo (de 3 a 5 años) y afectan a todas las áreas de la empresa. Normalmente son cualitativos (cobertura, integración, imagen, migración, etc.).
TIPOS DE PROYECTO
Atendiendo al criterio de riesgoen la ejecución y grados de libertad en la implementación podemos distinguir entre varias clases de proyectos:
· Proyectos de investigación básica
La investigación básica es la que se realiza con total libertad hasta el punto que a veces no existen objetivos marcados. Su libertad es máxima y el riesgo de no conseguir algún resultado es muy grande
· Proyectos de investigación aplicada
Existen menos grados de libertad y se pueden marcar algunos objetivos a conseguir, no obstante el riesgo sigue siendo alto en este tipo de proyectos. Es en este tipo donde empieza a aplicarse el concepto de proyecto definido anteriormente, ya que cada investigación ira dirigida a un propósito determinado y se le asignaran unos recursos, aunque estos pueden ser cambiantes con el tiempo.
· Proyectos de investigación y desarrollo (I+D)
Estos ya son aplicaciones muy específicas que han de dar lugar a la producción de prototipos y donde se realiza un diseño previo, se proponen unos objetivos y se realiza un estudio de viabilidad.
· Proyectos correspondientes a la construcción de cualquier elemento
El grado de libertad de que se dispone en este tipo de proyectos es todavía menor que en los anteriores, ya que conocemos el coste, la cantidad y la naturaleza de los recursos.
Vemos que se puede considerar proyecto según la definición que hemos considerado a los tres últimos tipos pero no así al proyecto de investigación básica.
Por otra parte, es conocida la gran diferencia existente entre los objetivos y finalidades de la empresa publica y privada, por lo que, los proyectos pueden ser a su vez públicos o privados.
Esta diferenciación tiene unas características distintas, aunque no lo suficientemente grande como para hacer un estudio diferenciado de sus metodologías de desarrollo .
Los recursos mas frecuentemente utilizados que caracterizan a un sistema de información, son los componentes de la Tecnología de la Información ( TI ) como ser el uso de Hardware , Software y Comunicaciones .
En cuanto a estos elementos de la Tecnología de la Información, podemos considerar que ya han llegado a un desarrollo más que suficiente para la aplicación en una operación informática. Lo que nos lleva a que la gestión de un hecho informático como un proyecto integral, tanto sea en su entorno de diseño, como en su planificación y control, definen una nueva etapa; una mayoría de edad en el tratamiento informático.
Es así que hoy dada la evolución en la Tecnología de la Información, los proyectos de aplicación típicamente administrativos, desarrollados principalmente en pequeñas y medianas empresas , y que desarrollan su planeamiento informático basado en el uso de las microcomputadoras; puedan ser administrados por un único profesional
Es por todo esto que, los conceptos de Proyecto y de Metodología de diseño que, hasta hace poco tiempo, eran solamente aplicados a grandes emprendimientos; hoy también deben ser aplicados a medianos y pequeños emprendimientos.
Considerando entonces, la importancia que la informática tiene en los planes estratégicos de cualquier empresa moderna; no solamente se debe tener en cuenta la evolución de los recursos de la tecnología de la información, sino también las distintas metodologías para el desarrollo de los sistemas de información.
Así es que, el solo hecho de considerar a un asunto informático como un proyecto al que se asocian técnicas y procedimientos de diseño, supone un paso importante.
1.2. INICIO DE UN PROYECTO NFORMÁTICO
Ya vimos una clasificación (ver figura 1), que nos permite clarificar el origen de un proyecto informático, pero ¿cómo podremos determinar la magnitud de un Proyecto informático?.
En un entorno informático estable, la decisión de iniciar un proyecto viene dada por las necesidades de: mantenimiento, modificación, mejoramiento, reemplazo o capacidad; encuadrándose así, el proyecto informático, dentro de una categoría de complejidad mostrada en la figura 1.2:
El Mantenimiento del programa; es una consecuencia de una omisión realizada en la etapa del diseño del sistema e involucra solucionar fallas menores del sistema, que obligará a la realización de cambios en el programa; como por ejemplo el descuido de no considerar que puedan ocurrir en el sistema, ciertas condiciones extraordinarias; como sería el caso de un aumento no previsto del 60 %, en la emisión de órdenes de compra. Las fallas también pueden provenir de otros factores, como ser en el caso de que existan cambios en las expectativas de los usuarios.
La Modificación del programa; involucra algo más que un simple cambio en el programa; involucra un cambio estructural de una entidad Por ejemplo, un cambio en el número de dígitos del código postal, o en el código de zona telefónica. La diferencia con el Mantenimiento es el grado de importancia
El Mejoramiento del sistema; es el agregado de capacidadesque no formaron parte del sistema de información original ; por ejemplo cuando en una división se implementó un sistema de inventarios, este sistema no incluía un modulo para calcular la futura demanda de bienes y partes. La inclusión de este sofisticado módulo de cálculo es considerado un mejoramiento del sistema.
El Reemplazo del sistema; ocurre cuando los sistemas de información se tornan físicamente, tecnológicamente o competitivamente obsoletos. Como es el caso de la utilización del láser, en el reconocimiento óptico de caracteres para la lectura del código de barras, remplazando a la entrada por teclado.
La Nueva Capacidad del sistema; son sistemas de información para los cuales no es necesario el uso de la automatización. Están dados por la capacidad de poder modelizar la aplicabilidad de nuevos sistemas. Un ejemplo de ello, es la aplicación de los sistemas expertos.

Categorías de los sistemas de información
LA ELABORACIÓN DE UN PROYECTO INFORMÁTICO
Un Proyecto Informático lo componen un conjunto de tareas independientes cuyo objeto es la realización de un software que automatice el sistema de Información requerido por el usuario.
Un proyecto nace a partir del momento en que se formulan sus necesidades. La persona que se vaya a encargar de su dirección tiene el deber de estudiarlas con los usuarios (clientes) y hacer el estudio de viabilidad en sus dos principales vertientes:
*Técnica
* Económica
* Económica
Se debe llevar a cabo una previsión para realizar la determinada aplicación de software en una fecha prevista y ponerlo en marcha con recursos limitados tales como materiales, programas y personas que no posean necesariamente ni el mismo lenguaje ni los mismos objetivos laborales.
Las razones del fracaso de un proyecto informático, aparte de las citadas en las archifamosas leyes de Murphy, son:
* Ausencia del estudio de viabilidad para ajustarse a unas necesidades claramente explicitadas y comprendidas.
* Especificaciones vagas, incompletas o incluso cambiantes.
* Falta de utilización de herramientas adecuadas para poder validar el comportamientodel sistema en el futuro, donde es necesario disponer de una buenaherramienta de simulación.
* Mala estimación de costes.
* Reparto inadecuado de las tareas entre los miembros del equipo.
* Ausencia o mal seguimiento que se llevan a cabo en momentos inoportunos o que no se ajustan a la realidad.
* Especificaciones vagas, incompletas o incluso cambiantes.
* Falta de utilización de herramientas adecuadas para poder validar el comportamientodel sistema en el futuro, donde es necesario disponer de una buena
* Mala estimación de costes.
* Reparto inadecuado de las tareas entre los miembros del equipo.
* Ausencia o mal seguimiento que se llevan a cabo en momentos inoportunos o que no se ajustan a la realidad.
Ante este sombrío panorama no debemos desanimarnos ya que se puede tener la falsa impresión de que el más mínimo error nos va a llevar al fin prematuro del proyecto.
Afortunadamente, esto es solo una impresión (presuponer de antemano lo que va a ocurrir), pero existen técnicas para llevarlo a buen puerto y es conveniente que al realizarlo por primera vez éste sea supervisado por una persona experta, que debe comprobar que se van cumpliendo todas y cada una de las etapas.
A lo largo de mi vida profesional he dirigido un número suficiente de proyectos para poder permitirme, humildemente claro , el aconsejar los pasos a seguir, así como las decisiones a tomar si algo sale mal.
Todo ello es muy subjetivo porque también hay que contar con la preparación de la persona que lo vaya a desarrollar, así como una serie de cualidades que no voy a acometer en estos momentos, ya que no es el propósito que se persigue con este artículo.
Más bien se trata de proveer de las técnicas o conocimientos de base indispensables para dirigir un proyecto informático (este término esta utilizado para reducir el campo sobre el tema que se toca).
Un proyecto consta de varias fases básicas, desde que se lanza y formaliza la idea de automatización (se le designa con el nombre de informatización) hasta su implantación.
martes, 5 de octubre de 2010
Suscribirse a:
Entradas (Atom)