Tecnológico
de estudios superiores san Felipe del progreso
ANALISIS Y
MODELADO DE SISTEMAS DE INFORMACION
Docente;
Ing. Alex
Ramírez Galindo.
Alumnos;
Martin Anastasio
Cruz.
Jasón Marín
Antonio.
Emmanuel
Maya García.
1.1 CONCEPTUALIZACIÓN DE TECNOLOGÍA ORIENTADA A OBJETOS
Ingeniería Informática
50I
San Felipe
del Progreso México. a Agosto del 2016.
ÍNDICE
Introducción…………………………………………… 3
Desarrollo……………………………………………… 4
Cuadro Comparativo………………………………… 10
Conclusiones…………………………………………. 12
Referencias…………………………………………… 12
INTRODUCCIÓN
El modelo de proceso de
software como la programación estructurada consta de múltiples datos y
funciones globales. Todos los datos o funciones dentro de un programa son
visibles. En nuestra actualidad la POO tiene un roll importante dentro de la
programación, puesto que es una herramienta muy necesaria que ayuda a elaborar
un programa u sistema determinando teniendo en cuenta las diferentes
características que este debe de llevan, no dejando afuera las especificaciones
que deben englobar dicho programa.
En
este documento veremos brevemente los conceptos básicos de la programación
orientada a objetos desde un punto de vista global, sin particularizar para
ningún lenguaje de programación específico.
Es
muy importante destacar que cuando hacemos referencia a la programación
orientada a objetos no estamos hablando de unas cuantas características nuevas
añadidas a un lenguaje de programación. Estamos hablando de una nueva forma de
pensar acerca del proceso de descomposición de problemas y de desarrollo de
soluciones de programación. La programación orientada a objetos surge en la
historia como un intento para dominar la complejidad que, de forma innata,
posee el software. Tradicionalmente, la forma de enfrentarse a esta complejidad
ha sido empleando lo que llamamos programación estructurada, que consiste en
descomponer el problema objeto de resolución en subproblemas y más subproblemas
hasta llegar a acciones muy simples y fáciles de codificar.
Conceptualización
de tecnología orientada a objetos
La
Tecnología Orientada a Objetos es un nuevo enfoque sobre la manera de organizar
las diferentes piezas que componen un sistema de información (software), como
en el hardware (equipo físico), la base de datos e incluso, en organizaciones
todas estas piezas se denominan "objetos", los cuales son pequeños
subsistemas independientes con datos propios sobre estos elementos y sus clases
y tipos, rigen tales propiedades como herencia, comunicación con lenguajes,
polimorfismos y otros que en conjunto permiten ventajas prácticas.
Estas
están incluidas en las versiones orientadas a objetos de metodología para
análisis y diseño de programación y base de datos. Con esto, nos hemos referido
a la tecnología orientada a objetos aplicada a software. Sin embargo este
enfoque también es aplicado en la construcción de hardware, así como también es
válido en el diseño organizativo.
La
Tecnología Orientada a Objetos se apoya en fundamentos de la ingeniería, cuyos
elementos reciben el nombre global de modelo de objetos, el cual abarca los
principios de abstracción, encapsulación, modularidad, jerarquía, concurrencia
y persistencia.
En
la programación tradicional, también conocida como programación estructurada,
un programa o aplicación consta de múltiples datos y funciones
“globales”.
El término “global” describe el hecho que todos los datos o funciones son
“visibles” en todo el programa y, por lo tanto pueden ser llamados desde
cualquier ubicación en la aplicación. Esta forma de programación tiene sus
orígenes en las primeras computadoras modernas basadas en la arquitectura Von
Neuman de 1945 donde las instrucciones de un programa se guardaban en memoria
creando el concepto de programa almacenado. Las instrucciones de un programa
definidas dentro defunciones o procedimientos, eran ejecutadas por el
procesador de manera secuencial afectando los datos del programa, los cuales
eran almacenados en otras secciones de la memoria. Esta arquitectura es similar
a la que actualmente se usa en la mayoría de las computadoras personales.
Debido a esta separación de funciones y datos en la memoria, se ha desarrollado
un gran número de lenguajes de programación que explotan este concepto.
¿QUÉ ES UN OBJETO?
Un objeto no es más que un conjunto de variables (o
datos) y métodos (o funciones) relacionados entre sí. Los objetos en
programación se usan para modelar objetos o entidades del mundo real (el objeto hijo,
madre, o farmacéutica, por ejemplo). Un objeto es, por tanto, la representación
en un programa de un concepto, y contiene toda la información necesaria para
abstraerlo: datos que describen sus atributos y operaciones que pueden
realizarse sobre los mismos.
Entidad provista de un conjunto de propiedades o
atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que
consecuentemente reaccionan a eventos. Se corresponde con los objetos reales
del mundo que nos rodea, o a objetos internos del sistema (del programa).
¿QUÉ ES UN MENSAJE?
Normalmente un único objeto por sí solo no es muy útil.
En general, un objeto aparece como un componente más de un programa o una
aplicación que contiene otros muchos objetos.
Es
precisamente haciendo uso de esta interacción como los programadores consiguen
una funcionalidad de mayor orden y modelar comportamientos mucho más complejos.
¿QUÉ ES UNA CLASE?
Normalmente en el mundo real existen varios objetos
de un mismo tipo, o como diremos
enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas
bicicletas que existen en el mundo. Usando la terminología de la programación Orientada
a objetos, diremos que mi bicicleta es una instancia de la clase de objetos
conocida como bicicletas.
Todas las bicicletas tienen algunos estados o
atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos métodos
(cambiar de marcha, frenar) en común. Sin embargo, el estado particular de cada
bicicleta es independiente del estado de las demás bicicletas.
Una clase es una plantilla que define las variables
y los métodos que son comunes para todos los objetos de un cierto tipo de
mecanismo de herencia permiten definir nuevas clases partiendo de otras ya
existentes.
Las clases que derivan de otras heredan
automáticamente todo su comportamiento, pero además pueden introducir
características particulares propias que las diferencian.
¿QUÉ ES UNA HERENCIA?
Consiste en que una clase
puede heredar sus variables y métodos a varias subclases (la clase que hereda
es llamada superclase o clase padre). La subclase, aparte de los atributos y
métodos propios, tiene incorporados los atributos y métodos heredados de la
superclase.
Herencia: (por ejemplo,
herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase
D hereda en ella cada uno de los atributos y operaciones de C, como si esos
atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto,
puede usar los mismos métodos y variables públicas declaradas en C. Los
componentes registrados como “privados" (private) también se heredan, pero
como no pertenecen a la clase, se mantienen escondidos al programador y sólo
pueden ser accedidos a través de otros métodos públicos. Esto es así para
mantener hegemónico el ideal de OOP.
ENVÍO
DE MENSAJES
Es la comunicación dirigida a un objeto. El medio
para interactúe con otro son los mensajes «invocaciones a los métodos de los
objetos».
Los objetos interactúan
enviándose mensajes unos a otros. Tras la recepción de un mensaje el objeto actuará.
La acción puede ser el envío de otros mensajes, el cambio de su estado, o la
ejecución de cualquier otra tarea que se requiera que haga el objeto.
LA ABSTRACCIÓN
Consiste en captar las características esenciales
de un objeto, así como su comportamiento. Volviendo a lo anterior de la
relación de herencia entre clases, 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.
ENCAPSULAMIENTO
Es el mecanismo básico de la
POO para ocultar los detalles internos del objeto de los demás objetos.
Consiste en unir en la Clase las características y
comportamientos, esto es, los atributos y métodos. Es tener todo esto es una
sola entidad. Es evidente que el encapsulamiento se logra gracias
a la abstracción y el ocultamiento.
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.
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
Es la
capacidad de ocultar los detalles internos
del comportamiento de una Clase y exponer sólo los detalles que sean necesarios
para el resto del sistema.
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.
POLIMORFISMO
Un objeto solamente tiene
una forma (la que se le asigna cuando se construye ese objeto) pero la
referencia a objeto es polimórfica porque puede referirse a objetos de
diferentes clases (es decir, la referencia toma múltiples
formas). Para que esto sea posible debe haber una relación de herencia entre
esas clases.
Una de las características
fundamentales de la OOP es el polimorfismo, que no es otra cosa que la
posibilidad de construir varios métodos con el mismo nombre, pero con relación
a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto
conlleva la habilidad de enviar un mismo mensaje a objetos de clases
diferentes.
|
Conceptualización de tecnologías orientada a
objetos
|
|
|
Existe un acuerdo acerca de qué características contempla la "orientación
a objetos", las características siguientes son las más importantes:
|
|
|
Abstracción:
|
Denota las características esenciales de un objeto, donde se capturan
sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar
su estado, y "comunicarse" con otros objetos en el sistema sin
revelar cómo se implementan estas características. Los procesos, las
funciones o los métodos pueden también ser abstraídos y cuando lo están, una
variedad de técnicas son requeridas para ampliar una abstracción. El proceso
de abstracción permite seleccionar las características relevantes dentro de
un conjunto e identificar comportamientos comunes para definir nuevos tipos
de entidades en el mundo real. La abstracción es clave en el proceso de
análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a
armar un conjunto de clases que permitan modelar la realidad o el problema
que se quiere atacar.
|
|
Encapsulamiento:
|
Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto
permite aumentar la cohesión de los componentes del sistema. Algunos autores
confunden este concepto con el principio de ocultación, principalmente porque
se suelen emplear conjuntamente.
|
|
Modularidad:
|
Se denomina Modularidad a la propiedad que permite subdividir una
aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales
debe ser tan independiente como sea posible de la aplicación en sí y de las
restantes partes. Estos módulos se pueden compilar por separado, pero tienen
conexiones con otros módulos. Al igual que la encapsulación, los lenguajes
soportan la Modularidad de diversas formas.
|
|
Polimorfismo:
|
La habilidad de tomar varias formas, en java es la habilidad de una
variable por referencia de cambiar su comportamiento en función de que
instancia de objeto posee. Esto permite tratar de la misma manera, como
objetos de la superclase, a múltiples objetos de la subclase, seleccionado en
cada caso los métodos apropiados.
|
|
Herencia:
|
Las clases no están aisladas, sino que se relacionan entre sí,
formando una jerarquía de clasificación. Los objetos heredan las propiedades
y el comportamiento de todas las clases a las que pertenecen. La herencia
organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los
objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin
tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando
los objetos en clases y estas en árboles o enrejados que reflejan un
comportamiento común. Cuando un objeto hereda de más de una clase se dice que
hay herencia múltiple.
|
|
Recolección de basura:
|
la recolección de basura o garbage collector (basurero) es la técnica
por la cual el entorno de objetos se encarga de destruir automáticamente, y
por tanto desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el programador no debe
preocuparse por la asignación o liberación de memoria, ya que el entorno la
asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando
|
CONCLUSIONES
El análisis y comprensión del tema nos da una panorámica más entendible
de cómo funciona la programación orientada a objetos y de cuáles son los
requerimientos que necesita como lo son; objeto, clase, herencia etc. Lo cual
nos da a entender que un objeto es
una abstracción conceptual del mundo real que se puede traducir a un lenguaje
de POO y que objeto del mundo real tiene
atributos y comportamientos, al igual que un objeto del mundo del software.
Y una clase es una plantilla que define las variables y métodos a ser
incluidas en un tipo de objeto específico. Los objetos también son llamados
instancias de la clase y se pueden comunican entre ellos usando los mensajes. Un
mensaje es la invocación de un método del objeto.
BIBLIOGRAFÍAS
Morales,
J. (2014) Conceptualización
de tecnología orientada a objetos y programación tradicional, pág. (1,14).
Flores
Bernal. HECTOR R. (2015) Conceptualización
de tecnología orientada a objetos, pág. (1,63).
Pressman,
Roger S, (2015) Ingeniería del
software un enfoque práctico, editorial Mc Graw Hill, séptima edición, pág.
(1,63).
