SlideShare una empresa de Scribd logo
9
Lo más leído
10
Lo más leído
República bolivariana de Venezuela
Ministerio del Poder Popular Para la Educación Superior
I.U.P. “Santiago Mariño”
Extensión - Caracas
Unidad Curricular: Teoría de sistemas
Metodología orientada a objetos
Profesor: Alumno:
Miguel mena Alexander Carrasco
C.I: 25.435.854
Caracas: 8/8/2017
Introducción
El diseño orientado al objeto, al igual que otras metodologías de diseño orientadas a
la información, crea una representación del campo del problema del mundo real y lo
hace corresponder con el ámbito de la solución, que es el software.
El diseño orientado al objeto produce un diseño que interconecta objetos de datos
(elementos dato) y operaciones de una forma que modularía la información y el
procesamiento; por el contrario, otros métodos dejan aparte el procesamiento.
La naturaleza única del diseño orientado al objeto queda reflejada en su capacidad
de construir sobre tres pilares conceptuales importantes del diseño de software:
¨ Abstracción
¨ Ocultamiento de información
¨ Modularidad
Estos conceptos se explicarán en los siguientes puntos.
El análisis orientado al objeto (AOO), el diseño orientado al objeto (DOO) y la
producción orientada al objeto comprenden un conjunto de actividades de Ingeniería del
Software para la construcción del sistema orientado a objetos.
Utilizando el diseño orientado al objeto el diseñador puede crear sus propios tipos
abstractos de datos y abstracciones funcionales y hacer corresponder el campo del
mundo real con esas abstracciones creadas por el propio programador. Esta
correspondencia será la mayoría de las veces mucho más natural, ya que el rango de
tipos abstractos de datos que puede inventar el diseñador es virtualmente ilimitado. Más
aún, el diseño del software se desliga de los detalles de representación, sin que ello
afecte al sistema de software global.
Metodología orientada a objetos
La metodología orientada a objetos ha derivado de las metodologías anteriores a éste. Así
como los métodos de diseño estructurado realizados guían a los desarrolladores que tratan
de construir sistemas complejos utilizando algoritmos como sus bloques fundamentales de
construcción, similarmente los métodos de diseño orientado a objetos han evolucionado
para ayudar a los desarrolladores a explotar el poder de los lenguajes de programación
basados en objetos y orientados a objetos, utilizando las clases y objetos como bloques de
construcción básicos.
Actualmente el modelo de objetos ha sido influenciado por un número de factores no sólo
de la Programación Orientada a Objetos, POO (Object Oriented Programming, OOP por
sus siglas en inglés). Además, el modelo de objetos ha probado ser un concepto uniforme
en las ciencias de la computación, aplicable no sólo a los lenguajes de programación sino
también al diseño de interfaces de usuario, bases de datos y arquitectura de computadoras
por completo. La razón de ello es, simplemente, que una orientación a objetos nos ayuda a
hacer frente a la inherente complejidad de muchos tipos de sistemas.
Se define a un objeto como "una entidad tangible que muestra alguna conducta bien
definida". Un objeto "es cualquier cosa, real o abstracta, acerca de la cual almacenamos
datos y los métodos que controlan dichos datos".
Los objetos tienen una cierta "integridad" la cual no deberá ser violada. En particular, un
objeto puede solamente cambiar estado, conducta, ser manipulado o estar en relación con
otros objetos de manera apropiada a este objeto.
Actualmente, el Análisis Orientado a Objetos (AOO) va progresando como método de
análisis de requisitos por derecho propio y como complemento de otros métodos de
análisis. En lugar de examinar un problema mediante el modelo clásico de entrada-proceso-
salida (flujo de información) o mediante un modelo derivado exclusivamente de estructuras
jerárquicas de información, el AOO introduce varios conceptos nuevos. Estos conceptos
nuevos le parecen inusuales a mucha gente, pero son bastante naturales.
Una clase es una plantilla para objetos múltiples con características similares. Las clases
comprenden todas esas características de un conjunto particular de objetos. Cuando se
escribe un programa en lenguaje orientado a objetos, no se definen objetos verdaderos sino
se definen clases de objetos.
Una instancia de una clase es otro término para un objeto real. Si la clase es la
representación general de un objeto, una instancia es su representación concreta. A menudo
se utiliza indistintamente la palabra objeto o instancia para referirse, precisamente, a un
objeto.
En los lenguajes orientados a objetos, cada clase está compuesta de dos cualidades:
atributos (estado) y métodos (comportamiento o conducta). Los atributos son las
características individuales que diferencian a un objeto de otro (ambos de la misma clase) y
determinan la apariencia, estado u otras cualidades de ese objeto. Los atributos de un objeto
incluyen información sobre su estado.
Los métodos de una clase determinan el comportamiento o conducta que requiere esa clase
para que sus instancias puedan cambiar su estado interno o cuando dichas instancias son
llamadas para realizar algo por otra clase o instancia. El comportamiento es la única manera
en que las instancias pueden hacerse algo a sí mismas o tener que hacerles algo. Los
atributos se encuentran en la parte interna mientras que los métodos se encuentran en la
parte externa del objeto.
Representación visual de un objeto como componente de software
Para definir el comportamiento de un objeto, se crean métodos, los cuales tienen una
apariencia y un comportamiento igual al de las funciones en otros lenguajes de
programación, los lenguajes estructurados, pero se definen dentro de una clase. Los
métodos no siempre afectan a un solo objeto; los objetos también se comunican entre sí
mediante el uso de métodos. Una clase u objeto puede llamar métodos en otra clase u
objeto para avisar sobre los cambios en el ambiente o para solicitarle a ese objeto que
cambie su estado.
Cualquier cosa que un objeto no sabe, o no puede hacer, es excluida del objeto. Además,
como se puede observar de los diagramas, las variables del objeto se localizan en el centro
o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos
en el programa. Al empaquetamiento de las variables de un objeto con la protección de sus
métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para
esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los
detalles de la puesta en práctica pueden cambiar en cualquier tiempo sin afectar otras partes
del programa.
Esta imagen conceptual de un objeto —un núcleo de variables empaquetadas en una
membrana protectora de métodos— es una representación ideal de un objeto y es el ideal
por el que los diseñadores de sistemas orientados a objetos luchan. Sin embargo, no lo es
todo: a menudo, por razones de eficiencia o la puesta en práctica, un objeto puede querer
exponer algunas de sus variables o esconder algunos de sus métodos.
El encapsulamiento de variables y métodos en un componente de software ordenado es,
todavía, una simple idea poderosa que provee dos principales beneficios a los
desarrolladores de software:
Modularidad, esto es, el código fuente de un objeto puede ser escrito, así como darle
mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un
objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta.
Ocultamiento de la información, es decir, un objeto tiene una "interfaz publica" que otros
objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener
información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar
a los otros objetos que dependan de ello.
Los objetos proveen el beneficio de la modularidad y el ocultamiento de la información.
Las clases proveen el beneficio de la reutilización. Los programadores de software utilizan
la misma clase, y por lo tanto el mismo código, una y otra vez para crear muchos objetos.
En las implantaciones orientadas a objetos se percibe un objeto como un paquete de datos y
procedimientos que se pueden llevar a cabo con estos datos. Esto encapsula los datos y los
procedimientos. La realidad es diferente: los atributos se relacionan al objeto o instancia y
los métodos a la clase. ¿Por qué se hace así? Los atributos son variables comunes en cada
objeto de una clase y cada uno de ellos puede tener un valor asociado, para cada variable,
diferente al que tienen para esa misma variable los demás objetos. Los métodos, por su
parte, pertenecen a la clase y no se almacenan en cada objeto, puesto que sería un
desperdicio almacenar el mismo procedimiento varias veces y ello va contra el principio de
reutilización de código.
Otro concepto muy importante en la metodología orientada a objetos es el de herencia. La
herencia es un mecanismo poderoso con el cual se puede definir una clase en términos de
otra clase; lo que significa que cuando se escribe una clase, sólo se tiene que especificar la
diferencia de esa clase con otra, con lo cual, la herencia dará acceso automático a la
información contenida en esa otra clase.
Con la herencia, todas las clases están arregladas dentro de una jerarquía estricta. Cada
clase tiene una superclase (la clase superior en la jerarquía) y puede tener una o más
subclases (las clases que se encuentran debajo de esa clase en la jerarquía). Se dice que las
clases inferiores en la jerarquía, las clases hijas, heredan de las clases más altas, las clases
padres.
Las subclases heredan todos los métodos y variables de las superclases. Es decir, en alguna
clase, si la superclase define un comportamiento que la clase hija necesita, no se tendrá que
redefinir o copiar ese código de la clase padre
De esta manera, se puede pensar en una jerarquía de clase como la definición de conceptos
demasiado abstractos en lo alto de la jerarquía y esas ideas se convierten en algo más
concreto conforme se desciende por la cadena de la superclase.
Sin embargo, las clases hijas no están limitadas al estado y conducta provistos por sus
superclases; pueden agregar variables y métodos además de los que ya heredan de sus
clases padres. Las clases hijas pueden, también, sobrescribir los métodos que heredan por
implementaciones especializadas para esos métodos. De igual manera, no hay limitación a
un sólo nivel de herencia por lo que se tiene un árbol de herencia en el que se puede heredar
varios niveles hacia abajo y mientras más niveles descienda una clase, más especializada
será su conducta.
La herencia presenta los siguientes beneficios:
Las subclases proveen conductas especializadas sobre la base de elementos comunes
provistos por la superclase. A través del uso de herencia, los programadores pueden
reutilizar el código de la superclase muchas veces.
Los programadores pueden implementar superclases llamadas clases abstractas que definen
conductas "genéricas". Las superclases abstractas definen, y pueden implementar
parcialmente, la conducta, pero gran parte de la clase no está definida ni implementada.
Otros programadores concluirán esos detalles con subclases especializadas.
Creación de la metodología orientada a objetos.
En los Sistemas Orientados a Objetos tradicionalmente, primero, se hablaba sólo
del tema de Programación y posteriormente fueron tomando importancia los de Análisis
y Diseño.
La Programación orientada a objetos (POO) comienza en 1967 con Simula'67, y
continua en los 70's con el desarrollo de SmallTalk.
La clave del comienzo de la POO la tuvo el hecho de querer simular modelos de la
realidad, lo cual era, y es, bastante complicado utilizando lenguajes típicos de 3ª
generación, básicamente porque no permite un fácil y buen modelado de los objetos del
mundo real, así como de la manera de interactuar entre ellos.
En POO los mensajes reemplazan al concepto típico de función, y constituyen el
diálogo entre objetos, lo que, a fin de cuentas, es la ejecución de un programa.
Los mensajes constituyen la comunicación entre los objetos y el término OO lo
introdujo SmallTalk, el cual estaba influido por Simula y el trabajo de tesis doctoral de
Alan Kay (máquina Flex). En Xerox esta máquina se llamó DynaBook y estaba influida
por los conceptos de clase y herencia de Simula además de por determinadas
características del lenguaje funcional Lisp.
Los primeros Lenguajes orientados a objeto (LOO) se caracterizan por tener el
problema típico de la eficiencia, es por eso, que muchos de los LOO de hoy en día son
evoluciones Orientadas a Objetos de lenguajes de tercera generación, p.e.: ObjectPascal,
Objetive-C, C-Talk, C++, Turbo-Pascal, etc., o simplemente nuevos lenguajes,
pero muy parecidos a los "normales" de 3ª generación.
Es interesante destacar, que conforme pasa el tiempo, y más se asienta el uso de la
POO el foco de atención sobre temas relacionados con lo "Orientado a Objetos" se ha
ido trasladando del concepto de Programación a los de Diseño (DOO) y a los de
Análisis (AOO).
Fases de la metodología orientada a objetos.
 Análisis. El analista construye un modelo del dominio del problema, mostrando sus
