Você está na página 1de 44

PLANTEL 6 VICENTE GUERRERO

SUBDIRECCIN ACADMICA

ACADEMIA DE TECNOLOGAS DE LA INFORMACIN Y COMUNICACIN

CAPACITACIN EN INFORMTICA
ASIGNATURA DE LGICA COMPUTACIONAL Y PROGRAMACIN




GUA DE ESTUDIO PARA PRESENTAR
EL EXAMEN DE ACREDITACIN ESPECIAL


PERODO 2010-B









Profr. Jos Alejandro Albarrn Guzmn







NOVIEMBRE DE 2010
2
Presentacin

En el marco del Plan de Estudios del Colegio de Bachilleres, la Capacitacin en Informtica tiene
como finalidad brindarte un acercamiento al campo laboral, a travs de desarrollar procesos de
trabajo tales como uso de aplicaciones de tipo general o especfico, diseo de sistemas y bases de
datos, as como el manejo de redes y la lgica computacional para plantear soluciones a
problemas relacionados con la informtica.

Al egresar de esta capacitacin podrs operar como el enlace entre usuarios de sistemas de
informacin y computadoras personales o conectadas en red, utilizando programas de aplicacin
general o especfica. De igual modo, podrs implementar sistemas elementales de informacin
utilizando tcnicas de anlisis y diseo de sistemas, bases de datos relacionales y herramientas de
programacin.

La presente gua de estudios de la asignatura Lgica Computacional y Programacin se ha
elaborado con el propsito de brindarte apoyo en la preparacin del examen de acreditacin
especial.

La gua se compone de varias secciones donde se abordan los conceptos generales que son
requeridos para la asignatura. Se cubren los temas relacionados con las tres metodologas
reconocidas hoy en da para la elaboracin de programas de cmputo, siendo stas la
Metodologa Lineal, la Metodologa Estructurada y la Metodologa Orientada a Objetos; sobre esta
ltima, se incluye como anexo un artculo elaborado por Luis R. Izquierdo sobre la programacin
orientada a objetos, con el propsito de ahondar sobre el tema. Una seccin es considerada para
la programacin en Visual Basic. Finalmente en la seccin 6, se incluyen una serie de ejercicios y
reactivos que abarcan los temas desarrollados en el curso con la finalidad de que ejercites y
apliques lo aprendido contestando dichos reactivos.

Esperamos que la Gua te sea de utilidad para sustentar el examen correspondiente.



3
Introduccin

La Informtica ha avanzado de manera muy importante en los ltimos aos, de tal forma que las
computadoras de hoy son porttiles con bateras recargables de larga duracin. A la par de esta
evolucin del hardware ha evolucionado tambin el software, definindose aplicaciones con
interfaces cada vez ms amigables con el usuario. Esta evolucin se ha dado al tratar de
acercarnos cada vez ms a los procesos que se realizan en nuestra vida cotidiana para resolver
problemas de cualquier ndole.

La asignatura de Lgica Computacional y Programacin es vital para entender que la elaboracin
del software requiere que el programador tenga un pensamiento lgico, razonado y sistemtico,
para plasmar dichos procesos de uso cotidiano en sentencias entendibles por la computadora y,
por ende, la utilizacin de sta como un medio electrnico para realizar tareas.

La asignatura de Lgica Computacional y Programacin pretende brindarte los elementos tericos-
prcticos de las metodologas de programacin, para desarrollar formas de pensamiento lgicas
que requiere esta disciplina, por lo cual se considera una de las asignaturas bsicas de la
Capacitacin.

La informtica nace como una solucin para resolver problemas, de tal forma que se definen
lenguajes de programacin para escribir instrucciones que la computadora pueda entender. En un
principio los lenguajes de programacin llamados de bajo nivel se acercaban mucho al lenguaje
nativo de las computadoras, basado en el cdigo binario y que se conoce como lenguaje mquina,
tal es el caso del lenguaje ensamblador; posteriormente fueron evolucionando dichos lenguajes a
un lenguaje ms cercano al humano como lo es el idioma ingls lo que requiere de un traductor a
lenguaje mquina, dichos lenguajes se conocen como lenguajes de programacin de alto nivel.

A partir de esta evolucin es como surgen las diferentes metodologas de programacin,
empezando por la programacin lineal, la cual resuelve problemas simples de una forma
secuencial. Con el paso del tiempo se ha visto que esta metodologa no siempre permite generar
programas grandes o complejos de una forma organizada, ya que el programador puede perder la
secuencia lgica del programa al revisar los cdigos generados para resolver dichos problemas.

Es as como surge la propuesta de una nueva metodologa orientada a resolver problemas
grandes de una forma estructurada, al segmentar un problema en problemas ms simples,
programando soluciones especficas para cada segmento o mdulo. De esta forma la
programacin estructurada permiti por primera vez realizar grandes programas de cmputo
organizados y estructurados, fciles de leer y corregir, esta metodologa sigue vigente hasta
nuestros das.

Al empezar a implementarse aplicaciones de tipo grfico, diseadas en lenguaje de programacin
lineal o estructurada, se ve la necesidad de evolucionar las metodologas de programacin a un
lenguaje de programacin que permita generar objetos grficos, que realicen tareas especficas sin
perder de vista la modularidad de los procesos. Es as como surge la programacin orientada a
objetos, la cual se fundamenta en la metodologa estructurada.


4
1. CONCEPTOS GENERALES

Para empezar a estudiar el tema de Lgica Computacional es necesario conocer previamente su
utilidad, la cual es que adquieras habilidades para resolver problemas informticos utilizando la
computadora, a travs de desarrollar un pensamiento lgico, sistemtico y razonado que te
permita proponer soluciones al elaborar algoritmos elementales, utilizando las diferentes
metodologas que existen para su desarrollo.

En nuestra vida cotidiana, cualquier actividad que realizamos la podemos describir con una serie
de acciones, tareas o pasos. Igualmente, siempre estamos valorando si dicha actividad va a lograr
lo que nosotros queremos, a partir de ir tomando decisiones durante el desarrollo de la misma, sin
perder de vista qu es lo que queremos lograr y qu requerimos para lograrla.

De esta misma forma podemos ver un proceso informtico, el cual nace a partir de un problema
que requiera del uso de la computadora. Para resolverlo se deber desarrollar un algoritmo, el cual
no es ms que un conjunto de actividades o procesos formados por una serie de instrucciones o
tareas organizadas de forma lgica, que nos permiten alcanzar un resultado o resolver un
problema.

Muchas veces aplicamos el algoritmo de manera inadvertida, inconsciente o automtica, ya que
son tantas las veces que se ha aplicado que difcilmente nos ponemos a enumerar los pasos para
alcanzar el objetivo, y por lo tanto lo hacemos en forma automtica.

Por otra parte, existe una gran cantidad de problemas que requieren de un anlisis profundo y de
un pensamiento flexible y estructurado para su solucin, como es el caso de la programacin,
donde convergen tcnicas y herramientas metodolgicas que permiten llevar a cabo la
construccin de algoritmos eficientes y por consiguiente la resolucin del problema.

Para poder llegar a la solucin de un problema deben considerarse las siguientes etapas:














Las caractersticas que los algoritmos deben reunir son:

a) Precisin. Los pasos a seguir deben ser claros y correctos.

b) Determinstico. Dado un conjunto de datos de entrada idnticos, debe arrojar siempre los
mismos resultados.

