programacion objetos

12
Fundamentos Lenguajes de programación 18 Tipos de programación 19 Programación orientada a objetos 21 El director de orquesta 26 Resumen 27 Actividades 28 Capítulo 1 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. ACTIONSCRIPT SERVICIO DE ATENCIÓN AL LECTOR: [email protected]

Upload: danielabrig

Post on 26-Jul-2015

332 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programacion objetos

Fundamentos

Lenguajes de programación 18Tipos de programación 19

Programación orientada a objetos 21El director de orquesta 26

Resumen 27Actividades 28

Capítulo 1

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.

ACTIONSCRIPT

SERVICIO DE ATENCIÓN AL LECTOR: [email protected]

Page 2: Programacion objetos

LENGUAJES DE PROGRAMACIÓNLa 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 leestá diciendo debe compartir un mismo código gestual y verbal, debe compartir unmismo idioma. Al incursionarnos en el universo de las computadoras, observamosque el único lenguaje que éstas realmente comprenden es el binario. Cuando se co-munican entre sí, se entienden perfectamente; ambas comprenden lo que significanaquellas cadenas de ceros y unos prácticamente indescifrables para el hombre. Elproblema 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 cuandoel 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 01000010 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íanlos 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 desdelos 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 losfamosos 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 deprogramació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 sinnecesidad 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 (supropio juego de instrucciones), de manera que un programa ejecutable que correen una computadora equipada con un procesador Pentium no podría correr, porejemplo, en un Apple Power Macintosh.

ACTIONSCRIPT

18 usr.code

Page 3: Programacion objetos

• Lenguaje de bajo nivel: también conocido como ensamblador, representa unpaso 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-ra la resta) que simplifican parcialmente la comunicación entre el programador yla 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 gamade 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 unaaplicació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, sibien no logran la “directa comunicación” que posee este último con la computa-dora. Destacados: C++, Java, Pascal, Eiffel, Clipper, Ada, Smalltalk, VisualBasic, Delphi, FoxPro, JAVA y Actionscript.

TIPOS DE PROGRAMACIÓNEl desarrollo de aplicaciones persigue el único objetivo de solucionarle problemasal 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 dichatarea. A lo largo de la historia han ido surgiendo distintas maneras de abordar

Tipos de programación

Fund

amen

tos

1

19usr.code

❘❘❘

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.

LENGUAJE DE PROGRAMACIÓN

Page 4: Programacion objetos

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 ordencronoló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 utilizaeste 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 envarios 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 esdefinir un conjunto de hechos, que se conocen con anterioridad, y un conjuntode reglas que nos definen las distintas relaciones existentes entre los componentesdel programa. Lenguajes que utilizan este esquema: Prolog, Mercury.

ACTIONSCRIPT

20 usr.code

Page 5: Programacion objetos

• Programación orientada a objetos: lo desarrollaremos en extenso a continua-ción, pero para comenzar, podemos decir que los lenguajes que utilizan este es-quema son: C++, Java, Delphi, Smalltalk, lenguajes .NET y Actionscript.

Programación orientada a objetosTiempo atrás, el universo de los lenguajes de programación estaba reinado por elparadigma 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, losprogramadores comenzaron a darse cuenta de que este modelo presentaba ciertasdificultades 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 funcionesque 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 vezserví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: eluniverso 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-

Tipos de programación

Fund

amen

tos

1

21usr.code

❘❘❘

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”.

OBJETO

Page 6: Programacion objetos

dor desarrolla una aplicación, define sus propios objetos, describe su apariencia y lasrelaciones existentes entre sí. El accionar en conjunto de ellos es lo que permite laejecución del programa y la consecuente solución de los distintos problemas. Segúnel 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 porsí 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.

ClasesEl 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 susmé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

ACTIONSCRIPT

22 usr.code

Page 7: Programacion objetos

del display, etc.) y será totalmente independiente de sus pares. A este objeto sólo leresta ser individualizado mediante un único e irrepetible nombre de instancia.

