Sei sulla pagina 1di 19

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

UNIDAD 1. INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS CAPITULO 1. Introduccin Y Elementos Bsicos De Programacin Orientada A Objetos (POO) 1.1 Introduccin Actualmente una de las reas ms importantes en la industria y el mbito acadmico es la orientacin a objetos. La orientacin a objetos promete mejoras de amplio alcance en la forma de diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo del software: la falta de portabilidad del cdigo y reusabilidad, cdigo que es difcil de modificar, ciclos de desarrollo largos y tcnicas de codificacin no intuitivas. Un lenguaje orientado a objetos ataca estos problemas. Tiene tres caractersticas bsicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos de los lenguajes pueden cumplir uno o dos de estos puntos, pero es muy difcil que se cumplan los tres, el inconveniente mas complicado de disear es la herencia. El concepto de programacin orientada a objetos (POO) no es nuevo, lenguajes clsicos como SmallTalk se basan en ella. Dado que la POO, se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolucin del problema se realiza en trminos de objetos. Un lenguaje se dice que est basado en objetos si soporta como una caracterstica fundamental del mismo. El elemento fundamental de la POO es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen una estructura y forman parte de una organizacin. Esta definicin especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto nmero de componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organizacin jerrquica o de otro tipo. Bsicamente la POO permite a los programadores escribir software, de forma que est organizado en la misma manera que el problema que trata de modelar. Los lenguajes de programacin convencionales son poco ms que una lista de acciones a realizar sobre un conjunto de datos en una determinada secuencia. Si en algn punto del

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
programa modificamos la estructura de los datos o la accin realizada sobre ellos, el programa cambia. 1.2 Porqu POO? Es una manera de pensar, otra manera de resolver un problema; lo ms reciente en metodologas de desarrollo de software. Es un proceso mental humano aterrizado en una computadora. Antes se adecuaba el usuario al entendimiento de la computadora. Actualmente, se le ensea a la computadora a entender el problema. La Orientacin a Objetos es un paradigma, es decir, es un modelo para aclarar algo o para explicarlo. La Orientacin a Objetos es el paradigma que mejora el diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y preocupaciones que han existido desde el comienzo del desarrollo del software:
La

falta de portabilidad del cdigo, su reusabilidad, la modificacin (que antes era difcil de lograr), ciclos de desarrollo largo, tcnicas de programacin no intuitivas. La Orientacin a Objetos est basada en los tres mtodos de organizacin que utilizamos desde la infancia; entre un objeto y sus atributos (automvil > marca, color, nmero de llantas, etc.); Entre un objeto y sus componentes donde incluso otros objetos pueden formar parte de otros objetos (agregacin) (camin > motor, parabrisas, llantas); entre un objeto y su relacin con otros objetos (camin > vehculos automotores; una bicicleta no entrara en esta relacin). La metodologa del software orientado a objetos consiste en:
Saber