c) Finitud. El algoritmo, independiente de la complejidad del mismo, siempre debe ser de
longitud finita.

5
Para ejemplificar lo que se ha expuesto, considera el siguiente laberinto en donde solamente se
pude entrar por el lado sealado por la letra E y el objetivo es salir por el lado marcado con la letra
S, para realizar los movimientos dentro del laberinto solamente se pueden utilizar los que se
indican en el recuadro de movimientos vlidos:

E


Movimientos
vlidos





=



^ -



+



;



^









S


A continuacin se presenta una solucin al problema propuesto, observa con cuidado:

E
-

Movimientos
vlidos

+ = = = = =

-

=

-

^ -

-

+

-

;

+ = = =

^

-





-

+ = S


Si colocamos cada uno de los movimientos en una sola lnea obtenemos la siguiente secuencia de
movimientos o instrucciones:

- + = = = = = - - - - + = = = - - + =

que representa justamente a un algoritmo, es decir, un conjunto de pasos o instrucciones que
resuelven un problema.
6
Por otro lado, no es la nica solucin, considera el siguiente caso:

E
-

Movimientos
vlidos

+ = = = = =

-

=

-

^ -



+

-

;

-

^

+ =



-

+ = =

+ = = = S


Colocando los movimientos en una sola lnea como en el caso anterior se obtiene:

- + = = = = = - - - - + = - + = = + = = =

que representa otro algoritmo que resuelve el mismo problema anterior. Finalmente, considera la
siguiente solucin:

E
-

Movimientos
vlidos

+ = = = = =

-

=

-

^ -



+

- ; = =

;

+ = -

^

-



- ^

- ; = = = =

+ = = + = S


Acomodando nuevamente los movimientos en una sola lnea obtenemos:

- + = = = = = - - - + = ; = = - - ^ -
- + = = ; = = = = + =
7

que tambin representa otra solucin al problema dado, aunque sea ms larga y rebuscada
comparada con las anteriores. Todos estos casos son soluciones vlidas.

En los problemas de la vida real, las situaciones anteriores se asemejan mucho, es decir, los
problemas pueden tener varias soluciones vlidas y unas soluciones pueden ser mejores que
otras. En este sentido se procurar la solucin ptima.

Otra manera de elaborar algoritmos es enunciado los pasos. Por ejemplo, considera las
actividades que realizas seguramente todas las maanas desde que te levantas y asistes a la
escuela o al trabajo:

1. Levantarse
2. Dirigirse al bao
3. Desvestirse
4. Baarse
5. Secarse
6. Vestirse
7. Dirigirse a la cocina
8. Prepararse el desayuno
9. Desayunar
10. Lavar los trastes
11. Tomar las cosas necesarias para la escuela o el trabajo
12. Dirigirse al lugar para tomar el transporte
13. Solicitar la parada al transporte
14. Subirse al transporte
15. Esperar a que el transporte llegue al lugar de destino
16. Solicitar la parada del transporte
17. Bajarse del transporte
18. Dirigirse al lugar de destino escuela o trabajo
19. Entrar a la escuela o lugar de trabajo

Te puedes dar cuenta que existe una variedad de formas para elaborar los algoritmos siempre y
cuando cumpla con las caractersticas sealadas al principio de esta seccin. De esta forma una
receta de cocina por ejemplo, tambin es un algoritmo. Existen algoritmos grficos como los que
se desarrollan utilizando diagramas de flujos entre otros.

Histricamente hablando, el desarrollo de los algoritmos ha pasado por diferentes etapas
evolutivas llamadas metodologas, dentro de las cuales, hasta hoy se reconocen ampliamente tres
etapas, es decir tres metodologas:

Metodologa Lineal
Metodologa Estructurada
Metodologa Orientada a Objetos

y que se revisarn a continuacin.

8
2. METODOLOGA LINEAL

De las tres metodologas es la ms simple y natural ya que permite escribir algoritmos de una
forma secuencial, es decir, cada instruccin se ejecuta hasta que la anterior se haya realizado.

Visto grficamente su representacin sera la siguiente:





De esta manera los ejemplos tratados en la seccin anterior corresponden a esta metodologa.

La herramienta ms comn para representar este tipo de algoritmo basado en una metodologa
lineal es el diagrama de flujo, que no es ms que la representacin grfica por medio de smbolos.
Si el diagrama de flujo est completo y correcto, el paso del mismo a un lenguaje de programacin
es relativamente simple y directo.

Actualmente la metodologa lineal se aplica en la solucin de problemas pequeos, donde es
suficiente la definicin de los pasos en forma secuencial.

Por ejemplo, considera la solucin de la ecuacin lienal:

Ecuacin lineal Solucin Solucin

ax + b = 0 x = -b / a


Algoritmo:

1. Solicitar el valor de a y b
2. Calcular el valor de b/2a
3. Asignar a x el valor calculado en el paso 2
4. Termina el algoritmo



Considera ahora el caso para la ecuacin de segundo grado:













9


Algoritmo:

1. Solicitar los valores de a, b y c
2. Calcular el valor de b
2
4ac
3. Si b
2
4ac es negativo, la ecuacin no tiene solucin. Ir al Paso 6
4. Si b
2
4ac es igual a 0, la ecuacin tiene una sola solucin. Ir al Paso 8
5. Si b
2
4ac es mayor que cero, la ecuacin tiene dos soluciones. Ir al Paso 11
6. Como no existen las races cuadras de nmeros negativos, entonces no hay soluciones
7. Ir al Paso 16
8. Calcular el valor de b/2a
9. Asignar a x el valor calculado en el paso 8
10. Ir al Paso 16
11. Calcular la raz cuadrada de b
2
4ac
12. Calcular la solucin 1 sumando la raz cuadrada del paso 11 a -b y dividiendo entre 2a
13. Asignar a x el valor calculado en el paso 12
14. Calcular la solucin 2 restando la raz cuadrada del paso 11 a b y dividiendo entre 2a
15. Asignar a x el valor calculado en el paso 14
16. Termina el algoritmo



10
3. METODOLOGA ESTRUCTURADA

La metodologa de programacin estructurada se basa en cuatro tcnicas fundamentales que se
interrelacionan de manera estrecha:

Tcnica de segmentacin
Tcnica Top-Down
Estructuras de control
Pseudocdigo

que revisamos a continuacin.


Tcnica de Segmentacin

Esta tcnica plantea que un problema se puede dividir en problemas ms pequeos (mdulos) y
ms simples de resolver, de tal forma que la suma de las soluciones de cada problema sea el
resultado de la solucin total de ste.







Cada problema o mdulo se representa mediante un rectngulo con un nombre que lo identifica y
se relaciona con las funciones que realiza:



Mdulo A



Esta metodologa permite desarrollar algoritmos a travs de mdulos, los cuales realizan tareas
bien definidas.

11


Aplicando esta tcnica a los ejemplos anteriores podramos obtener los siguientes mdulos:


Solicita
Datos

Calcula
Raz
Cuadrada

Asigna
Valores


Actividades
en casa

Aseo
personal
Transporte Desayuno


De esta forma, el mdulo se define una sola vez y se llama tantas veces como sea necesario,
mediante el nombre que lo identifica.


Tcnica Top-Down

Esta tcnica se relaciona con la de segmentacin, ya que establece la divisin de un problema en
varios de menor tamao que se representan mediante mdulos que se vinculan de manera
jerrquica formando una estructura de rbol invertido como se ilustra en la siguiente figura:



