Supongamos que hemos definido el método cambiarVolumen() y la propiedadvolumen (entre otras) en la clase CD_player. Una vez que la clase asigna su estructuraa un objeto denominado mi_CD_player (procesode instanciación llevado a cabo a través de unconstructor), 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 yla 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 dentrode él. Esta particularidad es justamente la que marca la “independencia”, “transpor-tabilidad”, “facilidad” y “reutilización” de este esquema de programación: no existecódigo disperso por la aplicación; todo está correcta y prolijamente encapsuladodentro 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 invocarsus interfases o métodos.

HerenciaLa herencia entre objetos es un concepto que nos permite definir un nuevo objetoa 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 untiempo considerable a la hora de crear objetos que guardan similitud con otros.

Tipos de programación

Fund

amen

tos

1

23usr.code

❘❘❘

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.

CLASE VS. OBJETO

Page 8: Programacion objetos

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 lageneració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 claseaudio_player, particularizando la propiedad dispositivo_de_reproduccón a un CD. Siposteriormente deseamos crear un reproductor de vinilo o cualquier otro formatoque aún no esté en el mercado, el molde creado seguirá siendo útil.

PolimorfismoEs una característica de OOP por la cual podemos definir un mismo método en variosobjetos, 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 obteneruna 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ónLa 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 menorgrado 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 hojase 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 vezpertenece a una casa, y ésta es parte de un barrio (barrio\casa\cuarto\reproductor_cd).Si se produce un cortocircuito en el reproductor y se quema su fuente, el hecho norepercutirá ni en el dormitorio, ni en la casa, ni el barrio. Sucede lo contrario si hayun 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.

ACTIONSCRIPT

24 usr.code

❘❘❘

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.

ENCAPSULAMIENTO Y ANIDACIÓN

Page 9: Programacion objetos

Un ejemplo más cotidiano es el de la estructura de los archivos en cualquier OS (sis-tema operativo) actual: si borramos un archivo dentro de una carpeta, el resto delos archivos que se encuentren bajo el mismo “paraguas” no sufrirán modificacio-nes. En cambio, si eliminamos la carpeta, todos y cada uno de los archivos que ellacontiene 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.

Tipos de programación

Fund

amen

tos

1

25usr.code

Page 10: Programacion objetos

ReferenciaciónLos lenguajes de programación orientados a objetos poseen una particular sintaxisde referenciación denominada sintaxis de puntos. El nombre lo recibe ya que unpunto (.) 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 orquestaEn la actualidad, el paradigma OOP se observa en la interoperabilidad de los dis-tintos sistemas de negocios. Veamos el siguiente ejemplo: una empresa vendedorade computadoras desea desarrollar un nuevo canal de ventas online y contrata a unprogramador para dicha tarea.Tras el análisis del problema, el programador concluye que precisa una aplicaciónque realice tres tareas fundamentales: mostrar los productos, generar un historial delas computadoras seleccionadas y verificar los datos de pago del usuario. Paso si-guiente, ingresa en Internet y revisa qué empresas han desarrollado objetos quecumplan estas necesidades. Los descarga, los testea y acomoda las piezas de maneratal que funcionen a la perfección entre sí. En el momento de verificar la identidady 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 quesucede en el medio (Figura 4).

Conclusión: la empresa encuentra en su poder una aplicación totalmente carente deerrores 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 unospocos días. Este esquema de trabajo permite que las aplicaciones se tornen cada vez másrobustas, más escalables y que nunca haya que programar dos veces lo mismo.

ACTIONSCRIPT

26 usr.code

Page 11: Programacion objetos

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ásbasadas 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.

Tipos de programación

Fund

amen

tos

1

27usr.code

… 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.

Page 12: Programacion objetos

28 usr.code

TEST DE AUTOEVALUACIÓN

1 ¿Cuáles son los distintos tipos de progra-

mación existentes?

2 ¿Qué es un objeto?

3 ¿Cómo se accede al contenido de un objeto?

4 ¿Qué significa la anidación de objetos?

ACTIVIDADES

5 ¿En qué consiste la sintáxis de puntos que

poseen los lenguajes OOP?