Вы находитесь на странице: 1из 8

USANDO EL PENSAMIENTO ABSTRACTO

EN EL DISEÑO DE INTERFACES

Antes que nada, tengamos en cuenta algunos conceptos


claves, como, por ejemplo:

La unidad fundamental del diseño OO es la clase (un conjunto que


cumple determinadas características y que posee ciertas operaciones-
métodos-).

La solución de un problema con diseño OO es perfectible, siempre


puede mejorarse.

La programación estructurada se utiliza en el diseño OO, pero este


último implica un nuevo proceso de pensamiento, lo que se conoce como
“cambiar de paradigma”.
Aprender los conceptos (encapsulamiento, etc.) del diseño OO es
imprescindible si realmente se
quiere un producto con
orientación a objetos.

Interfaz e implementación.
¿Cuál es la diferencia entre la interfaz y la
implementación?

Responder esta pregunta es en esencia


Diferenciar entre qué y qué no necesita conocer el usuario.
En el ejemplo usado-la tostadora-, la tostadora se conecta a
la interfaz que es, en este caso, la toma de corriente. La
tostadora no conoce la naturaleza de la
corriente(implementación) lo utiliza, pero le es indistinto.

Un ejemplo adicional, en el caso de un auto.


La interfaz entre el conductor y el auto son el volante, los
frenos, etc.
¿Qué necesita un conductor?
Que el auto arranque y se mueva, las cuestiones técnicas
como el tipo de motor, la combustión interna, esto no es
esencial para el conductor (implementación).
Pero este sí reconoce un volante y su uso(interfaz).

¿Pero, entonces, qué es la interfaz?


Es, sencillamente, el resultado final que ve el usuario que le
permitirán comunicarse con la implementación.
(el en caso del auto, el volante, frenos, etc.). los usuarios
finales ven la línea de comandos.

¿Luego, qué es la implementación?


Todo aquello que esta oculto al usuario, desde luego.
Aquí acotaremos algo importante, un cambio en la
implementación no implica una modificación del código de
usuario (ósea interfaz). Modificar el modo de generar la
electricidad no debe significar, en ningún caso, la
modificación del tomacorriente(interfaz).
Por ejemplo, tenemos un programa donde la interfaz abarca
el código(sintaxis), en un punto se llama a un método y
retornar un tipo, si cambia la implementación (el cómo es
dicho método), ¿por qué habría de afectar eso al programa?
Si la sintaxis(código) llama al método y devuelve el tipo, es
decir hace el mismo trabajo, esto basta.
……………………………………………………
……………………………………………………
Además, recordemos las características del diseño OO.
A continuación, resumiremos dichos conceptos.

Encapsulación
los objetos poseen los atributos (variables de instancia) y
también el comportamiento(métodos), además se necesita
que los objetos no revelen sino únicamente las interfaces que
le permitirán comunicarse con otros objetos, esto es que:
por ejemplo, un objeto que calcule la media de un grupo de
números proporcione una interfaz para retornar esa cantidad
mas no el proceso interno ni los atributos, con esto nos
referimos a los conceptos interfaz e implementación
respectivamente.
Herencia
Una clase puede heredar los atributos el comportamiento de
otra clase.
Polimorfismo
Objetos similares responde al mismo mensaje de diversas
formas.

Composición
Un objeto se construye a partir de otros objetos.
…………………………………………………………….
……………………………………………………………
Emplear el pensamiento abstracto quiere decir usar todos
los conceptos anteriores en la solución de un determinado
problema que se traduce, desde luego, en un programa.

Además, la reutilización de clases es una de las ventajas


más importantes del diseño orientado a objetos, al reutilizar
las clases tienes interfaces más abstractas (la implementación
se hace casi desconocido), estas se vuelven muy útiles.
Sin embargo, una interfaz muy concreta también puede ser
muy útil, aunque no necesariamente reutilizable.
Esto no es del todo malo, pero la interfaz concreta solo se
usaría en un problema en específico.

Ahora bien, nuestro objetivo es crear interfaces más


abstractas. ¿Por qué? ¿Cuál es la diferencia entre una y
otra?
Esta duda se dilucidará con el siguiente ejemplo.
Al crear un objeto taxi, la interfaz es lo que se muestra al
usuario y que comunica con la implementación (como
conduce el taxi), ciertamente en este caso la interfaz es el
mensaje que el usuario da al taxista quien sería un método
del objeto taxi.
ahora bien, ¿qué mensaje es más preciso,
“llévame al aeropuerto” (abstracción) o
“gira a la derecha” + “detente” + “acelera” + “a la
izquierda” etc... (procedimental)?
¿El primer mensaje cierto?
En efecto, el cómo te lleve al aeropuerto no debe interesarte
sino solo en el caso que se desvíe y te cobre más.
No obstante, lo que sí importa es a que aeropuerto vas.
¿Entonces cuál de los dos “mensajes” será más reutilizable?
Obviamente el primero, lo puedes usar en cualquier ciudad,
por el contrario, el segundo “mensaje” solo se podrá usar en
un evento particular.
En conclusión, elegir la interfaz “mensaje=llévame al
aeropuerto” es optar por un diseño orientado a objetos,
bueno y reutilizable.
o

Вам также может понравиться