La tcnica Top-Down establece dos tipos de mdulos a saber: los mdulos y los mdulos control.

En el primer caso, son mdulos que contienen las instrucciones para que cumplan con el propsito
por lo que fueron diseados. En el caso de los mdulos control su funcin es la de controlar la
secuencia y orden en que debern ejecutarse los mdulos a los cuales controla.

El diagrama de Top-Down, se lee de arriba hacia abajo y de izquierda a derecha, la relacin de los
mdulos es jerrquica, es decir, el mdulo padre puede hacer uso de los mdulos hijos pero no
viceversa.
12

Entenderemos por mdulo padre al mdulo inmediato superior al mdulo actual y por mdulo hijo
al mdulo inmediato inferior del mdulo actual.

Una caracterstica adicional de la tcnica Top-Down, es la definicin del Mdulo Raz tambin
conocido como Mdulo Principal y corresponde al mdulo control que se define al principio del
rbol jerrquico como se aprecia en la figura anterior y del cual emanan las primeras
ramificaciones necesarias que aglutinan y unen a los mdulos que forman la estructura total.

Considerando que muchos de los procesos que se llevan a cabo en la vida real, se componen de
tres etapas fundamentales a saber:

Inicio - Proceso - Cierre

Es que se define el Diagrama Top-Down bsico que es aplicable a muchos de los problemas que
se presentan en la realidad:


















Para los ejemplos relacionados con la solucin de las ecuaciones matemticas, el diagrama Top-
Down que podran desarrollarse son los siguientes:

Ecuacin lineal















13

Ecuacin cuadrtica
























Para el caso del algoritmo que describe las actividades por la maana para ir a la escuela o al
trabajo, el diagrama Top-Down podra ser el siguiente:

























14
Estructuras de Control

Las estructuras de control se utilizan para controlar la secuencia y el flujo de ejecucin de
instrucciones o mdulos por lo que son de fundamental importancia en el desarrollo de los
algoritmos.

Se definen tres tipos de estructuras de control cuya representacin grfica se presenta a
continuacin:

Estructura secuencial:







Estructura condicional o de seleccin:












Estructura iterativa o de repeticin:












La estructura secuencial se caracteriza porque las instrucciones o los mdulos se ejecutarn uno
tras el otro, es decir uno a uno.

En el caso de la estructura condicional, se podr ejecutar el mdulo A o el mdulo B, es decir, uno
o el otro pero no los dos, dependiendo del resultado de la condicin. De otra forma, si la condicin
es verdadera entonces se ejecutar el mdulo A, de lo contrario se ejecutar el mdulo B.

En relacin con la estructura iterativa, el mdulo se ejecutar tantas veces mientras la condicin
sea verdadera como se puede apreciar en el diagrama. Lo anterior considera la posibilidad de que
el mdulo no se ejecute ni una vez, si es que la condicin desde un inicio resulte ser falsa.
15

Cabe sealar que en la estructura condicional e iterativa la condicin se refiere a una pregunta
cuyo resultado deber ser verdadero o falso. Por ejemplo, considera la siguiente pregunta: la
edad de la persona es mayor que 18 aos? Cuya respuesta depender de la edad que tenga la
persona; es decir, si tiene 25 aos, entonces la respuesta ser verdadera; por el contrario, si la
persona tiene 15aos, entonces la respuesta ser falsa. Otro ejemplo puede ser el siguiente: el
sueldo es mayor que $5,000.00? Donde nuevamente, el resultado depender del valor que tenga
el sueldo. Si el sueldo es de $6,500.00, entonces la pregunta ser verdadera. De otra forma,
digamos que el sueldo es de $3,500.00, entonces ser falsa.

Cabe sealar en este momento que una condicin tendr la siguiente estructura:

Operando 1 Tipo de relacin Operando 2

Donde Operando 1 y Operando 2 corresponde a los elementos que se relacionan mediante el tipo
de relacin conforme la siguiente tabla:

Tipo de relacin Significado
= Igual que
> Mayor que
>= Mayor o igual que
< Menor
<= Menor o igual que
<> Diferente a

De esta manera una condicin tal como: Estatura >= 1.80, significa preguntar si la estatura es
mayor o igual a 1.80 metros, otro ejemplo es el siguiente: Estatura < Limite, que equivale a
preguntar si la estatura es menor al Limite.


En este sentido, se establece que cualquier problema se puede resolver utilizando cualquiera de
las estructuras de control ya sea de manera individual o mediante una combinacin de ellas, como
se puede observar en los siguientes ejemplos:




















16






































17
Pseudocdigo

El pseudocdigo es una valiosa herramienta para desarrollar la solucin de un problema en
trminos de la metodologa estructurada en sus aspectos tcnicos, utilizando un lenguaje escrito
en espaol y algunas palabras tcnicas en ingls como apoyo en la identificacin de las
estructuras de control y que no considera la rigurosidad tcnica de los lenguajes de programacin
como por ejemplo Pascal o Visual Basic.

Lo anterior facilita la elaboracin de la solucin del problema y permite que prcticamente
cualquier usuario pueda comprenderla sin necesidad de que conozca algn lenguaje de
programacin o sea un experto en la elaboracin de programas.

Para definir un mdulo se utiliza la siguiente estructura:



MODULO: Nombre del mdulo

BEGIN

Conjunto de instrucciones del mdulo a ejecutar

END



En este caso, MODULO, BEGIN y END son palabras tcnicas que se utilizan para identificar al
mdulo as como el inicio (BEGIN) de las instrucciones y hasta donde llega (END).

Considera el siguiente ejemplo:



MODULO: Raz

BEGIN
Solicita datos a, b y c
Control Calculo
Asigna valores
END



En el ejemplo se muestra la definicin del mdulo Raz, en el cual se indica que se ejecuten los
mdulos Solicita datos a, b y c primero, despus el mdulo Control Calculo y por ltimo el mdulo
Asigna valores.
18

En el ejemplo anterior, te puedes dar cuenta que para delimitar una estructura secuencial se hace
uso de las palabras en ingls BEGIN y END, cuya traduccin al espaol es: INICIO y FIN como se
muestra en la siguiente estructura:



BEGIN

Conjunto de instrucciones a ejecutar

END



En el caso de la estructura de control condicional o de seleccin se utiliza la siguiente estructura
general:


IF condicin THEN

Conjunto de instrucciones o mdulos a ejecutar
cuando la condicin es verdadera

ELSE

Conjunto de instrucciones o mdulos a ejecutar
cuando la condicin es falsa

ENDIF



En este caso, se utilizan en la estructura las palabras en ingls: IF, THEN, ELSE y ENDIF, para
delimitar las diferentes partes de la estructura de control. Si se hace una traduccin se leera de la
siguiente manera: Si (IF) la condicin es verdadera entonces (THEN) ejecuta las instrucciones que
estn entre las palabras THEN y ELSE; de lo contario (ELSE), ejecuta las instrucciones que estn
entre las palabras ELSE y ENDIF.

El siguiente ejemplo ilustra su aplicacin:


IF Edad > 18 THEN

Despliega Es mayor de edad

ELSE

Despliega Es menor de edad

ENDIF


19
Al ejecutarse la instruccin dependiendo del valor de la condicin (Edad > 18), entonces despliega
el texto: Es mayor de edad, de lo contrario despliega el texto: Es menor de edad.