propiedades más importantes. El modelo de análisis es una abstracción resumida y
precisa de lo que debe de hacer el sistema deseado y no de la forma en que se hará.
Los elementos del modelo deben ser conceptos del dominio de aplicación y no
conceptos informáticos tales como estructuras de datos. Un buen modelo debe poder
ser entendido y criticado por expertos en el dominio del problema que no tengan
conocimientos informáticos.
 Diseño del sistema. El diseñador del sistema toma decisiones de alto nivel sobre la
arquitectura del mismo. Durante esta fase el sistema se organiza en subsistemas
basándose tanto en la estructura del análisis como en la arquitectura propuesta. Se
selecciona una estrategia para afrontar el problema.
 Diseño de objetos. El diseñador de objetos construye un modelo de diseño
basándose en el modelo de análisis, pero incorporando detalles de implementación.
El diseño de objetos se centra en las estructuras de datos y algoritmos que son
necesarios para implementar cada clase. OMT describe la forma en que el diseño
puede ser implementado en distintos lenguajes (orientados y no orientados a
objetos, bases de datos, etc.).
 Implementación. Las clases de objetos y relaciones desarrolladas durante el
análisis de objetos se traducen finalmente a una implementación concreta. Durante
la fase de implementación es importante tener en cuenta los principios de la
ingeniería del software de forma que la correspondencia con el diseño sea directa y
el sistema implementado sea flexible y extensible. No tiene sentido que utilicemos
AOO y DOO de forma que potenciemos la reutilización de código y la
correspondencia entre el dominio del problema y el sistema informático, si luego
perdemos todas estas ventajas con una implementación de mala calidad.
Ventajas de la metodología orientada a objetos.
 Reutilización. Las clases están diseñadas para que se reutilicen en muchos sistemas.