el espacio del problema Realizar una abstraccin Crear los objetos (espacio de la solucin) Instanciarlos (esto es, traerlos a la vida) Dejarlos vivir (ellos ya saben lo que tienen que hacer) Las herramientas de programacin orientadas a objetos ayudan a manejar la complejidad. Desarrollar software que sea fcil de utilizar hace que sea muy compleja su construccin.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
El diseo del nuevo software se enfoca a complejas interfaces de usuarios, sistemas de manejo de ventanas, y programas multitarea estn haciendo que el software sea cada vez mas complejo. Las herramientas enfocadas a objetos facilitan la comprensin de esta complejidad, la estructuracin orientada a objetos reduce el nmero de conexiones entre los componentes del sistema, obligar a que los objetos se comuniquen a travs de una interfaz pblica estrecha hace ms fcil aislar los errores ocultos y determinar cuales son los mtodos responsables de los errores ocultos que ocurran. Los objetos mismos protegen los datos privados de modificaciones no deseadas. La definicin explicita de un protocolo de comunicacin permite a compiladores e intrpretes advertir a los usuarios acerca de los accesos ilegales e incluso impedir la modificacin no deseada de los componentes del sistema. Una de las mayores ventajas de una estructura orientada a objetos es el mapeo directo de los objetos en el dominio del problema a los objetos en el programa. Este mapeo directo es una consecuencia de tener una estructura basada en objetos. Si la programacin se considera una simulacin, resulta mucho ms fcil seleccionar objetos de un mundo simulado que desarrollar una solucin de programacin basada completamente en procedimientos y acciones. La orientacin a objetos surgi de la necesidad de simular sistemas de forma sencilla, no solo de informacin, si no de cualquier otro tipo, sin importar el modo de implantacin. 1.3 Que es la POO? La Programacin Orientada a Objetos (POO OOP segn siglas en ingls) es una metodologa de diseo de software y un paradigma de programacin que define los programas en trminos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos) y comportamiento (esto es, procedimientos o mtodos). La programacin orientada a objetos expresa un programa como un conjunto de estos objetos, que se comunican entre ellos para realizar tareas. Esto difiere de los lenguajes procedimentales tradicionales, en los que los datos y los procedimientos estn separados y sin relacin. Estos mtodos estn pensados para hacer los programas y mdulos ms fciles de escribir, mantener y reutilizar. Otra manera en que esto es expresado a menudo, es que la programacin orientada a objetos anima al programador a pensar en los programas principalmente en trminos de tipos de datos, y en segundo lugar en las operaciones ("mtodos") especficas a

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
esos tipos de datos. Los lenguajes procedimentales animan al programador a pensar sobre todo en trminos de procedimientos, y en segundo lugar en los datos que esos procedimientos manejan. Los programadores que emplean lenguajes procedimentales, escriben funciones y despus les pasan datos. Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y mtodos y despus envan mensajes a los objetos diciendo que realicen esos mtodos en s mismos. Algunas personas tambin diferencian la POO sin clases, la cual es llamada a veces programacin basada en objetos. Hay un cierto desacuerdo sobre exactamente que caractersticas de un mtodo de programacin o lenguaje le califican como "orientado a objetos", Trmino de Programacin Orientada a Objetos indica ms una forma de diseo y una metodologa de desarrollo de software que un lenguaje de programacin, ya que en realidad se puede aplicar el Diseo Orientado a Objetos (En ingls abreviado OOD, Object Oriented Design), a cualquier tipo de lenguaje de programacin. El desarrollo de la POO empieza a destacar durante la dcada de lo 80 tomando en cuenta la programacin estructurada, a la que engloba y dotando al programador de nuevos elementos para el anlisis y desarrollo de software. Se puede definir POO como una tcnica o estilo de programacin que utiliza objetos como bloque esencial de construccin. Los objetos son en realidad como los tipos abstractos de datos. Un TAD es un tipo definido por el programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Se denominan abstractos para diferenciarlos de los tipos de datos fundamentales o bsicos. 1.4 Ventajas de POO La OOP proporciona las siguientes ventajas sobre otros lenguajes de programacin Uniformidad. Ya que la representacin de los objetos lleva implica tanto el anlisis como el diseo y la codificacin de los mismos. Comprensin. Tanto los datos que componen los objetos, como los procedimientos que los manipulan, estn agrupados en clases, que se corresponden con las estructuras de informacin que el programa trata.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar, cualquier cambio que se realice sobre ellos quedar reflejado automticamente en cualquier lugar donde estos datos aparezcan. Estabilidad. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del programa que permanecen inalterables en el tiempo. Reusabilidad. La nocin de objeto permite que programas que traten las mismas estructuras de informacin reutilicen las definiciones de objetos empleadas en otros programas e incluso los procedimientos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una simple combinacin de objetos ya definidos donde estos estn relacionados de una manera particular. Reutilizacin. Las clases se construyen a partir de otras clases. Sistemas ms fiables. Proceso de desarrollo apropiado. Desarrollo ms flexible. Modelos que reflejan mejor la realidad. Mejor independencia e interoperatividad de la tecnologa. Mejor informtica distribuida en cliente servidor. Bibliotecas de clases comerciales disponibles. Mejores relaciones con los clientes. Mejor calidad del producto de software terminado. 1.5. Desventajas de la tecnologa orientada a objetos. A pesar de que las ventajas de la programacin orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas caractersticas no deseables en sta. Limitaciones para el programador. No obstante que la tecnologa orientada a objetos no es nueva, un gran porcentaje de programadores no estn familiarizados con los conceptos de dicha tecnologa. En otras palabras, la lgica de la programacin estructurada sigue siendo predominante en la mayora de los desarrolladores de software, despus de haber revisado de forma breve los principios de la programacin orientada a objetos, nos es claro que en sta se requiere una lgica de pensamiento totalmente diferente a la lgica comnmente utilizada para la programacin estructurada.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Tamao excesivo en las aplicaciones resultantes. La gran mayora de los equipos de cmputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayora de las aplicaciones que puedan desarrollarse con la tecnologa orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple. Una de las desventajas de la programacin orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implcita todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga. Velocidad de ejecucin. Esto tiene que ver, en cierto modo, con el punto anterior, una aplicacin innecesariamente pesada en muchas ocasiones es ms lenta de ejecutar que una aplicacin conformada nicamente por los mdulos necesarios. 1.6 Evolucin de la programacin POO (Programacin Orientada a Objetos)es un importante conjunto de tcnicas que se pueden utilizar para hacer el desarrollo de programas ms eficientes mientras se mejora la facilidad de los programas resultantes. En esencia, POO es un nuevo medio de enfocar el trabajo de programacin. Sin embargo, a fin de comprender lo que es la POO, es necesario comprender sus races. As pues, comenzaremos por examinar la historia del proceso de programacin analizada cmo evolucin POO y deduciendo, en consecuencia, por qu es tan importante este concepto. 1.6.1. Programacin lineal. Los lenguajes de programacin lineal (BASIC, COBOL Y FORTRAN) no tenan facilidad para reutilizar el cdigo existente de programas. De hecho se duplicaban segmentos de software cada vez ms en muchos programas. Los programas se ejecutaban en secuencias lgicas, haciendo la lgica difcil de comprender. El control de programas era difcil y se producan continuos saltos a lo largo del referido programa. An ms, los lenguajes lineales no tenan capacidad de controlar la visibilidad de los elementos llamados datos. 1.6.2. Programacin Modular El soporte ms elemental de la programacin Modular lleg con la aparicin de la subrutina. Una subrutina ha creado una secuencia de instrucciones a las que se les da un nombre independiente; una vez que se ha definido, la subrutina se puede ejecutar simplemente incluyendo el nombre del programa siempre que se requiera. Las

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
subrutinas proporcionan una divisin natural de las tareas; diferentes programas utilizan. Aunque las subrutinas proporcionan el mecanismo bsico de la programacin Modular, se necesita mucha disciplina para crear software bien estructurado. Sin esta disciplina, es fcil escribir programas compilados y tortuosos difciles de modificar y comprender, as como imposible de mantener. Esta ha sido la panormica durante muchos aos en el desarrollo del software. 1.6.3. Programacin Estructurada. Un concepto importante en campo de la programacin Estructurada: Abstraccin, ya que la Abstraccin se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un programa estructurado, es suficiente conocer que un procedimiento sea fiable, para que se pueda utilizar sin tener que conocer cmo funciona su interior. Esto se conoce como una Abstraccin funcional y es el ncleo de la programacin estructurada. Hoy casi todos los lenguajes de programacin tienen construcciones que facilitan la programacin estructurada. 1.7. Comparacin entre la Programacin orientada a Objetos y la programacin estructurada. 1.7.1. Paradigma Estructurado La Programacin estructurada fija su atencin en el conjunto de acciones que manipulan el flujo de datos, mientras que la POO se fija en la interrelacin que existe entre los datos y las acciones a realizar con ellos. Descomposicin funcional: el sistema es considerado una unidad funcional que se disgrega en procesos El resultado del proceso de abstraccin para la solucin de un problema macro lo constituyen pequeos subprogramas Un problema macro se subdivide en unidades ms pequeas llamadas procesos, estos se pueden distribuir entre diferentes personas que se vean involucradas en la solucin de un problema y as efectuar los desarrollos de software de una manera ms rpida y eficiente. Figura 1.1 Programacin Estructurada Los procesos son la parte central de este modelo pues a partir de estos se manejan las variantes (datos) que solucionarn el problema. Generalmente se manejan muchos procesos lo cual hace largos cdigos. El mantenimiento de los desarrollos deben efectuarse minuciosamente.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Los procedimientos empleados en una aplicacin pueden reutilizarse teniendo cuidado en el manejo de los datos. Las operaciones se ajustan a las caractersticas propias de los lenguajes procedimentales. Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para resolverlo

