3.2 Enfoque Orientado a Objetos.Historia:Vivimos en un mundo de objetos. Estos objetos existen en la naturaleza, en entida...
El enfoque orientado a objetos permite que los objetos estén autocontenidos. Los objetosexisten por sí mismos, con una fun...
El atractivo intuitivo de la orientación a objetos es que proporciona conceptos yherramientas con las cuales se modela y r...
Implementación:Al código dentro de los métodos se le llama Implementación. Algunas veces también se lellama comportamiento...
El siguiente ejemplo representa la definición de la clase Perro. Tome en consideración queésta no es una sintaxis estricta...
Modularidad.       Jerarquía.       Polimorfismo.Como sugiere Booch, si alguno de estos elementos no existe se dice que el...
se pueden ver, ni usar, ni depender de ellos. Este principio de dependencia mínima es loque hace que la abstracción sea ta...
posteriormente sin riesgo de tener problemas de compatibilidad. Por ejemplo, versionesposteriores de la clase Bank Account...
dependencia circular, que debe evitarse cuando sea posible debido a que impide lareutilización.La dependencia a veces se c...
tome muchas formas. En términos prácticos, el polimorfismo permite referirse a objetos declases diferentes mediante el mis...
Capacidad de ampliación.Otras propiedades:El modelo objeto ideal no sólo tiene las propiedades anteriormente citadas sino ...
Clases y Objetos:Un modelo Orientado a Objetos de Software de computadora debe exhibir abstraccionesde datos y procedimien...
Operaciones, métodos y servicios:Un objeto encapsula datos (representados como una colección de atributos) y losalgoritmos...
3.2.1 AnálisisEl modelo de análisis se extiende luego para describir la manera en que interactúan losactores y el Sistema ...
una cantidad arbitraria de vínculos entre instancias de las dos clases. Este es el tipo máscomplejo de asociación.Asociaci...
• Optimización del modelo de objetos, durante la cual transformamos el modelo de diseñode objetos para tratar criterios de...
Upcoming SlideShare
Loading in...5
×

Expo

