La encapsulación dentro de la programación orientada a objetos

Para encender una televisión sólo tienes que pulsar el botón de encendido, los detalles de la alimentación eléctrica, el arranque del sistema software de la televisión, la decodificación de la señal de la televisión o la distribución de los cables y circuitos que componen el aparato de televisión permanecen ocultos para los usuarios bajo la carcasa de la televisión. El usuario sólo tiene que saber cuál es el botón de encendido, los botones para cambiar de canal y los botones para modificar el nivel de volumen brillo y otros detalles simples de configuración.

El hecho de ocultar el comportamiento y atributos internos de una clase con el objetivo de simplificar la interfaz ofrecida a otros objetos se denomina encapsulación ya que lo que estamos haciendo es ocultar en cápsulas elementos que resultan innecesarios a objetos de fuera de nuestra clase.

Este ejemplo ilustra cómo funciona una interfaz pública de una clase. A otros objetos se les ofrece un conjunto de métodos y atributos pero no se les deja ver cómo se trata esa información o si hay más métodos internos. A los objetos que trabajan con nuestra clase sólo les interesa los resultados que se pueden obtener de los atributos y métodos públicos.

La encapsulación es la capacidad de un objeto para ocultar partes de su estado y comportamiento de otros objetos, exponiendo únicamente una interfaz limitada al resto del programa.
Encapsular algo significa hacerlo privado y, por ello, disponible únicamente dentro de los métodos de su propia clase.

Existe el modelo protegido que resulta un poco menos restrictivo que el modelo de la encapsulación. En el modelo protegido los métodos de una clase están también disponibles para las clases hijas.

La abstracción dentro de la programación orientada a objetos

Dentro de la programación orientada a objetos, a  la hora de dar forma a los objetos de un programa se toma como base a los objetos del mundo real. Sin embargo estos objetos no representan a los objetos reales con demasiada exactitud. Más bien estos objetos del programa representan al objeto real mediante una serie de atributos y comportamientos específicos para el contexto que representará el programa que estamos realizando.

Por ejemplo una clase coche tendrá los atributos de nombre, modelo, color, velocidad máxima. Pero si la clase va a ser utilizada en una aplicación para la venta de vehículos además la clase contendrá información sobre el fabricante, precio, prestaciones y nivel de lujo. Por el contrario si la clase va a ser utilizada dentro de un videojuego de carreras de coches esta clase contendrá información sobre el combustible, peso, ángulo de giro en las curvas y atributos que permitan al videojuego simular el comportamiento del vehículo en un circuito de carreras.

Esto significa que el contexto de nuestro programa definirá el modelado de la clase.

La Abstracción es el modelo de un objeto o fenómeno del mundo real, limitado a un contexto específico, que representa todos los datos relevantes a este contexto con gran precisión, ignorando el resto de atributos no necesarios para el contexto.

Los pilares de la programación orientada a objetos

La programación orientada objetos posee 4 pilares que le ayudan a diferenciarse de otros paradigmas de la programación.

Estos pilares son la abstracción, la encapsulación, la herencia y el polimorfismo.

En los próximos artículos veremos cada uno de estos pilares en detalle.

Jerarquías de clase dentro de la Programación orientada a objetos

Como aprendimos en el artículo de fundamentos de la programación orientada a objetos existen objetos que son instancias de clases. Pero las aplicaciones reales, como la vida real, no se componen de una sola clase. Estas clases pueden estar relacionadas entre si para crear un diseño mas complejo que permita resolver problemas más complejos.

Cuando varias clases se relacionan entre si se dice que forman una jerarquía de clases.

De gatos y pájaros

Imaginemos que tu vecino tiene un gato llamado Silvestre. Los pájaros y los gatos tienen campos y métodos en común, ambos tienen un nombre, un sexo, edad, peso, tamaño, color, comen, duermen, observan, etc. Pero también tienen diferencias, unos tienen alas y otros sólo patas, unos pían y otros maúllan.

Observando los atributos comunes de las clases Pájaro y Gato podemos diseñar la clase Animal.

Clase Animal:

    Campos:

        nombre, edad, sexo, peso, tamaño, color, patas

    Métodos:

        respirar, comer, dormir, observar 

A partir de la clase Animal podemos crear las clases Pájaro y Gato atendiendo a sus diferencias.

Clase Pájaro

    Campos:

        alas, pico

    Métodos:

        piar, volar

Clase Gato

    Campos:

        dientes, orejas

    Métodos:

        maullar, correr

Las clases Pájaro y Gato heredan de la clase Animal el conjunto de campos y métodos. La clase Animal se conoce como clase padre o superclase.

