DIRECCION DE ESTUDIOS VIRTUALES

LIC. INFORMACION Y DOCUMENTACION


VIII Trimestre – Análisis y Diseño de Sistemas


Prof.: Yaros Pérez             Participante: Mirlena  Malavé


 

ANALISIS Y DISEÑO DE SISTEMAS

 

        Un sistema o “grupo de elementos interdependientes o que interactúan regularmente formando un todo”,  puede incluir o no computadoras, más sin embargo, la labor primordial del análisis y diseño es la de estudiarlo para determinar su esencia, modelar su comportamiento e implantarlo. 

        Entre sus objetivos tenemos:

 

a.- Eficiencia: Se busca diseños que hagan un uso inteligente de los recursos.

 

b.- Confiabilidad: La confiabilidad del software puede ser vista como un problema de depuración de errores en los programas, pero es también un problema de diseño. La confiabilidad se expresa como MTBF (mean time between fairules: tiempo medio entre fallas).

 

c.- Mantenibilidad: Un sistema es mantenible si permite la detección, análisis, rediseño, y corrección de errores fácilmente.

 

d.- Modificabilidad: Es la posibilidad de realizar modificaciones y extensiones a partes del sistema, o agregar nuevas partes con facilidad (no corrección de errores).

 

e.- Flexibilidad: Representa la facilidad de que el mismo sistema pueda realizar variaciones sobre una misma temática, sin necesidad de modificaciones.

 

f.- Generalidad: Expresa el alcance sobre un determinado tema.

 

g.- Utilidad o facilidad de uso: Es un factor importante que influye en el éxito del sistema y su aceptación por parte del usuario.

 

h.- Costo mínimo: Obtener sistemas económicos para desarrollar, operar, mantener y modificar.

       Dentro de un proyecto de desarrollo de sistemas automatizado participan: los usuarios (para quien se construye), administradores (de recursos, de personal), auditores (asegurar que su sistema se desarrolle de acuerdo con diversos estándares o normas externas), analistas (personaje clave en cualquier proyecto de desarrollo de sistemas e interactúa con los demás participantes realiza una descripción no técnica de los requerimientos del sistema), diseñadores (realiza una descripción arquitectónica del hardware y software que se usará para poner en practica al sistema),  programadores (realiza la labor de programación del sistema), personal de operaciones (quienes reciben el sistema luego de que este ha sido analizado, diseñado, programado y probado el sistema, responsables de la red de comunicaciones, centro de cómputos, seguridad de hardware y software, etc.).

 

I.- ANALISIS Y DISEÑO ESTRUCTURADO:

                   

La actividad de Análisis parte de los requerimientos observados durante el proceso de estudio del dominio del problema y arroja como resultado lo QUE debe hacer el sistema para brindar una solución al problema del usuario, independientemente de la naturaleza de la tecnología que se use para su implementación. El análisis transforma las políticas del usuario y el esquema del proyecto en una especificación estructurada.

 

Los Modelos del Análisis

 

                                                                                                           

     El Modelo Esencial de Análisis estructurado consta de:

a.- Lista de Acontecimientos que a la misma vez, consta de declaración de propósitos, modelo ambiental y un diagrama de contexto.

 

b.- Modelo de Comportamiento que consta de un modelo preliminar y un modelo terminado.

                                                                                                           

     La actividad de Diseño se dedica a asignar porciones de la especificación estructurada resultante del proceso de análisis (también conocida como modelo esencial) a procesadores adecuados (sean máquinas o humanos), y a labores apropiadas (tareas, particiones, etc.) dentro de cada procesador. Dentro de cada labor, la actividad de diseño se dedica a la creación de una jerarquía apropiada de módulos de programas y de interfaces entre ellos, para implantar la especificación creada durante el análisis. Además la actividad del diseño se ocupa de la transformación del modelo de datos de entidad-relación en un diseño de base de datos.

 

      En el Diseño estructurado se debe definir: ¿Qué es?, para qué? Aquí se toma en cuenta la ingeniería del software menos costo, más calidad. Cómo? Establecer los objetivos, principios, restricciones, estrategias y metodologías, dividiendo el todo en partes. Modelos: Programas, datos y de interfaces.

 

 

