Está en la página 1de 7

¿Qué es la programación orientada a objetos?

Es un paradigma de programación que viene a innovar la forma de obtener


resultados. Los objetos manipulan los datos de entrada para la obtención de datos
de salida específicos, donde cada objeto ofrece una funcionalidad especial.
Muchos de los objetos pre-diseñados de los lenguajes de programación actuales
permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos
lenguajes permiten al usuario la creación de sus propias bibliotecas.
Está basada en varias técnicas,
incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsu
lamiento.
Su uso se popularizó a principios de la década de 1990. En la actualidad, existe
una gran variedad de lenguajes de programación que soportan la orientación a
objetos.
El término de Programación Orientada a Objetos indica más una forma
de diseño y una metodología de desarrollo de software que un lenguaje de
programación, ya que en realidad se puede aplicar el Diseño Orientado a Objetos
(En inglés abreviado OOD, Object Oriented Design), a cualquier tipo
de lenguaje de programación.
El desarrollo de la OOP empieza a destacar durante la década de los 80 tomando
en cuenta la programación estructurada, a la que engloba y dotando al programador
de nuevos elementos para el análisis y desarrollo de software.

¿Qué es encapsulamiento en programación?


En programación modular, y más específicamente en programación orientada a
objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de los
datos miembro de un objeto de manera que solo se pueda cambiar mediante las
operaciones definidas para ese objeto.
Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera
se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los
datos asociados de un objeto contra su modificación por quien no tenga derecho a
acceder a ellos, eliminando efectos secundarios e interacciones.

De esta forma el usuario de la clase puede obviar la implementación de los


métodos y propiedades para concentrarse solo en cómo usarlos. Por otro lado se
evita que el usuario pueda cambiar su estado de maneras imprevistas e
incontroladas. 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. También conocida como ocultamiento. Cuando me
acuesto a ver televisión no me preocupo del modo como éste funciona, o lo que
hace para cambiar de canal o aumentar el volumen. A menos que seas experto en
electrónica o técnico en televisores, te pasará lo mismo: no lo sabes y no te
importa; sólo sabes que al presionar un botón ocurre la magia. La encapsulación
se encarga de mantener ocultos los procesos internos que necesita para hacer lo
que sea que haga, dándole al programador acceso sólo a lo que necesita. Esto
da dos ventajas iniciales: Lo que hace el usuario puede ser controlado
internamente (incluso sus errores), evitando que todo colapse por una
intervención indeseada (tú no quieres que tu mamá, que no tiene ni idea de
electrónica, abra tu televisor y empiece a jugar con los circuitos para cambiar los
canales manualmente.

Niveles de encapsulamiento
1. Estándar (Predeterminado)
2. Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior de la
Clase y cualquier parte del programa.
3. Protegido: Solo es accesible desde la Clase y las clases que heredan (a cualquier
nivel).
4. Semi cerrado: Solo es accesible desde la clase heredada.
5. Cerrado: Solo es accesible desde la Clase.

¿Qué es polimorfismo en programación?


En programación orientada a objetos, el polimorfismo o poliformismo se refiere
a la propiedad por la que es posible enviar mensajes sintácticamente iguales
a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se
utilizan de manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que
se utilice, más allá de las obvias diferencias sintácticas.
Por ejemplo, en un lenguaje de programación que cuenta con un sistema de
tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u
objetos de cualquier clase) como Smalltalk se requiere que los objetos que se
utilizan de modo polimórfico sean parte de una jerarquía de clases.
Se puede clasificar el polimorfismo en dos grandes clases:

Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el


código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que
se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.

Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a


los que se aplica el polimorfismo deben ser explícitos y declarados uno por uno
antes de poder ser utilizados.
El polimorfismo dinámico unido a la herencia es lo que en ocasiones se conoce
como programación genérica.
También se clasifica en herencia por redefinición de métodos abstractos y por
método sobrecargado. El segundo hace referencia al mismo método con
diferentes parámetros.
Otra clasificación agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su
vez sobrecarga de operadores y coerción, Universal (inclusión o controlado por la
herencia, paramétrico o generalidad).

Diferencias entre polimorfismo y sobrecarga