La estructura condicional a menudo presenta tambin la siguiente forma:



IF condicin THEN

Conjunto de instrucciones o mdulos a ejecutar
cuando la condicin es verdadera

ENDIF



Que se aplica cuando se desea que se ejecuten las instrucciones solamente cuando la condicin
sea verdadera, de lo contrario no ejecuta nada.

En el caso de la estructura de control iterativa se utiliza la siguiente forma:



WHILE condicin DO

Conjunto de instrucciones o mdulos a ejecutar
mientras la condicin es verdadera

ENDDO



Donde las palabras en ingls WHILE, DO y ENDDO delimitan las diferentes partes de la estructura
cuya traduccin directa se leera de la siguiente forma: Mientras (WHILE) la condicin sea
verdadera ejecuta (DO) el conjunto de instrucciones que estn entre las palabras WHILE y
ENDDO. Un ejemplo de su aplicacin es el siguiente caso:


WHILE Da de la semana <> Domingo DO
Despliega El da de hoy es un da laborable
ENDDO


Que despliega el texto El da de hoy es un da laborable mientras Da de la semana sea diferente
al Domingo.
20
Ejercicios de aplicacin

Como se mencion anteriormente, las cuatro tcnicas se relacionan en la construccin de la
solucin de un problema bajo la metodologa estructurada.

A continuacin resolvamos de manera conjunta el siguiente caso:

Caso I

A. Planteamiento del problema

Se requiere la elaboracin de un programa que calcule el importe a pagar a los trabajadores de
una empresa de acuerdo al nmero de horas trabajadas, considerando que el pago por hora es la
misma para todos los trabajadores. Adicionalmente, se les aplicar un descuento del 15% por el
concepto de impuestos.

B. Propuesta de la solucin

Para la definicin de la solucin se considera inicialmente que el pago por hora es el mismo para
todos los trabajadores, por lo que ste se solicita al principio de todo el proceso, posteriormente se
calcula el pago para cada trabajador considerando el total de horas trabajadas multiplicado por el
pago por hora, menos el 15% del pago total desplegndose los diferentes clculos realizados.

El diagrama Top-Down que corresponde a esta solucin es:


















21
C. Pseudocdigo

Se presenta a continuacin el pseudocdigo correspondiente a cada uno de los mdulos de la
solucin propuesta:


MDULO: Raz

BEGIN
Solicita Pago X Hora
Control Calculo
END



MDULO: Solicita Pago X Hora

BEGIN
Despliega Digita el pago por
hora
Captura PagoXHora
END


MDULO: Control Calculo

BEGIN
WHILE Otro calculo de Pago DO
Solicita Horas trabajadas
Calcula Pago
Despliega Pago
END



MDULO: Solicita Horas
trabajadas

BEGIN
Despliega Digita el total de horas
trabajadas
Captura Horas-trabajadas
END


MDULO: Calcula Pago

BEGIN
Pago = (Horas-trabajadas)
(PahoXHora)
Impuesto = (Pago) (15%)
Pago Neto =Pago - Impuesto
END


MDULO: Despliega Calculos

BEGIN
Despliega Pago, Impuesto y
Pago Neto
END



Caso II

A. Planteamiento del problema

Una librera aplica una poltica de descuentos en el precio de sus libros de acuerdo con el color de
la etiqueta adherida al libro con el precio correspondiente conforme la siguiente tabla:

Color Etiqueta % Descuento
Amarillo 5
Verde 10
Azul 15
Rojo 20


Se requiere la elaboracin de un programa que calcule el importe a pagar por los clientes que
compran uno o ms libros.




22
B. Propuesta de la solucin

Para este caso, se debe considerar el acumulado del clculo del importe a pagar de cada libro que
compra el cliente, por lo que este acumulado deber estar en ceros al inicio del proceso, de lo
contrario se estar acumulando el importe de los libros de otros clientes. Por otro lado, tambin se
debe definir el tipo de descuento segn el color de la etiqueta para el clculo del importe en cada
libro.

El diagrama Top-Down que corresponde a esta solucin es:



















23
C. Pseudocdigo

Se presenta a continuacin el pseudocdigo correspondiente a cada uno de los mdulos de la
solucin propuesta:



MDULO: Raz

BEGIN
WHILE Otro Cliente DO
Inicializa totales
Control Calculo
Despliega Importe total
END



MDULO: Inicializa totales

BEGIN
Importe Cliente = 0
END


MDULO: Control Calculo

BEGIN
WHILE Otro libro DO
Solicita Precio y Color
Define descuento
Acumula Pago
END


MDULO: Despliega importe total

BEGIN
Despliega Importe Cliente
END


MDULO: Solicita Precio y Color

BEGIN
Despliega Digita el Precio
Captura Precio
Despliega Digita el Color de la
etiqueta
Captura Color Etiqueta
END


MDULO: Define descuento

BEGIN
IF Color Etiq = Amarillo THEN
Porc = 0.05
ENDIF
IF Color Etiq = Verde THEN
Porc = 0.10
ENDIF
IF Color Etiq = Azul THEN
Porc = 0.15
ELSE
Porc =0.20
ENDIF


MDULO: Acumula Pago

BEGIN
Desc = Precio (Porc)
Importe Libro = Precio Desc
Importe Cliente = Importe Cliente
+ Importe Libro
END



24
4. METODOLOGA ORIENTADA A OBJETOS

La metodologa orientada a objetos se apoya en la programacin estructurada y utiliza sus
tcnicas para disear programas, se caracteriza por definir objetos con un determinado conjunto
de atributos y procedimientos que definen el comportamiento de los mismos.

Para entender mejor los conceptos relacionados con esta metodologa lee el artculo publicado en
Internet por Luis R. Izquierdo y que reproducimos en el Anexo I de esta Gua.


25
5. PROGRAMACIN CON VISUAL BASIC

Visual Basic es un lenguaje de programacin de alto nivel que incorpora elementos para
desarrollar programas conforme la metodologa orientada a objetos. En este sentido, Visual Basic
ofrece la posibilidad de desarrollar aplicaciones para ambientes en modo de texto (tipo consola),
Windows (modo grfico) e Internet (pginas web).

En particular nos enfocaremos al desarrollo de programas del tipo consola realizando los
siguientes pasos:

Entrar a la aplicacin de Visual Basic
Seleccionar la opcin Nuevo Proyecto de la pestaa Proyectos de la Pgina de Inicio
Asignar como nombre del proyecto en el cuadro de dilogo Nuevo Proyecto:

Consola1_Nmero del Equipo_Grupo

Seleccionar la pestaa Module1.vb del rea de trabajo
Aparecer en el rea de trabajo la estructura bsica de un programa en Visual Basic

Module Module1

Sub Main()

End Sub

End Module

Capturar el programa
Ejecutar el programa con la tecla F5 o el botn con la punta de flecha derecha.

Para introducir los programas debers tomar en cuenta las siguientes instrucciones que reconoce
Visual Basic:

Accin Sintaxis
Despliega un texto Console.Write (Texto)
Despliega un texto y pasa a la siguiente lnea Console.WriteLine (Texto)
Despliega una lnea en blanco Console.WriteLine()
Define una variable numrica Dim Nombre_Variable as integer
Define una variable de caracteres Dim Nombre_Variable as string
Despliega el contenido de una variable Console.Write (Nombre_Variable)
Despliega el contenido de una variable y pasa a
la siguiente lnea
Console.WriteLine (Nombre_Variable)
Lee del teclado Console.ReadLine()
Asigna a una variable desde el teclado Nombre_Variable = Console.ReadLine()
Asigna un valor a una variable Nombre_Variable = Valor
Multiplicacin de dos valores Valor1 * Valor2