I.1.- Principios:

 

a.- Abstracción: Permite concentrarse en un problema al mismo nivel de generalización, independientemente de los detalles irrelevantes de bajo nivel. La abstracción es el examen selectivo de ciertos aspectos de un problema.

 

b.- Refinamiento sucesivo: Se desarrolla una jerarquía descomponiendo una declaración macroscópica de una función de una forma sucesiva, hasta que se llega a las sentencias del lenguaje de programación.

 

c.- Modularidad: El software se divide en componentes con nombres y ubicaciones determinados, que se denominan módulos, y que se integran para satisfacer los requisitos del problema.

 

d.- Arquitectura del software: Se refiere a las características más importantes del software de computadoras: la estructura jerárquica de los componentes procedimentales (módulos) y a la estructura de datos

 

e.- Jerarquía de control: También denominada estructura de programa, representa la organización (frecuentemente jerárquica) de los componentes del programa (módulos) e implica una jerarquía de control.

 

f.- Estructura de datos: Es una representación de la relación lógica existente entre los elementos individuales de datos.

 

g.- Procedimientos del software: Se centra sobre los detalles de procesamiento de cada módulo individual.

 

h.- Ocultamiento de la información: Sugiere que los módulos se han de caracterizar por decisiones de diseño que los oculten unos a otros.

 

 

1.2- Criterios de Validación de Calidad:

 

a.- Acoplamiento entre módulos clasifica el grado de independencia entre pares de módulos de un Diseño Estructurado. El objetivo es minimizar el acoplamiento, es decir, maximizar la independencia entre módulos.

 

b.- Cohesión: Cómo las actividades de un módulo están relacionadas unas con otras; es la medida de intensidad de asociación funcional de los elementos de un módulo.

 

c.- Descomposición: Es la separación de una función contenida en un módulo, para un nuevo módulo.

 

d.- Fan-Out: Es usado como una medida de complejidad. Es el número de subordinados inmediatos de un módulo (cantidad de módulos invocados).

 

e.- Fan-In: Es usado como una medida de reusabilidad, es el número de superiores inmediatos de un módulo (la cantidad de módulos que lo invocan).

 

1.3.- Ventajas y Desventajas:

 

La programación modular presenta innumerables ventajas. En primer lugar, al permitir la descomposición del programa en trozos de tamaño manejable hace más fácil de escribir y probar el programa, y hace el proceso de dirección más sencillo. Asimismo, la estructura de los módulos facilita el ocultamiento de información ya que se pueden especificar los detalles internos por un lado, y la parte visible por otro.

La programación modular facilita la abstracción, ya que se puede describir el sistema con varios niveles de abstracción, de forma jerárquica, con módulos compuestos a su vez por otros módulos. Si el programa es modular, su modificación es más sencilla, ya que la independencia entre los módulos facilita el que un cambio en un módulo no afecte al resto. Además, el programa es más fácil de probar, ya que podemos hacer las pruebas de cada módulo por separado, y luego realizar la prueba del programa conjunto separadamente (prueba de integración). De esta forma es mucho más fácil localizar y corregir los errores, la hacerse la prueba paso a paso.

Sin embargo, la programación modular requiere esfuerzo y cuidado en el diseño, para hacer los módulos independientes. Si los módulos no son independientes no se consigue una verdadera programación modular.

 

 

 

II.- ANALISIS Y DISEÑO ORIENTADO A OBJETOS:

 

         Desde principio de los años 80 se han venido generalizando los métodos orientados a objeto tanto para el análisis y diseño, como para la codificación de programas. El método hace el software más fácil de entender, al existir una relación directa entre su estructura y la del sistema o problema a resolver.

En un sistema orientado a objetos los objetos que tienen las mismas características se agrupan en las llamadas clases de objetos. En una metodología orientada al objeto las clases de objetos o los objetos individuales suelen tener tres componentes:

nombre: identifica al objeto o a la clase

atributos: existe un atributo por cada uno de los datos o valores que el objeto puede almacenar; el conjunto de los valores de los atributos de un objeto determina su estado

operaciones: cada objeto tiene un conjunto de operaciones que se pueden invocar desde el exterior; al invocarse una operación se le pueden pasar parámetros (datos de entrada o salida) al objeto; la ejecución de la operación normalmente implica el cambio de los atributos y, posiblemente, la invocación de