Para maximizar la reutilización, las clases se construyen de manera que se puedan
adaptar a los otros sistemas. Un objetivo fundamental de las técnicas orientadas a
objetos es lograr la reutilización masiva al construir el software.
 Estabilidad. Las clases diseñadas para una reutilización repetida se vuelven
estables, de la misma manera que los microprocesadores y otros chips se hacen
estables.
 El diseñador piensa en términos del comportamiento de objetos y no en detalles
de bajo nivel. El encapsulamiento oculta los detalles y hace que las clases complejas
sean fáciles de utilizar.
 Se construyen clases cada vez más complejas. Se construyen clases a partir de otras
clases, las cuales a su vez se integran mediante clases. Esto permite construir
componentes de software complejos, que a su vez se convierten en bloques de
construcción de software más complejo.
 Calidad. Los diseños suelen tener mayor calidad, puesto que se integran a partir de
componentes probados, que han sido verificados y pulidos varias veces.
 Un diseño más rápido. Las aplicaciones se crean a partir de componentes ya
existentes. Muchos de los componentes están construidos de modo que se pueden
adaptar para un diseño particular.
 Integridad. Las estructuras de datos (los objetos) sólo se pueden utilizar con
métodos específicos. Esto tiene particular importancia en los sistemas cliente-
servidor y los sistemas distribuidos, en los que usuarios desconocidos podrían
intentar el acceso al sistema.
 Mantenimiento más sencillo. El programador encargado del mantenimiento cambia
un método de clase a la vez. Cada clase efectúa sus funciones independientemente
de las demás.
 Una interfaz de pantalla sugestiva para el usuario. Hay que utilizar una interfaz de
usuario gráfica de modo que el usuario apunte a iconos o elementos de un menú
desplegado, relacionados con los objetos. En determinadas ocasiones, el usuario
puede ver un objeto en la pantalla. Ver y apuntar es más fácil que recordar y
escribir.
 Independencia del diseño. Las clases están diseñadas para ser independientes del
ambiente de plataformas, hardware y software. Utilizan solicitudes y respuestas con
formato estándar. Esto les permite ser utilizadas en múltiples sistemas operativos,
controladores de bases de datos, controladores de red, interfaces de usuario gráficas,
etc. El creador del software no tiene que preocuparse por el ambiente o esperar a
que éste se especifique.
 Interacción. El software de varios proveedores puede funcionar como conjunto. Un