Las clases hijas de la superclase Animal se denominan subclases. Heredan el comportamiento y el estado de su clase padre.

La relación que existe entre superclases y subclases se denomina jerarquía de clases. Estas relaciones pueden basarse en la herencia de métodos y campos e incluso en la modificación de alguno de esos métodos.

Sobreescritura de métodos

Cuando una clase hija modifica un método de la clase padre se dice que el método está sobreescrito (overwrite).

Un método sobreescrito puede limitarse a sustituir por completo el método de la clase padre o a mejorarlo ya que en la llamada al método de la clase hija, esta clase hija internamente primero ejecuta el método de la clase padre, copiando su comportamiento, y luego ejecutar más órdenes mejorando el comportamiento haciéndolo más específico para la clase hija.

Fundamentos de programación orientada a objetos

La Programación orientada a objetos (POO) es un paradigma de programación en el que la información y la funcionalidad de una aplicación software se agrupa en pequeños grupos especiales llamados objetos, estos objetos siguen un diseño planificado por el programador y estos objetos son representados en el diseño por las clases.

Pájaros y objetos

Muchos autores han explicado la POO hablando de gatos, perros o coches. En este artículo probaremos a explicar la POO hablando de pájaros.

Imaginemos que tienes un pájaro llamado Piolín. Piolín es un objeto, una instancia de la clase Pájaro.

Campos y métodos

Cada pájaro tiene una serie de atributos: nombre, edad, sexo, peso, tamaño, color de plumaje, tipo de alimentación, etc. Este grupo de atributos se denominan campos de la clase. Los campos representan la información que contendrá y manipulará el objeto.

Al conjunto de toda la información del objeto en un momento dado se la denomina estado del objeto. 

Además todos los pájaros se comportan de forma similar: respiran, comen, observan, crecen, duermen, etc. Estos son los métodos de la clase. Los métodos representan la funcionalidad que podrá realizar el objeto.

Al conjunto de campos y métodos de una clase se le conoce como el conjunto de miembros de una clase.

Instancias

Los objetos son instancias de clase. Piolín es una instancia de la clase Pájaro, Correcaminos es otra instancia de la clase pájaro.

Piolín y Correcaminos tienen el mismo grupo de campos y métodos. La diferencia está en los valores de estos atributos ya que permiten hacer diferente a cada instancia de la clase pájaro.

Una clase es como un plano de construcción que permite dar forma a la información y las acciones que podrá realizar un objeto.

Un ejemplo de definición de clase podría ser el siguiente:

Clase Pájaro:

    Campos:

        nombre, edad, sexo, peso, tamaño, color

    Miembros:

        respirar, comer, dormir, observar 

De productos adquiridos a servicios de suscripción para la mejora de la autonomía personal

La sociedad va cambiando poco a poco de una cultura de adquisición y almacenamiento de productos a una de contratación y disfrute de servicios.

Esto poco a poco también está llegando al mercado de los productos y servicios de accesibilidad para personas con discapacidad.
De productos de apoyo físicos a digitales

Durante toda la historia de la humanidad tanto el sistema de evaluación de riquezas de una persona como los sistemas de comercio y mercado se basaban en una cultura de elementos tangibles. Métodos de comercio como el trueque se basan en el intercambio de elementos físicos: una vaca por dos cabras, un tonel de vino por 3 toneles de leche, etc.

Los productos de apoyo siempre han sido elementos físicos como bastones, sillas de ruedas, prótesis ortopédicas, gafas y anteojos o muletas por lo que han sido considerados como bienes físicos a poseer por las personas que los necesitan.

Con la aparición de la informática y la tecnología digital aparecieron nuevos productos de apoyo como lectores de pantalla, magnificadores de pantalla, teclados virtuales o sistemas de reconocimiento del habla.

Este tipo de productos de apoyo basados en software han sido comercializados como productos a instalar en un dispositivo como un ordenador personal o dispositivo móvil y disfrutar de él hasta que apareciese una nueva versión del producto de apoyo por la que, en muchos casos, había que volver a pagar ya que la licencia de uso no reconocía el derecho a actualización por parte del usuario a todas las versiones publicadas con posterioridad.

Revolución en el concepto de pago

Con la mejora en las pasarelas de pago y los servicios de transacciones económicas digitales las personas nos hemos acostumbrado y confiado en el comercio digital. Es habitual que una persona tenga una tarjeta de crédito registrada en su dispositivo móvil o tenga varios métodos de pago digital en su perfil de usuario en la Nube.

