POO-Python-123-Conceptos Básicos
POO-Python-123-Conceptos Básicos
DE PROGRAMACIÓN ORIENTADA A
OBJETOS
Introducción
Muchos de nosotros utilizamos habitualmente los
ordenadores y estamos familiarizados con el concepto
programa. Dentro del ordenador hay muchos de ellos, y
nos ofrecen multitud de funcionalidades: escribir
documentos, hacer cálculos, e incluso jugar.
Pero, ¿qué es un programa?
Aunque no lo creamos, hay programas en todas partes.
Basta con que nos fijemos en una lavadora. Seguro
que tiene un programa para la ropa delicada, otro para
el algodón e incluso uno que sólo centrifuga.
¿Son iguales estos programas y
los del ordenador?
Pues, a grandes rasgos, sí. Veamos un par de
ejemplos más: las notas que tenemos en nuestras
agendas y una receta de cocina también son
programas.
Sorprendente, ¿no? Mucho más sorprendente es el
hecho de que nosotros mismos ejecutamos programas
de la misma forma que los ejecuta un ordenador.
Un programa no es más que un conjunto de
instrucciones que permiten llevar a cabo una tarea. En
el caso de la lavadora, el programador nos ofrece
distintos programas entre los que podemos elegir. De
nuestra elección, es decir, del programa, depende el
conjunto de acciones que llevará a cabo la lavadora
una vez encendida.
Así, la lavadora puede desempeñar distintas tareas
(lavado corto, lavado largo, etc.) que están
perfectamente definidas por los distintos programas
que nos ofrece.
Las notas de nuestra agenda y la receta de cocina, al
igual que un programa, también son un conjunto de
instrucciones que hay que realizar para llevar a cabo
las tareas “conservar el empleo” y “cocinar un plato”.
En ambos casos, son las indicaciones escritas las que
controlan, de forma más o menos precisa, las acciones
que llevamos a cabo. Son programas escritos para que
nosotros mismos los ejecutemos.
Estructura de un
programa
Un programa (sea informático o no) está
compuesto por cuatro partes bien diferenciadas:
Código. Es el conjunto de instrucciones en sí.
Normalmente, el código está escrito de forma
que sea fácil de entender y manipular por una
persona.
Memoria. Ofrece un espacio al programa para
almacenar datos y recuperarlos más tarde.
Entrada. Es el conjunto de datos que el programa
recibe mientras se ejecuta y que condicionan las
acciones que éste realiza y, en consecuencia, los
resultados que genera. Normalmente, los datos
proceden del usuario (pulsaciones del teclado,
movimientos y pulsaciones del ratón, entre otros.), pero
también pueden venir de otros programas. En este
último caso tenemos, por ejemplo, los datos enviados
por un servidor web a nuestro navegador.
Salida. Es el conjunto de datos generados en forma de
resultado durante la ejecución del programa. Estos
datos pueden percibirse como acciones desde el punto
de vista del usuario. Los resultados pueden ser, un
número, una hoja de papel impresa, una imagen en la
pantalla, entre otros.
Lenguaje de
Programación
Un lenguaje de programación es una notación
constituida por símbolos y reglas que permite escribir
programas. Todo lenguaje de programación está
compuesto por su sintaxis (reglas) y su semántica
(significado de los símbolos y las palabras que utiliza).
A través de los lenguajes de programación es posible
establecer una comunicación sistematizada y precisa
con una computadora.
Lenguaje absoluto o de máquina: Es el lenguaje nativo
de una unidad de procesamiento central (CPU o
procesador). Está compuesto por instrucciones que la
máquina entiende directamente y que se expresan en
términos de la unidad de memoria más pequeña: el bit
(código binario 1 o 0).
En esencia, una instrucción es una secuencia de bits
que especifican una operación y las celdas de memoria
implicadas.
Un lenguaje orientado a la máquina presenta las
siguientes ventajas:
• No necesita traducción.
• Se aprovecha toda la capacidad de la computadora
(uso de la memoria).
• El tiempo de acceso es menor.
Desventajas:
• Es difícil de escribir y entender.
• Su escritura toma mucho tiempo.
• Dado que es un lenguaje expresado en unos y ceros,
se corre un riesgo grande de cometer errores.
Desventajas:
• Es difícil de escribir y entender.
• Su escritura toma mucho tiempo.
• Dado que es un lenguaje expresado en unos y ceros,
se corre un riesgo grande de cometer errores.
Lenguaje simbólico: Es aquél en el cual las
instrucciones o sentencias son escritas con palabras
similares a las de los lenguajes humanos. Están
compuestos por símbolos, letras y números.
Los lenguajes simbólicos están orientados al programador y
presenta las siguientes ventajas:
• Se entienden y escriben fácilmente.
• Disminuye la probabilidad de cometer errores.
• Escribir en lenguajes simbólicos toma menos tiempo.
• Son independientes de la plataforma y, por tanto, pueden
usarse en distintas plataformas.
Desventajas:
• Para que la máquina los entienda deben ser
traducidos.
• Su tiempo de ejecución es mayor.
Evolución de los paradigmas
de programación
Desde que la programación de computadoras apareció
como tal, la forma, el paradigma o modelo que se usa
ha evolucionado constantemente. Sin embargo, las
bases de la programación no han cambiado;
simplemente se han ido añadiendo nuevos
conceptos y nuevas estructuras.
Todo inició con las primeras estructuras que se
inventaron cuando apareció la programación de
computadoras como tal, que en este libro se está
conceptualizando como programación tradicional.
Luego, sobre esas bases se gestó la programación
estructurada, para dar lugar a la programación
modular.
Enseguida se agregó la programación con abstracción
de datos para llegar al desarrollo de la programación
orientada a objetos. En la siguiente figura se
esquematiza la evolución de los paradigmas de
programación.
La evolución de los paradigmas de programación ha
tenido tres grandes pasos. El primer gran paso se dio
cuando la programación de computadoras se inventó
como tal (es lo que se esquematiza en la parte de
debajo de la figura como programación tradicional).
Luego, como un segundo gran paso, surgió la
programación estructurada. Después se experimentó
un pequeño paso que dio lugar a la programación
modular. Enseguida vino otro pequeño paso que
permitió el surgimiento de la programación con
abstracción de datos. Luego se dio el tercer gran paso
que es la aparición de la programación orientada a
objetos.
Luego, como un segundo gran paso, surgió la
programación estructurada. Después se experimentó
un pequeño paso que dio lugar a la programación
modular. Enseguida vino otro pequeño paso que
permitió el surgimiento de la programación con
abstracción de datos. Luego se dio el tercer gran paso
que es la aparición de la programación orientada a
objetos.
Programación tradicional
La programación tradicional, que se denominaba
programación de computadoras, tuvo sus inicios a
principios de la década de 1950. Los lenguajes de
programación que se utilizaban eran los predecesores
de FORTRAN y las primeras versiones de éste.
Las estructuras lógicas de control que se utilizaban
eran la secuenciación, IF-THEN, IF-THEN-ELSE y DO
(en la actualidad conocido como FOR). La técnica de
diseño de programas utilizada era la de los diagramas
de flujo.
Programación estructurada
La programación estructurada tuvo sus inicios a
mediados de la década de 1960. Los lenguajes de
programación que se utilizaban eran PASCAL, COBOL
estructurado, BASIC estructurado, FORTRAN con
estilo estructurado, FORTRAN 90, Lenguaje C. Las
estructuras de control utilizadas eran la secuenciación,
IF-THEN, IF-THEN-ELSE, CASE, FOR, DO-UNTIL y
DOWHILE.
Otras características eran que se podía dividir un
programa en módulos y funciones y estilo de
programación. Las técnicas de diseño de programas
que se utilizaban eran diagramas Warnier, diagramas
estructurados, diagramas Chapin, pseudocódigo y Top
Down Design, entre otras.
Programación modular: La programación modular
tuvo sus inicios a fines de la década de 1970 y
principios de la de 1980. El lenguaje de programación
que se utilizó fue MODULA 2 y emergió el concepto de
encapsulación (en un módulo o paquete se
encapsulaban los datos y las funciones que los
manipulaban).
Programación con abstracción de datos: La
programación con abstracción de datos se generó
en la década de 1980. El lenguaje de programación
que se utilizó fue ADA. Con éste emergió el concepto
de Tipos Abstractos de Datos (TAD).
Programación orientada a objetos
El concepto de la programación orientada a objetos
sólo se puso en boga a finales de la década de 1980 y
principios de la de 1990, a pesar de que ya se había
generado muchos años antes. A este tipo de
programación la caracterizan los conceptos Objetos,
Clases, Encapsulación, Herencia y Polimorfismo.
Los principales lenguajes de programación que se
utilizan son: C++, Java y C# y las técnicas de diseño
que se utilizan son Booch, Rumbaugh, Jacobson,
Yourdon, UML (Unifi ed Modeling Language), entre
otras.
La estructura general o arquitectura de un programa
consiste en un conjunto de objetos, y cada objeto se
compone por datos y un conjunto de métodos, donde
cada método (que es equivalente al concepto de
módulo en la programación estructurada) está formado
por un conjunto de instrucciones, como se muestra a
continuación:
La programación orientada a objetos permite manejar
mejor la complejidad de los programas y la reutilización
de código porque permite una mayor pulverización o
segmentación de los programas a través de los objetos
de una forma más eficiente que como anteriormente se
hacía con la programación estructurada.