proveedor utiliza clases de otros. Existe una forma estándar de localizar clases e
interactuar con ellas. El software desarrollado de manera independiente en lugares
ajenos debe poder funcionar en forma conjunta y aparecer como una sola unidad
ante el usuario.
 Computación Cliente-Servidor. En los sistemas cliente-servidor, las clases en el
software cliente deben enviar solicitudes a las clases en el software servidor y
recibir respuestas. Una clase servidor puede ser utilizada por clientes diferentes.
Estos clientes sólo pueden tener acceso a los datos del servidor a través de los
métodos de la clase. Por lo tanto, los datos están protegidos contra su corrupción.
 Computación de distribución masiva. Las redes a nivel mundial utilizarán
directorios de software de objetos accesibles. El diseño orientado a objetos es la
clave para la computación de distribución masiva. Las clases de una máquina
interactúan con las de algún otro lugar sin saber donde residen tales clases. Ellas
reciben y envían mensajes orientados a objetos en formato estándar.
 Mayor nivel de automatización de las bases de datos. Las estructuras de datos (los
objetos) en las bases de datos orientadas a objetos están ligadas a métodos que
llevan a cabo acciones automáticas. Una base de datos OO tiene integrada
una inteligencia, en forma de métodos, en tanto que una base de datos relacional
básica carece de ello.
 Migración. Las aplicaciones ya existentes, sean orientadas a objetos o no, pueden
preservarse si se ajustan a un contenedor orientado a objetos, de modo que la
comunicación con ella sea a través de mensajes estándar orientados a objetos.
 Mejores herramientas CASE. Las herramientas CASE (Computer Aided Software
Engineering, Ingeniería de Software Asistida por Computadora) utilizarán las
técnicas gráficas para el diseño de las clases y de la interacción entre ellas, para el
uso de los objetos existentes adaptados a nuevas aplicaciones. Las herramientas
deben facilitar el modelado en términos de eventos, formas de activación, estados de
objetos, etc. Las herramientas OO del CASE deben generar un código tan pronto se
definan las clases y permitir al diseñador utilizar y probar los métodos recién
creados. Las herramientas se deben diseñar de manera que apoyen el máximo de
creatividad y una continua afinación del diseño durante la construcción.
Desventajas de la metodología orientada a objetos
 Reutilizabilidad (elusiva)
 Top-down vs. Bottom-up
 Disponibilidad de bibliotecas
 Catálogo de objetos en c/bib.
 Interacciones entre objetos en bibs.
 Jerarquía de clases
 Gestión del código generado CASE
 Manejo de objetos persistentes
 Eficiencia de Vinculación dinámica
 Garbage Collection
 Barreras del lenguaje de programación
Conclusión
La programación orientada a objetos permite la optimización del código generado gracias a
que mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código
sea genérico de manera que sea reutilizable.
Mediante las técnicas aprendidas en el presente curso podemos establecer una solución
primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán
usados para el desarrollo del software.
Podemos dar a conocer de una forma sencilla los mecanismos que se usan en este nivel de
programación, a personas que deseen una explicación rápida y sencilla de lo que es la
programación orientada a objetos.
Tenemos los conocimientos necesarios como para enfrentar un problema real y desarrollo
en otro lenguaje de programación, pues concebimos la idea de que el lenguaje C es la base
de la programación.
Al trabajar con la programación orientada a objetos sea esta desarrollada en otras
plataformas de programación o en lenguaje C, sabemos las formas de lograr un mejor
rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que sea
fácilmente digeribles para el usuario y/o destinatario del trabajo final.
Bibliografía.
https://desarrollodesistemas.wordpress.com/tag/metodologia-prototipos/
ftp://www.dlsi.ua.es/people/jaime/apuntes/isi_tema3.1.pdf
http://profesores.fi-b.unam.mx/carlos/aydoo/conceptos_oo.html
https://informatsucre.wordpress.com/2014/09/12/la-metodologia-orientada-a-objetos-omt/

Más contenido relacionado

PDF
Metodologia orientada a objeto
PPTX
Fundamentos de las bases de datos
PDF
modelo vista controlador
PPTX
Uml lenguaje unificado de modelado
PPTX
Metodología WEB UWE
PDF
Ingenieria de software
PPT
Modelo de datos
PPTX
Fundamentos de los sistemas de información
Metodologia orientada a objeto
Fundamentos de las bases de datos
modelo vista controlador
Uml lenguaje unificado de modelado
Metodología WEB UWE
Ingenieria de software
Modelo de datos
Fundamentos de los sistemas de información

La actualidad más candente (20)

PPTX
PPTX
Analisis de requerimiento
PPTX
Sistema De Gestión De Base De Datos
PDF
DOCX
Metodologia rup
PPTX
Tipos de atributos y tipos de relaciones
PPSX
Estructura de un sistema operativo
PPTX
Metodologia estructurada
PPTX
encapsulamiento
PPT
Bases de datos y sistemas de informacion
PPTX
Metodologias de diseño de bd
DOCX
Requerimientos Funcionales y No Funcionales
DOCX
Metodologías para el Diseño de Sistemas
PDF
Principios diseño del software
PDF
Metodologias para el desarrollo de los sistemas expertos
PPT
diseño lógico y diseño físico
PPT
Sem 8 Modelo De Analisis
PDF
1. Modelo de Datos
PPTX
Aplicaciones distribuidas
KEY
Fundamentos de Bases de Datos - Introducción
Analisis de requerimiento
Sistema De Gestión De Base De Datos
Metodologia rup
Tipos de atributos y tipos de relaciones
Estructura de un sistema operativo
Metodologia estructurada
encapsulamiento
Bases de datos y sistemas de informacion
Metodologias de diseño de bd
Requerimientos Funcionales y No Funcionales
Metodologías para el Diseño de Sistemas
Principios diseño del software
Metodologias para el desarrollo de los sistemas expertos
diseño lógico y diseño físico
Sem 8 Modelo De Analisis
1. Modelo de Datos
Aplicaciones distribuidas
Fundamentos de Bases de Datos - Introducción
Publicidad