operaciones de otros objetos.

         Si el análisis del sistema es un análisis orientado a objeto, lo lógico es hacer el diseño también mediante una metodología orientada al objeto. En el análisis se realizan las siguientes actividades:

• organizar el sistema en subsistemas

• identificar la concurrencia entre objetos

• asociar objetos a recursos (por ejemplo a procesadores)

• elegir la estrategia de almacenamiento de información (ficheros, sistemas distribuidos, datos en memoria, etc.)

• elegir la estrategia de implementación, que puede ser una máquina de estados abstracta, tareas concurrentes, etc.

• considerar los aspectos del entorno

• establecer prioridades

         En el diseño detallado lo que se pretende es una definición detallada de cada objeto. Generalmente se hacen diagramas más detallados que en el análisis tanto para los objetos, como para su comportamiento dinámico y funcional. Para cada objeto se eligen los algoritmos para sus operaciones, las representaciones concretas de cada atributo, y la forma de implementar las diferentes relaciones entre los objetos.

 

II.1.- Principios:

 

a.- Encapsulamiento: El empaque conjunto de datos y métodos se llama encapsulado. El objeto esconde sus datos de los demás objetos y permite el acceso a los datos mediante sus propios métodos. Esto recibe el nombre de ocultamiento de información. Evita la corrupción de los datos de un objeto.

 

b.- Herencia: Una clase implanta el tipo de objeto. Una subclase hereda propiedades de su clase padre; una sub-subclase hereda propiedades de las subclases; etc. Una subclase puede heredar la estructura de datos y los métodos, o algunos de los métodos, de su superclase. También tiene sus métodos e incluso tipos de datos propios.

 

c.- Polimorfismo: Se aplica a una operación que adopta varias formas de implantación según el tipo de objeto, pero cumple siempre el mismo objetivo.

 

 

II.2.- Ventajas y Desventajas:

 

 

 

VENTAJAS

DESVENTAJAS

  • Reutilización
  • Estabilidad
  • Comportamiento de objetos
  • Construcción de clases más complejas
  • Confiabilidad
  • Nuevos mercados de software
  • Rápido diseño
  • Mayor calidad de diseño
  • Integridad
  • Programación más sencilla
  • Mantenimiento más sencillo

 

 

 

·  Alta curva de aprendizaje

·  Costosa

·  Requiere conocimientos adicionales

·  No recomendable para proyectos pequeños

·  Requiere personal especializado

 

 

II.3.- Conceptos Básicos:

 

a.- Objeto: Dentro del software orientado a objeto, un objeto es cualquier cosa, real o abstracta, acerca de la cual almacenamos datos y los métodos que controlan dichos datos. Un objeto puede estar compuesto por otros objetos y estos a su vez también pueden estar compuestos por otros objetos.

b.- Entidad: Sólo se refiere a datos.

c.- Método: Especifican la forma en que se controlan los datos de un objeto.

d.- Mensaje: Es una solicitud para que se lleve a cabo la operación indicada y se produzca el resultado.

e.- Clases: Es una implantación de un tipo de objeto. Especifica una estructura de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos.

f.- Evento: Aquel que produce un cambio en el estado del objeto.

g.- Operación: se refiere a una unidad de procesamiento que puede ser solicitada.

 

III.- DIFERENCIAS ENTRE DISEÑO ESTRUCTURADO Y ORIENTADO A OBJETO:

a.- El diseño modular es una técnica que viene usándose desde hace mucho tiempo. El problema es cómo partir en módulos independientes. Antes solía hacerse de acuerdo a criterios funcionales (agrupar funciones similares)

 

Inconvenientes:

Cada figura - objeto del espacio problema - reside en varios módulos de programa (por tanto estos módulos no son independientes)

Un cambio en el objeto del espacio problema implica cambiar muchos módulos, y volverlos a probar

Añadir nueva funcionalidad implica normalmente tocar varios módulos, y volverlos a probar (por ejemplo, añadir una figura nueva).

En definitiva, el software es difícil de cambiar o extender y poco reutilizable

