
6 minute read
4 Principios de la Programación Orientada a Objetos
Miriam Martínez Canelo
•La encapsulación
Advertisement
La encapsulación contiene toda la información importante de un objeto dentro del mismo y solo expone la información seleccionada al mundo exterior. Esta propiedad permite asegurar que la información de un objeto esté oculta para el mundo exterior, agrupando en una Clase las características o atributos que cuentan con un acceso privado, y los comportamientos o métodos que presentan un acceso público.
La encapsulación de cada objeto es responsable de su propia información y de su propio estado. La única forma en la que este se puede modificar es mediante los propios métodos del objeto. Por lo tanto, los atributos internos de un objeto deberían ser inaccesibles desde fuera, pudiéndose modificar sólo llamando a las funciones correspondientes. Con esto conseguimos mantener el estado a salvo de usos indebidos o que puedan resultar inesperados.
Usamos de ejemplo un coche para explicar la encapsulación. El coche comparte información pública a través de las luces de freno o intermitentes para indicar los giros (interfaz pública). Por el contrario, tenemos la interfaz interna, que sería el mecanismo propulsor del coche, que está oculto bajo el capó. Cuando se conduce un automóvil es necesario indicar a otros conductores tus movimientos, pero no exponer datos privados sobre el tipo de carburante o la temperatura del motor, ya que son muchos datos, lo que confundiría al resto de conductores.
•La abstracción
La abstracción es cuando el usuario interactúa solo con los atributos y métodos seleccionados de un objeto, utilizando herramientas simplificadas de alto nivel para acceder a un objeto complejo.
En la programación orientada a objetos, los programas suelen ser muy grandes y los objetos se comunican mucho entre sí. El concepto de abstracción facilita el mantenimiento de un código de gran tamaño, donde a lo largo del tiempo pueden surgir diferentes cambios.
Así, la abstracción se basa en usar cosas simples para representar la complejidad. Los objetos y las clases representan código subyacente, ocultando los detalles complejos al usuario. Por consiguiente, supone una extensión de la encapsulación. Siguiendo con el ejemplo del coche, no es necesario que conozcas todos los detalles de cómo funciona el motor para poder conducirlo

La herencia
La herencia define relaciones jerárquicas entre clases, de forma que atributos y métodos comunes puedan ser reutilizados. Las clases principales extienden atributos y comportamientos a las clases secundarias. A través de la definición en una clase de los atributos y comportamientos básicos, se pueden crear clases secundarias, ampliando así la funcionalidad de la clase principal y agregando atributos y comportamientos adicionales.
Volviendo al ejemplo de los animales, se puede usar una sola clase de animal y agregar un atributo de tipo de animal que especifique el tipo de animal. Los diferentes tipos de animales necesitarán diferentes métodos, por ejemplo, las aves deben poder poner huevos y los peces, nadan. Incluso cuando los animales tienen un método en común, como moverse, la implementación necesitaría muchas declaraciones «si» para garantizar el comportamiento de movimiento correcto. Por ejemplo, las ranas saltan, mientras que las serpientes se deslizan. El principio de herencia nos permite solucionar este problema.
•El polimorfismo
El polimorfismo consiste en diseñar objetos para compartir comportamientos, lo que nos permite procesar objetos de diferentes maneras. Es la capacidad de presentar la misma interfaz para diferentes formas subyacentes o tipos de datos. Al utilizar la herencia, los objetos pueden anular los comportamientos principales compartidos, con comportamientos secundarios específicos. El polimorfismo permite que el mismo método ejecute diferentes comportamientos de dos formas: anulación de método y sobrecarga de método.
Alrededor de estos principios de la programación orientada a objetos se construyen muchas cosas. Por ejemplo, los Principios SOLID, o los Patrones de diseño, que son recetas que se aplican a problemas recurrentes que se han encontrado y se repiten en varios proyectos.
Clases, instancia, tipos de datos
¿Qué es una clase y qué es una instancia?
Una clase es por tanto una pantilla implementada en software que describe un conjunto de objetos con atributos y comportamiento similares. Una instancia u objeto de una clase es una representación concreta y específica de una clase y que reside en la memoria del ordenador.
Dato
Un dato es cualquier elemento que necesitemos procesar en un programa. Los programas trabajan con datos de entrada, los cuales son manipulados mediante los procesos informáticos para producir unos datos de salida.
El dato está muy ligado a otro concepto que necesitamos conocer que es el de "información". Seguro que has oído comentar que la informática es el tratamiento automatizado de la información. Entonces ¿Qué es información y qué es dato? Para entender esta diferencia podemos acudir a algunos ejemplos.