Similar a Metodología orientada a objetos (20)

PPSX
Programacion orientada a objetos
PPTX
Programación orientada a objetos
PDF
Introduccion al paradigma de la programacion orientado a objetos original
PPTX
Base de Datos Orientada a Objetos
PDF
PPTX
Programacion orientada a objetos by Marcos Acosta
PDF
DOCX
Programacion orientada a objetos
PDF
Programación Orientada a Objetos
PPS
DOCX
Programación orientada a objeto (autoguardado) 1
PPTX
Programación orientada a objetos
DOCX
Guía Teórica POO
PPTX
Programación orientada a objetos
DOC
Orientado a objeto
PPTX
Programación orientada a objetos presentacion
PPTX
Programación orientada a objetos presentacion
PDF
Programacion
PPTX
Programación orientada a objetos
Programacion orientada a objetos
Programación orientada a objetos
Introduccion al paradigma de la programacion orientado a objetos original
Base de Datos Orientada a Objetos
Programacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos
Programación Orientada a Objetos
Programación orientada a objeto (autoguardado) 1
Programación orientada a objetos
Guía Teórica POO
Programación orientada a objetos
Orientado a objeto
Programación orientada a objetos presentacion
Programación orientada a objetos presentacion
Programacion
Programación orientada a objetos
Publicidad

Último (11)

PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
PPTX
Fundamentos de Python - Curso de Python dia 1
PPTX
sistemas de informacion.................
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
Implementación equipo monitor12.08.25.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
Conceptos basicos de Base de Datos y sus propiedades
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
Fundamentos de Python - Curso de Python dia 1
sistemas de informacion.................
Derechos_de_Autor_y_Creative_Commons.pptx
Implementación equipo monitor12.08.25.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Conceptos basicos de Base de Datos y sus propiedades

