Introducción a la Programación

Anuncio
Apunte de la Cátedra UBA
Introducción a la Programación
Prof. Ferro, Ma. del Pilar
Prof. Fernández, Ma. Elisa
Algoritmos
Para realizar cualquier actividad el hombre necesita desarrollar un método y
aplicarlo en sucesivos pasos elementales. Por ejemplo: si deseamos pasar al otro
lado de una puerta, comprobaremos primero si está cerrada con llave o no; si no lo
está, la abrimos y pasamos al otro lado; si está cerrada, primero debemos buscar la
llave, ponerla en la cerradura, hacerla girar para que se abra y, finalmente, pasar al
otro lado.
Un algoritmo es el conjunto de reglas, secuencias de fórmulas y / o pasos
algebraicos y lógicos preestablecidos utilizados para resolver un problema, en un
número finito de pasos. Debe tener al menos un resultado.
La definición indica que un algoritmo debe tener las siguientes propiedades:
 Debe obtener al final un resultado.
 Debe ser aplicable a gran variedad de datos.
 Debe tener reglas precisas.
La definición se completa, en lo que concierne a la informática con las
siguientes observaciones:
 Debe estar constituido por un conjunto finito de instrucciones,
terminadas en un tiempo finito.
 Cada una de sus operaciones es discreta y no continua.
 Es un procedimiento determinista y no probabilista.
 Necesita la presencia de un operador (persona o máquina) y de un
soporte de memoria (para reglas, datos y resultados parciales).
En otra definición, dada por Knuth en "The art of computer programing.", se
agrega:
 Debe ser finito y terminar en número finito de operaciones.
 Debe ser definido y preciso, es decir, no ser ambiguo.
 El campo de datos de entradas debe ser preciso.
 Debe poseer al menos un resultado.
 Debe ser ejecutable, todas las operaciones deben poder ser
efectuadas exactamente y en un tiempo finito.
Si se tiene por lo tanto un problema concreto, hará falta formalizar un
enunciado algorítmico que en primera instancia es en lenguaje natural, y luego se
expresa bajo la forma de un esquema de bloques, o diagrama de flujo, esto es: un
gráfico (puede ser a mano alzada) en donde se representan los pasos necesarios a
seguir, y el orden en que se deben dar, para resolverlo.
De éste se pasará a la escritura del programa, mediante un lenguaje
computacional, y a la resolución verdadera y propia del problema. Es decir, un
programa es un algoritmo desarrollado para resolver un problema.
No existe método para descubrir un algoritmo necesario para la resolución de
un problema nunca resuelto. La formulación de un algoritmo nuevo es un acto creativo
que depende de la inteligencia, intuición, la lógica y experiencia. Durante la formación
de un algoritmo podemos darnos cuenta de que el problema no admite soluciones, no
porque no existan, sino porque no se pueden encontrar en forma algorítmica. En caso
de que no existan algoritmos para la solución de un problema, es posible que pueda
ser dividido en partes algorítmicamente resolubles y en partes que no lo son, y operar
después sobre estas últimas con otros métodos de análisis.
Básicamente, hacemos en primer lugar un diagnóstico de situación,
planteamos hipótesis de resolución (pasos a seguir, lenguaje más adecuado para
expresarlo, etc.), valoramos los resultados y hacemos las correcciones necesarias,
hasta que su funcionamiento resulte óptimo.
En algunos casos la solución de un problema se hace ensamblando algunos
algoritmos ya conocidos. Si nos damos cuenta de que un mismo problema admite más
de un algoritmo para resolverlo, tendrá preferencia el más económico (en sencillez y
velocidad).
Cada vez se admite más la idea de que los métodos algorítmicos son propios
de cualquier campo de estudio. Se pueden encontrar en los cálculos aritméticos más
simples o, incluso, en un análisis gramatical, aún sin que se reconozcan como tales.
Si consideramos que un ordenador realizará estrictamente lo que nosotros le
hayamos ordenado, y en la misma secuencia en que se lo indiquemos, el algoritmo
debe expresar, de forma muy clara, la secuencia de acciones elementales a seguir
para la resolución de un problema.
Además, si pretendemos que el algoritmo sea independiente de los datos,
deberá prever los distintos datos valores que estos puedan tomar y las diferentes
alternativas lógicas que se pueden plantear.
Expresiones de un algoritmo.
Para expresar un algoritmo, podemos utilizar distintos métodos o lenguajes:
 Lenguaje común: Expresando el algoritmo en un lenguaje que
