el paradigma orientado a objetos

10
 El Paradigma Orientado a Objetos Un paradigma es un conjunto de teorías, métodos y estándares que juntos representan un medio de organización del conocimiento. La orientación a objetos puede describirse como el conjunto de disciplinas que desarrollan y modernizan software que facilitan la construcción de sistemas complejos a partir de componentes. El paradigma orientado a objetos se basa en la noción de clases y objetos. Un Objeto es una entidad que combina: Conjunto de propiedades o atributos (datos) Conjunto de métodos (comportamiento o funcionalidad) Estado: Es lo que lo hace diferente de otros objetos de la misma clase. El estado se describe a través de las variables de la instancia Un Objeto es la instancia de una clase. Clase: Representación abstracta de un concepto en el mundo real, proporciona la base a partir de la cual creamos instancias de objetos específicos. Una clase es esencialmente un proyecto, a partir del cual puede crear objetos. Una clase define las características de un objeto. Incluyendo las propiedades que definen los tipos de datos que ese objeto puede contener y los métodos que describen el comportamiento del objeto. * Elementos del paradigma orientado a objetos * Abstracción * Encapsulamiento * Modularidad * Jerarquía * Polimorfismo * Abstracción: Es la propiedad que permite representar las características esenciales de un objeto, sin preocuparse de las restantes características. * Una abstracción se centra en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementación. * Una clase se puede definir como una descripción abstracta de un grupo de objetos, cada uno de los cuales se diferencia por su estado específico y por la posibilidad de realizar una serie de operaciones. * Encapsulamiento: Es la propiedad que permite asegurar que el contenido de la información de un objeto está oculta al mundo exterior: el objeto A no conoce lo que hace el objeto B, y viceversa. * La encapsulación permite la división de un programa en módulos. Estos módulos se implementan mediante clases, de forma que una clase representa la encapsulación de *

Upload: eduardo-daniel

Post on 09-Oct-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

El Paradigma Orientado a Objetos

Un paradigma es un conjunto de teoras, mtodos y estndares que juntos representan un medio de organizacin del conocimiento.La orientacin a objetos puede describirse como el conjunto de disciplinas que desarrollan y modernizan software que facilitan la construccin de sistemas complejos a partir de componentes.El paradigma orientado a objetos se basa en la nocin de clases y objetos.

Un Objeto es una entidad que combina:

Conjunto de propiedades o atributos (datos)Conjunto de mtodos (comportamiento o funcionalidad)Estado: Es lo que lo hace diferente de otros objetos de la misma clase. El estado se describe a travs de las variables de la instanciaUn Objeto es la instancia de una clase.

Clase: Representacin abstracta de un concepto en el mundo real, proporciona la base a partir de la cual creamos instancias de objetos especficos.Una clase es esencialmente un proyecto, a partir del cual puede crear objetos.Una clase define las caractersticas de un objeto. Incluyendo las propiedades que definen los tipos de datos que ese objeto puede contener y los mtodos que describen el comportamiento del objeto.

* Elementos del paradigma orientado a objetos* Abstraccin* Encapsulamiento* Modularidad* Jerarqua* Polimorfismo

* Abstraccin: Es la propiedad que permite representar las caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas.* Una abstraccin se centra en la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial de un objeto de su implementacin.* Una clase se puede definir como una descripcin abstracta de un grupo de objetos, cada uno de los cuales se diferencia por su estado especfico y por la posibilidad de realizar una serie de operaciones.* Encapsulamiento: Es la propiedad que permite asegurar que el contenido de la informacin de un objeto est oculta al mundo exterior: el objeto A no conoce lo que hace el objeto B, y viceversa.* La encapsulacin permite la divisin de un programa en mdulos. Estos mdulos se implementan mediante clases, de forma que una clase representa la encapsulacin de * Modularidad: Es la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadasmdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes.