Metodología orientada a objetos

  • 1. República bolivariana de Venezuela Ministerio del Poder Popular Para la Educación Superior I.U.P. “Santiago Mariño” Extensión - Caracas Unidad Curricular: Teoría de sistemas Metodología orientada a objetos Profesor: Alumno: Miguel mena Alexander Carrasco C.I: 25.435.854 Caracas: 8/8/2017
  • 2. Introducción El diseño orientado al objeto, al igual que otras metodologías de diseño orientadas a la información, crea una representación del campo del problema del mundo real y lo hace corresponder con el ámbito de la solución, que es el software. El diseño orientado al objeto produce un diseño que interconecta objetos de datos (elementos dato) y operaciones de una forma que modularía la información y el procesamiento; por el contrario, otros métodos dejan aparte el procesamiento. La naturaleza única del diseño orientado al objeto queda reflejada en su capacidad de construir sobre tres pilares conceptuales importantes del diseño de software: ¨ Abstracción ¨ Ocultamiento de información ¨ Modularidad Estos conceptos se explicarán en los siguientes puntos. El análisis orientado al objeto (AOO), el diseño orientado al objeto (DOO) y la producción orientada al objeto comprenden un conjunto de actividades de Ingeniería del Software para la construcción del sistema orientado a objetos. Utilizando el diseño orientado al objeto el diseñador puede crear sus propios tipos abstractos de datos y abstracciones funcionales y hacer corresponder el campo del mundo real con esas abstracciones creadas por el propio programador. Esta correspondencia será la mayoría de las veces mucho más natural, ya que el rango de tipos abstractos de datos que puede inventar el diseñador es virtualmente ilimitado. Más aún, el diseño del software se desliga de los detalles de representación, sin que ello afecte al sistema de software global.
  • 3. Metodología orientada a objetos La metodología orientada a objetos ha derivado de las metodologías anteriores a éste. Así como los métodos de diseño estructurado realizados guían a los desarrolladores que tratan de construir sistemas complejos utilizando algoritmos como sus bloques fundamentales de construcción, similarmente los métodos de diseño orientado a objetos han evolucionado para ayudar a los desarrolladores a explotar el poder de los lenguajes de programación basados en objetos y orientados a objetos, utilizando las clases y objetos como bloques de construcción básicos. Actualmente el modelo de objetos ha sido influenciado por un número de factores no sólo de la Programación Orientada a Objetos, POO (Object Oriented Programming, OOP por sus siglas en inglés). Además, el modelo de objetos ha probado ser un concepto uniforme en las ciencias de la computación, aplicable no sólo a los lenguajes de programación sino también al diseño de interfaces de usuario, bases de datos y arquitectura de computadoras por completo. La razón de ello es, simplemente, que una orientación a objetos nos ayuda a hacer frente a la inherente complejidad de muchos tipos de sistemas. Se define a un objeto como "una entidad tangible que muestra alguna conducta bien definida". Un objeto "es cualquier cosa, real o abstracta, acerca de la cual almacenamos datos y los métodos que controlan dichos datos". Los objetos tienen una cierta "integridad" la cual no deberá ser violada. En particular, un objeto puede solamente cambiar estado, conducta, ser manipulado o estar en relación con otros objetos de manera apropiada a este objeto. Actualmente, el Análisis Orientado a Objetos (AOO) va progresando como método de análisis de requisitos por derecho propio y como complemento de otros métodos de análisis. En lugar de examinar un problema mediante el modelo clásico de entrada-proceso- salida (flujo de información) o mediante un modelo derivado exclusivamente de estructuras jerárquicas de información, el AOO introduce varios conceptos nuevos. Estos conceptos nuevos le parecen inusuales a mucha gente, pero son bastante naturales.
  • 4. Una clase es una plantilla para objetos múltiples con características similares. Las clases comprenden todas esas características de un conjunto particular de objetos. Cuando se escribe un programa en lenguaje orientado a objetos, no se definen objetos verdaderos sino se definen clases de objetos. Una instancia de una clase es otro término para un objeto real. Si la clase es la representación general de un objeto, una instancia es su representación concreta. A menudo se utiliza indistintamente la palabra objeto o instancia para referirse, precisamente, a un objeto. En los lenguajes orientados a objetos, cada clase está compuesta de dos cualidades: atributos (estado) y métodos (comportamiento o conducta). Los atributos son las características individuales que diferencian a un objeto de otro (ambos de la misma clase) y determinan la apariencia, estado u otras cualidades de ese objeto. Los atributos de un objeto incluyen información sobre su estado. Los métodos de una clase determinan el comportamiento o conducta que requiere esa clase para que sus instancias puedan cambiar su estado interno o cuando dichas instancias son llamadas para realizar algo por otra clase o instancia. El comportamiento es la única manera en que las instancias pueden hacerse algo a sí mismas o tener que hacerles algo. Los atributos se encuentran en la parte interna mientras que los métodos se encuentran en la parte externa del objeto. Representación visual de un objeto como componente de software Para definir el comportamiento de un objeto, se crean métodos, los cuales tienen una apariencia y un comportamiento igual al de las funciones en otros lenguajes de
  • 5. programación, los lenguajes estructurados, pero se definen dentro de una clase. Los métodos no siempre afectan a un solo objeto; los objetos también se comunican entre sí mediante el uso de métodos. Una clase u objeto puede llamar métodos en otra clase u objeto para avisar sobre los cambios en el ambiente o para solicitarle a ese objeto que cambie su estado. Cualquier cosa que un objeto no sabe, o no puede hacer, es excluida del objeto. Además, como se puede observar de los diagramas, las variables del objeto se localizan en el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier tiempo sin afectar otras partes del programa. Esta imagen conceptual de un objeto —un núcleo de variables empaquetadas en una membrana protectora de métodos— es una representación ideal de un objeto y es el ideal por el que los diseñadores de sistemas orientados a objetos luchan. Sin embargo, no lo es todo: a menudo, por razones de eficiencia o la puesta en práctica, un objeto puede querer exponer algunas de sus variables o esconder algunos de sus métodos. El encapsulamiento de variables y métodos en un componente de software ordenado es, todavía, una simple idea poderosa que provee dos principales beneficios a los desarrolladores de software: Modularidad, esto es, el código fuente de un objeto puede ser escrito, así como darle mantenimiento, independientemente del código fuente de otros objetos. Así mismo, un objeto puede ser transferido alrededor del sistema sin alterar su estado y conducta. Ocultamiento de la información, es decir, un objeto tiene una "interfaz publica" que otros objetos pueden utilizar para comunicarse con él. Pero el objeto puede mantener
  • 6. información y métodos privados que pueden ser cambiados en cualquier tiempo sin afectar a los otros objetos que dependan de ello. Los objetos proveen el beneficio de la modularidad y el ocultamiento de la información. Las clases proveen el beneficio de la reutilización. Los programadores de software utilizan la misma clase, y por lo tanto el mismo código, una y otra vez para crear muchos objetos. En las implantaciones orientadas a objetos se percibe un objeto como un paquete de datos y procedimientos que se pueden llevar a cabo con estos datos. Esto encapsula los datos y los procedimientos. La realidad es diferente: los atributos se relacionan al objeto o instancia y los métodos a la clase. ¿Por qué se hace así? Los atributos son variables comunes en cada objeto de una clase y cada uno de ellos puede tener un valor asociado, para cada variable, diferente al que tienen para esa misma variable los demás objetos. Los métodos, por su parte, pertenecen a la clase y no se almacenan en cada objeto, puesto que sería un desperdicio almacenar el mismo procedimiento varias veces y ello va contra el principio de reutilización de código. Otro concepto muy importante en la metodología orientada a objetos es el de herencia. La herencia es un mecanismo poderoso con el cual se puede definir una clase en términos de otra clase; lo que significa que cuando se escribe una clase, sólo se tiene que especificar la diferencia de esa clase con otra, con lo cual, la herencia dará acceso automático a la información contenida en esa otra clase. Con la herencia, todas las clases están arregladas dentro de una jerarquía estricta. Cada clase tiene una superclase (la clase superior en la jerarquía) y puede tener una o más subclases (las clases que se encuentran debajo de esa clase en la jerarquía). Se dice que las clases inferiores en la jerarquía, las clases hijas, heredan de las clases más altas, las clases padres. Las subclases heredan todos los métodos y variables de las superclases. Es decir, en alguna clase, si la superclase define un comportamiento que la clase hija necesita, no se tendrá que redefinir o copiar ese código de la clase padre
  • 7. De esta manera, se puede pensar en una jerarquía de clase como la definición de conceptos demasiado abstractos en lo alto de la jerarquía y esas ideas se convierten en algo más concreto conforme se desciende por la cadena de la superclase. Sin embargo, las clases hijas no están limitadas al estado y conducta provistos por sus superclases; pueden agregar variables y métodos además de los que ya heredan de sus clases padres. Las clases hijas pueden, también, sobrescribir los métodos que heredan por implementaciones especializadas para esos métodos. De igual manera, no hay limitación a un sólo nivel de herencia por lo que se tiene un árbol de herencia en el que se puede heredar varios niveles hacia abajo y mientras más niveles descienda una clase, más especializada será su conducta. La herencia presenta los siguientes beneficios: Las subclases proveen conductas especializadas sobre la base de elementos comunes provistos por la superclase. A través del uso de herencia, los programadores pueden reutilizar el código de la superclase muchas veces. Los programadores pueden implementar superclases llamadas clases abstractas que definen conductas "genéricas". Las superclases abstractas definen, y pueden implementar
  • 8. parcialmente, la conducta, pero gran parte de la clase no está definida ni implementada. Otros programadores concluirán esos detalles con subclases especializadas. Creación de la metodología orientada a objetos. En los Sistemas Orientados a Objetos tradicionalmente, primero, se hablaba sólo del tema de Programación y posteriormente fueron tomando importancia los de Análisis y Diseño. La Programación orientada a objetos (POO) comienza en 1967 con Simula'67, y continua en los 70's con el desarrollo de SmallTalk. La clave del comienzo de la POO la tuvo el hecho de querer simular modelos de la realidad, lo cual era, y es, bastante complicado utilizando lenguajes típicos de 3ª generación, básicamente porque no permite un fácil y buen modelado de los objetos del mundo real, así como de la manera de interactuar entre ellos. En POO los mensajes reemplazan al concepto típico de función, y constituyen el diálogo entre objetos, lo que, a fin de cuentas, es la ejecución de un programa. Los mensajes constituyen la comunicación entre los objetos y el término OO lo introdujo SmallTalk, el cual estaba influido por Simula y el trabajo de tesis doctoral de Alan Kay (máquina Flex). En Xerox esta máquina se llamó DynaBook y estaba influida por los conceptos de clase y herencia de Simula además de por determinadas características del lenguaje funcional Lisp. Los primeros Lenguajes orientados a objeto (LOO) se caracterizan por tener el problema típico de la eficiencia, es por eso, que muchos de los LOO de hoy en día son
  • 9. evoluciones Orientadas a Objetos de lenguajes de tercera generación, p.e.: ObjectPascal, Objetive-C, C-Talk, C++, Turbo-Pascal, etc., o simplemente nuevos lenguajes, pero muy parecidos a los "normales" de 3ª generación. Es interesante destacar, que conforme pasa el tiempo, y más se asienta el uso de la POO el foco de atención sobre temas relacionados con lo "Orientado a Objetos" se ha ido trasladando del concepto de Programación a los de Diseño (DOO) y a los de Análisis (AOO). Fases de la metodología orientada a objetos.  Análisis. El analista construye un modelo del dominio del problema, mostrando sus propiedades más importantes. El modelo de análisis es una abstracción resumida y precisa de lo que debe de hacer el sistema deseado y no de la forma en que se hará. Los elementos del modelo deben ser conceptos del dominio de aplicación y no conceptos informáticos tales como estructuras de datos. Un buen modelo debe poder ser entendido y criticado por expertos en el dominio del problema que no tengan conocimientos informáticos.  Diseño del sistema. El diseñador del sistema toma decisiones de alto nivel sobre la arquitectura del mismo. Durante esta fase el sistema se organiza en subsistemas basándose tanto en la estructura del análisis como en la arquitectura propuesta. Se selecciona una estrategia para afrontar el problema.  Diseño de objetos. El diseñador de objetos construye un modelo de diseño basándose en el modelo de análisis, pero incorporando detalles de implementación. El diseño de objetos se centra en las estructuras de datos y algoritmos que son necesarios para implementar cada clase. OMT describe la forma en que el diseño puede ser implementado en distintos lenguajes (orientados y no orientados a objetos, bases de datos, etc.).
  • 10.  Implementación. Las clases de objetos y relaciones desarrolladas durante el análisis de objetos se traducen finalmente a una implementación concreta. Durante la fase de implementación es importante tener en cuenta los principios de la ingeniería del software de forma que la correspondencia con el diseño sea directa y el sistema implementado sea flexible y extensible. No tiene sentido que utilicemos AOO y DOO de forma que potenciemos la reutilización de código y la correspondencia entre el dominio del problema y el sistema informático, si luego perdemos todas estas ventajas con una implementación de mala calidad. Ventajas de la metodología orientada a objetos.  Reutilización. Las clases están diseñadas para que se reutilicen en muchos sistemas. Para maximizar la reutilización, las clases se construyen de manera que se puedan adaptar a los otros sistemas. Un objetivo fundamental de las técnicas orientadas a objetos es lograr la reutilización masiva al construir el software.  Estabilidad. Las clases diseñadas para una reutilización repetida se vuelven estables, de la misma manera que los microprocesadores y otros chips se hacen estables.  El diseñador piensa en términos del comportamiento de objetos y no en detalles de bajo nivel. El encapsulamiento oculta los detalles y hace que las clases complejas sean fáciles de utilizar.  Se construyen clases cada vez más complejas. Se construyen clases a partir de otras clases, las cuales a su vez se integran mediante clases. Esto permite construir componentes de software complejos, que a su vez se convierten en bloques de construcción de software más complejo.  Calidad. Los diseños suelen tener mayor calidad, puesto que se integran a partir de componentes probados, que han sido verificados y pulidos varias veces.
  • 11.  Un diseño más rápido. Las aplicaciones se crean a partir de componentes ya existentes. Muchos de los componentes están construidos de modo que se pueden adaptar para un diseño particular.  Integridad. Las estructuras de datos (los objetos) sólo se pueden utilizar con métodos específicos. Esto tiene particular importancia en los sistemas cliente- servidor y los sistemas distribuidos, en los que usuarios desconocidos podrían intentar el acceso al sistema.  Mantenimiento más sencillo. El programador encargado del mantenimiento cambia un método de clase a la vez. Cada clase efectúa sus funciones independientemente de las demás.  Una interfaz de pantalla sugestiva para el usuario. Hay que utilizar una interfaz de usuario gráfica de modo que el usuario apunte a iconos o elementos de un menú desplegado, relacionados con los objetos. En determinadas ocasiones, el usuario puede ver un objeto en la pantalla. Ver y apuntar es más fácil que recordar y escribir.  Independencia del diseño. Las clases están diseñadas para ser independientes del ambiente de plataformas, hardware y software. Utilizan solicitudes y respuestas con formato estándar. Esto les permite ser utilizadas en múltiples sistemas operativos, controladores de bases de datos, controladores de red, interfaces de usuario gráficas, etc. El creador del software no tiene que preocuparse por el ambiente o esperar a que éste se especifique.  Interacción. El software de varios proveedores puede funcionar como conjunto. Un proveedor utiliza clases de otros. Existe una forma estándar de localizar clases e interactuar con ellas. El software desarrollado de manera independiente en lugares ajenos debe poder funcionar en forma conjunta y aparecer como una sola unidad ante el usuario.  Computación Cliente-Servidor. En los sistemas cliente-servidor, las clases en el software cliente deben enviar solicitudes a las clases en el software servidor y
  • 12. recibir respuestas. Una clase servidor puede ser utilizada por clientes diferentes. Estos clientes sólo pueden tener acceso a los datos del servidor a través de los métodos de la clase. Por lo tanto, los datos están protegidos contra su corrupción.  Computación de distribución masiva. Las redes a nivel mundial utilizarán directorios de software de objetos accesibles. El diseño orientado a objetos es la clave para la computación de distribución masiva. Las clases de una máquina interactúan con las de algún otro lugar sin saber donde residen tales clases. Ellas reciben y envían mensajes orientados a objetos en formato estándar.  Mayor nivel de automatización de las bases de datos. Las estructuras de datos (los objetos) en las bases de datos orientadas a objetos están ligadas a métodos que llevan a cabo acciones automáticas. Una base de datos OO tiene integrada una inteligencia, en forma de métodos, en tanto que una base de datos relacional básica carece de ello.  Migración. Las aplicaciones ya existentes, sean orientadas a objetos o no, pueden preservarse si se ajustan a un contenedor orientado a objetos, de modo que la comunicación con ella sea a través de mensajes estándar orientados a objetos.  Mejores herramientas CASE. Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) utilizarán las técnicas gráficas para el diseño de las clases y de la interacción entre ellas, para el uso de los objetos existentes adaptados a nuevas aplicaciones. Las herramientas deben facilitar el modelado en términos de eventos, formas de activación, estados de objetos, etc. Las herramientas OO del CASE deben generar un código tan pronto se definan las clases y permitir al diseñador utilizar y probar los métodos recién creados. Las herramientas se deben diseñar de manera que apoyen el máximo de creatividad y una continua afinación del diseño durante la construcción.
  • 13. Desventajas de la metodología orientada a objetos  Reutilizabilidad (elusiva)  Top-down vs. Bottom-up  Disponibilidad de bibliotecas  Catálogo de objetos en c/bib.  Interacciones entre objetos en bibs.  Jerarquía de clases  Gestión del código generado CASE  Manejo de objetos persistentes  Eficiencia de Vinculación dinámica  Garbage Collection  Barreras del lenguaje de programación
  • 14. Conclusión La programación orientada a objetos permite la optimización del código generado gracias a que mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código sea genérico de manera que sea reutilizable. Mediante las técnicas aprendidas en el presente curso podemos establecer una solución primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán usados para el desarrollo del software. Podemos dar a conocer de una forma sencilla los mecanismos que se usan en este nivel de programación, a personas que deseen una explicación rápida y sencilla de lo que es la programación orientada a objetos. Tenemos los conocimientos necesarios como para enfrentar un problema real y desarrollo en otro lenguaje de programación, pues concebimos la idea de que el lenguaje C es la base de la programación. Al trabajar con la programación orientada a objetos sea esta desarrollada en otras plataformas de programación o en lenguaje C, sabemos las formas de lograr un mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que sea fácilmente digeribles para el usuario y/o destinatario del trabajo final.