26
Captura los siguientes programas, ejectalos y observa con cuidado los resultados que se pueden
observar en la pantalla.

Programa 1.
Sub Main()
Console.WriteLine("Hola estoy capturando desde el teclado")
Console.WriteLine()
Console.WriteLine("Esta es otra lnea nueva.")
Console.WriteLine()
Console.WriteLine("Mi nombre es: ")

Console.ReadLine()
End Sub

Programa 2.
Sub Main()
Console.WriteLine("Esta es la primera lnea")
Console.WriteLine("Ahora ponemos una lnea vaca")
Console.WriteLine()
Console.WriteLine("A continuacin escribimos un nmero")
Console.WriteLine(5891)
Console.WriteLine("Operaciones con nmeros 500 + 150")
Console.WriteLine(500 + 150)
Console.WriteLine()
Console.WriteLine("Resultado de la expresin lgica: 5 > 2")
Console.WriteLine(5 > 2)
Console.ReadLine()
End Sub

Programa 3.
Sub Main()
Dim Nombre As String
Dim Numero As Integer
Nombre = "Luis"
Numero = 15
Console.Write("He visto a ")
Console.Write(Nombre)
Console.Write(" transportando ")
Console.Write(Numero)
Console.WriteLine(" cajas")
Console.ReadLine()
End Sub

Programa 4.
Sub Main()
Dim LineaTexto As String
Console.WriteLine("Introducir un texto")
LineaTexto = Console.ReadLine()
Console.WriteLine()
Console.WriteLine("El usuario ha escrito la siguiente lnea:")
Console.WriteLine(LineaTexto)
Console.ReadLine()
End Sub





27
Para capturar los siguientes programas debes tomar en cuenta los siguientes elementos:

Accin Sintaxis
Despliega el contenido de una variable y pasa a
la siguiente lnea
Console.WriteLine (Nombre_Variable)
Lee del teclado Console.ReadLine()
Asigna a una variable desde el teclado Nombre_Variable = Console.ReadLine()
Asigna un valor a una variable Nombre_Variable = Valor
Multiplicacin de dos valores Valor1 * Valor2
Ejecuta un conjunto de instrucciones hasta que
la condicin sea falsa.

(Estructura de control DOWHILE)
While condicin

Cdigo

End While
Ejecuta las instrucciones que estn despus del
THEN y antes del Else si la condicin es
verdadera, de lo contrario se ejecutan las
instrucciones que estn despus del ELSE y
antes del End If.

(Estructura de control condicional)

If condicion Then
Cdigo A
Else
Cdigo B
End If

Programa 5

Sub Main()
Dim Resp As String
Dim Radio As Integer
Resp = "s"
While Resp = "s"
Console.WriteLine("")
Console.WriteLine("******************************")
Console.WriteLine("")
Console.WriteLine("CALCULO DEL AREA DE UN CIRCULO")
Console.WriteLine("")
Console.Write("Radio del crculo: ")
Radio = Console.ReadLine()
Console.WriteLine("")
Console.Write("El area del circulo es: ")
Console.WriteLine(3.1416 * Radio * Radio)
Console.WriteLine("")
Console.Write("Deseas hacer otro clculo? (s/n): ")
Resp = Console.ReadLine()
End While
End Sub

28
Programa 6:

Sub Main()
Dim Resp As String
Dim Radio As Integer
Dim Base As Integer
Dim Altura As Integer
Resp = "s"
While Resp = "s"
Console.WriteLine("")
Console.WriteLine("**********************************************")
Console.WriteLine("")
Console.WriteLine("CALCULO DEL AREA DE UN CIRCULO O UN TRIANGULO")
Console.WriteLine("")
Console.Write("La figura es un crculo? (s/n): ")
Resp = Console.ReadLine()
If Resp = "s" Then
Console.WriteLine("")
Console.WriteLine("La figura elegida es un crculo")
Console.WriteLine("")
Console.Write("Radio del crculo: ")
Radio = Console.ReadLine()
Console.WriteLine("")
Console.Write("El area del circulo es: ")
Console.WriteLine(3.1416 * Radio * Radio)
Else
Console.WriteLine("")
Console.WriteLine("La figura elegida es un tringulo")
Console.WriteLine("")
Console.Write("Base del tringulo: ")
Base = Console.ReadLine()
Console.WriteLine("")
Console.Write("Altura del tringulo: ")
Altura = Console.ReadLine()
Console.WriteLine("")
Console.Write("El area del triangulo es: ")
Console.WriteLine(0.5 * Base * Altura)
End If
Console.WriteLine("")
Console.Write("Deseas hacer otro clculo? (s/n): ")
Resp = Console.ReadLine()
End While
End Sub
29
Finalmente captura el programa 7 que incluye el uso de los mdulos y observa su gran parecido con la
estructura del pseudocdigo.

Programa 7

Module Module1
Dim Resp As Char
Dim CveTrab As String
Dim NumHrsTrab As Integer
Dim NumCar As Integer
Dim PrCar As Char
Dim Nivel As String
Dim PagoXHora As Integer
Dim Pago As Integer
Dim Impuesto As Integer
Dim Porc As Integer
Dim PagoNeto As Integer

Sub Main()
Resp = "s"
While Resp = "s"
SolicitaDatos()
ControlCalculo()
DespliegaPago()
Console.WriteLine()
Console.Write("Deseas hacer otro clculo? (s/n): ")
Resp = Console.ReadLine()
End While
End Sub

Sub SolicitaDatos()
Console.WriteLine("*******************************************")
Console.WriteLine()
Console.Write("Digita la Clave del Trabajador: ")
CveTrab = Console.ReadLine()
Console.WriteLine()
Console.Write("Nmero de horas trabajadas: ")
NumHrsTrab = Console.ReadLine()
End Sub

Sub ControlCalculo()
IdentifNivel()
IdentifPagoXHora()
CalculaPago()
IdentifImpuesto()
CalculaPagoNeto()
End Sub

Sub IdentifNivel()
NumCar = Asc(CveTrab)
PrCar = Chr(NumCar)
If PrCar = "B" Then
Nivel = "Basico"
End If
If PrCar = "T" Then
Nivel = "Tecnico"
End If

30
If PrCar = "P" Then
Nivel = "Profesional"
End If
End Sub

Sub IdentifPagoXHora()
If Nivel = "Basico" Then
PagoXHora = 100
End If
If Nivel = "Tecnico" Then
PagoXHora = 150
End If
If Nivel = "Profesional" Then
PagoXHora = 200
End If
End Sub

Sub CalculaPago()
Pago = NumHrsTrab * PagoXHora
End Sub

Sub IdentifImpuesto()
If Pago > 5000 Then
Porc = 25
End If
If Pago > 3000 Then
Porc = 20
End If
If Pago > 1000 Then
Porc = 15
Else
Porc = 10
End If
End Sub

Sub CalculaPagoNeto()
Impuesto = Pago * Porc / 100
PagoNeto = Pago - Impuesto
End Sub