1.1 CONCEPTUALIZACIN DE TECNOLOGA ORIENTADA A OBJETOSHoy en da la tecnologa orientada a objetos ya no se aplica solamente a los lenguajes de programacin, adems se viene aplicando en el anlisis y diseo con mucho xito, al igual que en las bases de datos. Es que para hacer una buena programacin orientada a objetos hay que desarrollar todo el sistema aplicando esta tecnologa, de ah la importancia del anlisis y el diseo orientado a objetos.La programacin orientada a objetos es una de las formas ms populares de programar y viene teniendo gran acogida en el desarrollo de proyectos de software desde los ltimos aos. Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.PRORAMACION SECUENCIAL O LINEAL Tradicionalmente la programacin fue hecha en una manera secuencial o lineal, es decir una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones Estos programas escritos al estilo espagueti no ofrecen flexibilidad

LENGUAJES BASADOS EN LA PROGRAMACIN ESTRUCTURADALa idea principal de esta forma de programacin es separar las partes complejas del programa en mdulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseo modular, compuesto por mdulos independientes que puedan comunicarse entre s. Poco a poco este estilo de programacin fue reemplazando al estilo espaguetti impuesto por la programacin lineal.Entonces, vemos que la evolucin que se fue dando en la programacin se orientaba siempre a ir descomponiendo ms el programa. Este tipo de descomposicin conduce directamente a la programacin orientada a objetos.Tendencia de crear programas cada vez ms grandes y complejos llev a los desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles empresariales y con reglas de negocios muy complejas

La POO se basa en la dividir el programa en pequeas unidades lgicas de cdigo. A estas pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades independientes que se comunican entre ellos mediante mensajes. Veamos con mayor detenimiento este tema.

Cules son las ventajas de un lenguaje orientado a objetos? Fomenta la reutilizacin y extensin del cdigo. Permite crear sistemas ms complejos. Relacionar el sistema al mundo real. Facilita la creacin de programas visuales. Construccin de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del softwareLenguajes de Programacin Orientado a Objetos En 1985, E. Stroustrup extendi el lenguaje de programacin C a C++, es decir C con conceptos de clases y objetos, tambin por esas fechas se cre desde sus bases el lenguaje EIFFEL. En 1995 apareci el ms reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos de C++. El lenguaje de desarrollo ms extendido para aplicaciones Web, el PHP 5, trae todas las caractersticas necesarias para desarrollar software orientado a objetos. Adems de otros lenguajes que fueron evolucionando, como el Pascal a Delphi. Finalmente tambin otros lenguajes script como el ActionScript que si bien no es totalmente orientado a objetos pero s posee las caractersticas.

1.2 METODOLOGAS EMERGENTES DE DESARROLLO DE SOFTWARE El desarrollo de software son mtodos de ingeniera de software basados en el desarrollo iterativo e incremental donde los requisitos y soluciones evolucionan median la colaboracin de grupos organizados y multidisciplinarios .Existen muchos mtodos de desarrollo gil; la mayora minimiza mtodos de desarrollo de software en lapsos cortos El software desarrollado en una unidad de tiempos es llamado una iteracin, la cual debe durar de una a cuatro semanasCada iteracin de ciclo de vida incluye Planificacin Anlisis de requerimientos Diseo Codificacin Revisin y documentacin Una iteracin no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado, pero la meta es tener una (sin errores) al final de cada iteracin. Al final de cada iteracin el equipo vuelve evaluar las propiedades del proyecto. Los mtodos agiles enfatizan las comunicaciones cara a cara en vez de la documentacin

Modelo de desarrollo gil o scrumscrum es una metodologa de desarrollo muy simple, que quiere trabajo duro que se basa en el seguimiento de un plan, sino en la adaptacin continua a las circunstancias de la evolucin del proyecto

Scrum es una metodloga gil y como tal es un modo de desarrollo de carcter adoptable ms que predictivo

Orientado a las personas ms que a los procesos

Emplea la estructura de desarrollo gil incremental basada en iteraciones y reversiones

Basar la calidad del resultado ms en conocimiento de las personas que en equipos autoorganzados que en calidad de los procesos empleados

Caractersticas scrum es un modelo de referencias que define un conjunto de prcticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecuta durante un proyecto