El polimorfismo como se muestra en el ejemplo anterior, suele ser bastante
ventajoso aplicado desde las interfaces, ya que permite crear nuevos tipos sin
necesidad de tocar las clases ya existentes (imaginemos que deseamos añadir
una clase Multiplicar), basta con recompilar todo el código que incluye los nuevos
tipos añadidos. Si se hubiera recurrido a la sobrecarga durante el diseño exigiría
retocar la clase anteriormente creada al añadir la nueva operación Multiplicar, lo
que además podría suponer revisar todo el código donde se instancia a la clase.
 Un método está sobrecargado si dentro de una clase existen dos o más
declaraciones de dicho método con el mismo nombre pero con parámetros
distintos, por lo que no hay que confundirlo con polimorfismo. En definitiva:
 La sobrecarga se resuelve en tiempo de compilación utilizando los nombres
de los métodos y los tipos de sus parámetros; el polimorfismo se resuelve
en tiempo de ejecución del programa, esto es, mientras se ejecuta, en
función de la clase a la que pertenece el objeto.

Ahora párate a pensar en clases y objetos. Quédate con esto: Tal como
funcionan los lenguajes fuertemente tapados, una variable siempre deberá
apuntar a un objeto de la clase que se indicó en el momento de su
declaración. Una función cuyo parámetro se haya declarado de una clase, sólo te
aceptará recibir objetos de esa clase. Un arraya que se ha declarado que es de
elementos de una clase determinada, solo aceptará que rellenemos sus casillas
con objetos de esa clase declarada.
Esa variable mis Vehículos es un arraya y en ella he declarado que el contenido
de las casillas serán objetos de la clase "Vehículo". Como se ha explicado, en
lenguajes fuertemente tapados sólo podría contener objetos de la clase Vehículo.
Pues bien, polimorfismo es el mecanismo por el cual podemos "relajar el sistema
de tipos", de modo que nos acepte también objetos de las clases hijas o
derivadas.

¿Qué es una clase en programación?

En informática, una clase es una plantilla para la creación de objetos de


datos según un modelo predefinido. Las clases se utilizan para representar
entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un
modelo que define un conjunto de variables -el estado, y métodos apropiados para
operar con dichos datos -el comportamiento. Cada objeto creado a partir de la
clase se denomina instancia de la clase. Las clases son un pilar fundamental de
la programación orientada a objetos. Permiten abstraer los datos y sus
operaciones asociadas al modo de una caja negra. Los lenguajes de
programación que soportan clases difieren sutilmente en su soporte para diversas
características relacionadas con clases. La mayoría soportan diversas formas
de herencia. Muchos lenguajes también soportan características para
proporcionar encapsulación, como especificadores de acceso.
Una clase también puede tener una representación (meta-objeto) en tiempo de
ejecución, que proporciona apoyo en tiempo de ejecución para la manipulación de
los metadatos relacionados con la clase. Una clase es una construcción que le
permite crear sus propios tipos personalizados agrupando las variables de otros
tipos, métodos y eventos. Una clase es como un plano. Define los datos y el
comportamiento de un tipo. Si la clase no se declara como estática, el código de
cliente puede usarla mediante la creación de objetos o instancias que se asignan a
una variable.

¿Qué es un objeto en programación?


