1) El documento introduce los fundamentos de ActionScript y los diferentes tipos de lenguajes y programación como preámbulo al estudio del lenguaje. 2) Explica que existen diferentes lenguajes de programación como el binario, ensamblador, C y otros de alto nivel, y diferentes tipos de programación como la secuencial, estructurada y orientada a objetos. 3) La programación orientada a objetos define conceptos como clases, objetos, herencia y polimorfismo que permiten una programación más escalable y reutilizable.
1. ACTIONSCRIPT Capítulo 1
Fundamentos
Los distintos lenguajes y tipos
de programación existentes
y la comprensión de lo que significa
el concepto de programación orientada
a objetos servirán de puntapié inicial
para conocer los fundamentos de la
programación y del lenguaje Actionscript.
Lenguajes de programación 18
Tipos de programación 19
Programación orientada
a objetos 21
El director de orquesta 26
Resumen 27
SERVICIO DE ATENCIÓN AL LECTOR: lectores@tectimes.com Actividades 28
2. ACTIONSCRIPT
LENGUAJES DE PROGRAMACIÓN
La base del entendimiento entre dos o más individuos está dada por la normaliza-
ción de sus expresiones y actitudes: para que un hombre comprenda lo que otro le
está diciendo debe compartir un mismo código gestual y verbal, debe compartir un
mismo idioma. Al incursionarnos en el universo de las computadoras, observamos
que el único lenguaje que éstas realmente comprenden es el binario. Cuando se co-
munican entre sí, se entienden perfectamente; ambas comprenden lo que significan
aquellas cadenas de ceros y unos prácticamente indescifrables para el hombre. El
problema surge en el momento que una persona intenta darle una instrucción.
Veamos el caso de un programador que está desarrollando una consola de sonido.
Él precisa que se reproduzca una determinada canción robotech_sdf1.mp3 cuando
el usuario presione en un área determinada, lo que significa asignarle un código si-
milar a éste para que la tarea se desencadene:
0111 0010 1010 0111 0001 1111 1110 1001 0001 0100
0010 1010 0111 0001 1111 0111 0010 1010 0111 0101
Si la manera de indicarles a las computadoras cómo comportarse estuviera basada
únicamente en este lenguaje binario, podríamos contar con los dedos quiénes serían
los individuos capaces de “hablar” efectivamente con ellas. El hombre no se comu-
nica con ceros y unos, no los comprende... y jamás lo hará. Es por ello que desde
los inicios de la era digital surgió la necesidad de generar nuevos idiomas que ac-
túen más cerca del territorio lingüístico conocido por el programador. Ellos son los
famosos lenguajes de programación.
Estos lenguajes consisten en verdaderos “traductores” que traspasan un idioma ami-
gable para el individuo en aquellos tediosos ceros y unos necesarios para que la com-
putadora opere. Este proceso de traducción puede hacerse mediante un compilador,
un intérprete o con una combinación de los dos. Existen cientos de lenguajes de
programación que, según su cercanía al lenguaje binario, se dividen en cuatro gran-
des grupos, que veremos en detalle a continuación:
• Lenguaje de máquina o binario: es aquel que la computadora comprende sin
necesidad de realizar conversión alguna. Su escritura resulta extremadamente di-
fícil para el mayor porcentaje de programadores, y prácticamente ya nadie lo uti-
liza. Por otro lado, cada tipo de procesador tiene su propio lenguaje máquina (su
propio juego de instrucciones), de manera que un programa ejecutable que corre
en una computadora equipada con un procesador Pentium no podría correr, por
ejemplo, en un Apple Power Macintosh.
18 usr.code
3. Tipos de programación
• Lenguaje de bajo nivel: también conocido como ensamblador, representa un
1
paso hacia la humanización de los lenguajes de programación. Consta de un com-
plejo repertorio de palabras nemotécnicas (tales como add para la suma o sub pa-
Fundamentos
ra la resta) que simplifican parcialmente la comunicación entre el programador y
la computadora. Se trata de un lenguaje realmente robusto que actúa práctica-
mente a la par del lenguaje binario.
MOV AX, A
ADD AX, B
MOV C, AX
• Lenguaje de medio nivel: posee un diccionario de comportamientos/instruccio-
nes que consta de palabras similares a aquellas conocidas por los hombres (include,
define, if). Goza del equilibrio ideal entre simpleza y potencia: una variada gama
de posibilidades para trabajar directamente con la computadora y una escritura ca-
paz de ser comprendida por el hombre. En este grupo se destaca el lenguaje C.
• Lenguaje de alto nivel: es el de mayor entendimiento para el hombre. Escribir una
aplicación con este lenguaje resulta mucho más ágil y sencillo que con los de nive-
les anteriores. La mayoría de ellos forjaron sus cimientos en base al lenguaje C, si
bien no logran la “directa comunicación” que posee este último con la computa-
dora. Destacados: C++, Java, Pascal, Eiffel, Clipper, Ada, Smalltalk, Visual
Basic, Delphi, FoxPro, JAVA y Actionscript.
TIPOS DE PROGRAMACIÓN
El desarrollo de aplicaciones persigue el único objetivo de solucionarle problemas
al hombre: el programador escoge un lenguaje y luego le indica ciertas instruccio-
nes a la computadora para que ésta las procese y devuelva el resultado de dicha
tarea. A lo largo de la historia han ido surgiendo distintas maneras de abordar
❘❘❘ LENGUAJE DE PROGRAMACIÓN
Es el conjunto de normas lingüísticas que permiten escribir un programa y que éste sea enten-
dido primordialmente por la computadora. Según la cercanía o lejanía de la sintaxis al idioma hu-
mano (alto/bajo nivel), será más o menos fácil de interpretar por el programador.
usr.code 19
4. ACTIONSCRIPT
ciertas problemáticas, lo que fue dando origen a distintas formas de programar.
Cada forma plantea un camino diferente para solucionar un mismo problema.
Dependiendo del escenario, el programador deberá optar por el tipo de progra-
mación más conveniente:
• Programación secuencial: se basa en sentencias escritas y ejecutadas con un orden
cronológico. La ruptura de dicha secuencialidad suele estar dada por una partícu-
la “goto” que permite procesar líneas de código alternas. Los lenguajes que utiliza
este esquema son: Basic, Assembler, Fortram y Cobol. Aquí vemos un ejemplo:
10 CLS
20 numero=220000
30 palabra$=”Actionscript”
40 LOCATE 7,7
50 PRINT “ Cantidad de páginas “; numero
60 LOCATE 8,7
70 PRINT“ Estudiante de: “; palabra$
80 END
• Programación estructurada: se basa en la simplificación de un gran problema en
varios menores. Consta de pequeños módulos (funciones) capaces de realizar ta-
reas muy específicas que, al combinarse con sus pares, resuelven problemas de ín-
dole mayor. Lenguajes que utilizan este esquema: C, Pascal. A continuación, ve-
mos un ejemplo de código C:
#include <stdio.h>
int main(void){
char cadena[20];
printf( “Introduce una cadena:“ );
fflush(stdout);
gets(cadena);
printf(“has escrito: %s“,cadena);
return 0;
}
• Programación lógica: es una forma de programar donde lo más importante es
definir un conjunto de hechos, que se conocen con anterioridad, y un conjunto
de reglas que nos definen las distintas relaciones existentes entre los componentes
del programa. Lenguajes que utilizan este esquema: Prolog, Mercury.
20 usr.code
5. Tipos de programación
• Programación orientada a objetos: lo desarrollaremos en extenso a continua-
1
ción, pero para comenzar, podemos decir que los lenguajes que utilizan este es-
quema son: C++, Java, Delphi, Smalltalk, lenguajes .NET y Actionscript.
Fundamentos
Programación orientada a objetos
Tiempo atrás, el universo de los lenguajes de programación estaba reinado por el
paradigma de la programación estructurada: rara vez se escuchaba nombrar un len-
guaje que no fuera “C” en el contexto sociolaboral de un programador. Sin embar-
go, con el pasar de los años y el surgimiento de nuevos procesos de negocios, los
programadores comenzaron a darse cuenta de que este modelo presentaba ciertas
dificultades en torno a los problemas que sus desarrollos debían solucionar:
• Escalabilidad: las aplicaciones debían ser prácticamente rescritas cuando el pro-
gramador intentaba agregarle nuevas funcionalidades no planificadas en el mo-
mento de su génesis.
• Dificultad: las aplicaciones terminaban formadas por miles y miles de funciones
que impedían una ágil y sencilla lectura del código fuente.
• Disgregación: falta de una lógica explícita que vinculara el accionar de los dife-
rentes módulos o funciones entre sí.
• Implementación: toda modificación en el código fuente requería, casi sin excep-
ción, expertos programadores que comprendieran “C” a la perfección.
• Actualización: demandaba muchas horas hombre la realización de pequeñas ac-
tualizaciones, también conocidas como updates.
• Reutilización y transportabilidad: el código escrito para una aplicación rara vez
servía para ser aplicado en una segunda.
La programación orientada a objetos (OOP, siglas de Object Oriented Programming)
surge para salvar todas estas problemáticas. OOP plantea el siguiente paradigma: el
universo se encuentra repleto de objetos independientes que interactúan entre sí. Ca-
da objeto posee características propias y puede comportarse de tal o cual manera se-
gún sus condiciones físicas se lo permitan. En otros términos, cuando el programa-
❘❘❘ OBJETO
El objeto es una estructura compleja en cuyo interior existen datos y especificaciones de ejecu-
ción de tareas. Ambos contenidos están estrechamente relacionados entre sí y se encuentran se-
parados del entorno “encerrados en una cápsula”.
usr.code 21
6. ACTIONSCRIPT
dor desarrolla una aplicación, define sus propios objetos, describe su apariencia y las
relaciones existentes entre sí. El accionar en conjunto de ellos es lo que permite la
ejecución del programa y la consecuente solución de los distintos problemas. Según
el esquema estructural OOP, los objetos constan de tres partes fundamentales:
• Nombre: identificación única.
• Propiedades: características físicas y compositivas.
• Métodos: acciones/tareas capaces de realizar.
Un objeto mantiene sus características ajenas al mundo que lo rodea (“encapsula-
ción”), lo que permite una total independencia de sus pares; cada objeto existe por
sí sólo. Es a través de sus métodos, también denominados interfases, que se rela-
ciona con el mundo exterior y lleva a cabo determinadas consignas (Figura 1).
Figura 1. Esquema de relación y comunicación de objetos.
Clases
El primer paso en el desarrollo de una aplicación OOP consiste en definir “moldes”
o “clases”. Éstos llevan consigo las especificaciones descriptivas y actitudinales (mé-
todos y propiedades) que luego serán transmitidas a sus descendientes. Paso siguien-
te, un constructor determina la creación de un objeto a partir de ese molde y espe-
cifica sus características particulares en un proceso denominado instanciación. Vea-
mos un ejemplo para ser más claros.
Un programador genera la clase CD_player conjuntamente con la definición de sus
métodos y propiedades. Cada unidad (objeto) creada a partir de este molde (clase)
realizará las tareas que le fueron asignadas en distintos momentos e intensidades
(play, stop, pause, eject, subir y bajar volumen), podrá recibir una apariencia especí-
fica combinando sus propiedades (color de cobertura, forma de los botones, color
22 usr.code
7. Tipos de programación
del display, etc.) y será totalmente independiente de sus pares. A este objeto sólo le
1
resta ser individualizado mediante un único e irrepetible nombre de instancia.
Fundamentos
Supongamos que hemos definido el método cambiarVolumen() y la propiedad
volumen (entre otras) en la clase CD_player. Una vez que la clase asigna su estructura
a un objeto denominado mi_CD_player (proceso
de instanciación llevado a cabo a través de un
constructor), el objeto se vuelve receptor de órde-
nes. De esta manera, cuando el programador indi-
que mi_CD_player.cambiarVolumen(80), el repro-
ductor de CD modificará su propiedad volumen y
la audición del sonido emitido por el objeto cam-
biará al 80% de su capacidad (Figura 2).
Figura 2. El acceso al contenido de un objeto
(propiedades) sólo es posible a través de sus métodos.
Es sólo a través de los métodos (al menos, la corriente purista de OOP así lo sostie-
ne) que el entorno del objeto puede relacionarse con los datos encontrados dentro
de él. Esta particularidad es justamente la que marca la “independencia”, “transpor-
tabilidad”, “facilidad” y “reutilización” de este esquema de programación: no existe
código disperso por la aplicación; todo está correcta y prolijamente encapsulado
dentro de unidades “clase” y “objeto”. Una vez que una clase ha sido creada, no pre-
cisamos saber qué ocurre dentro, tan sólo debemos conocer la sintaxis para invocar
sus interfases o métodos.
Herencia
La herencia entre objetos es un concepto que nos permite definir un nuevo objeto
a partir de las cualidades físico-actitudinales (propiedades y métodos) de un segun-
do más genérico. Esta característica, junto con la de polimorfismo, nos ahorra un
tiempo considerable a la hora de crear objetos que guardan similitud con otros.
❘❘❘ CLASE VS. OBJETO
Como vimos en este capítulo, una clase es un tipo de datos definido por el usuario que especifi-
ca un conjunto de objetos que comparten las mismas características; es una colección de obje-
tos similares. Por su lado, un objeto es una instancia de una definición de una determinada cla-
se; es el producto de la utilización de dicho molde.
usr.code 23
8. ACTIONSCRIPT
En el caso del reproductor de CD, podemos optimizar dicha clase y hacerla más es-
calable creando una nueva y más extensa clase audio_player que resulte apta para la
generación de reproductores de casetes, vinilo, minidisc, CD o cualquier otro for-
mato. Con esto en mente, la clase CD_player heredaría las generalidades de la clase
audio_player, particularizando la propiedad dispositivo_de_reproduccón a un CD. Si
posteriormente deseamos crear un reproductor de vinilo o cualquier otro formato
que aún no esté en el mercado, el molde creado seguirá siendo útil.
Polimorfismo
Es una característica de OOP por la cual podemos definir un mismo método en varios
objetos, pero cada uno de ellos con distintos comportamientos. Dicho de otro modo,
es la posibilidad de codificar métodos con el mismo nombre en clases distintas.
En el caso del reproductor de CD que veníamos explicando, podríamos obtener
una copia del método play() de un reproductor de VHS. Sin embargo, como el re-
productor de CD no posee la aptitud de emitir imágenes, dicha acción debería
“ajustarse” a las capacidades específicas del equipo de CD.
Anidación
La anidación de objetos consta de establecer relaciones jerárquicas entre ellos. Se-
gún su posición dentro del esquema, sus acciones repercutirán en mayor o menor
grado sobre el resto. Dichas relaciones establecen estructuras del tipo “árbol”, don-
de el último eslabón se transforma en la “hoja” de una serie de “ramas”. Si la hoja
se cae, no afectará el resto de la estructura, pero toda rama que se rompa llevará con-
sigo las ramificaciones que le suceden.
Veamos el caso de la instalación de un nuevo reproductor de CD dentro del dormi-
torio de un individuo: el equipo de música estará dentro de un cuarto, que a la vez
pertenece a una casa, y ésta es parte de un barrio (barriocasacuartoreproductor_cd).
Si se produce un cortocircuito en el reproductor y se quema su fuente, el hecho no
repercutirá ni en el dormitorio, ni en la casa, ni el barrio. Sucede lo contrario si hay
un incendio y la casa es consumida por las llamas. Sólo el barrio quedará de pie;
tanto el reproductor como el cuarto desaparecerán junto con la casa.
❘❘❘ ENCAPSULAMIENTO Y ANIDACIÓN
El encapsulado de un objeto consiste en ocultar sus detalles de implementación, a la vez que
provee una interfaz pública (métodos) que relaciona al mismo objeto con su entorno. En tanto que
la anidación de objetos consiste en establecer relaciones jerárquicas entre ellos.
24 usr.code
9. Tipos de programación
Un ejemplo más cotidiano es el de la estructura de los archivos en cualquier OS (sis-
1
tema operativo) actual: si borramos un archivo dentro de una carpeta, el resto de
los archivos que se encuentren bajo el mismo “paraguas” no sufrirán modificacio-
Fundamentos
nes. En cambio, si eliminamos la carpeta, todos y cada uno de los archivos que ella
contiene sufrirán las mismas consecuencias (Figura 3).
Figura 3. La anidación de objetos responde a una estructura
de “árbol”, donde las relaciones jerárquicas son
establecidas según el lugar que ocupa cada pieza en el diagrama.
usr.code 25
10. ACTIONSCRIPT
Referenciación
Los lenguajes de programación orientados a objetos poseen una particular sintaxis
de referenciación denominada sintaxis de puntos. El nombre lo recibe ya que un
punto (.) separa la referencia del objeto (instancia) de aquello que desea hacerse con
él (manipular sus propiedades o métodos).
mi_CD_player.cambiarVolumen(80);
El script está indicándole al objeto mi_CD_player que modifique su volumen a tra-
vés del método cambiarVolumen().
En el caso de instanciar un objeto dentro de un segundo, las reglas sintácticas de co-
municación continúan con la misma nomenclatura:
mi_barrio.mi_casa.mi_cuarto.mi_CD_player.cambiarVolumen(80);
Como el objeto mi_CD_player se encuentra anidado dentro de otros, es preciso re-
correr todo el árbol para poder referenciarlo.
El director de orquesta
En la actualidad, el paradigma OOP se observa en la interoperabilidad de los dis-
tintos sistemas de negocios. Veamos el siguiente ejemplo: una empresa vendedora
de computadoras desea desarrollar un nuevo canal de ventas online y contrata a un
programador para dicha tarea.
Tras el análisis del problema, el programador concluye que precisa una aplicación
que realice tres tareas fundamentales: mostrar los productos, generar un historial de
las computadoras seleccionadas y verificar los datos de pago del usuario. Paso si-
guiente, ingresa en Internet y revisa qué empresas han desarrollado objetos que
cumplan estas necesidades. Los descarga, los testea y acomoda las piezas de manera
tal que funcionen a la perfección entre sí. En el momento de verificar la identidad
y validez de la tarjeta de crédito ingresada por uno de los clientes, la aplicación de-
lega toda la inteligencia en otra empresa-objeto. Sólo precisa saber qué datos enviar-
le a ese objeto, así como la respuesta que éste devuelve; no importa qué es lo que
sucede en el medio (Figura 4).
Conclusión: la empresa encuentra en su poder una aplicación totalmente carente de
errores y ha logrado optimizar tiempo y dinero. Un desarrollo que podría haber demo-
rado semanas o meses con otro esquema de programación, OOP lo ha logrado en unos
pocos días. Este esquema de trabajo permite que las aplicaciones se tornen cada vez más
robustas, más escalables y que nunca haya que programar dos veces lo mismo.
26 usr.code
11. Tipos de programación
1
Fundamentos
Figura 4. El éxito del desarrollo de una nueva aplicación está directamente relacionado con
la habilidad del programador de interrelacionar porciones de código (objetos) preexistentes.
Tras el surgimiento y maduración de los OOP, las aplicaciones están cada vez más
basadas en recopilaciones y adaptaciones de paquetes de código previamente desa-
rrollados. El desarrollador ha dejado de ser operario; se ha convertido en un direc-
tor de orquesta y Flash en su mejor escenario donde desplegar su creatividad.
… RESUMEN
En este capítulo hicimos un repaso de los lenguajes y tipos de programación existentes, y de-
sarrollamos a fondo el concepto de programación orientada a objetos. Además, vimos cómo
definir las clases para desarrollar una aplicación OOP, qué significa la herencia entre objetos
y para qué sirve la anidación de objetos.
usr.code 27
12. ✔ ACTIVIDADES
TEST DE AUTOEVALUACIÓN
1 ¿Cuáles son los distintos tipos de progra- 5 ¿En qué consiste la sintáxis de puntos que
mación existentes? poseen los lenguajes OOP?
2 ¿Qué es un objeto?
3 ¿Cómo se accede al contenido de un objeto?
4 ¿Qué significa la anidación de objetos?
28 usr.code