scrum permita la creacin de equipos auto organizados impulsando la colocacin de todos los miembros del equipo, y la comunicacin verbal entre los miembros y disciplinas involucrados en proyectosGestin regular de las perspectivas del cliente resultado anticipados flexibilidad y adaptacin retorno de inversin, mitigacin de riesgo, productividad y calidad alineamiento entre cliente y equipo.REINGENIERA DEL SOFTWAREse puede definir como: modificacin de un producto software, o de ciertos componentes, usando para el anlisis del sistema existente tcnicas de Ingeniera Inversa y, para la etapa de reconstruccin, herramientas de Ingeniera Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilizacin, comprensin o evaluacin.Cuando una aplicacin lleva siendo usada aos, es fcil que esta aplicacin se vuelva inestable como fruto de las mltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prev que la aplicacin seguir siendo de utilidad, aplicar reingeniera a la misma.Entre los beneficios de aplicar reingeniera a un producto existente se puede incluir: Pueden reducir los riegos evolutivos de una organizacin. Puede ayudar a las organizaciones a recuperar sus inversiones en software. Puede hacer el software ms fcilmente modificable Ampla las capacidades de las herramientas CASE Es un catalizador para la automatizacin del mantenimiento del software Puede actuar como catalizador para la aplicacin de tcnicas de inteligencia artificial para resolver problemas de reingenieraLa reingeniera del software involucra diferentes actividades como son: anlisis de inventarios reestructuracin de documentos ingeniera inversa reestructuracin de programas y datos ingeniera directacon la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.

Figura 1. Pasos de la Reingeniera del Software

Mtodos de desarrollo de software orientado a objetos

Metodologas de desarrollo de software Una metodologa de desarrollo de software e refiere al marco de trabajo usado para estructurar planear y controlar el proceso de desarrollo en sistemas de informacin A lo lardo del tiempo un gran cantidad de modelos de tiempo han sido desarrollados diferencindose por si fortaleza y debilidad Las metodologas de desarrollo de software tienen como objetivo presentar un conjunto de tcnicas tradicionales y modernas de modelado de sistemas que permitan desarrollar software de calidad incluyendo heursticas de construccin y criterios de comparacin de modelos de sistemas Para tal fin utiliza, fundamentalmente herramientas de anlisis y diseo orientado a objetos (uml) sus diagramas y sus especificaciones

Unametodologa de desarrollo de softwarees un conjunto de pasos y procedimientos que deben seguirse para desarrollar software. Una metodologa est compuesta por: Cmo dividir un proyecto en etapas. Qu tareas se llevan a cabo en cada etapa. Qu restricciones deben aplicarse. Qu tcnicas y herramientas se emplean. Cmo se controla y gestiona un proyecto.

1,3 METODOLOGAS PARA DESARROLLO DE SOFTWARE

Un proceso de software detallados y completo suele denominarse Metodologa. Las metodologas se basan en una combinacin de los modelos de proceso genricos (cascada, evolutivo, incremental, espiral entre otros). Adicionalmente una metodologa debera definir con precisin los artefactos, roles y actividades involucrados, junto con prcticas y tcnicas recomendadas, guas de adaptacin de la metodologa al proyecto, guas para uso de herramientas de apoyo, etc. Habitualmente se utiliza el trmino mtodo para referirse a tcnicas, notaciones y guas asociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, por ejemplo, suele hablarse de mtodos de anlisis y/o diseo.La comparacin y/o clasificacin de metodologas no es una tarea sencilla debido a la diversidad de propuestas y diferencias en el grado de detalle, informacin disponible y alcance de cada una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para especificar artefactos producidos en actividades de anlisis y diseo, podemos clasificar las metodologas en dos grupos: Metodologas Estructuradas y Metodologas Orientadas a Objetos. Por otra parte, considerando su filosofa de desarrollo, aquellas metodologas con mayor nfasis en la planificacin y control del proyecto, en especificacin precisa de requisitos y modelado, reciben el apelativo de Metodologas Tradicionales (o tambin denominadas Metodologas Pesadas, o Peso Pesado). Otras metodologas, denominadas Metodologas giles, estn ms orientadas a la generacin de cdigo con ciclos muy cortos de desarrollo, se dirigen a equipos de desarrollo pequeos, hacen especial hincapi en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso.METODOLOGAS TRADICIONALESLas metodologas no giles son aquellas que estn guiadas por una fuerte planificacin durante todo el proceso de desarrollo; llamadas tambin metodologas tradicionales o clsicas, donde se realiza una intensa etapa de anlisis y diseo antes de la construccin del sistema.Todas las propuestas metodolgicas antes indicadas pueden considerarse como metodologas tradicionales. Aunque en el caso particular de RUP, por el especial nfasis que presenta en cuanto a su adaptacin a las condiciones del proyecto (mediante su configuracin previa a aplicarse), realizando una configuracin adecuada, podra considerarse gil.