Los procesos son la parte central de este modelo pues a partir de estos se manejan las variantes (datos) que solucionarn el problema. Generalmente se manejan muchos procesos lo cual hace largos cdigos. El mantenimiento de los desarrollos deben efectuarse minuciosamente. Los procedimientos empleados en una aplicacin pueden reutilizarse teniendo cuidado en el manejo de los datos. Las operaciones se ajustan a las caractersticas propias de los lenguajes procedimentales. Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para resolverlo

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

1.7.2 Paradigma Orientado a Objetos Descomposicin en objetos. El sistema es considerado un objeto o conjunto de objetos. Los cuales son el resultado del proceso de abstraccin para la solucin del problema macro. Dado que un problema macro puede ser dividido en objetos, estos pueden ser tratados por diferentes personas que luego lo integraran para dar la solucin final.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Los datos (estados) son la parte central del modelo y los mtodos que los modifican muestran el comportamiento del objeto. El mantenimiento de programas y aplicaciones generalmente son fciles de realizar . Los objetos que se modelan en el desarrollo de un sistema se ajustan a la realidad que representa el problema, este puede representare como un objeto o conjunto de objetos abstractos. El modelo orientado a objetos no es una tcnica de programacin sino un medio de plasmar el mundo real.

Adicin: Producto Punto: Producto Cruz: Producto por escalar: Normal:

R = A + B, R =(a1 + b1, a2 + b2, a3 + b3) R = A . B, R =(a1 .b1 + a2 .b2 + a3 .b3) R = A x B, R =(a2*f3-a3*b2, a3*b1-a1*b3, a1*b2- a2*b1) R = k A, R = ( ka1, ka2, ka3 ) R = /R/I, R = Raz cuadrada de (A * A) Figura 1.4 Objeto

1.7.2.1.Ventajas del Modelo orientado a objetos con respecto al modelo estructurado Un modelo de objetos es ms cercano a la realidad que un modelo funcional. Un desarrollo realizado con el modelo orientado a objetos es ms fcil de mantener y de reutilizar.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
El modelo orientado a objetos evita la redundancia en los procesos luego los cdigos son ms entendibles y resumidos. La integridad que dan los objetos a los datos evita ambigedades en su uso, dando mayor seguridad en los resultados. El modelo orientado a objetos facilita la integridad de mdulos que hallan sido realizados por separado sin correr riesgos en el manejo de los datos.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Capitulo 2. Propiedades Bsicas De La Programacin Orientada a Objetos La programacin orientada a objetos, ha tomado las mejores ideas de la programacin estructurada y los ha combinado con varios conceptos nuevos y potentes que incitan a contemplar las tareas de programacin desde un nuevo punto de vista. La programacin orientada a objetos, permite descomponer ms fcilmente un problema en subgrupos de partes relacionadas del problema. Entonces, utilizando el lenguaje se pueden traducir estos subgrupos a unidades auto contenidas llamadas objetos. El trmino Programacin Orientada a Objetos (POO), hoy en da ampliamente utilizado, es difcil de definir, ya que no es un concepto nuevo, sino que ha sido el desarrollo de tcnicas de programacin desde principios de la dcada de los setenta, aunque sea en la dcada de los noventa cuando ha aumentado su difusin, uso y popularidad. No obstante, se puede definir POO como una tcnica o estilo de programacin que utiliza objetos como bloque esencial de construccin. Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos de un objeto se les conoce como miembros; las funciones que operan sobre los objetos se denominan mtodos y los datos se denominan miembros datos. 2.1 Abstraccin Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando los estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. La abstraccin es una especificacin del sistema que enfatiza sobre algunos de los detalles o propiedades del mismo mientras suprime a otros. Una buena abstraccin es aquella que enfatiza sobre detalles significativos al lector y al usuario y suprime detalles que son al menos por el momento irrelevantes o que causan distraccin. Existen cuatro tipos de abstracciones: La primera es la abstraccin de entidades; este tipo de abstraccin representa una entidad ya sea del dominio del problema o del dominio de la solucin.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
El segundo tipo de abstraccin es la abstraccin de acciones, es la abstraccin de comportamiento, esta abstraccin proporciona un conjunto especializado de operaciones y todas ellas desempean funciones del mismo tipo. El tercer tipo de abstraccin es el de maquinas virtuales, este tipo de abstraccin agrupa operaciones virtuales utilizadas por un nivel superior de control u operaciones que utilicen un conjunto de operaciones de nivel inferior. Por ejemplo, una abstraccin que utilice el cdigo "x" cuando la aplicacin se ejecute en Latinoamrica, o utilice el cdigo "y" cuando se ejecute el Norteamrica. El ltimo tipo de abstraccin es el de coincidencia, que almacena un conjunto de operaciones que no tienen relacin entre s, esto es, toma actividades que aparentemente no tienen una relacin como las clases hombre (con mtodos como come(), camina(), etc.), las clases transporte areo (volar()) y ave (volar()) y creamos una subclase de hombre llamada superhombre que come(), camina() y vuela(); esto se logra tomando comportamientos que no tienen que ver entre s y no se atribuyen a la herencia sino a la interfaz. Padre Interfaz \/ Hijo Por definicin una interfaz es abstracta, por lo tanto no tiene un comportamiento, slo la declaracin de este. 2.2 Encapsulacin Tambin llamada "ocultacin de la informacin", esto asegura que los objetos no pueden cambiar el estado interno de otros objetos de maneras inesperadas; solamente los propios mtodos internos del objeto pueden acceder a su estado.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Cada tipo de objeto expone una interfaz a otros objetos que especifica cmo otros objetos pueden interactuar con l. Algunos lenguajes resaltan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. La encapsulacin protege los atributos que conforman al objeto, y permite o niega informacin al pblico. Con el encapsulamiento, se consigue ocultar informacin y ocultar todos los secretos de un objeto que no contribuyen a sus caractersticas esenciales, tpicamente la estructura de un objeto se encuentra oculta y la implantacin de sus mtodos es visible. Para el caso del termmetro tal vez slo se requieren 3 mtodos: activarlo, desactivarlo y pedirle la temperatura. Un objeto es la abstraccin de algo que forma parte del dominio del problema reflejando las posibilidades de un sistema para mantener la informacin sobre l. Representa una entidad real o abstracta con un papel bien definido dentro de nuestro mundo y con dos caractersticas que son sus atributos y su comportamiento. Ejemplos de objetos pueden ser un celular, lentes, pluma, computadora, pizarrn, perro, etc. Los objetos se componen de atributos o variables que aclaran el estado del objeto. Los atributos de un objeto, bicicleta, podran ser el nmero de llantas que tiene (estado 2) el numero de marchas (estado 4 si es de velocidades), numero de asientos (estado uno), velocidad instantnea. Para alterar el estado de un objeto se necesita invocar un mtodo. Este mtodo es algo que el objeto sabe y por lo tanto define su comportamiento.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Bicicleta.dameTuvelocidadactual() -entrega 0 Bicicleta.avanza(10) -modifico su velocidad Bicicleta.dameTuvelocidadactual()-entrega valor distinto de cero. La encapsulacion es una tcnica que permite localizar y ocultar los detalles de un objeto. La encapsulacin previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulacin es como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada. Las principales razones tcnicas para la utilizacin de la encapsulacin son: 1) Mantener a salvo los detalles de representacin, si solamente nos interesa el comportamiento del objeto. 2) Modificar y ajustar la representacin a mejores soluciones algortmicas o a nuevas tecnologas de software. 2.3 Modularidad Proceso de crear partes de un todo que se integran perfectamente entre s para que funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es un conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se puede cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo una mesa. Esto ayuda a la descomposicin de problemas en subproblemas, es decir, a la solucin de problemas por composicin de soluciones a subproblemas Modularidad es el atributo del software que permite a un programa ser manejable intelectualmente. G. Myers La arquitectura del software implica la divisin de ste en componentes identificables y tratables por separado, denominados mdulos, que estn integrados para satisfacer los requisitos del programa.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Un software monoltico no puede ser entendido fcilmente por un solo usuario. El nmero de caminos de control, mbito de referencia, nmero de variables y la complejidad global haran su comprensin casi imposible. Para ver la importancia de la modularidad, considrense los siguientes argumentos basados en observaciones llevadas a cabo: Sea C(x) una funcin que define la complejidad percibida de un problema x, y E(x) una funcin que defina el esfuerzo (en tiempo) requerido para solucionar el problema x. Para dos problemas P1 y P2, si C(P1) > C(P2) se sigue que E(P1) > E(P2) Otra interesante caracterstica se ha descubierto durante la experimentacin en la resolucin de problemas, y es: C(P1 + P2) > C(P1) + C(P2) se sigue que E(P1 + P2) > E(P1) + E(P2) Es ms fcil resolver un problema complejo cuando se rompe en piezas manejables. 2.4 Jerarqua La mayora de las personas ve de manera natural nuestro mundo como objetos que se relacionan entre s de una manera jerrquica. Por ejemplo, un perro es un mamfero, y los mamferos son animales, y los animales seres vivos... Del mismo modo, las distintas clases de un programa se organizan mediante la jerarqua. La representacin de dicha organizacin da lugar a los denominados rboles de herencia:

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Mediante la herencia una clase hija puede tomar determinadas propiedades de una clase padre. As se simplifican los diseos y se evita la duplicacin de cdigo al no tener que volver a codificar mtodos ya implementados. Al acto de tomar propiedades de una clase padre se denomina heredar. 2.5 Polimorfismo Las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del referente. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. En programacin orientada a objetos se denomina polimorfismo a la capacidad del cdigo de un programa para ser utilizado con diferentes tipos de datos u objetos. Tambin se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican. El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos polimrficos. Las primeras son aquellas funciones que pueden evaluarse y/o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado. Se puede clasificar el polimorfismo en dos grandes clases: Polimorfismo dinmico (o polimorfismo ad hoc) es aqul en el que el cdigo no incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja. As, puede ser utilizado a todo tipo de datos compatible. Polimorfismo esttico (o polimorfismo paramtrico) es aqul en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados. El polimorfismo dinmico unido a la herencia es lo que en ocasiones se conoce como programacin genrica.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
2.6 Herencia Organiza y facilita el polimorfismo y la encapsulacin permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y las clases en rboles o enrejados que reflejan un comportamiento comn. La herencia es uno de los mecanismos de la programacin orientada a objetos, por medio de la cual una clase se deriva de otra de manera que extiende su funcionalidad. Una de sus funciones ms importantes es la de proveer polimorfismo . La herencia en la POO permite a una clase heredar las propiedades de una clase de objetos, donde la clase padre sirve como patrn a la clase derivada. si un objeto hereda sus atributos de un nico padre, esto recibe el nombre de herencia simple, y si hereda atributos de mltiples padres es herencia mltiple, la ventaja de la herencia es permitir la reutilizacin de cdigo. Para realizar herencia se debe tener en cuenta dos aspectos importantes: la clase base y la clase derivada donde la clase base define todas las cualidades que sern heredadas por cualquier clase y la clase derivada hereda las caractersticas generales y aade a esta de su propia clase. Utilizando la herencia, un objeto slo necesita definir aquellas cualidades que lo hacen nico dentro de una clase. Este objeto puede heredar sus atributos generales de su padre. Por lo tanto la herencia es el mecanismo que le permite a un objeto ser una instancia especfica de un caso ms general analicemos el proceso de un animal. Por ejemplo al hacer una descripcin de los animales de forma abstracta, se puede decir que estos tiene atributos tales como: tamao, inteligencia, y el tipo de esqueleto. Los animales tienen diferentes clase de comportamiento esta puede ser una definicin de la clase de los animales. La herencia interacta con el encapsulado. Si una clase dada encapsula algunos atributos, entonces la cualquier clase tendr los mismos atributos.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

2.6.1 Tipos de herencia Herencia sencilla: Un objeto puede extender las caractersticas de otro objeto y de ningn otro, es decir, solo puede tener un padre. Herencia mltiple: Un objeto puede extender las caractersticas de uno o ms objetos, es decir, puede tener varios padres. En este aspecto hay discrepancias entre los diseadores de lenguajes. Algunos de ellos han preferido no admitir la herencia mltiple por las posibles coincidencias en nombres de mtodos o datos miembros. Por ejemplo C++ admite herencia mltiple, Java y Ada slo herencia simple. Si una clase cualquiera tiene ms de un ancestro directo en la jerarqua de clases, se considera que existe herencia mltiple. En trminos concretos, una instancia de objeto de la clase hija, poseer todos los atributos y mtodos de sus clases ancestro.

Potrebbero piacerti anche