utilizamos normalmente para hablar.
 Tablas de decisión: Es un método para asociar, en forma de
tabla, las condiciones que contempla el algoritmo y las acciones
que deben emprender en cada una de ellas.
 Esquema de bloques o Diagrama de flujo: Organigramas. Es un
lenguaje de símbolos gráficos.
 Pseudocódigos: Utilizado para describir mediante frases en
lenguaje común, instrucciones de lenguaje de programación y
palabras clave que definen las estructuras básicas.
 Lenguajes de programación: Expresión de un algoritmo en
forma comprensible para el ordenador. Aquí, es de conveniencia
dedicar un pequeño apartado acerca de ellos:
Los lenguajes de programación.
Los lenguajes de programación forman parte de los llamados lenguajes
artificiales o pseudo-lenguajes, en contraposición a los lenguajes naturales que en
cada lugar habla el hombre.
Como todo lenguaje, posee un alfabeto propio, una semántica determinada y
reglas sintácticas específicas que posibilitan que cada línea de un programa posea un
significado unívoco, preciso, no ambiguo ni vago, para que los datos puedan
procesarse en forma confiable y predecible.
Existen 3 niveles de lenguaje:
 Lenguajes de bajo nivel:
o Lenguaje binario absoluto ( código maquina)
o Lenguaje de assembler o lenguaje simbólico de máquina.
 Lenguajes de alto nivel.
Existen también programas traductores:
 Compiladores.
 Intérpretes.
Los 2 primeros son particulares de cada máquina, mientras que los lenguajes
de alto nivel son independientes de la C.P.U. que los ejecutará.
Lenguaje binario absoluto ( código maquina).
En el panel frontal de las primeras computadoras, existía un conjunto de llaves
“si-no” que permitían formar cada combinación binaria que hacía falta escribir en la
Memoria Principal (MP). Así se formaban y escribían en posiciones sucesivas de
memoria las combinaciones que constituían el programa a ejecutar y los datos a
procesar.
Algunos de los inconvenientes de la codificación en absoluto son: dificultad
para recordar y manipular los códigos de operación y direcciones como números
binarios, la carga de instrucciones y datos en MP, leídos desde un papel, es lenta y
propensa a errores de trascripción, es engorroso rastrear errores con las direcciones
en binario y ubicados los errores, la corrección puede significar volver a escribir todo el
programa nuevamente.
Es así, que surge el primer lenguaje simbólico:
Lenguaje de assembler o lenguaje simbólico de máquina.
Esta forma de programar significó indudablemente un gran adelanto al aliviar
al programador de una serie de asignaciones que antes debía establecer y que ahora
se encargará de hacerlo el ensamblador.
Conviene tener presente que el nombre Assembler tiene 2 acepciones: Una de
ellas se refiere al programa traductor “ensamblador” que pasa a lenguaje binario
(código de máquina) los programas escritos en lenguaje de bajo o de alto nivel. La otra
acepción se refiere a los lenguajes de bajo nivel, simbólicos de máquina, a los que
también se los llama “assembler”.
Se denomina programa fuente a la forma simbólica inicial, de codificar un
algoritmo que ejecutará la computadora, legible para las personas, que al traducirse a
lenguaje binario se transforma entonces en programa objeto, de tal forma que un
programa objeto es igual al programa fuente traducido a código máquina.
Lenguajes de alto nivel
Los lenguajes de alto nivel permiten, en gran medida, solucionar las
dificultades antes mencionadas, constituyendo un adelanto con respecto a los
lenguajes de bajo nivel. También se los denomina “lenguajes orientados al problema”,
en el sentido que el programador sólo debe pensar cómo describir su solución, sin
tener presente simultáneamente las características del hardware que realizará el
proceso de datos.
Un lenguaje de alto nivel permite un mayor grado de expresión que uno de
assembler y más flexibilidad, dado que cada sentencia permite decir más cosas, por
poseer una estructura que obedece a determinado vocabulario, signos de puntuación y
gramática, su estructura es relativamente similar al lenguaje natural.
Respetando estos elementos, el programador puede construir sentencias que
equivalen a muchas instrucciones de máquina. Tengamos en cuenta entonces que
reservamos el término instrucción para usarlo en relación con las acciones que se
ordenan ya sea en lenguaje simbólico de máquina (assembler) o en código máquina
(binario); mientras que la palabra sentencia o línea se empleará para cada uno de los
pasos en que se expresa un algoritmo en un lenguaje de alto nivel.
Una sentencia o línea también puede denominarse macroinstrucción en el
sentido que equivale a una secuencia de instrucciones de máquina. En cambio en
assembler cada instrucción es como una palabra aislada, directamente traducible a
código binario o de máquina.
El uso de lenguajes de alto nivel conlleva algunas ventajas:
 Mayor capacidad expresiva.
 Muchos lenguajes de alto nivel, son tan parecidos al lenguaje natural, o