METODOLOGAS GILESUn proceso es gil cuando el desarrollo de software esincremental(entregas pequeas de software, con ciclos rpidos),cooperativo(cliente y desarrolladores trabajan juntos constantemente con una cercana comunicacin),sencillo(el mtodo en s mismo es fcil de aprender y modificar, bien documentado), yadaptable(permite realizar cambios de ltimo momento).Entre las metodologas giles identificadas son:

Extreme Programming Scrum Familia de Metodologas Crystal Feature Driven Development Proceso Unificado Rational, una configuracin gil Dynamic Systems Development Method Adaptive Software Development

Modelos de procesos de software Modelo en cascada: es un proceso secuencial de desarrollo en el que los pasos de desarrollo son hacia abajo es el enfoque metodolgico que ordena rigurosamente las etapas delproceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalizacin de la etapa anterio4.1. MODELO CASCADA. Modelo Cascada.. Etapas Principales. Anlisis y Definicin de Requerimientos. Diseo del sistema del software Implementacin y prueba de unidades Integracin y prueba del sistema Funcionamientos y mantenimiento.4.1. MODELO CASCADA. El ciclo de vida del Software Ventajas del Modelo Cascada.

El Modelo de prototipo de desarrollo de software prototipo versiones incompletas de software a desarrollar, enIngeniera de software, pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos.El diseo rpido se centra en una representacin de aquellos aspectos del software que sern visibles para el cliente o el usuario final. Este diseo conduce a la construccin de un prototipo, el cual es evaluado por el cliente para una retroalimentacin; gracias a sta se refinan los requisitos del software que se desarrollar. La interaccin ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.Incremental; provee estrategias para controlar la complejidad y los riesgos desarrollados una parte de producto de softwareEspiral: la atencin se centra en la evaluacin y reduccin de riesgo del proyecto dividiendo en proyecto en segmentos ms pequeos Desarrollo rpido de aplicaciones: es una metodologa de desarrollo de software que implica el desarrollo iterativo y la construccin de prototipos

1.4 PROCESO DE DESARROLLO UNIFICADOProceso unificado de desarrollo de software o proceso unificado, marco de desarrollo de software, iterativo e incremental Unificado de rational o simplemente rap desarrollado por la empresa racional software propiedad de IBM constituye la metodologa estndar ms utilizada para el anlisis, diseo, implementacin y documentacin de sistemas orientado a objetos s un proceso que puede especializarse para una gran variedad de sistemas de software, en diferentes reas de aplicacin, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaos de proyecto.EL RUP, CONJUNTO DE METODOLOGIAS ADAPTABLE, EL PROCESO UNFICADO PROVEE UN ENFOQUE DISIPLINADO EN LA ASIGMACION DE TAREAS Y RESPONSABILIDADES SU META ES ASEGURAR LA PRODUCCION DE SOFTWARE DE MUY ALTA CALIDAD DENTRO DE UN CALENDARIO Y PRESUPUESTO PREDECIBLE

Lenguaje unificado de modelado

es un lenguaje grfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estndar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programacin, esquemas de bases de datos y compuestos reciclados.Es importante remarcar que UML es un "lenguaje de modelado" para especificar o para describir mtodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que est descrito el modelo.Se puede aplicar en el desarrollo de software gran variedad de formas para dar soporte a una metodologa de desarrollo de software (tal como el Proceso Unificado Racional oRUP), pero no especfica en s mismo qu metodologa o proceso usar.