b.- En el Diseño orientado a objeto, se puede utilizar otra aproximación a la partición en módulos:

división orientada a objetos

cada objeto del problema real que es preciso resolver, es un módulo del programa

se encapsulan juntas la definición del objeto y todas sus operaciones

 

      El diseño de programas orientado a objetos pretende:

simplificar la modificación y extensión del software, haciendo que la mayor parte del mismo sea reutilizable

es más fácil de entender ya que existe relación directa entre la estructura del software y la del problema,  en muchos casos, extender la funcionalidad no implica modificar el software existente, sino sólo añadir nuevos objetos

el cambio interno en un objeto afecta a un solo módulo.

 

IV.- EJEMPLO PRACTICO.-

 

       El desarrollo de una aplicación web simple, siguiendo la metodología orientada a objeto, facilita el traslado del diseño conceptual a la implementación, proveyendo herramientas que permiten reducir la distancia entre el problema del mundo real y la programación de la solución en la computadora.

      

a.- Capa Conceptual:

       El modelo de objetos de este ejemplo consta de las entidades básicas de un dominio específico: un comercio de venta de productos B2C (Negocio a Consumidor). En este dominio, entidades como producto, categoría de productos, carro de compras, usuario, venta, se interrelacionan para responder a la navegación del usuario por la aplicación y a sus actividades transaccionales. Todas las entidades mencionadas se construyen a partir de información persistente, propiedad mantenida por la empresa en forma directa a través de un DBA (Administrador de Bases de Datos) o simplemente aprovechando una funcionalidad incorporada de la aplicación que permita manipular la base de datos.

 

       En cada diseño conceptual existe comportamiento que escapa a la simple navegación de información. Se trata del comportamiento inherente de cada clase, y aunque la aplicación particular no requiera que se implemente, es importante destacar que si la aplicación crece el diseño conceptual debe estar preparado para ser extendido, tal como cualquier diseño orientado a objetos. Retomando el diseño conceptual, el análisis anterior de las entidades del dominio permite afirmar que dichas clases comparten (al menos) el comportamiento correspondiente a la interfaz con la capa de persistencia.  Las clases del diseño conceptual que representen a estas entidades podrán obtener sus atributos al iniciarse y actualizar los cambios cuando sea necesario (realizando eventualmente algún tipo de almacenamiento temporal para mejorar la eficiencia). La consistencia de la información queda asegurada, entonces, por el comportamiento de los objetos del modelo. El lenguaje elegido para desarrollar la implementación de esta capa es Java (lenguaje de programación orientado a objetos desarrollado por la compañía Sun Microsystems y que fue diseñado para que la ejecución de código a través de la red fuera segura). Durante esta etapa se utilizará como paquete de vital importancia para el manejo de base de datos el JDBC (Conectividad de Base de Datos. Es una interfaz que provee comunicación con bases de datos. Consiste de un conjunto de clases e interfaces escritas en Java, que proveen una API -Interfaz de Programación de Aplicación- estándar para desarrolladores de herramientas de base de datos, permitiendo independizar la aplicación de la base de datos que utiliza).

       La clase abstracta que define el comportamiento básico de las entidades del modelo y concentra la lógica de interacción con la base de datos será denominada Entidad Abstracta. Para cumplir con los objetivos propuestos, esta clase debe ser capaz de crear una conexión con la base de datos, ejecutar consultas y retornar los resultados para ser procesados. Sólo la información más importante y de menor volumen es cargada desde la base de datos en el momento de la instanciación. La información restante puede ser cargada bajo demanda, a partir de un eventual requerimiento de la aplicación. Para ilustrar esta idea con claridad puede considerarse cargar los siguientes atributos en la instanciación de un Producto: descripción, categoría, cantidad disponible y precio. En algún momento de la ejecución, la aplicación puede requerir los productos relacionados de un determinado producto (por ejemplo, el usuario podría solicitar una lista de productos relacionados con el producto televisor, tales como video grabadora, filmadora, mesa para televisor, etc.); dado el volumen de esta información y lo esporádico de su requerimiento, se sugiere entonces consultar a la base de datos para obtener esta información sólo cuando es requerida.

 