Sub DespliegaPago()
Console.WriteLine()
Console.Write("Pago del trabajador: ")
Console.WriteLine(Pago)
Console.Write("Impuesto: ")
Console.WriteLine(Impuesto)
Console.Write("Pago Neto del trabajador: ")
Console.WriteLine(PagoNeto)
End Sub
End Module
31
6. EJERCICIOS PARA DESARROLLAR

A. Dado el siguiente laberinto encuentra tres rutas que te permitan llegar a la salida.

Cul de los tres algoritmos es el ptimo y explica por qu?

E


Movimientos
vlidos





=



^ -



+



;



^









S


Algoritmo: ______________________________________________________________________

E


Movimientos
vlidos





=



^ -



+



;



^









S


Algoritmo: ______________________________________________________________________





32
E


Movimientos
vlidos





=



^ -



+



;



^









S


Algoritmo: ______________________________________________________________________


B. Elabora el algoritmo de acuerdo con la metodologa lineal para las siguientes dos situaciones:

I. Elabora el algoritmo lineal para calcular el rea del trapecio:











.

II. Desarrolla el algoritmo que describe los pasos que sigues cuando consultas una
informacin en Google en un caf Internet.
33

C. Dados los valores que se indican en la siguiente tabla, define si las condiciones son verdaderas
o falsas:

a b c
Operando
1
Tipo de
relacin
Operando
2
Resultado
(V/F)
1 2 3 2 a + b -c = 0
2 3 1 a b + 4c <= 3 a -2c
2 2 3 5 >= 2 a + 3 b +c
2 3 2 a + b 2 c <> 2 a + b - c
1 3 2 a b - c < b 4ac
3 1 2 a b - c > b 4ac


D. Elabora el pseudocdigo que resuelve los dos problemas que se presentan a continuacin:


I El clculo de las soluciones de la ecuacin de segundo grado cuyo diagrama Top-Down se desarroll
en la pgina 13 de esta Gua.


II Calcular el pago que se debe hacer a los empleados de una fbrica de acuerdo al nmero de horas
trabajadas, si se considera que el pago por hora es de acuerdo a su nivel de especializacin que se
conoce por la primera letra de su clave conforme la siguiente tabla:

Nivel de
especializacin
Pago
por
hora
Clave del
trabajador
Bsico 100 B000
Tcnico 150 T000
Profesional 200 P000



E. Una vez que hayas ledo el artculo del Anexo I contesta las siguientes preguntas que se
relacionan con la metodologa orientada a objetos:

Cmo surge la metodologa orientada a los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Qu es la metodologa orientada a los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________




34
Qu son los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

A qu se refiere la identidad de los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

A qu se refieren las propiedades de los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

A qu se refieren los mtodos de los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Da un ejemplo de un objeto sealando su identidad, algunas de sus propiedades y mtodos

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Qu son los mensajes entre los objetos?

____________________________________________________________________________________
____________________________________________________________________________________

Cules son las tres partes de las que se forman los mensajes?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________





35
A qu se refieren las clases de objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Qu es una instancia de una clase?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Da un ejemplo de una clase de objetos y menciona tres instancias de esa clase.

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

A qu se refiere la herencia entre los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Qu es una superclases y una subclase en los objetos?

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Da un ejemplo de una superclase y subclase de objetos.

____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________



36
A N E X O I


INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS

Luis R. Izquierdo

INTRODUCCIN

Es importante aclarar desde un principio la diferencia que existe entre programacin orientada a
objetos y un lenguaje orientado a objetos.

La programacin orientada a objetos es una filosofa, un modelo de programacin, con su teora
y su metodologa, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos
es un lenguaje de programacin que permite el diseo de aplicaciones orientadas a objetos. Dicho
esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos
aprenda primero la filosofa (o adquiera la forma de pensar) y despus el lenguaje, porque
filosofa slo hay una y lenguajes muchos. En este documento veremos brevemente los
conceptos bsicos de la programacin orientada a objetos desde un punto de vista global, sin
particularizar para ningn lenguaje de programacin especfico.


UNA FORMA NUEVA DE PENSAR

Es muy importante destacar que cuando hacemos referencia a la programacin orientada a
objetos no estamos hablando de unas cuantas caractersticas nuevas aadidas a un lenguaje de
programacin. Estamos hablando de una nueva forma de pensar acerca del proceso de
descomposicin de problemas y de desarrollo de soluciones de programacin.

La programacin orientada a objetos surge en la historia como un intento para dominar la
complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a
esta complejidad ha sido empleando lo que llamamos programacin estructurada, que consiste en
descomponer el problema objeto de resolucin en subproblemas y ms subproblemas hasta llegar
a acciones muy simples y fciles de codificar. Se trata de descomponer el problema en acciones,
en verbos. En el ejemplo de un programa que resuelva ecuaciones de segundo grado,
descomponamos el problema en las siguientes acciones: primero, pedir el valor de los
coeficientes a, b y c; despus, calcular el valor del discriminante; y por ltimo, en funcin del signo
del discriminante, calcular ninguna, una o dos races.

Como podemos ver, descomponamos el problema en acciones, en verbos; por ejemplo el verbo
pedir, el verbo hallar, el verbo comprobar, el verbo calcular La programacin orientada a objetos
es otra forma de descomponer problemas. Este nuevo mtodo de descomposicin es la
descomposicin en objetos; vamos a fijarnos no en lo que hay que hacer en el problema, sino en
cul es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro
programa.

Los lenguajes de programacin tradicionales no orientados a objetos, como C, Pascal, BASIC, o
Modula-2, basan su funcionamiento en el concepto de procedimiento o funcin. Una funcin es
simplemente un conjunto de instrucciones que operan sobre unos argumentos y producen un
resultado. De este modo, un programa no es ms que una sucesin de llamadas a funciones, ya
sean stas del sistema operativo, proporcionadas por el propio lenguaje, o desarrolladas por el
mismo usuario.

37
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el elemento
bsico no es la funcin, sino un ente denominado precisamente objeto. Un objeto es la
representacin en un programa de un concepto, y contiene toda la informacin necesaria para
abstraerlo: datos que describen sus atributos y operaciones que pueden realizarse sobre los
mismos.

La programacin orientada a objetos es una nueva forma de pensar, una manera distinta de
enfocar los problemas. Ah radica la dificultad de aprender un lenguaje totalmente orientado a
objetos, como es Java, sin conocer previamente los pilares de la programacin orientada a
objetos. Hecha esta importante aclaracin, conviene destacar que Java, ms que un lenguaje
orientado a objetos, es un lenguaje de objetos. Java incorpora el uso de la orientacin a objetos
como uno de los pilares bsicos y fundamentales del lenguaje. Esto constituye una importante
diferencia con respecto a C++. C++ est pensado para su utilizacin como lenguaje orientado a
objetos, pero tambin es cierto que con C++ se puede escribir cdigo sin haber odo nada de la
programacin orientada a objetos. Esta situacin no se da en Java, dotado desde las primeras
etapas de su diseo de esta filosofa, y donde no cabe obviar la orientacin a objetos para el
desarrollo de programas, por sencillos que stos sean. Al contrario que en C++, en Java nada se
puede hacer sin usar al menos un objeto.


UN PRIMER EJEMPLO