tienen herramientas de tipo icónico (gráfico), como los que corren bajo
Windows, que permiten una programación fácil, casi intuitiva, accesible
aún para quienes no son programadores expertos.
 Mayor velocidad de programación, ya que requiere un menor número de
líneas para escribir un programa.
 Independencia respecto de la máquina, pues hace abstracción de detalles
del hardware. En assembler, los datos del equipo, como procesadores o
interfaces que se usen, deben modificarse si se cambia de modelo de
computadora.
 Mayor vida media de los programas.
Pero, a pesar de ello no debemos perder de vista que presentan algunas
desventajas:



La traducción de lenguaje de alto nivel a código de máquina produce
programas con más instrucciones que las de programas equivalentes
desarrollados por un programador experto en assembler.
Mayor tiempo de ejecución del programa.
Requiere un mayor gasto de memoria principal.
Programas traductores: los compiladores y los interpretes.
La existencia de un lenguaje de alto nivel supone, como contrapartida, un
programa procesador del mismo capaz de traducir cada sentencia del programa fuente
(escrito en el lenguaje de alto nivel) en un conjunto de instrucciones en código binario
o de máquina.
Un programa compilador va traduciendo cada una de las líneas del programa
fuente para producir un módulo o programa objeto, que luego deberá ser montado con
otros mediante un editor antes de ejecutarse.
El proceso de traducción que realiza un compilador es sumamente complejo
dado que debe ser capaz de pasar de palabras en lenguaje natural o expresiones
algebraicas que forman una sentencia, a decenas de instrucciones de máquina.
Existe otro tipo de programas que efectúan esta misma tarea de traducción de
otra forma. Se trata de los interpretes. El intérprete es un programa que toma cada
sentencia del programa fuente, la traduce, igual que un compilador, en una secuencia
de instrucciones en código de máquina y a continuación permite que se ejecute dicha
secuencia. Luego pasa a la siguiente sentencia y así sucesivamente, esto significa que
la traducción se lleva a cabo durante el proceso de ejecución del programa.
Si una sentencia presenta algún error gramatical no se traduce, e
inmediatamente se interrumpe la ejecución del programa en esa acción, indicándose
en pantalla el error cometido. Luego de corregirlo, el programador ordena la
continuación de la traducción-ejecución de su programa, a partir del número de
sentencia corregida, con lo cual el intérprete volverá a procesar en la forma descripta.
El programa intérprete, una vez que ejecutó la secuencia de instrucciones
correspondiente a la sentencia que tradujo, no la guarda en la MP, sino que ese lugar
es ocupado por la secuencia siguiente que va a ser traducida. Esto es, el intérprete no
genera módulo objeto, por lo que no necesita editor para el montaje. A diferencia del
compilador, que a partir del programa fuente genera otro programa en código objeto.
Por lo tanto, cada vez que se quiere ejecutar un programa que usa intérprete,
éste debe estar cargado junto con el programa en MP, para traducirlo
simultáneamente y permitir la ejecución de cada sentencia traducida. El intérprete
sería como esas personas que en una conferencia traducen frase por frase. El
traductor debe estar presente durante todo el tiempo.
En cambio el compilador sólo está en MP junto con el programa fuente durante
el proceso de traducción. Una vez traducido y depurado, el programa objeto se guarda
en memoria auxiliar codificado en binario, ocupando menos lugar que el programa
fuente correspondiente. Cuando se necesita dicho programa se lo carga en MP y se
ordena su ejecución, sin necesidad que esté acompañado por ningún otro. Así el
compilador sería como esas personas que traducen libros, una vez que el libro queda
enteramente traducido, no se necesita más de su trabajo.
De lo expuesto anteriormente podemos deducir que un algoritmo programado
en un lenguaje con intérprete proporciona los resultados más lentamente que cuando
se programa con un lenguaje con compilador. Esto no se debe a que un lenguaje sea
más lento que otro, sino que la interpretación siempre supone un tiempo de traducción
que se suma al de ejecución, mientras que un programa compilado ya está traducido
antes de ejecutarse.
Sin embargo los intérpretes brindan la posibilitar de detectar errores con mayor
rapidez y permite que los mismos se corrijan con más facilidad, pues no es necesario
esperar a que se traduzca todo el programa fuente para conocer los errores léxicos o
sintácticos.
PROGRAMACION ESTRUCTURADA
De los conceptos expresados hasta el momento podemos decir que un
programa es un conjunto de instrucciones ordenadas secuencialmente e interpretables
por el ordenador, que le indican el trabajo a realizar para la resolución de un problema.
Programar, entonces, es desarrollar un conjunto de instrucciones para formar un
programa.
Elementos de un programa
En un programa podemos identificar cuatro elementos importantes:
El objetivo: Es la tarea que se debe realizar cuando se ejecute el programa.
El programador: Es el encargado de elaborar el plan o programa.
Las instrucciones: Constituyen el núcleo del programa; como dijimos, un
programa se compone de una secuencia de frases escritas, instrucciones, según las
convenciones de un lenguaje artificial, que pueden ser:
 Imperativas: ordenan acciones a ejecutar.
 Declarativas: expresan los elementos que se utilizarán.