b.- Capa Navegacional:

      La capa navegacional se compone de objetos construidos a partir de objetos conceptuales, y constituyen en general los elementos canónicos de las aplicaciones hipermedia tradicionales: nodos, enlaces, anclas y estructuras de acceso. Sin embargo, estas clases pueden extender el comportamiento característico para funcionar como adaptadores de los objetos conceptuales y delegar así operaciones específicas del dominio. Entonces, los objetos navegacionales pueden actuar como observadores, para construir vistas de objetos conceptuales, y como adaptadores, para extender la actividad navegacional de un nodo y poder aprovechar el comportamiento conceptual del objeto adaptado. Estas dos perspectivas pueden implementarse aprovechando las virtudes inherentes de diferentes tecnologías: JSP (páginas de servidor java) para observar y Servlets (clase de Java utilizada para extender la capacidad del servidor) para adaptar.

      Las páginas JSP serán responsables de construir los nodos de la capa navegacional. Esto se logra instanciando los objetos del diseño conceptual necesarios para mostrar la información del nodo y utilizando los datos solicitados a dichas instancias para generar árboles de elementos XML (formato de transferencia de datos multi-plataforma).  Con este procedimiento se compone un nodo concentrando información relacionada en un documento XML generado dinámicamente con cada requerimiento, lo que permite además personalizar el contenido (datos sin presentación) a partir de infinitas configuraciones, tales como un perfil de usuario, la sobrecarga de requerimientos de la aplicación, la historia registrada de la navegación, políticas de protección de contenidos, seguridad, etc.

      Para mostrar el contenido del carro de compras del usuario es necesario instanciar el objeto conceptual CarroDeCompras (notar que el identificador del usuario que navega la aplicación y solicita acceder a su carro de compras es el único dato que se necesita para invocar al constructor de dicha entidad). De este modo, el nodo construido a partir de esta información no sólo concentra los datos de las compras sino que además ofrece un menú de operaciones para manipular el carro de compras, como borrar un elemento, cambiar la cantidad solicitada de un producto, vaciar el carro, finalizar la compra. Todas estas operaciones no son responsabilidad del nodo, sino que son realizadas por el objeto conceptual. Entonces, delegar responsabilidad es lo único que debe hacer el nodo navegacional en este caso: la actividad delegada continúa dentro de un servlet y finalmente es el servlet quien se encarga de redireccionar la navegación a una página JSP para eventualmente mostrar un resultado.

 

c.- Capa de Interfaz Abstracta:

      Tanto un nodo actuando como observador como un nodo actuando como adaptador, finalmente continúa por mostrar cierta información y para ello necesita definir la forma de presentación mediante la cual dicha información será visualizada en la interfaz. Para ello se incorporan las tecnologías XSL (lenguaje de hojas de estilo extensible) y un mecanismo de análisis sintáctico para obtener una página HTML en función de un par de documentos XML/XSL. Las páginas XSL, ubicadas también del lado del servidor, definirán la apariencia de los nodos que se generaron en formato XML (lenguaje de marcado extensible). Cada página XSL define la forma en que los elementos del XML asociados serán mostrados, haciendo uso de código HTML y eventualmente CSS [24], para dar el formato deseado a las páginas finales. En este caso, se desea obtener un documento de salida con formato HTML a partir de un par de documentos XML / XSL.

 

 

IV.- Infografía:

 

1.- Diseño Orientado a Objeto:

La Ingeniería de Software implica seguir en cualquier proyecto de software una metodología de desarrollo y la utilización de distintas técnicas y herramientas. Los diferentes procedimientos a seguir en cualquier proyecto de Ingeniería de software son: Definición de requerimientos, Análisis, Diseño, Verificación y Validación (Pruebas de  Calidad del Software), Pruebas y Mantenimiento. El presente documento intenta dar a conocer y describir los conceptos y aspectos  fundamentales del diseño orientado a objetos (DOO) dentro del desarrollo de un producto  software, así como las técnicas, metodologías y herramientas actuales de dicho paradigma en la Ingeniería de software.

http://72.14.253.104/search?q=cache:Nk6yrpAXXC0J:www.cs.buap.mx/~dpinto/semadoo/mario.pdf+an%C3%A1lisis+y+dise%C3%B1o+estructurado&hl=es&ct=clnk&cd=58&gl=ve&lr=lang_es

 

