Beruflich Dokumente
Kultur Dokumente
Tema 1
Programacin IV
Tema 1
Programacin IV
Tema 1
veces menor. Ms aun, el costo de detectar y reparar un error durante la etapa de mantenimiento es veinte veces ms alto. Era evidente la necesidad de hallar nuevas y mejores tcnicas de produccin.
Programacin IV
Tema 1
Programacin IV
Tema 1
cuerpo de un auto monoltico que si el cuerpo est hecho de distintas partes. En este caso, se puede reemplazar una nica parte ms fcilmente que el cuerpo completo. Una situacin anloga se aplica al software; un producto de software que consiste en mdulos bien diseados, es mucho ms fcil de analizar y reparar que uno monoltico. La modularizacin correcta, promueve la reparabilidad permitiendo que los errores sean confinados en unos pocos mdulos, haciendo ms fcil la localizacin y remocin de la misma Reutilizacin: Capacidad de los productos de ser reutilizados, en su totalidad o en parte, en nuevas aplicaciones. La reusabilidad es el factor clave que caracteriza la madurez del campo industrial. Se observa un alto grado de reusabilidad en reas como la industria automotriz y los consumos electrnicos. Por ejemplo, en la industria automotriz, el motor es a menudo reusado de modelo en modelo. Adems, el auto es construido por ensamble de componentes que estn altamente estandarizados y son usados para muchos modelos producidos por la misma industria. El bajo grado de reusabilidad en el software es un claro indicador que el campo debe evolucionar para conseguir el status de una bien establecida disciplina ingenieril. Interoperabilidad: Se refiere a la habilidad de un sistema de coexistir y cooperar con otros sistemas - por ejemplo, la habilidad de un procesador de palabras para incorporar un grfico producido por un graficador, o la habilidad del graficador para graficar los datos producidos por una planilla de clculo, o la habilidad de la planilla de clculo para procesar una imagen escaneada por un scanner
La Orientacin a Objetos
Las metodologas y tcnicas estructurales de los 70 y 80 no eliminaron el problema de la crisis del software. Surgieron nuevas herramientas y mtodos, pero la complejidad del problema contina creciendo considerablemente, y stas no dan una solucin eficiente, y fundamentalmente, no resuelven el problema de la reutilizacin. La razn de que esta crisis persista es que la demanda de software se incrementa de forma tan rpida al menos como el desarrollo de las tcnicas que ayudan a su produccin. Por lo tanto, cuando una tcnica estaba resultando til, el enorme crecimiento de la complejidad la hace obsoleta. El aumento de la complejidad no es un asunto trivial. Si se supone que cada nueva funcionalidad agregada a un producto de software agrega un nuevo mdulo, se puede medir el aumento de complejidad en cuanto a la interaccin creciente de los mdulos (nuevos con los existentes). Esto agravado por el hecho de que generalmente no se trata de escribir la menor cantidad de cdigo posible, sino que se suele incurrir en aumentos, a veces innecesarios, del tamao del programa. Es decir, se agregan parches, en vez de mantener una alta calidad y funcionalidad. Es posible afrontar problemas de mayor complejidad realizando modelos (abstracciones), que estn estrechamente relacionados con el problema a resolver. Todas las tcnicas usadas hasta ese momento requeran hacer una transformacin del modelo del problema (o espacio del problema) hacia el modelo de la solucin (o espacio de la solucin). La orientacin a objetos es precisamente la tcnica ms reciente que intenta acercar el modelo del problema al de la solucin. La idea es crear objetos que representan elementos tanto del espacio del problema como de la solucin. De este modo se describe el problema en trminos del problema, y cuando se lee cdigo se leen palabras que expresan el problema. Esta es una de las razones por las que la orientacin a objetos se est haciendo cada vez ms popular. Es un conjunto de disciplinas (ingeniera) que desarrollan y modelan software que facilita la construccin de sistemas complejos a partir de componentes. Trata de cumplir las necesidades de los usuarios finales, y las propias de los desarrolladores de productos software mediante la modelizacin del mundo real. El soporte fundamental es el modelo de objetos. Los cuatro elementos o propiedades ms importantes de este modelo segn Booch son: abstraccin, modularidad, encapsulamiento y jerarqua. Adems de stas, suele incluirse el polimorfismo. Segn Booch, si alguno de estos elementos no existe, se dice que el modelo no es orientado a objetos. La realidad dice que son muy pocos los modelos puros orientados a objetos. La mayor parte son hbridos, que surgen como extensiones, y que implementan algunas de las propiedades mencionadas.
Programacin IV
Tema 1
Los principios de la definicin de objetos ayudan a los programadores a hacer cdigo ms robusto, mantenible y seguro; porque se puede aislar cada uno de los objetos y tratarlo como un ente nico, con su propia personalidad, sin que haya cientos de caractersticas que se deban tener presentes, tal como se haca en la programacin orientada a procedimiento. Lo cual, desde el punto de vista econmico, s resulta viable, ya que los objetos bien diseados pueden ser utilizados en muy diversas aplicaciones, con lo cual el tiempo de desarrollo total se reduce. Caractersticas del paradigma de objetos 1) Los sistemas orientados a objetos: Proporcionan el rendimiento, la flexibilidad y funcionalidad requerida para implementaciones prcticas. La programacin se puede hacer con lenguajes OO puros, como Smalltalk y Eiffel, o con extensiones de lenguajes comerciales, como Object-Pascal, C++ o Java, que se conocen como hbridos, dado que, partiendo de lenguajes existentes (por ej. el lenguaje C), y agregndole unas pequeas componentes, implementan la capacidad del desarrollo orientado a objeto. Esto significa que tienen capacidad de implementar clases, encapsular datos, aplicar polimorfismo, etc. Aumentan la variedad de aplicaciones que se pueden programar ya que se liberan las restricciones de los tipos de datos predefinidos. Acomodan estructuras de datos heterogneos y complejos: se pueden aadir nuevos tipos de datos sin modificar cdigo existente. 2) Propuestas de reutilizacin (reusability) de componentes software: Bloques iniciales para la construccin del programa, similares a la construccin de cualquier objeto complejo (tal como un automvil) que se construye ensamblando sus partes. Esta caracterstica es de suma importancia. Ofrece varias ventajas, entre las que destacan: costo: dado que si se usan partes ya hechas, se pierde menos tiempo fiabilidad: si ya se estn usando, se tiene la seguridad de que funciona bien 3) No slo son nuevos lenguajes de programacin, sino un nuevo modo de pensar y disear aplicaciones. Desde el momento en que se inicia un proyecto, relevando los requisitos, se comienzan a aplicar estos nuevos conceptos, y a medida que se avanza en el desarrollo del mismo, es posible realizar etapas en paralelo, de modo que el cliente tenga una mayor aproximacin a lo que ser el resultado final. Esto sin perjuicio de poder volver a etapas anteriores, si fuera necesario, y asentar las modificaciones pertinentes. Es decir, ya no se cumplen las etapas en forma secuencial, como se haca en la metodologa de anlisis y diseo estructurado. En los ltimos aos se observa un abandono progresivo de las metodologas estructuradas, que en principio pareca que iban a sobrevivir a los objetos y coexistir con ellos. Es inexorable el desplazamiento de la mayor parte de los desarrollos estructurados por parte del paradigma de objetos. Una de las causas ms fuertes de esta situacin es indirecta, y tiene que ver con la tendencia cada vez mayor a desarrollar aplicaciones distribuidas sobre Internet y la Web. En realidad, este modelo de computacin distribuida no est necesariamente ligado a los objetos, pero los actores ms importantes del mercado de software han decidido lanzar herramientas de desarrollo que utilizan exclusivamente el paradigma de objetos (Sun Microsystems/java Microsoft/.NET), y esto parece ser un camino sin retorno. Por otra parte, se debe tener en cuenta que las nuevas metodologas de desarrollo de software bregan por una menor separacin entre las fases de desarrollo. Tanto analistas como diseadores y programadores debern manejar un lenguaje comn, y todos debern aprender de diseo, arquitecturas y patrones. Esto justifica la importancia de estudiar la orientacin a objetos como conjunto, y no abordarla slo desde un lenguaje de programacin. Este enfoque se encuentra en una etapa de madurez como paradigma del desarrollo de sistemas de informacin. El Object Management Group (OMG) es un consorcio a nivel internacional que integra a los principales representantes de la industria de la tecnologa de informacin OO. Tiene como objetivo central la promocin, fortalecimiento e impulso de la industria OO. Propone y adopta por consenso especificaciones entorno a la tecnologa OO. Una de las especificaciones ms importantes es la adopcin en 1998 del Lenguaje de Modelado Unificado o UML (del ingls Unified Modeling Language) como un estndar, que junto con el Proceso Unificado (PU) estn consolidando la tecnologa OO.
Programacin IV
Tema 1
Lenguajes de programacin OO
El primer lenguaje que introdujo los conceptos de orientacin a objetos fue SIMULA 67 creado en Noruega, por un grupo de investigadores dirigido por O. J. Dahl y K. Nygaard, con el fin de realizar simulaciones discretas de sistemas reales. En estos tiempos no existan lenguajes de programacin que se ajustaran a sus necesidades, as que se basaron en el lenguaje ALGOL 60 y lo extendieron con conceptos de objetos, clases, herencia, el polimorfismo por inclusin (que se obtiene introduciendo la herencia de clases) y procedimientos virtuales. Estos ltimos permiten la sobrecarga de procedimientos, de tal forma que para un solo procedimiento se pueden tener varias implementaciones, dependiendo del nivel de jerarqua de la herencia de clases en el cual est definido un procedimiento. El lenguaje fue utilizado sobre todo en Europa y no tuvo mucho impacto comercial, sin embargo los conceptos que se definieron en l, se volvieron sumamente importantes para el futuro del desarrollo de software. Alrededor de los aos 70 fue desarrollado el lenguaje SMALLTALK en los laboratorios Xerox en Palo Alto, E.U.A.. ste lenguaje adopt los conceptos nombrados anteriormente como su fundamento. El hecho de ser creado en E.U.A., ayudo a que se introdujera a nivel mundial el trmino de Orientacin a Objetos y que cobrara importancia entre los diseadores de lenguajes de programacin. Los puntos importantes de este lenguaje fueron, por un lado, adoptar el concepto de objeto y clase como ncleo del lenguaje y la programacin interactiva, incorporando las ideas ya conocidas de lenguajes funcionales. Es decir que se tuviese un lenguaje interpretado y no compilado. En 1985, E. Stroustrup extendi el lenguaje de programacin C a C++, es decir C con conceptos de clases y objetos, tambin por esta fecha se cre desde sus bases el lenguaje EIFFEL por B. Meyer. Ambos manejan conceptos de objetos y herencia de clases. La herencia es mltiple, y se introduce pensando en dar mayor flexibilidad a los desarrolladores. Sin embargo, actualmente la herencia mltiple se ha evitado por agregar complejidad en las estructura de clases. Ambos lenguajes tuvieron importancia entre 1985 y hasta la primera mitad de los noventa. En 1995 apareci JAVA, el ms reciente lenguaje OO, desarrollado por SUN, que hereda conceptos de C++, pero los simplifica y evita la herencia mltiple. A cambio se introduce el trmino de interfaz, y la herencia mltiple de interfaces. Obtiene una rpida aceptacin gracias a los applets, que son unos programas en JAVA insertado en pginas WEB dentro del cdigo HTML. Estos programas pueden viajar a travs de la Internet y brindarle al usuario mayor interactividad con las pginas WEB. JAVA introduce tambin, la programacin concurrente y distribuida. El lenguaje es mitad compilado y mitad interpretado dando como resultado la portabilidad a distintas plataformas. JAVA aun sigue evolucionando y se espera que en los prximos aos logre la madurez adecuada para volverse un lenguaje de desarrollo de mayor importancia. Los lenguajes orientados a objetos puros implementan todas las propiedades de POO mencionadas y utilizan todas las ventajas de esta tecnologa. Son ms difciles de aprender en un principio. Sin embargo, ofrecen mayor facilidad de reutilizacin. Los lenguajes hbridos tienen como base algn lenguaje tradicional, al que agregan los conceptos de objetos, mensajes y clases. Ms popular de los lenguajes puros es Smalltalk y entre los hbridos sobresale Java.