Académique Documents
Professionnel Documents
Culture Documents
Programacin y Abstraccin.
En general un programa no es ms que una descripcin abstracta de un
procedimiento que sucede en el mundo real. Frecuentemente un programa imita el
comportamiento de la accin humana. Otras veces lo reproduce.
Sin embargo, la relacin entre abstraccin y lenguaje de programacin es doble.
Por un lado, se utiliza el lenguaje de programacin para escribir un programa que es una
Javier Garrido Daz
2. I. T. I. G. POO
abstraccin del mundo real, y por otro, se utiliza el lenguaje de programacin para
describir el comportamiento.
En el comienzo de los lenguajes de programacin, el nico mecanismo de
abstraccin era el lenguaje ensamblador y de mquina, que daba la posibilidad de usar
reglas nemotcnicas para representar celdas de memoria. Posteriormente, los lenguajes
de programacin ofrecieron un nivel de abstraccin.
La Abstraccin
Las personas dedicadas al desarrollo de software, han tenido que luchar
continuamente con el problema de la complejidad. Para controlar esta complejidad, los
programadores han tenido que utilizar diferentes mecanismos. Entre ellos destaca la
Abstraccin. Las personas para tratar la complejidad, lo que hacemos es abstraernos de
ella. Ante la incapacidad de dominar la complejidad, y nos centramos en sus aspectos
esenciales.
Dicho de otra forma, la abstraccin es la capacidad de encapsular y asilar la
informacin del diseo y ejecucin.
La abstraccin es la clave para disear buen software. En los inicios de la
informtica, los programadores enviaban instrucciones binarias a una computadora,
manipulando interrupciones en paneles. Los nemotcnicos del lenguaje ensamblador
son abstracciones diseadas para evitar que los programadores tuvieran que recordar las
secuencias de bits.
Tras los lenguajes de programacin ensambladores aparecieron los lenguajes de
programacin de algo nivel, que supusieron un nuevo nivel de abstraccin. Permitieron
a los programadores distanciarse de las interioridades arquitectnicas especficas de una
mquina. De esta manera, se consigue escribir software para un propsito genrico.
Secuencias de sentencias de algo nivel, se pueden agrupar en procedimientos y
se invocan por una nica sentencia. La progrmaacion estructurada anima al uso de
abstracciones de control, como if-then pues permiten abstraer condiciones comunes
para cambiar la secuencia de ejecucin.
Procedimientos
Tambin conocidos como funciones, fueron los primeros mecanismos de
abstraccin que se utilizaron. Los procedimientos permiten ejecutar tareas rpidamente,
y que adems se pueden reutilizar. Por otro lado, el uso de procedimientos, ha permitido
ocultar cierta informacin. Un programador escribe un cdigo, y el resto de
programadores no necesitan saber la exactitud del funcionamiento. Slo necesitan saber
la interfaz.
Mdulos.
Un mdulo es una tcnica que proporciona la posibilidad de dividir sus datos y
procedimientos en una parte privada, slo accesible dentro del mdulo; y parte pblica,
accesible desde fuera
Tipos Abstractos
Tipo definido por el programador que puede manipularse
Objetos.
Un objeto es sencillamente un tipo abstracto de datos al que se le aaden
importantes innovaciones en comparicin de cdigo y reutilizacin. Los mecanismos
bsicos de orientacin a objetos son: objetos, mensajes/mtodos, clases/instancias, y
herencia.
Lo ms importante de todo es la comunicacin de objetos mediante paso de
mensajes. Adems, se aade la idea de la herencia y el polimorfismo.
Orientacin a Objetos.
Se puede definir como el conjunto de disciplinas que desarrollan y modelizan
software que facilitan la construccin de sistemas complejos a partir de componentes.
Los conceptos y herramientas OO son tecnologas que permiten que los
problemas del mundo real sean expresados de modo fcil y natural. Los cuatro
elementos ms importantes de este modelo son:
-
Abstraccin
Encapsulacin
Modularidad
Jerarqua.
Polimorfismo
Abstraccin.
Como se ha comentado anteriormente, la abstraccin es uno de los elementos
ms importantes de la OO, que nos permite representar las caractersticas esenciales de
un objeto sin preocuparse de las restantes.
Se centra en la vista externa del objeto, sin centrarnos en su implementacin.
Definir una abstraccion significa describir una entidad del mundo real, no
importa lo compleja que pueda ser.
El elemento clave de la POO es la clase. Una clase se puede definir como la
descripcin abstracta de un grupo de objetos, cada uno de los cuales se diferencia por su
estado especifico y por la posibilidad de hacer una serie de operaciones. Por ejemplo,
una pluma estilogrfica es un objeto que tiene un estado (llena de tinta o vaca) y sobre
la cual se pueden realizar algunas operaciones (escribir, poner la tapa, llenar tinta)
Encapsulacin.
Es la propiedad que permite asegurar que el contenido de la informacin de un
objeeto est oculta al mundo exterior: el objeto A no sabe lo que hace el B y viceversa.
La encapsulacin, en esencia, es el proceso de ocultar los secretos de un objeto
La encapsulacin permite la divisin de un programa en mdulos. Estos
mdulos se implementan mediante clases, de forma que una clase representa la
encapsulacin de una abstraccin. En la prctica, esto quiere decir, que una clase debe
tener dos partes: un interfaz, y una implementacin. El interfaz slo muestra su vista
externa y la implementacin contiene la representacin de esa abstraccin.
Modularidad.
Es la propiedad que permite subdividr una aplicacin en partes ms pequeas, de
tal forma que cada parte debe ser lo ms independiente posible del resto de las partes
Modularidad, propiedad de un sistema que permite su descomposicin en un
conjunto de mdulos cohesivos y debilmente acoplados.
Jerarqua.
Es una propiedad que permite una ordenacin de las abstracciones.
Nos vamos a encontrar con dos tipos de jerarquas:
-
Polimorfismo
Caracterstica de que una entidad, tome diferentes formas. Permite referirse a
objetos de clases diferentes mediante el mismo elemento de programa para realizar la
misma funcin de diferentes formas.
Por ejemplo, cuando se describe la clase mamferos se puede observar que la
operacin comer es una operacin bsica de la vida de los mamferos. Por otra parte,
una vaca que pasta en el prado, o una persona que come un caramelo, o un len que
devora a su presa, son diferentes formas que realizan los mamferos para realizar la
misma accin: comer.
El polimorfismo, implica la posibilidad de tomar un objeto de un tipo
(mamfero) e indicarle que ejecute la accin de comer. Esta accin se ejecutar de
diferente manera segn sea el objeto mamfero al que se le aplica.
El polimorfismo requiere ligadura tarda o postergada y esto slo de aplica a los
lenguajes de programacin orientados a objetos. Los lenguajes no orientados a objetos
soportan ligadura temprana o anterior; esto significa que el compilador genera una
llamada a un nombre especfico de funcin y el enlazador o linker resuelve la llamada a
la direccin del cdigo que se ha de ejecutar. En la POO, el programa no puede
determinar la direccin del cdigo hasta la ejecucin; para resolver este concepto, los
lenguajes OO, usan el concepto de la ligadura tarda. Cuando se enva un mensaje a un
objeto, el cdigo que se llama, no se determina hasta el momento de la ejecucin. El
compilador solamente, asegura que la funcin existe y realiza la verificacin de tipos de
los argumentos y el valor de retorno