En el paradigma de programación orientada a objetos (POO, o
bien OOP en inglés), un objeto es una unidad dentro de un programa de
computadora que consta de un estado y de un comportamiento, que a su vez
constan respectivamente de datos almacenados y de tareas realizables durante el
tiempo de ejecución. Un objeto puede ser creado instanciando una clase, como
ocurre en la programación orientada a objetos, o mediante escritura directa de
código y la replicación otros objetos, como ocurre en la programación basada en
prototipos.
Estos objetos interactúan unos con otros, en contraposición a la visión tradicional
en la cual un programa es una colección
de subrutinas (funciones o procedimientos), o simplemente una lista
de instrucciones para el computador. Cada objeto es capaz de recibir mensajes,
procesar datos y enviar mensajes a otros objetos de manera similar a un servicio.
En el mundo de la programación orientada a objetos (POO), un objeto es el
resultado de la instanciación de una clase.1 Una clase es el anteproyecto que
ofrece la funcionalidad en ella definida, pero ésta queda implementada sólo
al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un
plano para construir sillas (una clase de nombre clase_silla), entonces una silla
concreta, en la que podemos sentarnos, construida a partir de este plano, sería un
objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas)
utilizando la definición de la clase (plano) anterior. Los conceptos
de clase y objetos son análogos a los de tipo de datos y variable; es decir, definida
una clase podemos crear objetos de esa clase, igual que disponiendo de un
determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de
dicho tipo:
int a,b;
( 'int' es un tipo de dato y 'a' y 'b' son variables de tipo entero con las que podemos
operar)
Para utilizar la funcionalidad definida en una clase en particular (salvo en las
clases abstractas), primeramente es necesario crear un objeto de esa clase. De la
misma manera, para una persona que desea sentarse, las especificaciones para
construir una silla serán de poca utilidad; lo que se necesita es una silla real
construida a partir de esas especificaciones. Siguiendo con la analogía anterior,
también se puede decir que para hacer operaciones aritméticas, de nada sirve por
sí solo el tipo entero (int); para ello necesitamos variables (o constantes) con las
que operar.
Atributos: datos que caracterizan al objeto. Son variables que almacenan datos
relacionados al estado de un objeto.

Métodos (usualmente llamados funciones de miembro): los métodos de un


objeto caracterizan su comportamiento, es decir, son todas las acciones
(denominadas operaciones) que el objeto puede realizar por sí mismo. Estas
operaciones hacen posible que el objeto responda a las solicitudes externas (o
que actúe sobre otros objetos). Además, las operaciones están estrechamente
ligadas a los atributos, ya que sus acciones pueden depender de, o modificar, los
valores de un atributo.

Identidad: el objeto tiene una identidad, que lo distingue de otros objetos, sin
considerar su estado. Por lo general, esta identidad se crea mediante un
identificador que deriva naturalmente de un problema (por ejemplo: un producto
puede estar representado por un código, un automóvil, por un número de modelo,
etc.).
¿Qué es una entidad en informática?
En bases de datos, una entidad es la representación de un objeto o concepto del
mundo real que se describe en una base de datos. Ejemplos de nombres de
entidades: Alumno, Empleado, Artículo, etc.
Las entidades se describen en la estructura de la base de datos empleando
unos datos. Cada entidad está constituida por uno o más atributos. Por ejemplo, la
entidad "Alumno" podría tener los atributos: nombre, apellido, año de nacimiento,
etc.
En el modelo de entidad-relación se emplean dos tipos de entidades: entidad
fuerte y entidad débil. Además, en este modelado las entidades están
relacionadas entre sí a través de Relaciones.
Las entidades fuertes tienen atributos claves, en tanto las entidades débiles no
tienen atributos claves propios.
Tipo de entidad
Persona, organización, tipo de objeto o concepto sobre los que se
almacena información. Describe el tipo de la información que se está
controlando. Normalmente un tipo de entidad corresponde a una o varias
tablas relacionadas en la base de datos.
Atributo
Característica o rasgo de un tipo de entidad que describe la entidad, por
ejemplo, el tipo de entidad Person (Persona) tiene el atributo Date of Birth
(Fecha de nacimiento).
Registro
La representación del almacenamiento de una fila de datos.
Registro de miembro
La representación de la entidad tal como se almacena en los sistemas de
origen individuales. La información de cada registro de miembro se
almacena como un registro único o un grupo de registros en tablas de base
de datos relacionadas.
Otros términos relacionados son los siguientes:
 Registro de oro: principalmente para uso general, no técnico
 Registro agregado: uso especifico en MDM de tipo físico
 Parte: uso específico en MDM de tipo físico
 Varios ID: ID de empresa, ID de entidad, ID de registro, ID de cuenta e ID de
producto
Por ejemplo, una entidad en MDM virtual se ensambla dinámicamente basándose
en los registros de miembro utilizando enlaces y a continuación, se almacena en la
base de datos de MDM. Por el contrario, una entidad en MDM físico se basa en la
coincidencia de los sistemas de origen que se fusionan para formar una sola
entidad.
Los diagramas siguientes son representaciones visuales de los conceptos de
MDM. Los diagramas muestran cómo los conceptos se relacionan con el registro y
con estilos de implementación centralizada.