El ejecutor: Es aquél a quien corresponde el seguimiento de las instrucciones
preparadas por el programador.
Pasos para armar un programa.
Cuando nos proponemos escribir un programa en determinado lenguaje
primero debemos hacer el algoritmo que describa cuáles serán los pasos necesarios
para resolver el problema. Posteriormente se escribe el programa en el lenguaje
elegido y en un tercer momento la computadora ejecutará las instrucciones que
componen el programa resolviendo concretamente el problema planteado.
En la programación estructurada, los programas son descompuestos en sus
partes constituyentes. Las partes más simples son las instrucciones, y normalmente se
agrupan en pequeñas organizaciones llamadas estructuras, rutinas o subrutinas.
Rutina: parte de un programa, con sentido lógico propio, que se incorpora al
programa de la aplicación para ser desarrollado en condiciones especiales (Ver más
adelante, los ejemplos de estructuras condicionales en BASIC).
Subrutina o subprograma: conjunto de sentencias que se utiliza en varios
puntos del programa, o bien que es susceptible de ser insertada en diferentes
programas (Ver en la unidad 8, los ejemplos de modularidad en LOGO).
Cada lenguaje tiene su tipo de instrucciones o sentencias, así como también
su forma de programar. los primeros lenguajes fueron de tipo textual, y secuencial, el
programador debía escribir las instrucciones o sentencias secuencialmente, es decir,
en el orden en que debían ejecutarse dichas órdenes. Actualmente disponemos de
lenguajes más complejos en su construcción pero que hacen más fácil la
programación incluso para quienes no son programadores experimentados, ya que es
de tipo visual (por lo que su uso resulta más intuitivo), las herramientas se representan
con íconos, así que no debemos recordar numerosas y difíciles sentencias; se basan
en la programación orientada a objetos, es decir, son modulares, cada objeto del
programa se programa independientemente. Para comprender cómo es el proceso de
programación daremos algunos ejemplos en lenguaje BASIC y lenguajes visuales.
LIST: Nos permite leer el programa y modificarlo. Puede ser reemplazado por
F1.
SAVE " NOMBRE: Sirve para almacenar el programa en un disquete. Además
de la instrucción se debe aclarar cuál es el nombre del programa.
LOAD "NOMBRE: Junto con el nombre del programa, sirve para transferir el
programa del disquete a la memoria RAM, entonces ya con la instrucción RUN se
puede hacer correr.
CLS: Limpia la pantalla.
LOCATE (y x): Se imparte junto con las coordenadas (y , x) y permite ubicar
al cursor en un determinado punto de la pantalla. (Aquí los valores que se asignen a x
e y serán los argumentos)
PRINT “leyenda: Indica que debe imprimir en pantalla alguna leyenda que
debe ir entre comillas. Puede reemplazarse la palabra PRINT por el caracter ?.
FOR ... NEXT: Es una estructura que se utiliza cuando es necesario repetir la
ejecución de órdenes intermedias que se encuentran entre ellas. Lleva argumento, por
ejemplo: Para que en pantalla aparezcan números del 1 al 70, como un listado:
Lenguaje BASIC.
El lenguaje BASIC es un lenguaje de alto nivel, de tipo imperativo, es decir que
está formado por una serie de órdenes o sentencias. Es necesario tener en cuenta dos
cosas para expresar en forma correcta el programa: el vocabulario y las reglas que
permiten la estructuración correcta, tanto de la instrucción, como del programa (es
decir, la sintaxis).
El BASIC puede ejecutarse de dos maneras: en forma inmediata o directa y en
forma de programa.
El empleo directo de sentencias en BASIC permite utilizar la computadora para
ejecutar una o varias operaciones aritméticas y ver el resultado en forma inmediata,
como con una calculadora. Para ello, escribimos la instrucción y apretando ENTER
obtenemos la respuesta. Si escribimos un número de línea, esto significará que la
instrucción forma parte de un programa, y dicha instrucción sólo se ejecutará en el
orden que le corresponda, cuando se haga correr todo el programa, con la orden RUN.
Cuando se trata de un programa, las distintas líneas que lo componen están
en forma secuencial, a menos que en alguna línea se encuentre una orden en BASIC
que determine lo contrario. Cada línea de un programa recibe el nombre de sentencia,
y contiene una o varias instrucciones.
Una sentencia se compone de tres elementos:
 Un número de línea.
 Una orden en BASIC.
 Uno o varios argumentos (un valor que complementa a la orden).