Esto ha facilitado la aparición de nuevos modelos de comercialización del software al entender que el software es un servicio en lugar de un producto a poseer. Por esta razón aparecieron modelos de pago por suscripción que permiten el acceso a una aplicación o herramienta digital por el tiempo en que la persona pague por el servicio. Plataformas de consumo de contenidos multimedia o de videojuegos o plataformas de música digital son los ejemplos más habituales de este tipo de comercio.

Este cambio también está llegando a herramientas software como aplicaciones de edición de video o documentos, herramientas de diseño 3D o aplicaciones cuyas licencias superan los miles de dólares.

Beneficios del sistema de pago por suscripción

El primer beneficio que se puede apreciar en este nuevo sistema de comercio es el precio reducido para acceder al uso y disfrute de estos elementos digitales. Licencias de 1500 euros por un paquete de diseño artístico por el que hay que volver a pagar tras una nueva actualización pasan a 15 euros al mes para acceder a la última versión disponible.

El segundo beneficio es que los responsables de desarrollar el producto software tienen ingresos más estables que les motiva a mantener y mejorar el producto durante más tiempo buscando nuevas características y funciones que hagan su producto más atractivo y más útil para más personas.

Otro beneficio es el de si la persona ya no necesita el producto pues deja de pagar por el servicio hasta la próxima vez que lo necesite. No hay por qué pagar cuotas de alta o suscripción o realizar trámites burocráticos de registro e identificación cada vez que se suscriba.

Por último se ha observado que estos cambios en los sistemas de comercialización atraen a una ampliación en la competencia. Hay más variedad de servicios disponibles en el mercado que compiten entre ellos ofreciendo mejoras o más funciones.

Productos de apoyo como servicios por suscripción

Esta revolución de productos de apoyo digital como servicios por suscripción se está empezando a dar poco a poco. Ya existen algunos sistemas de control por voz o de reconocimiento de imágenes que se adquieren como un servicio por suscripción. Servicios de ayuda y asistencia a personas con discapacidad mediante videollamadas también se utilizan mediante un modelo de suscripción mensual.

Algunos lectores de pantalla y magnificadores de pantalla están incluyendo nuevas funciones y características que para poderlas utilizar hay que pagar una suscripción mensual o anual.

Este cambio es beneficioso para los creadores de productos de apoyo al permitirles acceder a este nuevo sistema de pagos y recompensa por un mejor mantenimiento del producto pero los beneficios para las personas con discapacidad no están tan claros. A diferencias de los servicios de ocio como las plataformas de video o juegos, o las aplicaciones por suscripción con un marcado perfil profesional un producto de apoyo no suele ser un servicio opcional que una persona necesita por un tiempo determinado. Si una persona ciega no necesita utilizar más un lector de pantallas es probable que la razón para no necesitar un producto de apoyo es porque no esté viva.

Los productos de apoyo son herramientas esenciales para la vida cotidiana y la autonomía personal de una persona con discapacidad.

El acceso a funcionalidades extra o mejoras para un producto de apoyo es algo que si se comprende como un servicio por suscripción para un producto de apoyo pero si el acceso a un producto de apoyo, en todos sus niveles de uso, se debe realizar mediante una suscripción esto puede provocar que personas con discapacidad con pocos recursos económicos o que carezcan de acceso a sistemas de pagos digitales no puedan acceder al uso de estos productos de apoyo por suscripción.

En la diversidad está la solución

La existencia de los servicios por suscripción para el software no anula los sistemas de comercialización anteriores de pagar por una aplicación una vez y disfrutarla hasta que se decida adquirir una mejor.

El mercado es lo suficientemente amplio y flexible para que convivan diversas formas de comercialización del software. Es más, esta tendencia de diversidad en la comercialización debería ampliarse al mercado de productos de apoyo hardware. Por ejemplo, una persona ciega podría pagar un alquiler de una línea braille o una persona en silla de ruedas podría pagar una suscripción mensual para poseer una silla de ruedas eléctrica que fuese actualizada cada año.

Además existen también productos y servicios digitales gratuitos o que requieren de un registro y una aceptación de condiciones para su uso ya que se apoyan en la publicidad o el análisis de la información personal para obtener beneficios.

Los actuales modelos de pago por producto o pago por suscripción abren las puertas a futuros modelos de comercialización de productos y servicios que, esperemos, puedan convivir entre ellos. De esta forma cada persona podría elegir el formato de pago más apropiado a sus circunstancias para que todo el mundo pudiese satisfacer sus necesidades.

Lo que está totalmente claro es que el dinero digital ha llegado para quedarse y esto abre muchas posibilidades para comercializar servicios y productos. Es el momento de que cada persona elija qué le conviene y dónde quiere poner su dinero por la accesibilidad.