Si nos detenemos a pensar sobre cmo se nos plantea un problema cualquiera en la realidad
podremos ver que lo que hay en la realidad son entidades (otros nombres que podramos usar
para describir lo que aqu llamo entidades son agentes u objetos). Estas entidades poseen un
conjunto de propiedades o atributos, y un conjunto de mtodos mediante los cuales muestran su
comportamiento. Y no slo eso, tambin podremos descubrir, a poco que nos fijemos, todo un
conjunto de interrelaciones entre las entidades, guiadas por el intercambio de mensajes; las
entidades del problema responden a estos mensajes mediante la ejecucin de ciertas acciones. El
siguiente ejemplo, aunque pueda parecer un poco extrao, creo que aclarar algunos conceptos y
nos servir como introduccin para desarrollarlos con profundidad.

Imaginemos la siguiente situacin: un domingo por la tarde estoy en casa viendo la televisin, y de
repente mi madre siente un fuerte dolor de cabeza; como es natural, lo primero que hago es tratar
de encontrar una caja de aspirinas.

Lo que acabo de describir es una situacin que probablemente no resulte muy extraa a muchos
de nosotros. Vamos a verla en clave de objetos: el objeto hijo ha recibido un mensaje procedente
del objeto madre. El objeto hijo responde al mensaje o evento ocurrido mediante una accin:
buscar aspirinas. La madre no tiene que decirle al hijo dnde debe buscar, es responsabilidad del
hijo resolver el problema como considere ms oportuno. Al objeto madre le basta con haber
emitido un mensaje. Continuemos con la historia.

El hijo no encuentra aspirinas en el botiqun y decide acudir a la farmacia de guardia ms cercana
para comprar aspirinas. En la farmacia es atendido por una seorita que le pregunta qu desea, a
lo que el hijo responde: "una caja de aspirinas, por favor". La farmacutica desaparece para
regresar al poco tiempo con una caja de aspirinas en la mano. El hijo paga el importe, se despide y
vuelve a su casa. All le da un comprimido a su madre, la cual al cabo de un rato comienza a
experimentar una notable mejora hasta la completa desaparicin del dolor de cabeza.

El hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta conseguir una
aspirina. Para ello entra en relacin con un nuevo objeto, la farmacutica, quien responde al
mensaje o evento de peticin del objeto hijo con la bsqueda de la aspirina. El objeto farmacutica
38
es ahora el responsable de la bsqueda de la aspirina. El objeto farmacutica lanza un mensaje al
objeto hijo solicitando el pago del importe, y el objeto hijo responde a tal evento con la accin de
pagar.

Como hemos podido ver, en esta situacin nos hemos encontrado con objetos que se
diferenciaban de los dems por un conjunto de caractersticas o propiedades, y por un conjunto de
acciones que realizaban en respuesta a unos eventos que se originaban en otros objetos o en el
entorno.

Tambin podemos darnos cuenta de que, aunque todos los objetos tienen propiedades distintas,
como el color del cabello, el grado de simpata o el peso, todos tienen un conjunto de atributos en
comn por ser ejemplos de una entidad superior llamada ser humano. A este patrn de objetos
(en nuestro caso ser humano) lo llamaremos clase.

Con este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las
clases, que no son ms que plantillas que definen las variables y los mtodos comunes a todos los
objetos de un cierto tipo. La clase ser humano tendr, entre sus muchas variables miembro o
variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de
nacimiento, etc. A partir de una clase se podrn generar todos los objetos que se deseen
especificando valores particulares para cada una de las variables definida por la clase. As,
encontraremos el objeto farmacutica, cuyo color de cabello es rubio, color de ojos azul, estatura
175 cm., peso 50 Kg., y as sucesivamente.

A continuacin veremos con ms detalle qu son los objetos, las clases, los mensajes y otros
conceptos bsicos de la programacin orientada a objetos.


QU ES UN OBJETO?

Un objeto no es ms que un conjunto de variables (o datos) y mtodos (o funciones) relacionados
entre s. Los objetos en programacin se usan para modelar objetos o entidades del mundo real (el
objeto hijo, madre, o farmacutica, por ejemplo). Un objeto es, por tanto, la representacin en un
programa de un concepto, y contiene toda la informacin necesaria para abstraerlo: datos que
describen sus atributos y operaciones que pueden realizarse sobre los mismos. La siguiente figura
muestra una representacin visual de un objeto.















Representacin visual de un objeto

39
Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) estn
expresados por las variables y los mtodos que componen el objeto respectivamente. Por ejemplo,
un objeto que modelase una bicicleta en el mundo real tendra variables que indicararan el estado
actual de la bicicleta: su velocidad es de 20 km/h, su cadencia de pedaleo 90 r.p.m. y su marcha
actual es la 5. Estas variables se conocen formalmente como variables instancia o variables
miembro porque contienen el estado de un objeto bicicleta particular y, en programacin orientada
a objetos, un objeto particular se denomina una instancia.

Adems de estas variables, el objeto bicicleta podra tener mtodos para frenar, cambiar la
cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendra que tener un mtodo para
cambiar su velocidad pues sta es funcin de la cadencia de pedaleo, la marcha en la que est y
de si los frenos estn siendo utilizados o no, entre otros muchos factores). Estos mtodos se
denominan formalmente mtodos instancia o mtodos miembro, ya que cambian el estado de una
instancia u objeto bicicleta particular. La siguiente figura muestra una bicicleta modelada como un
objeto:

















El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro del objeto y los
mtodos rodeando el ncleo y protegindolo de otros objetos del programa.

Este hecho de empaquetar o proteger las variables miembro con los mtodos miembro se
denomina encapsulacin. Este dibujo conceptual que muestra el ncleo de variables miembro del
objeto protegido por una membrana protectora de mtodos o funciones miembro es la
representacin ideal de un objeto y es el ideal que los programadores de objetos suelen buscar.
Sin embargo, debemos matizarlo. A menudo, por razones prcticas, es posible que un objeto
desee exponer alguna de sus variables miembro, o proteger otras de sus propios mtodos o
funciones miembro. Por ejemplo, Java permite establecer 4 niveles de proteccin de las variables y
de las funciones miembro para casos como ste. Los niveles de proteccin determinan qu objetos
y clases pueden acceder a qu variables o a qu mtodos.

De cualquier forma, el hecho de encapsular las variables y las funciones miembro relacionadas
proporciona dos importantes beneficios a los programadores de aplicaciones:

Capacidad de crear mdulos: El cdigo fuente de un objeto puede escribirse y mantenerse
independiente del cdigo fuente del resto de los objetos. De esta forma, un objeto puede
pasarse fcilmente de una parte a otra del programa. Podemos dejar nuestra bicicleta a un
amigo, y sta seguir funcionando.

40
Proteccin de informacin: Un objeto tendr una interfaz pblica perfectamente definida
que otros objetos podrn usar para comunicarse con l. De esta forma, los objetos pueden
mantener informacin privada y pueden cambiar el modo de operar de sus funciones
miembros sin que esto afecte a otros objetos que usen estas funciones miembro. Es decir,
no necesitamos entender cmo funciona el mecanismo de cambio de marcha para hacer
uso de l.


QU ES UN MENSAJE?

Normalmente un nico objeto por s solo no es muy til. En general, un objeto aparece como un
componente ms de un programa o una aplicacin que contiene otros muchos objetos. Es
precisamente haciendo uso de esta interaccin como los programadores consiguen una
funcionalidad de mayor orden y modelar comportamientos mucho ms complejos. Una bicicleta (a
partir de ahora particularizaremos) colgada de un gancho en el garaje no es ms que una
estructura de aleacin de titanio y un poco de goma. Por s sola, tu bicicleta (por poner una
bicicleta en concreto) es incapaz de desarrollar ninguna actividad. Tu bicicleta es realmente til en
tanto que otro objeto (t) interacta con ella (pedalea).
Los objetos de un programa interactan y se comunican entre ellos por medio de mensajes.