Para diseñar un programa en BASIC generalmente se hace un planteo
algorítmico por medio de un diagrama de flujo y luego es codificado según
instrucciones en BASIC.
Sentencias más utilizadas en versión GWBASIC:
RUN: (Correr) Hace correr el programa, es decir, que funcione. Puede
reemplazarse por F2.
En BASIC:
120 FOR N= 1 TO 70
130 PRINT N
140 NEXT N
Significa:
 Para un valor entre 1 y 7
 Imprime (sale en pantalla) el valor, por ej.: 1
 Cuenta el próximo número para imprimir.
IF ... THEN ... : Otra estructura, pero de tipo condicional (si… entonces…):
Expresa una relación entre cierta condición y una determinada acción IF (condición)
THEN (acción); la condición es el argumento que corresponde a la parte IF de la
instrucción, en tanto que la acción forma el argumento de la parte THEN (si...
entonces...).
Por ejemplo:
En BASIC:
18 IF A$ = 293589 THEN GOTO 100
19 …(otras sentencias)
20 …
21 …
…
…
100 PRINT “Acceso denegado.”
Significa:
 En la línea 18 del programa, dice
que si el valor ingresado es 293589
(una clave de acceso, por ejemplo,
de una tarjeta de crédito, un número
de socio de Obra Social, etc. Entonces, vaya a la línea 100.
 En la línea 100 se ordena imprimir
en pantalla la leyenda “Acceso
denegado”
GOTO: (significa: ir a…)Tiene como argumento un número de línea del
programa (en el ejemplo anterior, es 100) y produce la transferencia de ejecución del
programa a este número de orden, en el ejemplo, se la línea 18 pasa a la 100, en vez
de seguir la secuencia 19, 20, etc.
Ejemplo en un programa.
Para programar una clave secreta de acceso a algún sitio (nuestra
computadora, un documento privado, una cuenta de banco, una cuenta de internet,
etc), para que nadie pueda acceder a ese lugar si no tiene la clave: Supongamos que
nuestra palabra clave sea PEPE.
En BASIC
Traducción a lenguaje natural:
1 CLS
10 PRINT: "POR FAVOR INGRESE
LA CLAVE"
20 INPUT A$
 Borra la pantalla.
 Aparece en pantalla la leyenda “POR FAVOR
INGRESE LA CLAVE”.
30 IF A$ = "PEPE" THEN 100
50 GO TO 1
100 CLS
110 PRINT: "PROCESO
FINALIZADO"
200 END
 Se prepara el cursor para que ingrese la variable (la
clave).
 Si la clave ingresada es PEPE, se va a la línea 100 y
continúa ejecutándose hasta el final. Si no es PEPE,
sigue leyendo la siguiente línea, la 50.
 Vuelve a la línea 1 para recomenzar.
 Se borra la pantalla.
 Aparece el pantalla la leyenda “PROCESO
FINALIZADO”.
Cada ícono representa a una
aplicación y que se puede
“abrir” mediante un doble-clic
del mouse.
 Finaliza el programa.
El uso de conocimientos médicos en programas escritos en lenguaje BASIC,
puede considerarse como un antecedente que facilita la visión del empleo de la
computadora como un valioso auxiliar intelectual, y no sólo como un instrumento de
gran capacidad para el manejo de números y datos de tipo administrativo.
Programación Visual
La revolución causada por las computadoras tomó un nuevo rumbo cuando los
diseñadores de sistemas operativos decidieron dar a sus productos una marcada
apariencia visual, lo que trajo como resultado que el funcionamiento de las
aplicaciones (los programas) se realizara, en la medida de lo posible, con símbolos y
componentes gráficos, tal como podemos apreciarlo en Windows, donde las
aplicaciones se representan mediante íconos, lo que hace que sea más fácil operarlos,
en forma intuitiva.
Los lenguajes más difundidos son el VisualBASIC, el ToolBook, el Neobook, y
dentro de los lenguajes derivados del LOGO, como veremos en la Unidad VIII, se
encuentran el LOGO Gráfico y el Micromundos.
El usuario, sin tener que recordar ninguna instrucción, se vale del mouse,
haciendo un ligero “doble-clic” sobre el ícono, y la aplicación comienza a ejecutarse. El
ejemplo más claro de un programa diseñado bajo esta estructura es el Sistema
Operativo Windows, un entorno “amigable” para el usuario:
Gráfico: Windows98 (Interfaz Gráfica del Usuario).
Una aplicación se define como el conjunto de programas que permite resolver
un problema. Se conoce también con el nombre de paquete.
Durante la ejecución de un programa, el contenido de la pantalla de la
computadora cambia a medida que pasamos de un proceso a otro. Cada cambio trae
consigo la posibilidad de introducir datos o recibir información textual o gráfica.
Paralelamente al desarrollo de las interfases visuales, los métodos y técnicas
utilizados en el diseño y elaboración de programas, se organizaron alrededor de
conceptos novedosos. Esto permitió que más personas pudieran participar, no ya
como usuarios o clientes de programas estándar, sino como verdaderos creadores de
sus propias aplicaciones. Por eso, éstos lenguajes también se llaman “programas de
autor”, pues el usuario se convierte en autor de sus programas.
El modelo de programación visual hace énfasis en la interfaz gráfica del
usuario (GUI Graphical User Interface); para ello, utiliza ventanas como si fueran
varias hojas de papel, en donde es fácil desplegar información textual o gráfica. Cada
ventana es independiente y agrupa solamente aquellos componentes que sirven para
un mismo propósito.
Una observación más detenida muestra la capacidad que poseen los
sistemas operativos visuales para ejecutar varias aplicaciones simultáneamente,
realizar transferencia de datos entre aplicaciones, enlazar con otras computadoras en
la red y utilizar periféricos de manera transparente para el usuario (el usuario no debe
encargarse de detalles complejos, de ellos se encarga el Sist. Operativo).
El ícono “Imprimir” permite, simplemente con un clic,
que el documento se imprima, sin tener que
especificar qué parte del documento va a imprimirse,
en qué impresora, cuántas copias, etc.
Anteriormente vimos a la programación estructurada como una metodología
que permite acometer cualquier tarea de programación existente. La programación
orientada a objetos, más avanzada, no solo contiene a la anterior, sino que introduce
las nociones de orden y jerarquía, permitiendo clasificar todos los elementos de un
problema en familias que se relacionan, actúan unas sobre otras y forman la base de
toda la programación visual.
Los objetos son entidades que podemos distinguir; de manera clara y definida;
ejemplos de objetos son: una persona, un libro, una computadora o cualquier cosa que
podamos percibir con nuestros sentidos. En los programas de los que estamos
hablando, los objetos son: Los botones, los sonidos, el fondo de la pantalla, un un
color, etc. Los objetos tienen en su naturaleza tres aspectos que debemos considerar:
propiedades, métodos y eventos.
Una propiedad es una característica observable en un objeto. Las propiedades
se reconocen porque describen un aspecto del objeto que podemos medir con una
escala establecida previamente (por ejemplo las dimensiones de un dibujo en pixels, si
un cuadro de diálogo va a incluir un campo de texto, el color de un botón, etc..). A cada
propiedad se le asigna un valor que permite identificar de manera única al objeto. Las
propiedades son el primer aspecto que debemos considerar de un objeto, y responden
a la pregunta ¿cómo es?.
Un método se define como el conjunto de acciones que un objeto debe realizar
para conseguir un propósito. Son la parte viva e interesante de un objeto. Los métodos
se emplean habitualmente para modificar las propiedades del objeto mismo o de otros
objetos. Al modificar una cualquiera de sus propiedades, se altera su apariencia y
genera uno o varios cambios que el usuario de la aplicación puede percibir. (Por
ejemplo: un cambio de color en el borde de un botón da la apariencia de haber sido
presionado), Los métodos son el segundo aspecto que debemos considerar de un
objeto, y responden a la pregunta: ¿Qué hacen? Todos los objetos se relacionan con
el mundo que los rodea. Esto significa que ningún objeto está aislado, y que recibe
siempre el influjo de otros objetos. En el ejemplo, la presión de un botón puede hacer
mover otro objeto.
Llamamos evento al estímulo que un objeto ejerce sobre otro objeto.
Volvemos al ejemplo: el botón tomó el aspecto de presionado, porque había sido
presionado con un clic del mouse, lo que produjo también que otro objeto se moviera.
Los eventos son el tercer aspecto que debemos considerar de un objeto y responden a
la pregunta: ¿ante qué reacciona?.
En la programación visual debemos “enseñarle” a un objeto las acciones que
debe ejecutar cuando se presente un evento: no hacerlo implica que el objeto no
reaccionará cuando el evento ocurra. Se denomina programación de la respuesta ante
un evento, al conjunto de acciones (que el programador elige) que un objeto debe
realizar ante la aparición de un evento.
Otras características de la programación orientada a objetos.
Encapsulamiento: Un objeto está separado del medio que lo rodea por algún
tipo de envoltura. Esta separación es la que determina la unidad del objeto, lo convierte
en algo independiente. La envoltura oculta los detalles relacionados con la
“construcción interior del objeto”, lo que implica que algunos métodos y propiedades en
un objetos son privados, es decir, útiles únicamente dentro del objeto y desconocidos
por quien utiliza el objeto; los restantes son públicos, y los programadores los emplean
para cambiar el estado del objeto.
Herencia: Un objeto es heredero de otro cuando posee todas sus
propiedades, todos sus métodos y reconoce todos sus eventos, y contiene
propiedades y eventos adicionales que le son propios. Por ejemplo, si seleccionamos y
copiamos un botón que sirve para activar una música mediante un clic, al pegarlo en
otra parte, el segundo botón poseerá las mismas propiedades (tamaño, forma, color,
etc.) del primero, sus métodos (activar una música), y reaccionará ante los mismos
eventos (un clic). El modelo de programación visual permite así organizar las familias
de objetos en un orden jerárquico. Se define entonces, la herencia como la
característica que tienen los objetos de derivarse unos de otros.
Descargar