•Ejemplos de datos: sería el 0, 12, "sHadksdje2so", "madrid", "lunes" y cosas así. Estos datos no sabemos a lo que se refieren, simplemente son números o cadenas de un valor determinado.
•Ejemplos de información: 0 (el número de Ferraris que tengo en el garaje), 12 (los días del mes), "madrid" (capital de España)...
Los datos se convierten en información cuando les damos un contexto. El número 0 puede ser cualquier cosa, pero ya cambia si te digo que faltan 0 días para mi cumpleaños ¿no? en ese caso el 0 es una información, sobre la cual decides que me tendrás que felicitar ya mismo!
Clases, instancia, tipos de datos Qué son los tipos de datos
Un tipo de datos es un conjunto de valoíes que tienen una caíacteíística en común y que íesponden a unas opeíaciones deteíminadas.
En un sistema infoímático tíabajamos con datos y los lenguajes de píogíamación necesitan sabeí cuál es el tipo de ese dato, paía sabeí los valoíes posibles que podíían teneí y las cosas que se peímiten haceí con ellos. Poí ejemplo, 2 es un númeío enteío. Lo podíé sumaí, íestaí y haceí otías opeíaciones matemáticas con otíos númeíos. "madíid" es una cadena de caíacteíes, que la podíé compaíaí con otías cadenas, concatenaí otías cadenas, etc. Dependiendo del lenguaje de píogíamación puede tíabajaí con unos tipos u otíos. Poí ejemplo hay lenguajes que distinguen entíe númeíos enteíos y númeíos decimales y otíos lenguajes de píogíamación en los que solamente se tiene el tipo de datos numéíico, englobando tanto decimales como enteíos en el mismo saco.
Clasificación de los tipos de datos
Como hemos dicho, todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como "x", una cadena como "hola", un valor entero tal como 35 o un valor numérico con coma flotante como "0.55". En todo caso, el tipo de dato nos indica el conjunto de valores que podría llegar a tomar una variable de un tipo en particular. En todos los lenguajes de programación encontramos una clasificación de tipos de datos siempre presente, los tipos de datos simples y los tipos de datos compuestos.
“El que pone el corazo' n en lo que hace consigue recursos donde los indolentes se dan por vencidos”
Polimorfismo, compatilidad con lenguaje de programación, creación de versiones
Definición: polimorfismo (en POO) es la capacidad que tienen ciertos lenguajes para hacer que, al enviar el mismo mensaje (o, en otras palabras, invocar al mismo método) desde distintos objetos, cada uno de esos objetos pueda responder a ese mensaje (o a esa invocación) de forma distinta.
Se puede clasificar el polimorfismo en dos grandes clases:
•Polimorfismo dinámico (o polimorfismo paramétrico) es aquel 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 genericidad).
Compatibilidad con lenguajes de píogíamación a. Extendeí el lenguaje a tíavés de las llamadas expíesiones de consulta, que son paíecidas a las sentencias SQL y pueden seí usadas paía extíaeí y píocesaí convenientemente bases de datos íelacionales. b. b. Un lenguaje de píogíamación oíientado a objetos que tíabaje en foíma diíecta con la base de datos a tíavés de un Modelo de Datos peísistente.
Los lenguajes de píogíamación que utiliza una base de datos oíientada a objetos utilizan heííamientas de diseño paía el modelado de objetos y codificación. En la actualidad, existen vaíios lenguajes de píogíamación: C++, Java, Smalltalk, LISP.

Cíeación de veísiones
La deteíminación de veísión peímite íastíeaí los cambios de un objeto. Las aplicaciones de base de datos oíientadas a objetos íequieíen de vaíias veísiones del mismo objeto. Si el sistema está opeíativo, y se íequieíe actualizaí