En ocasiones, el objeto que recibe el mensaje necesita ms informacin para saber exactamente
lo que tiene que hacer; por ejemplo, cuando se desea cambiar la marcha de una bicicleta, se debe
indicar la marcha a la que se quiere cambiar. Esta informacin se pasa junto con el mensaje en
forma de parmetro.

La siguiente figura muestra las tres partes que componen un mensaje:


1. El objeto al cual se manda el mensaje (TuBicicleta).
2. El mtodo o funcin miembro que debe ejecutar (CambiarDeMarcha).
3. Los parmetros que necesita ese mtodo (Marcha)









41













Estas tres partes del mensaje (objeto destinatario, mtodo y parmetros) son suficiente
informacin para que el objeto que recibe el mensaje ejecute el mtodo o la funcin miembro
solicitada. Los mensajes proporcionan dos ventajas importantes:

El comportamiento de un objeto est completamente determinado (a excepcin del acceso
directo a variables miembro pblicas) por sus mtodos, as que los mensajes representan
todas las posibles interacciones que pueden realizarse entre objetos.

Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir en un mismo
ordenador para mandarse mensajes entre ellos (y de esta forma interactuar).


QU ES UNA CLASE?

Normalmente en el mundo real existen varios objetos de un mismo tipo, o como diremos
enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas bicicletas que
existen en el mundo. Usando la terminologa de la programacin orientada a objetos, diremos que
mi bicicleta es una instancia de la clase de objetos conocida como bicicletas. Todas las bicicletas
tienen algunos estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos
mtodos (cambiar de marcha, frenar) en comn. Sin embargo, el estado particular de cada
bicicleta es independiente del estado de las dems bicicletas. La particularizacin de estos
atributos puede ser diferente. Es decir, una bicicleta podr ser azul, y otra roja, pero ambas tienen
en comn el hecho de tener una variable color. De este modo podemos definir una plantilla de
variables y mtodos para todas las bicicletas. Las plantillas para crear objetos son denominadas
clases.

Una clase es una plantilla que define las variables y los mtodos que son comunes para todos los
objetos de un cierto tipo.

En nuestro ejemplo, la clase bicicleta definira variables miembro comunes a todas las bicicletas,
como la marcha actual, la cadencia actual, etc. Esta clase tambin debe declarar e implementar
los mtodos o funciones miembro que permiten al ciclista cambiar de marcha, frenar, y cambiar la
cadencia de pedaleo, como se muestra en la siguiente figura:







42











Despus de haber creado la clase bicicleta, podemos crear cualquier nmero de objetos bicicleta a
partir de la clase. Cuando creamos una instancia de una clase, el sistema reserva suficiente
memoria para el objeto con todas sus variables miembro. Cada instancia tiene su propia copia de
las variables miembro definidas en la clase.














HERENCIA

Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones de introducir
otra de las caractersticas bsicas de la programacin orientada a objetos: el uso de la herencia.

El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las
clases que derivan de otras heredan automticamente todo su comportamiento, pero adems
pueden introducir caractersticas particulares propias que las diferencian.

Como hemos visto, los objetos se definen a partir de clases. Con el mero hecho de conocer a qu
clase pertenece un objeto, ya se sabe bastante sobre l. Puede que no sepamos lo que es la
Espada, pero si nos dicen que es una bicicleta, ya sabremos que tiene dos ruedas, manillar,
pedales...

La programacin orientada a objetos va ms all, permitindonos definir clases a partir de otras
clases ya construidas. Por ejemplo, las bicicletas de montaa, las de carretera y los tndems son
todos, en definitiva, bicicletas. En trminos de programacin orientada a objetos, son subclases o
clases derivadas de la clase bicicleta. Anlogamente, la clase bicicleta es la clase base o
superclase de las bicicletas de montaa, las de carretera y los tndems. Esta relacin se muestra
en la siguiente figura.




43



















Cada subclase hereda los estados (en forma de declaracin de variables) de la superclase de la
cual deriva. Las bicicletas de montaa, las de carretera y los tndems comparten algunos estados:
cadencia, velocidad... Adems, cada subclase hereda los mtodos de su superclase.

Las bicicletas de montaa, las de carretera y los tndems comparten algunos comportamientos:
frenar y cambiar la cadencia de pedaleo, por ejemplo.

Sin embargo, las clases derivadas no se encuentran limitadas por los estados y comportamientos
que heredan de su superclase. Muy al contrario, estas subclases pueden aadir variables y
mtodos a aquellas que han heredado. Los tndems tienen dos asientos y dos manillares; algunas
bicicletas de montaa tienen una catalina adicional con un conjunto de marchas con relaciones de
transmisin mucho ms cortas. Las clases derivadas pueden incluso sobrescribir los mtodos
heredados y proporcionar implementaciones ms especializadas para esos mtodos. Por ejemplo,
si nuestra bicicleta de montaa tuviera una catalina extra, podramos sobrescribir el mtodo
CambiarDeMarcha para poder usar esas nuevas marchas.

Adems, no estamos limitados a un nico nivel de herencia. El rbol de herencias o jerarqua de
clases puede ser tan extenso como necesitemos. Los mtodos y las variables miembro se
heredarn hacia abajo a travs de todos los niveles de la jerarqua. Normalmente, cuanto ms
abajo est una clase en la jerarqua de clases, ms especializado es su comportamiento. En
nuestro ejemplo, podramos hacer que la clase bicicleta derivase de una superclase de vehculos.

La herencia es una herramienta clave para abordar la resolucin de un problema de forma
organizada, pues permite definir una relacin jerrquica entre todos los conceptos que se estn
manejando. Es posible emplear esta tcnica para descomponer un problema de cierta magnitud en
un conjunto de problemas subordinados a l. La resolucin del problema original se consigue
cuando se han resuelto cada uno de los problemas subordinados, que a su vez pueden contener
otros. Por consiguiente, la capacidad de descomponer un problema o concepto en un conjunto de
objetos relacionados entre s cuyo comportamiento es fcilmente identificable puede ser
extraordinariamente til para el desarrollo de programas informticos.




44
La herencia proporciona las siguientes ventajas:

Las clases derivadas o subclases proporcionan comportamientos especializados a partir de
los elementos comunes que hereda de la clase base. A travs del mecanismo de herencia
los programadores pueden reutilizar el cdigo de la superclase tantas veces como sea
necesario.

Los programadores pueden implementar las llamadas superclases abstractas, que definen
comportamientos genricos. Las clases abstractas definen e implementan parcialmente
comportamientos, pero gran parte de estos comportamientos no se definen ni se
implementan totalmente. De esta forma, otros programadores pueden hacer uso de estas
superclases detallando esos comportamientos con subclases especializadas. El propsito
de una clase abstracta es servir de modelo base para la creacin de otras clases
derivadas, pero cuya implantacin depende de las caractersticas particulares de cada una
de ellas. Un ejemplo de clase abstracta podra ser en nuestro caso la clase vehculos. Esta
clase sera una clase base genrica, a partir de la cual podramos ir creando todo tipo de
clases derivadas.

Você também pode gostar