241

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
241
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Expo"

  1. 1. 3.2 Enfoque Orientado a Objetos.Historia:Vivimos en un mundo de objetos. Estos objetos existen en la naturaleza, en entidadeshechas por el hombre, en los negocios y en los productos que usamos. Pueden serclasificados, descritos, organizados, combinados, manipulados y creados. Por eso no essorprendente que se proponga una visión orientada a objetos para la creación de Softwarede computadora, una abstracción que modela el mundo de forma tal que nos ayuda aentenderlo y gobernarlo mejor.La primera vez que se propuso un enfoque orientado a objetos para el desarrollo deSoftware fue a finales de los años sesenta. Sin embargo, las tecnologías de objetos hannecesitado casi veinte años para llegar a ser ampliamente usadas. Durante los años 90, laingeniería del Software orientada a objetos se convirtió en el paradigma de elección paramuchos productores de Software y para un creciente número de Sistemas de información yprofesionales de la ingeniería.Las tecnologías de objetos llevan a reutilizar, y la reutilización (de componente deSoftware) lleva a un desarrollo de Software más rápido y a programas de mejor calidad. ElSoftware orientado a objetos es más fácil de mantener debido a que su estructura esinherentemente poco acoplada. Esto lleva a menores efectos colaterales cuando se debenhacer cambios. Los Sistemas orientados a objetos son más fáciles de adaptar y másfácilmente escalables (pueden crearse grandes Sistemas ensamblando subSistemasreutilizables).Hacia mediados de los 80, los beneficios de la programación orientada a objetosempezaron a obtener reconocimiento, y el diseño de objetos pareció ser un enfoquesensato para la gente que deseaba utilizar el lenguaje de programación orientada aobjetos. Un enfoque orientado a objetos para programar ofrece muchos beneficios sobreun enfoque estructurado.El análisis orientado a objetos y su diseño se enfoca en los objetos. Los objetos tienenciertos comportamientos y atributos que determinan la manera en que interactúan yfuncionan. No se intenta proporcionar un orden para las acciones al momento del diseñodebido a que los objetos funcionan basados en la manera en que funcionan otros objetos.La programación orientada a objetos ayuda a los desarrolladores a crear objetos quereflejan escenarios del mundo real.Las implementaciones orientadas a objetos ocultan datos, lo cual significa que muestranúnicamente los comportamientos a los usuarios y ocultan el código subyacente de unobjeto. Los comportamientos que el programador expone son únicamente aquelloselementos que el usuario de un objeto puede afectar.
  2. 2. El enfoque orientado a objetos permite que los objetos estén autocontenidos. Los objetosexisten por sí mismos, con una funcionalidad para invocar comportamientos de otrosobjetos. Al utilizar un enfoque orientado a objetos, los desarrolladores pueden crearaplicaciones que reflejan objetos del mundo real, como rectángulos, elipses y triángulos,además de dinero, números de partes y elementos en un inventario.En un enfoque orientado a objetos, los objetos, por definición, son modulares en suconstrucción. Esto quiere decir que son entidades completas y, por lo tanto, tienden a seraltamente reutilizables. Las aplicaciones orientadas a objetos se construyen sobre elparadigma de los mensajes o de los eventos en donde los objetos envían mensajes a otrosobjetos, como el Sistema operativo Microsoft® Windows®. a. El paradigma orientado a objetosDurante muchos años el término Orientado a Objetos (OO) se usó para referirse a unenfoque de desarrollo de Software que usaba uno de los lenguajes orientados a objetos(Ada 95, C++, Eiffel, Smalltalk, etc.). En el libro TheStructure of ScientificRevolutions, elhistoriador Thomas K describía un paradigma como un conjunto de teorías, estándar ymétodos que juntos representan un medio de organización del conocimiento: es decir, unmedio de visualizar el mundo. En este sentido, la programación orientada a objetos es unnuevo paradigma. La orientación a objetos fuerza a reconsiderar nuestro pensamientosobre la computación, sobre lo que significa realizar computación y sobre cómo seestructura la información dentro de la computadora.Jenkins y Glasgow observan que “la mayoría de los programadores trabajan en unlenguaje y utilizan sólo un estilo de programación. Ellos programan en un paradigmaforzado por el lenguaje que utilizan. Con frecuencia, no se enfrentan a métodosalternativos de resolución de un problema, y por consiguiente tienen dificultad en ver laventaja de elegir un estilo más apropiado al problema a manejar”. Bobrow y Stefiksugieren que existen cuatro clases de estilos de programación: Orientados a procedimientos: Algoritmos. Orientados a objetos: Clases y Objetos. Orientados a lógica: Expresado en cálculo de predicados. Orientados a reglas: Reglas if-then.No existe ningún estilo de programación idóneo para todas las clases de programación. Laorientación a objetos se acopla a la simulación de situaciones del mundo real. b. Orientación a ObjetosLa orientación a objetos puede describirse como el conjunto de disciplinas que desarrollany modelan Software, que facilitan la construcción de Sistemas complejos a partir decomponentes.
  3. 3. El atractivo intuitivo de la orientación a objetos es que proporciona conceptos yherramientas con las cuales se modela y representa el mundo real tan fielmente como seaposible. Estos conceptos y herramientas orientados a objetos son tecnologías que permitenque los problemas del mundo real sean expresados de modo fácil y natural.Las técnicas orientadas a objetos proporcionan mejoras y metodologías para construirSistemas de Software complejos a partir de unidades de Software modularizado yreutilizable. Se necesita un nuevo enfoque para construir Software en la actualidad. Estenuevo enfoque debe ser capaz de manipular tanto Sistemas grandes como pequeños ydebe crear Sistemas fiables que sean flexibles, mantenibles y capaces de evolucionar paracumplir las necesidades del cambio.La orientación a objetos trata de cubrir las necesidades de los usuarios finales, así como laspropias de los desarrolladores de productos Software. Estas tareas se realizan mediante lamodelización del mundo real. El soporte fundamental es el modelo objeto.Un objeto es la instancia de una clase. Una clase es la representación abstracta de unconcepto en el mundo real, y proporciona la base a partir de la cual creamos instancias deobjetos específicos. Como ejemplo, puede crear una clase que defina a un cliente. Despuéspuede crear una nueva instancia de la clase cliente para tener un objeto utilizable deCliente. Para poder crear un objeto de la clase cliente, debe crear una nueva instanciabasada en esa clase.Por ejemplo:PrivateObjeto Customer?asClase Customer?Objeto Customer = New Clase Customer()Cada objeto es un elemento único de la clase en la que se basa. Si una clase es como unmolde, entonces un objeto es lo que se crea a partir del molde. La clase es la definición deun elemento; el objeto es el elemento. El molde para una figura de cerámica en particular,es como una clase; la figura es el objeto.Todos los objetos están compuestos de tres cosas:Interfaz:La Interfaz es el conjunto de métodos, propiedades, eventos y atributos que se declarancomo públicos en su alcance y que pueden invocar los programas escritos para usarnuestro objeto.
  4. 4. Implementación:Al código dentro de los métodos se le llama Implementación. Algunas veces también se lellama comportamiento, ya que este código es el que efectivamente logra que el objetohaga un trabajo útil. Es importante entender que las aplicaciones del cliente puedenutilizar nuestro objeto aunque cambiemos la implementación, siempre que no cambiemosla interfaz. Siempre que se mantengan sin cambio nuestro nombre de método, su lista deparámetro y el tipo de datos de devolución, podremos cambiar la implementacióntotalmente.Estado:El estado o los datos de un objeto es lo que lo hace diferente de otros objetos de la mismaclase. El estado se describe a través de las variables del Miembro o de la Instancia. Lasvariables del miembro son aquellas declaradas, de tal manera que están disponibles paratodo el código dentro de la clase. Por lo general, las variables del miembro son Privadas ensu alcance. Algunas veces, se les conoce como variables de la instancia o como atributos.Observe que las propiedades no son variables del Miembro, ya que son un tipo de métodoque funciona para recuperar y establecer valores.¿Qué es una clase?Una clase es esencialmente un proyecto, a partir del cual puede crear objetos. Una clasedefine las características de un objeto, incluyendo las propiedades que definen los tipos dedatos que ese objeto puede contener y los métodos que describen el comportamiento delobjeto. Estas características determinan la manera en que otros objetos pueden acceder ytrabajar con los datos que se incluyen en el objeto.Para definir una clase, se coloca la palabra clave Class antes del nombre de su clase, ydespués se insertan los miembros de la clase (datos y métodos) entre la definición delnombre de la clase y la instrucción EndClass. Si incluye los métodos, entonces el código decada método también se debe incluir entre la declaración del método y el final del mismo.Por ejemplo, si desea construir objetos que representen perros, puede definir una clasePerro con ciertos comportamientos, como caminar, ladrar y comer, y propiedadesespecíficas, como altura, peso y color. Una vez que haya definido la clase Perro, puedecrear objetos con base en esa clase. Es importante observar que todos los objetos Perrocreados con base en la clase perro compartirán los mismos comportamientos, perotendrán sus propios valores específicos para el mismo conjunto de propiedades.
  5. 5. El siguiente ejemplo representa la definición de la clase Perro. Tome en consideración queésta no es una sintaxis estricta de VB.NET; simplemente es un ejemplo de la definición declase.PublicClass PerroDim Altura As DecimalDim Peso As DecimalDim Color As String Sub Caminar(ByVal Pasos As Integer)End Sub Sub Ladrar() End Sub Sub Comer() End Sub End Class#]Vamos con otro ejemplo. El siguiente ejemplo define una nueva clase, Persona, con dospartes de información relevante asociadas: el nombre de la persona, su fecha denacimiento y un Método que calcula la edad de la persona. A pesar de que la clase Personase define en el ejemplo, no existe aún el objeto Persona. Deberánsercreados.[@ Public Class Persona Private mstrNombre As String Private mdtFechaNacimiento As Date Public Function Edad() As Integer Return DateDiff(DateInterval.Year, mdtFechaNacimiento, Now())EndFunctionEndClassUna clase es un tipo definido por el usuario en contraposición a un tipo proporcionado porel Sistema. Al definir una clase, en realidad crea un nuevo tipo en su aplicación.Ahora que ya sabéis todo esto, vamos con os elementos (propiedades) más importantes deeste modelo. Estas son: Abstracción. Encapsulamiento.
  6. 6. Modularidad. Jerarquía. Polimorfismo.Como sugiere Booch, si alguno de estos elementos no existe se dice que el modelo no esorientado a objetos.Abstracción:La abstracción es uno de los medios más importantes, mediante el cual nos enfrentamoscon la complejidad inherente al Software. La abstracción es la propiedad que permiterepresentar las características esenciales de un objeto, sin preocuparse de las restantescaracterísticas (no esenciales). Abstracción es la técnica de quitarle a una idea o a unobjeto todos los acompañamientos innecesarios hasta que los deja en una forma esencial ymínima. Una buena abstracción elimina todos los detalles poco importantes y le permiteenfocarse y concentrarse en los detalles importantes.Una abstracción se centra en la vista externa de un objeto, de modo que sirva para separarel comportamiento esencial de un objeto de su implementación. Definir una abstracciónsignifica describir una entidad del mundo real, no importa lo compleja que pueda ser y, acontinuación, utilizar esta descripción en un programa.El elemento clave de la programación orientada a objetos es la clase. Una clase se puededefinir como una descripción abstracta de un grupo de objetos, cada uno de los cuales sediferencia por su estado específico y por la posibilidad de realizar una serie de operaciones.Por ejemplo, una pluma estilográfica es un objeto que tiene un estado (llena de tinta ovacía) y sobre la cual se pueden realizar algunas operaciones (escribir, poner o quitar latapa, llenar de tinta si está vacía, etc.).La idea de escribir programas definiendo una serie de abstracciones no es nueva, pero eluso de clases para gestionar dichas abstracciones en lenguajes de programación hafacilitado considerablemente su aplicación.La abstracción es un principio de Software importante. Una clase bien diseñada expone unconjunto mínimo de métodos cuidadosamente considerados que proporcionan elcomportamiento esencial de una clase en una forma fácil de usar. Crear buenasabstracciones de Software no es fácil. Encontrar buenas abstracciones generalmenterequiere de un entendimiento muy claro del problema y de su contexto, gran claridad depensamiento y amplia experiencia.Existe un principio muy importante relacionado con la abstracción, y esta es, laDependencia mínima. Las mejores abstracciones de Software hacen que las cosascomplejas sean simples. Logran esto al ocultar por completo los aspectos no esenciales deuna clase. Estos aspectos no esenciales, una vez que han sido debidamente ocultados, no
  7. 7. se pueden ver, ni usar, ni depender de ellos. Este principio de dependencia mínima es loque hace que la abstracción sea tan importante. El cambio es normal en el desarrollo deSoftware. Lo mejor que puede hacer es minimizar el impacto de un cambio cuando éstesucede. Y cuanto menos dependa de algo, menos se verá afectado cuando cambie.Los lenguajes orientados a objetos proporcionan la Encapsulación. La encapsulación sepuede utilizar para aplicar el concepto de Abstracción.EncapsulamientoEl Encapsulamiento o encapsulación es la propiedad que permite asegurar que elcontenido de la información de un objeto está oculta al mundo exterior: el objeto A noconoce lo que hace el objeto B, y viceversa. La encapsulación (también se conoce comoocultación de la información), en esencia, es el proceso de ocultar todos los secretos de unobjeto que no contribuyen a sus características esenciales.La encapsulación permite la división de un programa en módulos. Estos módulos seimplementan mediante clases, de forma que una clase representa la encapsulación de unaabstracción. En la práctica, esto significa que cada clase debe tener dos partes: unainterfaz y una implementación. La interfaz de una clase captura sólo su vista externa y laimplementación contiene la representación de la abstracción, así como los mecanismosque realizan el comportamiento adecuado.Encapsulación es la capacidad de contener y controlar el acceso a un grupo de elementosasociados. Las clases proporcionan una de las formas más comunes para encapsularelementos. En el siguiente ejemplo, la clase Bank Account? Encapsula los métodos, camposy propiedades que se describen en una cuenta bancaria. Sin una encapsulación, ustednecesitaría declarar procedimientos y variables por separado para almacenar yadministrar información para la cuenta bancaria, y sería difícil trabajar con más de unacuenta bancaria a la vez. La encapsulación le permite utilizar los datos y procedimientos enla clase Bank Account como una unidad. Usted puede trabajar con varias cuentasbancarias al mismo tiempo sin confusión, debido a que cada cuenta está representada poruna instancia única de la clase.La encapsulación también le permite controlar la forma en que se utilizan los datos y losprocedimientos. Puede utilizar modificadores de acceso, como Private o Protected, paraevitar que los procedimientos externos ejecuten métodos de clase o lean y modifiquendatos en propiedades y campos. Usted debe declarar los detalles internos de una clasecomo Private para evitar que sean utilizados fuera de su clase; a esta técnica se le llamaocultamiento de datos. En la clase Bank Account, la información del cliente, como el saldode la cuenta, se protege de esta forma. Una de las reglas básicas de la encapsulación esque los datos de la clase sólo se pueden modificar o recuperar a través de losprocedimientos o métodos Property. Ocultar los detalles de implementación de sus clasesevita que se usen de maneras no deseadas, y le permite modificar esos elementos
  8. 8. posteriormente sin riesgo de tener problemas de compatibilidad. Por ejemplo, versionesposteriores de la clase Bank Account enlistadas más adelante, podrían cambiar el tipo dedatos del campo Account Balance?, sin peligro de dañar la aplicación que depende de queeste campo tenga un tipo de dato específico.Class BankAccount Private AccountNumberAs String Private AccountBalanceAs Decimal Private HoldOnAccountAs Boolean = False Public Sub PostInterest() Add code to calculate the interest for this account. End SubReadOnly Property Balance() As Decimal Get Return AccountBalance Returns the available balance. End Get End Property End ClassModularidad:La Modularidad es la propiedad que permite subdividir una aplicación en partes máspequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente comosea posible de la aplicación en sí y de las restantes partes.La modularización consiste en dividir un programa en módulos que se puedan compilar porseparado, pero que tienen conexiones con otros módulos. Al igual que la encapsulación, loslenguajes soportan la Modularidad de diversas formas.La Modularidad es la propiedad de un Sistema que permite su descomposición en unconjunto de módulos cohesivos y débilmente acoplados. Por supuesto no todos losmódulos son iguales: tomar un programa monolítico y separarlo de forma aleatoria enarchivos no es óptimo. Se debe tener en cuenta los conceptos asociados de dependencia,acoplamiento, cohesión, interfaz, encapsulación y abstracción. Una vez identificado lo quees un buen módulo, se puede contemplar la reutilización de un buen módulo comocomponente.El Módulo A depende del Módulo B si cualquier cambio en el Módulo B implica que elMódulo A también tenga que ser modificado. A veces se dice que el Módulo A es un clientedel Módulo B, o que el Módulo B actúa como servidor del Módulo A. En general, es normalque un mismo módulo sea tanto cliente como servidor. Esto significa, que depende dealgunos módulos, mientras que otros módulos dependen de él. Incluso es posible que unpar de módulos se tengan uno al otro de cliente; sin embargo, éste es un ejemplo de
  9. 9. dependencia circular, que debe evitarse cuando sea posible debido a que impide lareutilización.La dependencia a veces se conoce como acoplamiento. Un Sistema con muchasdependencias tiene fuerte acoplamiento. Los buenos Sistemas tienen débil acoplamiento,porque en ese caso los cambios en una parte del Sistema son menos probables depropagarse a través del Sistema.Los módulos correctos a menudo tienen la propiedad de que sus interfaces proporcionanuna abstracción de algún elemento conocido de manera intuitiva que puede, no obstante,ser difícil de implementar. Este tipo de módulos se dice que tienen una fuerte cohesión. Elmódulo realiza un conjunto coherente de cosas, pero dentro de lo posible el desarrolladordel cliente está protegido de la información irrelevante relativa a cómo el módulo hace loque hace.Resumiendo: Abstracción es cuando un cliente de un módulo no necesita saber más de loque hay en la interfaz. Encapsulación es cuando un cliente de un módulo no es capaz desaber más de lo que hay en la interfaz.Si un módulo, de cualquier tamaño y complejidad, es una buena abstracción (tiene fuertecohesión y débil acoplamiento) puede ser factible reutilizarlo en Sistemas posteriores, osustituirlo en el Sistema existente.JerarquíaLa Jerarquía es una propiedad que permite la ordenación de las abstracciones. Las dosjerarquías más importantes de un Sistema complejo son: estructura de clases (jerarquía“es-un” (is-a): generalización/especialización) y estructura de objetos (jerarquía “parte-de”(part-of): agregación).Las jerarquías de generalización/especialización se conocen como herencia. Básicamente,la herencia define una relación entre clases, en donde una clase comparte la estructura ocomportamiento definido en una o más clases (herencia simple y herencia múltiple,respectivamente).La agregación es el concepto que permite el agrupamiento físico de estructurasrelacionadas lógicamente. Así, un camión se compone de ruedas, motor, Sistema detransmisión y chasis; en consecuencia, camión es una agregación, y ruedas, motor,transmisión y chasis son agregados de camión.PolimorfismoLa quinta propiedad significativa de los lenguajes de programación orientados a objetos esel polimorfismo. Es la propiedad que indica, literalmente, la posibilidad de que una entidad
  10. 10. tome muchas formas. En términos prácticos, el polimorfismo permite referirse a objetos declases diferentes mediante el mismo elemento de programa y realizar la misma operaciónde diferentes formas, según sea el objeto que se referencia en ese momento.Por ejemplo, cuando se describe la clase mamíferos se puede observar que la operacióncomer es una operación fundamental en la vida de los mamíferos, de modo que cada tipode mamífero debe poder realizar la operación o función comer. Por otra parte, una cabra ouna vaca que pastan en un campo, un niño que se come un caramelo y un león que devoraa otro animal, son diferentes formas que utilizan diferentes mamíferos para realizar lamisma función (comer).El polimorfismo adquiere su máxima expresión en la derivación o extensión de clases, esdecir, cuando se obtiene una clase a partir de una clase ya existente, mediante lapropiedad de derivación de clases o herencia.El polimorfismo requiere ligadura tardía o postergada (también llamada dinámica), y estosólo se puede producir en lenguajes de programación orientados a objetos. Los lenguajesno orientados a objetos soportan ligadura temprana o anterior (también llamadaestática), esto significa que el compilador genera una llamada a un nombre específico defunción y el enlazador (linker) resuelve la llamada a la dirección absoluta del código que seha de ejecutar. En POO, el programa no puede determinar la dirección del código hasta elmomento de la ejecución. Cuando se envía un mensaje a un objeto, el código que se llamano se determina hasta el momento de la ejecución. El compilador asegura que la funciónexiste y realiza verificación de tipos de los argumentos y del valor de retorno, pero noconoce el código exacto a ejecutar.y ¿Cuáles son los beneficios? , Buena pregunta eh …!!!En resumen, la programación orientada a objetos beneficia a los desarrolladores debido aque: Los programas son fáciles de diseñar debido a que los objetos reflejan elementos del mundo real. Las aplicaciones son más sencillas para los usuarios debido a que los datos innecesarios están ocultos. Los objetos son unidades autocontenidas. La productividad se incrementa debido a que puede reutilizar el código. Los Sistemas son fáciles de mantener y se adaptan a las cambiantes necesidades de negocios. Es más fácil crear nuevos tipos de objetos a partir de los ya existentes. Simplifica los datos complejos. Reduce la complejidad de la transacción. Confiabilidad. Robustez.
  11. 11. Capacidad de ampliación.Otras propiedades:El modelo objeto ideal no sólo tiene las propiedades anteriormente citadas sino que esconveniente que soporte, además, estas otras propiedades: Concurrencia (multitarea): el lenguaje soporta la creación de procesos paralelos independientes del Sistema operativo. Esta propiedad simplificará la transportabilidad de un Sistema de tiempo real de una plataforma a otra. Persistencia: los objetos deben poder ser persistentes; es decir, los objetos han de poder permanecer después de la ejecución del programa Genericidad: las clases parametrizadas (mediante plantillas o unidades genéricas) sirven para soportar un alto grado de reutilización. Estos elementos genéricos se diseñan con parámetros formales, que se instanciarán con parámetros reales, para crear instancias de módulos que se compilan y enlazan, y ejecutan posteriormente. Manejo de Excepciones: se deben poder detectar, informar y manejar condiciones excepcionales utilizando construcciones del lenguaje. Esta propiedad añadida al soporte de tolerancia a fallos del Software permitirá una estrategia de diseño eficiente.Taxonomía de lenguajes orientados a objetosUna taxonomía de lenguajes de programación con propiedades de orientación a objetosfue creada por Wegner. La clasificación incluye los siguientes grupos: Basado en objetos: Un lenguaje de programación es basado en objetos si su sintaxis y semántica soportan la creación de objetos que tienen las propiedades descritas en el punto anterior. Por ejemplo: Ada-83, Clipper 5.2, Visual Basic 4/5/6. Basado en clases: Si un lenguaje de programación es basado en objetos y soporta además la creación de clases, se considera basado en clases. Por ejemplo: Clu. Orientación a objetos: Un lenguaje de programación orientado a objetos es un lenguaje basado en clases que soporta también herencia. Por ejemplo: Visual Basic .NET, C# .NET, C++, Java, Delphi, Eiffel, Simula.Conceptos de orientación a objetos:Coad y Yourdon definen el término Orientación a Objetos de la siguiente forma:Orientación a Objetos = objetos + clasificación + herencia + comunicación
  12. 12. Clases y Objetos:Un modelo Orientado a Objetos de Software de computadora debe exhibir abstraccionesde datos y procedimientos que conducen a una Modularidad eficaz. Una clase es unconcepto Orientado a Objetos que encapsula las abstracciones de datos y procedimientosque se requieren para describir el contenido y comportamiento de alguna entidad delmundo real.Las abstracciones de datos (atributos) que describen la clase están encerradas por una“muralla” de abstracciones procedimentales (llamadas operaciones, métodos o servicios)capaces de manipular los datos de alguna manera. La única forma de alcanzar losatributos (y operar sobre ellos) es ir a través de alguno de los métodos que forman lamuralla. Por lo tanto, la clase encapsula datos (dentro de la muralla) y el proceso quemanipula los datos (los métodos que componen la muralla). Esto posibilita la ocultación deinformación y reduce el impacto de efectos colaterales asociados a cambios.Nota: Un objeto encapsula datos (atributos) y los métodos (operaciones, métodos oservicios) que manipulan esos datos.Atributos:Los atributos están asociados a clases y objetos, y describen la clase o el objeto de algunamanera. Las entidades de la vida real están a menudo descritas con palabras que indicancaracterísticas estables. La mayoría de los objetos físicos tienen características tales comoforma, peso, color y tipo de material. Las personas tienen características como fecha denacimiento, padres, nombre y color de los ojos. Una característica puede verse como unarelación binaria entre una clase y cierto dominio.La “relación” binaria implica que un atributo puede tomar un valor definido por undominio enumerado. En la mayoría de los casos, un dominio es simplemente un conjuntode valores específicos. Por ejemplo, supongamos que una clase Coche tiene un atributocolor. El dominio de valores de color es blanco, negro, plata, gris, azul, rojo, amarillo,verde.Las características (valores del dominio) pueden aumentarse asignando un valor pordefecto (característica) a un atributo. Por ejemplo, el atributo color tiene el valor pordefecto negro.Nota: Los valores asignados a los atributos de un objeto hacen a ese objeto ser único.
  13. 13. Operaciones, métodos y servicios:Un objeto encapsula datos (representados como una colección de atributos) y losalgoritmos que procesan estos datos. Estos algoritmos son llamados operaciones, métodoso servicios y pueden ser vistos como módulos en un sentido convencional.Cada uno de los métodos encapsulados por un objeto proporciona una representación deuno de los comportamientos del objeto. Por ejemplo, el método Determinar Color?, para elobjeto Coche extraerá el color almacenado en el atributo color. La consecuencia de laexistencia de ese método es que la clase coche ha sido diseñada para recibir un estímulo(mensaje) que requiere el color de una instancia particular de una clase. Cada vez que unobjeto recibe un estímulo, éste inicia un cierto comportamiento, que puede ser tan simplecomo determinar el color del coche o tan complejo como la iniciación de una cadena deestímulos que se pasan entre una variedad e objetos diferentes.Nota: Siempre que un objeto es estimulado por un mensaje, inicia algún comportamientoejecutando un método.Mensajes:Los mensajes son el medio a través del cual interactúan los objetos. Un mensaje estimulala ocurrencia de cierto comportamiento en el objeto receptor. El comportamiento serealiza cuando se ejecuta un método.Una operación dentro de un objeto emisor genera un mensaje de la forma:destino.operación (parámetros)Donde destino define al objeto receptor el cual es estimulado por el mensaje, operación serefiere al método que recibe el mensaje y parámetros proporciona información requeridapara el éxito de la operación.Los mensajes proporcionan una visión interna del comportamiento de objetos individuales,y del Sistema Orientado a Objetos como un todo.Nota: El paso de mensajes mantiene comunicado un Sistema orientado a objetos.
  14. 14. 3.2.1 AnálisisEl modelo de análisis se extiende luego para describir la manera en que interactúan losactores y el Sistema para manipular el modelo del dominio de aplicación. Losdesarrolladores usan el modelo de análisis, junto con los requerimientos no funcionales,para preparar la arquitectura del Sistema que se desarrolla durante el diseño de alto nivel.Las actividades del análisis: la identificación de objetos, su comportamiento, susrelaciones, su clasificación y su organización.El modelo de análisis está compuesto por tres modelos individuales: el modelo funcional,representado por casos de uso y escenarios, el modelo de objetos de análisis, representadopor diagramas de clase y objeto, y el modelo dinámico, representado por gráficas deestado y diagramas de secuencia.Conceptos de análisis:Particularmente describimos:Objetos de entidad, frontera y control: Los objetos de entidad representan la informaciónpersistente rastreada por el Sistema. Los objetos de frontera representan la interacciónentre los actores y el Sistema. Los objetos de control representan las tareas realizadas porel usuario y soportadas por el Sistema.Multiplicidad de asociación: el extremo de una asociación puede etiquetarse como unconjunto de enteros llamados multiplicidad. La multiplicidad indica la cantidad de vínculosque pueden originarse legítimamente desde una instancia de la clase conectada alextremo de la asociación.En UML, un extremo de una asociación puede tener como multiplicidad un conjunto deenteros arbitrarios. Sin embargo, en la práctica, la mayoría de las asociaciones queencontramos pertenece a alguno de los siguientes tres tipos:Una asociación de uno a uno tiene una multiplicidad de 1 a cada extremo. Una asociaciónde uno a uno entre dos clases significa que existe solamente un vínculo entre instancias decada clase.Una asociación de uno a muchos tiene una multiplicidad de 1 en un extremo y 0…nUna asociación de uno a muchos entre dos clases (por ejemplo, Persona y Automóvil)indica composiciónUna asociación de muchos a muchos tiene una multiplicidad de 0. . n o 1. . n en ambosextremos. Una asociación de muchos a muchos entre dos clases indica que puede existir
  15. 15. una cantidad arbitraria de vínculos entre instancias de las dos clases. Este es el tipo máscomplejo de asociación.Asociaciones calificadas:La calificación es una técnica para la reducción de la multiplicidad usando claves. Lasasociaciones que tienen multiplicidad de 0…1 o 1 son más fáciles de comprender que lasasociaciones con multiplicidad de 0…n o 1…n. Con frecuencia, en el caso de una asociaciónde uno a muchos, los objetos del lado de “muchos” pueden distinguirse entre ellos usandoun nombre.Generalización:La generalización nos permite organizar conceptos en jerarquías.El análisis para el enfoque orientado a objetos; En lugar de considerar el SW desde unaperspectiva básica de entrada-proceso-salida como los métodos estructurados se basa enmodelar el Sistema mediante los objetos que forman parte de él y las relaciones estáticas(herencia y composición ) o dinámicas(uso entre otros objetos ). El análisis identifica lasclases y objetos relativamente en el dominio del problema, el diseño proporciona detallessobre la arquitectura, las interfaces y los componentes la implementación transforma eldiseño en código y la pruebas checan tanto la arquitectura como la interfaz y loscomponentes.3.2.2 DiseñoDurante el diseño de objetos cerramos el hueco entre los objetos de aplicación y loscomponentes hechos, identificando objetos de solución adicionales y refinando los objetosexistentes.El diseño de objetos incluye:• Especificación de servicios, durante la cual describimos con precisión cada interfaz declase.• Selección de componentes, durante la cual identificamos componentes hechos y objetosde solución adicionales.• Reestructuración del modelo de objetos, durante la cual transformamos el modelo dediseño de objetos para mejorar su comprensibilidad y extensibilidad.
  16. 16. • Optimización del modelo de objetos, durante la cual transformamos el modelo de diseñode objetos para tratar criterios de desempeño, como el tiempo de respuesta o la utilizaciónde la memoria.El diseño de objetos, al igual que el diseño del Sistema, no es algorítmico.El diseño de objetos a veces es difícil distinguir claramente el análisis y el diseño Orientadoa Objetos (OO).Esencialmente AOO es una actividad de clasificación, se analiza un problema con el fin dedeterminar clases de objetos que sea aplicables en el desarrollo de la solución.El de DOO permite al ing. de SW los objetos que se derivan de cada clase de lasinterrelaciones entre ellos y proporciona una notificación que refleja las relaciones entrelos objetos.

×