2.- Diagramas de Estructura:

La lógica de cada diseñador se expresa en la confección del diagrama de estructura, por lo tanto irán desde lo más secuenciales hasta los más estructurados; por lo tanto no puedo decir que hay normas estrictas que indican una única forma de realizarse lo importante es que lo mismos sean claros, consistentes y nos representen realmente las rutas que seguirá luego nuestro código del sistema mismo.

http://exa.unne.edu.ar/depar/areas/informatica/anasistem2/public_html/apuntes/maf/anexos/estructura.htm

 

3.- Análisis Estructurado:

El análisis estructurado permite al analista conocer un proceso (actividad) en una forma lógica y manejable al mismo tiempo que proporciona la base para asegurar que no se omite ningún detalle pertinente. Por otra parte una de las claves del éxito de un buen análisis será el que exista una buena comunicación entre usuarios y analistas, esto obliga a disponer de un lenguaje común, sencillo y fiable de modo que permita minimizar costes y errores, y maximizar la calidad.

http://72.14.253.104/search?q=cache:9Poq-2jHwj4J:www.unap.edu.pe/~crosales/cursos/tsi/cap3analisis_estructurado.pdf+an%C3%A1lisis+estructurado&hl=es&ct=clnk&cd=8&gl=ve&lr=lang_es

                                                  

4.- Ingeniería del Software:

El análisis estructurado se concentra en especificar lo que se requiere que haga el sistema o la aplicación. Permite que las personas observen los elementos lógicos (lo que hará el sistema) separados de los componentes físicos (computadora, terminales, sistemas de almacenamiento, etc.). Después de esto se puede desarrollar un diseño físico eficiente para la situación donde será utilizado.

http://www.monografias.com/trabajos5/inso/inso.shtml

 

5.- Análisis y Diseño

Permite al analista conocer un sistema o proceso (actividad) en una forma lógica y manejable al mismo tiempo que proporciona la base para asegurar que no se omite ningún detalle pertinente. El objetivo que persigue el análisis estructurado es organizar las tareas asociadas con la determinación de requerimientos para obtener la comprensión completa y exacta de una situación dada.

http://www.monografias.com/trabajos10/andi/andi.shtml

 

6.- Programación Orientada a Objeto

La Programación Orientada a Objetos (POO u OOP según siglas en inglés) es un paradigma de programación que define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

http://es.wikipedia.org/wiki/Programación_orientada_a_objetos

 

 

7.- Análisis Estructurado de Sistemas de Información

El desarrollo de un sistema de información, independientemente de su tamaño y complejidad, requiere muchas actividades coordinadas y el empleo de una diversidad de herramientas y modelos. La metodología de desarrollo de sistemas es una forma estándar de organizar y coordinar estas actividades.  El análisis de sistemas llega a la raíz del problema o a la necesidad y define los requerimientos de los usuarios.

http://us.geocities.com/g axiola_2000/sistemas/estructurado.html

 

8.- Análisis y Diseño Orientado a Objetos

Durante los últimos años ha ido creciendo en forma considerable el análisis y diseño orientado a objetos. Se han publicado numerosos libros y muchas organizaciones están listas para implementar la práctica de esta nueva tecnología. De un tiempo para acá ha venido presentándose un interés creciente en el campo del análisis orientado a objetos (AOO) y el diseño orientado a objetos (DOO). Este interés es debido a que la programación orientada a objetos (POO) se ha impuesto debido a sus enormes ventajas, pero las metodologías de análisis y diseño tradicional no son aplicables. Con la publicación de numerosos libros, los métodos se han estabilizado y ahora las organizaciones pueden moverse con tranquilidad a esta nueva tecnología.

http://www.inei.gob.pe/biblioineipub/bancopub/inf/Lib5040/TECN08.HTM

 

9.- Tecnología orientada a objetos

Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis y diseño orientado a objetos. El modelamiento visual es la clave para realizar el análisis OO. Desde los inicios del desarrollo de software OO han existido diferentes metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologías.

http://java.ciberaula.com/articulo/tecnologia_orientada_objetos/

 

 

 

 

 

 

 

 

 

Hosted by www.Geocities.ws

1