type object

Download type object

Post on 15-Aug-2015

118 views

Category:

Engineering

0 download

Embed Size (px)

TRANSCRIPT

  1. 1. UNIVERSIDAD DE ORIENTE NCLEO MONAGAS ESCUELA DE ING. Y CIENCIAS APLICADAS CURSO ESPECIAL DE GRADO CIENCIAS DE LA COMPUTACIN Type Object Profesor: Jonathan Vsquez Integrantes: Centeno G., Renny J. C.I. 21.350.253 Fernndez G., Ana B. C.I.21.329.313 Maturn, Abril del 2015
  2. 2. CONTENIDO 1. Introduccin..... 3 2. Marco terico 2.1 Qu es un type object? .. 4 2.2 Cundo usar los type objects?......................................................... 4 2.3 Estructura. 4 2.4 Ventajas 5 2.5 Desventajas. 5 2.6 A tener en cuenta 6 2.7 Decisiones de diseo. 6 2.8 Type objects en distintos lenguajes. 8 3. Desarrollo .. 9 4. Conclusin. 11 5. Bibliografa. 12
  3. 3. 1. INTRODUCCIN Existen numerosos trminos relacionados con el diseo y desarrollo de software. Algunos de estos trminos, como las buenas prcticas y los modelos de diseo, mencionan que los objetos deben aprender a verse como conjuntos de comportamientos ms que como un conjunto de datos. Los modelos de diseo, en particular, representan herramientas de comunicacin con un gran poder de simplificar. Representan un vocabulario comn al momento de programar que se comparte con otros programadores. Mediante el empleo de un modelo de diseo existe un mayor nivel de abstraccin, pues establece un conjunto de objetos y clases y la relacin existente entre los mismos. Dependiendo del tipo de problema que se quiera solucionar, se podr elegir el modelo de diseo que se puede implementar. Desde tiempos inmemoriales, en el desarrollo de software se ha lidiado con la difcil tarea de manejar la complejidad de construir sistemas. Para ello, siempre se ha buscado contar con normas que permita a los programadores llegar a un consenso con respecto a que estilo o que estructura se debe seguir al momento de construir o desarrollar un software. Y, aunque hasta ahora no existe un receta exacta con respecto a los procedimientos que deben llevarse a cabo para lograr esta laboriosa tarea, vale la pena decir que la mayora de los xitos de software de hoy en da no se deben a ningn tipo de metodologa. Se deben ms a los puntos de vista de los programadores. Por esto es necesario formalizar las maneras en las que los desarrolladores toman decisiones e ir generando herramientas a partir de esta formalizacin. Entre estas herramientas se encuentran los modelos de diseo. Estos modelos de diseo representan la intencin de formalizar una prctica de diseo, una simple herramienta para disear software. Adems, representas mejoras en cuanto a la capacidad de explorar nuevos niveles de diseo. Ayuda a evaluar hasta qu punto se puede dejar abierta la construccin de software a cambios y hasta qu punto se puede cerrar una solucin para poder implementarla. El empleo de modelos de diseo trae como consecuencias programas ms elegantes y representa una especie de documentacin para resolver problemas que pueden presentarse con regularidad. Entre estos modelos de diseo se encuentran los type objects.
  4. 4. 2. MARCO TERICO 2.1. Qu es un type object? Segn Nystrom (2009) los type object permiten la creacin flexible de nuevas clases al crear una clase en particular, de la cual cada instancia representa un distinto tipo de objeto. El propsito de los type object, segn Johnson y Wolf (1996) es: Disociar instancias de sus clases, para que esas clases puedan ser implementadas como instancias de otra clase. Type object permite crear clases dinmicamente durante el tiempo de ejecucin, y capacita al sistema para establecer sus propias normas o reglas de comprobacin de tipos, guiando a que los sistemas sean ms simples y sin tantas lneas de cdigo. Los objetos referenciados al mismo type object, funcionarn como si fueran del mismo tipo. Esto permite compartir informacin y comportamientos a travs de un conjunto de objetos similares, funcionando casi como lo hacen las subclases, slo que sin tener que formular todo el cdigo de las distintas subclases. 2.2. Cundo usar los type objects? Segn Nystrom (2009), este diseo es muy til cada vez que se requiere definir una variedad o una gran cantidad de distintos tipos de cosas, pero el sistema de tipos de lenguaje del que se est haciendo uso es demasiado rgido. En particular, segn Johnson y Wolf (1996) conviene usar los type objects cuando se cumpla cualquiera de estas condiciones: - Las instancias de una clase necesitan ser agrupadas de acuerdo a sus atributos y/o su comportamiento en comn. - La clase necesita una subclase para cada conjunto, con el fin de poder implementar los atributos y/o comportamiento de cada grupo. - La clase requiere de una gran cantidad de subclases y/o la cantidad de subclases requerida es desconocida. - Se necesita la capacidad de crear nuevos grupos durante el tiempo de ejecucin, que no fueron considerados durante el perodo de diseo. - Se requiere la capacidad de cambiar la subclase de un objeto, an despus de que sta ha sido instanciada, sin tener que convertirla en una nueva clase. - Se necesita de la capacidad de anidar grupos recursivamente, de modo que un grupo sea un tem en otro grupo. - Se desea la capacidad de poder crear o modificar nuevos tipos sin tener que recompilar o modificar el cdigo. 2.3. Estructura Segn Johnson y Wolf (1996):
  5. 5. - Typeclass: es la clase de typeobject. Posee una instancia diferente para cada tipo de objeto. - Typeobject: es una instancia de typeclass. Representa un tipo de objeto. Establece todas las propiedades de un objeto que son las mismas para todos los objetos del mismo tipo. - Clase: es la clase de objeto. Representa instancias de typeclass. - Objeto: es una instancia de clase. Representa un tem nico que posee un contexto nico. Establece todas las propiedades de ese nico tem que pueden diferir de las propiedades de otros tems del mismo tipo. Est asociado a un typeobject que describe su tipo. Delega propiedades que define su tipo a su typeobject. 2.4. Ventajas Segn Johnson y Wolf (1996), las ventajas de los type objects son: - Creacin de clases en tiempo de ejecucin: este diseo permite que nuevas clases sean creadas en tiempo de ejecucin. Estas nuevas clases no son exactamente clases, son instancias llamadas typeobjects que son creadas por la typeclass, as como cualquier instancia es creada por una clase. - Evita la necesidad de muchas clases: el sistema ya no necesitar de numerosas clases para representar diferentes tipos de objetos. En lugar de eso, el sistema puede usar una typeclass y numerosos typeobjects. - Cambio dinmico de tipos: el diseo permite que el objeto cambie dinmicamente su typeobject, que tiene el efecto de cambiar su clase. Esto es ms sencillo que transformar el objeto en una nueva clase. - Creacin de subclases independientes: pueden crearse subclases independientes de typeclass y de clase. - Typeobjects mltiples: el diseo le permite al objeto tener mltiples typeobjects, donde cada uno define alguna parte del tipo de objeto. El objeto entonces debe decidir qu tipo de comportamiento delegar a qu typeobject. 2.5. Desventajas Segn Johnson y Wolf (1996), las desventajas de los type objects son: - Complejidad de diseo: el modelo factoriza un nico objeto lgico en dos clases. La relacin entre estas dos ltimas clases, el objeto y su tipo, es difcil de comprender. Esto es confuso para los programadores y creadores de modelos que no estn familiarizados con los typeobjects. Es difcil reconocer o describir la relacin entre typeobject y object. Esta confusin repercute tanto en la simplicidad como en la mantenibilidad. En otras palabras: usa herencia, es ms sencillo. - Complejidad de implementacin: el modelo extrae las diferencias de implementacin de las subclases y las coloca en el estado de las instancias de typeobject. Donde cada subclase poda implementar un mtodo de distintas formas, ahora la typeclass slo puede implementar el mtodo de
  6. 6. una nica manera y cada estado de los typeobjects debe hacer que la instancia se comporte de forma distinta. - Manejo de referencias: cada objeto debe mantener una referencia con su typeobject. As como un objeto sabe cul es su clase, un objeto sabe cul es su typeobject. Pero donde sea que el sistema o el lenguaje establezca automticamente y mantenga la relacin clase-instancia, la aplicacin debe establecer y mantener por s misma la relacin typeobject-object. 2.6. A tener en cuenta Segn Nystrom (2009), este modelo busca cambiar la definicin de tipo desde el imperativo pero rgido lenguaje del cdigo al ms flexible mundo de objetos en la memoria. El mismo autor se refiere a que la flexibilidad es buena, pero pierdes ciertas ventajas al alojar tus tipos en la memoria: - El seguimiento de los typeobjects debe ser realizado manualmente: una de las ventajas de usar algo parecido a los tipos del sistema de c++ u otros lenguajes de programacin orientados a objetos es que el compilador se encarga de registrar todas las clases automticamente. Los datos que definen cada clase son automticamente compilados dentro del segmento de memoria esttica del ejecutable y simplemente funciona. Cuando se usa el modelo de typeobjects, el programador es responsable no slo de los typeobjects, sino de las typeclasses. Es el programador quien debe asegurarse que las typeclasses se registren en la memoria y que los typeobjects sean correctamente inicializados. En pocas palabras, el programador se libra de algunas limitaciones o restricciones del compilador, pero el costo es que debe reimplementar algunas de las acciones que el compilador suele hacer por el programador. - Es difcil definir el comportamiento de cada tipo: a travs de las subclases, el programador puede sobreescribir un mtodo y hacer lo que desee hacer (llamar otros cdigos, calcular valores a travs de procedimientos, entre otros.) En cambio, cuando se usa el modelo de los typeobjects, se reemplaza un mtodo sobreescrito con un miembro variable. Esto hace que sea muy sencillo utilizar typeobjects para definir datos especficos de un tipo, pero se hace difcil definir el comportamiento especfico del mismo ti