Você está na página 1de 108

Antologas para la Materia:

Fundamentos de Programacin
Ingeniera en Sistemas Computacionales
Elabor
L.I. Juan Alexander Anderson Huerta
Catedrtico del Departamento de Sistemas y
Computacin

Enero de 2009
Pg. 1

Contenido
Unidad I Conceptos bsicos del modelo orientado a objetos....................................
1.1 Reconocimiento de objetos y clases en el mundo real y la interaccin
entre ellos.
1.2 La abstraccin y el encapsulamiento como un proceso natural.
1.3 La POO y la complejidad del software.
1.4 Conceptos del ciclo de vida del software.
1.4.1 Especificaciones de requerimientos.
1.4.2 Anlisis Orientado a Objetos.
1.4.3 Diseo Orientado a Objetos.
1.4.4 Programacin Orientada a Objetos, conceptos y caractersticas.
1.5 Elementos primordiales en el modelo de objetos.
1.5.1 Abstraccin.
1.5.2 Encapsulamiento.
1.5.3 Modularidad.
1.5.4 Jerarqua y herencia.
1.5.5 Polimorfismo.
1.6 Historia de los paradigmas en el desarrollo del software.
1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas.
Unidad II Tcnicas bsicas de modelado de objetos................................................
2.1 Definicin de clases, atributos, mtodos y objetos.
2.2 El Modelo como resultado de la abstraccin.
2.3 El UML como una herramienta de modelado de objetos.
2.4 Planteamiento del problema.
2.4.1 Analizar el enunciado del problema.
2.4.2 Identificar funciones del sistema.
2.5 Anlisis.
2.5.1 Descubrir objetos en el dominio del problema.
2.5.2 Identificar atributos de los objetos.
2.5.3 Identificar mtodos en los objetos.
2.6 Introduccin al diseo de la solucin.
2.6.1 Representacin grfica de una clase.
2.6.2 Diagramas de interaccin entre la aplicacin y una clase.
2.6.3 Diagramas de estado de una clase.
Unidad III Tcnicas de diseo detallado.....................................................................
3.1 Diseo algortmico.
3.1.1 Elementos y reglas de la representacin grfica de los
algoritmos.
3.1.2 Implementacin de algoritmos secuenciales (utilizando notacin
algebraica).
3.2 Diseo algortmico de las funciones.

Pg. 2

Unidad IV Introduccin a la programacin.................................................................


4.1 Clasificacin del software.
4.1.1 Software del sistema.
4.1.2 Software de aplicacin.
4.2 Conceptos de la programacin.
4.2.1 Definicin de programa.
4.2.2 Definicin de programacin.
4.2.3 Definicin de lenguaje de programacin.
4.3 Datos.
4.3.1 Definicin.
4.3.2 Tipos de datos.
4.3.3 Identificadores.
4.3.4 Almacenamiento, direccionamiento y representacin en
memoria.
4.3.5 Sistema de numeracin binaria y hexadecimal.
4.4 Operadores, operandos y expresiones.
4.5 Prioridad de operadores, evaluacin de expresiones.
4.6 Estructura bsica de un programa.
4.7 Proceso de creacin de un ejecutable.
Unidad V Implementacin de la clase.........................................................................
5.1 Modificadores de acceso (Public, Private).
5.2 Encapsulamiento de la clase.
5.3 El mtodo como elemento de la comunicacin.
5.3.1 Sintaxis.
5.3.2 Concepto de parmetro.
5.3.3 Parmetros de salida y de entrada.
5.3.4 El constructor.
5.3.5 El destructor.
Unidad VI Estructuras secuenciales y selectivas......................................................
6.1 Modificadores de acceso (Public, Private).
6.2 Entrada y salida de datos.
6.3 Interaccin de la aplicacin y la clase.
6.4 Estructuras selectivas.
6.4.1 Selectiva simple (si).
6.4.2 Selectiva doble (si / de otro modo).
6.4.3 Selectiva anidada.
6.4.4 Selectiva mltiple.
6.4.5 Selectiva Intenta (try/catch).
Unidad VII Estructuras de repeticin. .......................................................................
7.1 Repetir mientras Selectiva simple (si).
7.2 Repetir hasta.
7.3 Repetir desde.
Bibliografa...................................................................................................................
Pg. 3

Unidad I Conceptos bsicos del modelo orientado a objetos.


1.1. Reconocimiento de Objetos y clases en el mundo real y la interaccin
con ellos
La identificacin de los objetos y las clases no debera de ser difcil. Despus de
todo, tratamos con miles de objetos y clases del mundo real cada da de nuestras
vidas, y los objetos y las clases de software son simplemente modelos de los
objetos y las clase en el dominio de la aplicacin. Realizar modelos mentales y
utilizar la abstraccin son aproximaciones estndares humanas para tratar con la
complejidad de la vida diaria.
Donde quiera que mire a su alrededor usted los ver - objetos!. Personas,
animales, plantas, carros, aviones, construcciones, computadoras, etc. Los
humanos pensamos en trminos de objetos. Tenemos la maravillosa habilidad de
la abstraccin que nos habilita a ver las imgenes de un monitor como objetos
tales como personas, aviones, rboles y montaas mas que como puntos
individuales de color (pixeles). Podemos, si lo deseamos, pensar en trminos de
playas en lugar de hacerlo en granos de arena, bosques en lugar de rboles y
casas en vez de ladrillos. Podramos estar inclinados a dividir los objetos en dos
categoras - objetos animados y objetos inanimados. Los objetos animados estn
"vivos" en algn sentido. Se mueven alrededor y realizan cosas. Los objetos
inanimados, como las toallas, parecen no hacer mucho. Todos estos objetos,
como sea, tienen algunas cosas en comn. Todos ellos tienen atributos como
color, tamao, forma, peso, etc. Y todos ellos exhiben comportamientos, v tienen
una identidad que los diferencia de otros objetos similares, una pelota rueda,
rebota, se infla y desinfla; un bebe llora, re, duerme, gatea, camina, parpadea; un
carro acelera, frena, gira; una toalla absorbe agua; etc.
Los humanos aprendemos acerca de los objetos estudiando sus atributos y
observando sus comportamientos. Distintos objetos pueden tener atributos
similares y exhibir comportamientos similares. Comparaciones se pueden hacer,
por ejemplo, entre bebes y adultos, entre los humanos y los chimpancs. Carros,
camiones, etc.
Los objetos del mundo real comparten tres caractersticas:
- estado o estructura: por ejemplo, en un coche el n de marchas, la
velocidad actual, la marcha actual, etc...
- comportamiento: por ejemplo, un coche puede arrancar, acelerar, frenar,
cambiar marcha, etc....
- identidad: aquello que distingue a un objeto de todos los dems, por
ejemplo, si la estructura de una persona es su nombre y edad, es posible
que haya dos juanes de 20 aos que no son la misma persona.
Clases (I)
- Los objetos del mundo real se pueden agrupar en tipos (clases) (personas,
coches, ordenadores, lavadoras, aviones, etc) de manera que los objetos
de la misma clase tienen la misma estructura (estado) y el mismo
comportamiento, aunque el estado de dos objetos puede ser distinto.
Pg. 4

1.2 La abstraccin y el encapsulamiento como un proceso natural


Abstraccin
Una abstraccin denota las caractersticas esenciales de un objeto que lo
distinguen de todos los dems y proporciona as fronteras conceptuales
ntidamente definidas respecto a la perspectiva del observador. (Grady
Booch)

La abstraccin es una herramienta en el proceso de creacin del modelo a


partir de un problema real que est determinada por los siguientes factores:
- Identificacin de clases: los conceptos que tienen entidad en s mismos, no
dependen de otros, se pueden describir, comprender y analizar pueden
abstraerse como una clase.
- El objetivo del modelo:
o determina tanto el grado de detalle como la informacin
relevante.
o Ejemplos:
Aplicacin de macroeconoma: los empleados de una
empresa pueden no ser importantes como individuos porque
slo interese su comportamiento global como plantilla; habr
una clase plantilla pero no una clase persona.

Pg. 5

Aplicacin de nminas: necesita manipular la informacin de


cada persona de manera independiente; habr una clase
persona
Con el mismo grado de detalle de la aplicacin de nminas,
los antecedentes clnicos de una persona son irrelevantes en
una aplicacin de prstamo bibliotecario pero fundamentales
en una aplicacin hospitalaria de ayuda al diagnstico de
enfermedades; en ambas aplicaciones habr una clase
persona pero slo la segunda tendr variables miembro para
antecedentes clnicos.
Definicin segn Shaw:

Es una descripcin simplificada, o especificacin de un sistema que enfatiza


algunos de los detalles o propiedades del sistema mientras otros son eliminados.
Una buena abstraccin es una que enfatiza los detalles que son significativos para
el lector o usuario y elimina aquellos que son poco importantes, inmateriales o
diversificados.
Encapsulamiento
El encapsulamiento es el proceso de almacenar en un mismo compartimento los
elementos de una abstraccin que constituyen su estructura y su comportamiento;
sirve para separar la interfaz contractual de una abstraccin y su implantacin
(Grady Booch).

Datos

Datos
Operacion
es

Operacione
s

Entrada

Caja Negra

Salida

Pg. 6

o Cada clase firma un contrato con el exterior comprometindose a exhibir


un determinado comportamiento, pero cmo lo consigue queda oculto o
encapsulado en el interior de la clase.
La abstraccin y el encapsulamiento son conceptos complementarios: la
abstraccin se centra en el comportamiento observable de un objeto, mientras que
el encapsulamiento se centra en la implementacin que da lugar a ese
comportamiento (Booch).
o Una de las grandes ventajas del encapsulamiento es que posibilita que la
implementacin de un objeto se pueda cambiar sin afectar a las
aplicaciones que lo utilizan.
o Ejemplo:
o Supongamos que la clase Pila representa a pilas de nmeros
enteros, y permite crear una pila, apilar un elemento, desapilar un
elemento y consultar el estado de la pila (vaca o no vaca).
o Internamente se utiliza un vector para almacenar los elementos de la
pila.
o Si se mantiene el comportamiento, se podra cambiar la
representacin interna de los datos de la pila y sustituir el vector por
una lista sin afectar a las aplicaciones que utilizan la clase Pila.
o Esto es posible porque desde el exterior es invisible la
implementacin de la clase Pila.
Los objetos software tambin tienen esas caractersticas:
- estado: se almacena en un conjunto de variables.
- comportamiento: se implementa con mtodos. Un mtodo es una funcin
(subrutina, subprograma, procedimiento).
- identidad: garantizada por los sistemas de poo.
Un objeto es una agrupacin de variables y mtodos distinguible de todos los
dems (identidad propia) desde su creacin.
Los objetos software se utilizan para:
representar objetos del mundo real.
- en un juego de carreras de coches, los coches del mundo real se podran
representar mediante objetos software.
- en una aplicacin de dibujo, las figuras geomtricas (polgonos, rectas,...)
se podran representar mediante objetos software.
- en una aplicacin de gestin de personal de una empresa, los trabajadores
de la empresa se podran representar mediante objetos software.
representar conceptos abstractos.
- en interfaces grficas de usuario, es habitual representar con objetos
(llamados eventos) las acciones realizadas por el usuario (ratn y teclado).
- en un entorno de simulacin e identificacin de la estructura tridimensional
de una protena, las posibles estructuras candidatas (no se corresponden
con ningn objeto real) podran represantarse mediante objetos.
Pg. 7

Representacin visual de un objeto software.

Los objetos software tambin se pueden agrupar en clases utilizando un


criterio similar: los objetos de la misma clase comparten estado y
comportamiento.
- En terminologa orientada a objetos, un objeto concreto de una clase es una
instancia de la clase.
Una clase es un patrn o prototipo que define las variables y los mtodos
comunes a todos los objetos de un cierto tipo.
Las variables en las que se almacena el estado de un objeto, se llaman variables
de instancia.
Los mtodos que implementan el comportamiento de un objeto se llaman
mtodos de instancia.
Por ejemplo, la clase Coche declara las variables de instancia necesarias para
almacenar el N de marchas, la velocidad actual, y la marcha actual.
La clase tambin declara y proporciona la implementacin de los mtodos de
instancia que permiten arrancar, acelerar, frenar y cambiar de marcha.

Despus de crear la clase Coche se pueden crear los objetos de la clase.


Cada instancia de la clase tiene su propia copia de todas las variables de instancia
definidas en la clase.
Pg. 8

Variables de clase: las clases, adems de definir las variables de instancia,


tambin pueden definir variables de clase, que contienen informacin comn para
todas las instancias de la clase.
Si un objeto modifica el valor de una variable de clase, esta modificacin afecta a
todos los objetos de la clase.
Por ejemplo, en una aplicacin de facturacin, la clase Factura puede tener una
variable de clase con el IVA que se aplica a las facturas, ya que este valor es
comn a todos los objetos de la clase Factura, y no sera eficiente que cada uno
de los objetos de la clase tuviera una copia.
Si en una aplicacin se quiere contabilizar el nmero de instancias que hay de una
determinada clase, se puede utilizar una variable de clase.
Por ejemplo, la clase Ventana de una interfaz grfica puede declarar variables de
clase para almacenara el nmero de ventanas visibles, el tamao por omisin y el
tamao mximo de cualquier ventana.
Mtodos de clase: son mtodos que afectan a la clase en s, y a los cuales se
puede acceder directamente desde la clase en oposicin al acceso a los mtodos
de instancia, que se realiza siempre a travs de los objetos
Es importante sealar que para invocar un mtodo de clase no es necesario
haber creado ningn objeto que reciba como mensaje una invocacin de ese
mtodo.
Para usar un mtodo de instancia, por el contrario, se necesita obligatoriamente
que se cree un objeto de la clase que reciba el mensaje de ese mtodo.
Por ejemplo, en la clase Factura se podran tener mtodos para consultar y
modificar el valor del IVA aplicable a las facturas, ya que este valor tiene sentido
en s mismo y no est condicionado a la existencia de objetos de la clase.
1.3 La POO y la complejidad del software.
Qu es la programacin orientada a objetos
La programacin Orientada a objetos (POO) es una forma especial de programar,
ms cercana a como expresaramos las cosas en la vida real que otros tipos de
programacin.

Pg. 9

Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en trminos de objetos, propiedades, mtodos y
otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea
base que permita soltarnos un poco con este tipo de programacin.
Motivacin
Durante aos, los programadores se han dedicado a construir aplicaciones muy
parecidas que resolvan una y otra vez los mismos problemas. Para conseguir que
los esfuerzos de los programadores puedan ser utilizados por otras personas se
cre la POO. Que es una serie de normas de realizar las cosas de manera que
otras personas puedan utilizarlas y adelantar su trabajo, de manera que
consigamos que el cdigo se pueda reutilizar.
La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de
quien la programa, de manera que la forma de hacer las cosas puede ser diferente
segn el programador. Aunque podamos hacer los programas de formas distintas,
no todas ellas son correctas, lo difcil no es programar orientado a objetos sino
programar bien. Programar bien es importante porque as nos podemos
aprovechar de todas las ventajas de la POO.
Cmo se piensa en objetos
Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un
esquema de POO. Diramos que el coche es el elemento principal que tiene una
serie de caractersticas, como podran ser el color, el modelo o la marca. Adems
tiene una serie de funcionalidades asociadas, como pueden ser ponerse en
marcha, parar o aparcar.
Pues en un esquema POO el coche sera el objeto, las propiedades seran las
caractersticas como el color o el modelo y los mtodos seran las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO
una fraccin, es decir, esa estructura matemtica que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
La fraccin ser el objeto y tendr dos propiedades, el numerador y el
denominador. Luego podra tener varios mtodos como simplificarse, sumarse con
otra fraccin o nmero, restarse con otra fraccin, etc.
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de
matemticas hars uso de objetos fraccin y en un programa que gestione un
taller de coches utilizars objetos coche. Los programas Orientados a objetos
utilizan muchos objetos para realizar las acciones que se desean realizar y ellos
mismos tambin son objetos. Es decir, el taller de coches ser un objeto que
utilizar objetos coche, herramienta, mecnico, recambios, etc.
LA COMPLEJIDAD INHERENTE AL SOFTWARE

Los sistemas simples pueden ser desarrollados por 1 o unas cuantas


personas.
Los sistemas complejos requieren de un gran equipo de trabajo que desarrolle
sistemas simples e interacten para formar un sistemas complejo.
Pg. 10

LA COMPLEJIDAD DEL DOMINIO DEL PROBLEMA


Existe una visin diferente sobre la naturaleza del problema entre el
desarrollador y el usuario. La tarea del equipo de desarrollo de software es
ofrecer ilusin de simplicidad.
Los requisitos del software cambian frecuentemente durante su desarrollo.
Los sistemas grandes tienden a evolucionar con el tiempo. A este proceso se le
conoce en forma incorrecta como mantenimiento del software. Siendo precisos,
es mantenimiento cuando se corrigen errores, es evolucin cuando se
responde a requerimientos que cambian; es conservacin cuando se siguen
empleando medios extraordinarios para mantener en operacin un sistema de
software anticuado y decadente.
LA DIFICULTAD DE GESTIONAR EL PROCESO DE DESARROLLO
Se requieren de equipos de trabajo para desarrollar software formado por miles o
millones de mdulos.
Se requiere de un esquema de comunicacin y una gran coordinacin.
La Complejidad es un concepto que es considerado extremadamente relevante
para un sistema computacional, el cual ha sido abordado por varios
investigadores. Es importante hacer notar que la definicin de complejidad usada
en este trabajo es intencionalmente mas restrictiva que la usada por otros
investigadores. Esto nos permite proporcionar una definicin de la complejidad de
un artefacto a travs de un conjunto definido de propiedades.
La Complejidad que un elemento aislado puede agregar a un sistema bien puede
ser el resultado de las relaciones entre sus sub-elementos. Por ejemplo, en un
sistema modular, cada mdulo puede ser visto como un "componente de alto
nivel" el cual encapsula "subelementos". Si queremos considerar el sistema como
compuesto solamente de estos "componentes de alto nivel", no debemos
"desempacar" estos elementos para medir su complejidad y solo tomar en cuenta
las relaciones entre los componentes de alto nivel.
Pero si deseamos tomar en cuenta la complejidad que aporta cada componente al
sistema entonces el sistema debe de ser visto como la suma de los componentes
y subcomponentes. As como las relaciones totales del sistema son la suma de las
relaciones entre componentes de alto nivel mas la suma de las relaciones de los
subcomponentes.
Un sistema y las relaciones entre sus componentes no cambian si cambiamos la
forma de representarlos. por lo tanto la complejidad tampoco debe cambiar con
este respecto.
Se ha argumentado que no siempre es cierto que entre mas relaciones mayor la
complejidad de el sistema. En algunos casos, el agregar relaciones entre
componentes puede ayudar a entender mas al sistema. esto es desde luego
cierto, pero lo que se mejora es el entendimiento de el sistema (esto es, la
percepcin de el sistema hecha por un agente externo, como la gente), y no la
complejidad. La complejidad es solo un factor a aplicar para determinar el

Pg. 11

entendimiento del sistema y puede ayudar a pronosticarlo, pero no es el nico


elemento que se deba de usar para medir el entendimiento de el sistema.
En base a lo anterior, podemos decir que la programacin Orientada a objetos
hace menos difcil la solucin de problemas y disminuye la complejidad del
software.
1.4 Conceptos del ciclo de vida del software.
Ciclo de vida del desarrollo de sistemas.
Todo sistema tiene un ciclo de vida as como los humanos nacemos, crecemos,
nos reproducimos y morimos los sistemas cuentan con un ciclo muchos autores
manejan menos o mas etapas pero la idea es la misma a continuacin solo
describiremos el ciclo de vida que desde un punto de vista es el mas entendible.
Fases:

Fase conceptual.

Fase de definicin.

Fase de adquisicin o de produccin.

Fase operacional.

Fase de muerte.
1.
Fase conceptual (descripcin)
"La fase conceptual es aquella en la que la idea se concibe y se le hace una
evaluacin preeliminar".
En esta fase se examinan el medio se realizan pronsticos se evalan los
objetivos y alternativas, se realiza una evaluacin por primera vez de costos y
aspectos relacionados con el tiempo del sistema al mismo tiempo se hace la
estrategia bsica la organizacin y los requerimientos de recursos. El propsito
fundamental de la fase conceptual es hacer un estudio sobre papel de todos los
requerimientos. Para proporcionar la base de una evaluacin detallada que
posteriormente se har en la etapa siguiente.
Siempre hay una tasa alta en porcentaje de sistemas potenciales que no sern
realizados, esto debe ser as, puesto que el proceso de estudio de esta fase
conceptual tiene como objetivo identificar proyectos que tienen un alto riesgo y no
son factibles o no son prcticos desde el punto de vista tcnico, econmico y del
ambiente.
2.
Fase de definicin.
El propsito principal de esta fase es definir lo mas pronto posible y exacto, los
costos, los programas, la realizacin y los requerimientos de recursos y si todos
estos elementos concordaran econmica y tcnicamente.
"La fase de definicin solo narra con mayor detalle que es lo que queremos hacer,
cuando queremos hacerlo, como lo llevaremos a acabo y cuanto costara".
3.
Fase de adquisicin o de produccin.
"El propsito de esta fase de adquisicin o de produccin es adquirir y probar los
elementos del sistema y el sistema total mismo utilizando los estndares que se
desarrollaron durante las fases precedentes. El proceso de adquisicin involucra
aspectos tales como la implantacin real del sistema, la fabricacin del equipo, la
Pg. 12

asignacin de autoridad y de responsabilidad, la construccin de las instalaciones


y la conclusin de la documentacin de apoyo".
Esta fase puede describirse como la fase de desarrollo de las actividades que
anteriormente fueron definidas en la fase de definicin.
4.
Fase operacional.
"En esta fase el papel fundamental del gerente de un sistema durante la fase
operacional es proporcionar el apoyo de recursos requeridos para llevar a cabo los
objetivos del sistema".
En esta fase el gerente encargado del sistema es el que provee de todos los
recursos necesarios para llevar acabo los objetivos del sistema. Esta fase es
resultado de que el modelo ha sido aprobado desde el punto de vista econmico, y
el gerente trata de poner ms atencin en los elementos humanos del sistema y
trata de optimizar los recursos del sistema total.
5.
Fase de muerte.
Todo ciclo tiene su inicio y su fin, es decir no todo es eterno, as que esta etapa es
la de declinacin o muerte del sistema.
Muy a menudo, esto no es reconocido por las empresas a simple vista, no quieren
reconocer de que cuentan con sistemas obsoletos y que estos ya no son de
utilidad para la empresa, muchas veces son deficientes y se mantienen con
equipos e instalaciones inadecuadas.
La empresa debe asumir la realidad que hay que hacer un cambio en sus
sistemas as como sus instalaciones si realmente quiere ser competitiva.
Determinacin de requerimientos
Un requerimiento es una caracterstica necesaria que deber poseer el
nuevo sistema.
Por otra parte, la determinacin de requerimientos es el estudio de un
sistema para comprender cmo trabaja y dnde es necesario efectuar mejoras.
Ahora bien, existen tres formas (= actividades) de determinar de requerimientos, a
saber
Anticipacin de requerimientos: prever las caractersticas del nuevo
sistema con base en experiencia previa.
Investigacin de requerimientos: actividad ms importante del anlisis
de sistemas. Es el estudio y documentacin del sistema actual usando
para ellos tcnicas de para hallar hechos, anlisis de flujo de datos y
anlisis de decisin.
Es aqu donde aplicamos entrevistas,
cuestionarios, observacin y revisin de documentacin entre otros.
Especificacin de requerimientos: los datos obtenidos durante la
recopilacin de hechos se analizan para determinar las especificaciones
de los requerimientos, es decir, la descripcin de las caractersticas del
nuevo sistema. Esta actividad tiene tres partes relacionadas entre s, a
saber:
Anlisis de datos basados en hechos reales
Identificacin de requerimientos esenciales
Seleccin de estrategias para satisfacer los requerimientos
Pg. 13

Todo sistema de informacin posee un conjunto de requerimientos bsicos


y un conjunto de requerimientos especficos dependiendo si el sistema ser de
soporte para transacciones o para la toma de decisiones.

Requerimientos bsicos: los analistas estructuran su investigacin al


buscar respuestas a las siguientes cuatro preguntas:
Cul es el proceso bsico de la empresa?
Qu datos utiliza o produce este proceso?
Cules son los lmites impuestos por el tiempo y la carga de
trabajo?
Qu controles de desempeo utiliza?
Son esas las preguntas que tienen que tener una respuesta concreta al
tener terminada la fase de investigacin de requerimientos.
Siempre se debe comenzar con lo bsico. Los analistas hacen preguntas que
cuando reciben respuesta, proporcionan antecedentes sobre detalles
fundamentales relacionados con el sistema y que sirven para describirlo. Las
siguientes preguntas son de utilidad para adquirir la comprensin necesaria:
Cul es la finalidad de la actividad dentro de la empresa?
Qu pasos se siguen para realizarla?
Dnde se realizan estos pasos?
Quines los realizan?
Cunto tiempo tardan en efectuarlos?
Con cunta frecuencia lo hacen?
Quines emplean la informacin resultante?
Respuestas concisas a estas preguntas proporcionan un conocimiento amplio de
una actividad en particular y muestra tambin su objetivo. Pero analista no se
detiene ah, todava no existe informacin para comprender en su totalidad la
actividad; ms bien lo que se tiene son los antecedentes que permiten a los
analistas formular preguntas ms detalladas.
Durante esta, debemos identificar muy claramente los siguientes elementos:
procesos
flujos de datos entre procesos
datos de cada flujo de datos
almacenes de datos
datos de los almacenes de datos.
Para ello el cuestionario que se aplica debe requerir la siguiente informacin:
nombre de la entidad
nombre los campos
descripcin
fuente y sensibilidad (= seguridad)
Pg. 14

valor o importancia de los datos


relaciones de los campos y entidades
Criterio de retencin y almacenamiento.
Preguntas clsicas para una determinacin de requerimientos:
Preguntas generales:
Cuntos empleados laboran para la organizacin en el rea(s) que se
pretende desarrollar el sistema; o sea, cuntos tienen relacin directa con el
proyecto que se est investigando. ?
Cules son las personas claves en el sistema? Por qu son importantes?
Existen obstculos o influencias de tipo poltico que afectan la eficiencia
del sistema?
Existen manuales de procedimientos, polticas o lineamientos de
desempeo documentados oficial o no oficialmente?. Si los hay, Se
cumplen en forma cabal en el 100% de las ocasiones?, es decir, se
respetan dichos procedimientos?
Existen mtodos para evadir el sistema?, Por qu se presentan?
Qu reas necesitan un control especfico?
Qu criterios se emplean para medir y evaluar el desempeo?
Por otra parte:
Existen actividades que considere podran mejorarse?, De qu manera?
Tiene alguna idea de actividades que podran implementarse para mejorar
el rendimiento del sistema en general?
Determinacin de procesos:
Cules son las principales actividades que se realizan en la organizacin y
que tienen relacin con el proceso que se est modelando?
Descripcin de cada proceso identificado
Qu es lo que da inicio a la actividad?
Cul es el objetivo de la misma?
Cunto tiempo se tarda en realizarla?
Qu retrasos ocurren o pueden ocurrir?
Qu mtodos se emplean para medir y evaluar el desempeo de
esta actividad?
Se toman precauciones especficas de seguridad para la proteccin
contra alguna actividad impropia que se pudiera presentar?
Qu tan frecuente es el ciclo con el que se desarrolla dicha
actividad?
De acuerdo al ciclo con el que se presenta la actividad, Cul es el
volumen de informacin que aqu se procesa?
Qu pasos, sub-procesos, o funciones constituyen la actividad?
(describir la actividad paso a paso)
Pg. 15

Existe algn tipo de control desarrollado en el proceso en cuestin?

Determinacin de datos (flujos y contenido de los flujos) - hacer la


pregunta por cada proceso o actividad identificada De dnde proviene la informacin que se utiliza en esta actividad?
(fuentes)
Cules son especficamente los datos que recibe esta actividad? (dts de
flujos)
De qu manera ingresan a este proceso? (flujos)
Qu tablas de referencia y diagramas u otros datos intervienen en la
actividad? (documentacin involucrada)
Qu informacin se genera en esta actividad? (producto de la actividad)
El resultado identificado anteriormente producto de los datos que se
procesan Hacia qu o quin van dirigidos? persona o entidad- (destinos)
Con qu finalidad la utilizan?
Cules datos se conservan o almacenan en este proceso? Y en qu
forma quedan almacenados?
Existe informacin que se genera pero que no es utilizada nunca por
nadie? (partes extraas)
Para cada dato identificado:
Qu formato posee cada dato que interviene en esta actividad?
Para qu es usado?
Se interpone algn tipo de seguridad para la verificacin de la
veracidad del dato en mencin?
Qu tan importante es dicho dato?
Por cunto tiempo es importante mantener el dato en el sistema?
Por otra parte si el sistema que se est investigando es para el soporte de
decisiones se deben, adems de las anteriores, formular otras preguntas para
determinar los requerimientos de las decisiones, un esbozo de las mismas bien
podra ser:
Qu informacin se usa para tomar la decisin?
Cul es la fuente de esa informacin? Qu sistemas transnacionales
producen los datos utilizados en el proceso de decisin? Qu otros
datos son necesarios y no es posible obtener del procesamiento de
transacciones? Qu datos se originan en fuentes externas a la
organizacin?
Cmo se deben procesar los datos para producir la informacin
necesaria?
Cmo debe presentarse la informacin.
Una vez que se tenga recopilado el conjunto de hechos que se generan con
relacin al sistema que estamos modelando, es posible dar una especificacin
de requerimientos, mediante como se dijo un anlisis de los datos obtenidos
Pg. 16

durante la recopilacin de hechos. Es despus de esto entonces, que se puede


ya dar un conjunto de requerimientos que nos servirn para modelar el sistema
mediante un DFD y del que surge el diagrama E-R
1.4.2 Anlisis Orientado a Objetos.
Introduccin
Desde comienzos de la dcada de los 80, el paradigma "orientado a objetos" ha
ido madurando como un enfoque de desarrollo de software alternativo a la
programacin estructurada o modular. Se empez a crear diseos de aplicaciones
de todo tipo usando una forma de pensar orientada a los objetos, y a implementar
estos diseos utilizando lenguajes orientados a objetos. Sin embargo, el anlisis
de requisitos se qued atrs. No se desarrollaron tcnicas de anlisis
especficamente orientadas a objetos.
Esta situacin ha ido cambiando poco a poco, a medida que se desarrollaban
tcnicas de anlisis especficas para desarrollar software orientado a objetos, e
incluso como complemento de otros mtodos de anlisis. Ejemplos de estas
nuevas tcnicas son los mtodos de Coad/Yourdon, Jacobson, Booch y
Rumbaugh (OMT).
El AOO se basa en conceptos sencillos, conocidos desde la infancia y que
aplicamos continuamente: objetos y atributos, el todo y las partes, clases y
miembros. Puede parecer llamativo que se haya tardado tanto tiempo en aplicar
estos conceptos al desarrollo de software. Posiblemente, una de las razones es el
xito de los mtodos de anlisis estructurados, basados en el concepto de flujo de
informacin, que monopolizaron el anlisis de sistemas software durante los
ltimos veinte aos.
En cualquier caso, el paradigma orientado a objetos ha sufrido una evolucin
similar al paradigma de programacin estructurada: primero se empezaron a
utilizar los lenguajes de programacin estructurados, que permiten la
descomposicin modular de los programas; esto condujo a la adopcin de
tcnicas de diseo estructuradas y de ah se paso al anlisis estructurado.
El paradigma orientado a objetos ha seguido el mismo camino: el uso de la
Programacin Orientada a Objetos (POO) ha modificado las tcnicas de diseo
para adaptarlas a los nuevos lenguajes y ahora se estn empezando a utilizar
tcnicas de anlisis basadas en este nueva forma de desarrollar software.
El AOO ofrece un enfoque nuevo para el anlisis de requisitos de sistemas de
software. En lugar de considerar el software desde una perspectiva clsica de
entrada/proceso/salida, como los mtodos estructurados clsicos, se basa en
modelar el sistema mediante los objetos que forman parte de l y las relaciones
estticas (herencia y composicin) o dinmicas (uso) entre estos objetos.

Pg. 17

Este enfoque pretende conseguir modelos que se ajusten mejor al problema real,
a partir del conocimiento del llamado dominio del problema, evitando que influyan
en el anlisis consideraciones de que estamos analizando un sistema para
implementarlo en una computadora. Desde este punto de vista, el AOO consigue
una abstraccin mayor que el anlisis estructurado, que modela los sistemas
desde un punto de vista ms prximo a su implementacin en una computadora
(entrada/proceso/salida).
Este intento de conocer el dominio del problema ha sido siempre importante; no
tiene sentido empezar a escribir los requisitos funcionales de un sistema de control
de trfico areo, y menos an disearlo o programarlo sin estudiar primero qu es
el trfico areo o qu se espera de un sistema de control de este tipo. La ventaja
del AOO es que se basa en la utilizacin de objetos como abstracciones del
mundo real.
Esto nos permite centrarnos en los aspectos significativos del dominio del
problema (en las caractersticas de los objetos y las relaciones que se establecen
entre ellos) y este conocimiento se convierte en la parte fundamental del anlisis
del sistema software, que ser luego utilizado en el diseo y la implementacin.
Este enfoque no es totalmente nuevo, sino que puede considerarse como una
extensin del modelado de datos (DER) que se utiliza en los mtodos
estructurados. Sin embargo, el modelado de datos mediante DER est ms
orientado al diseo de bases de datos y se centra exclusivamente en la
identificacin de los datos que maneja un sistema y en las relaciones estticas que
se establecen entre esos datos.
En el AOO, los objetos encapsulan tanto atributos como procedimientos
(operaciones que se realizan sobre los objetos), e incorpora adems conceptos
como el polimorfismo o la herencia que facilitan la reutilizacin de cdigo.
El uso de AOO puede facilitar mucho la creacin de prototipos, y las tcnicas de
desarrollo evolutivo de software. Los objetos son inherentemente reutilizables, y se
puede crear un catlogo de objetos que podemos usar en sucesivas aplicaciones.
De esta forma, podemos obtener rpidamente un prototipo del sistema, que pueda
ser evaluado por el cliente, a partir de objetos analizados, diseados e
implementados en aplicaciones anteriores.
Y lo que es ms importante, dada la facilidad de reutilizacin de estos objetos, el
prototipo puede ir evolucionando hacia convertirse en el sistema final, segn
vamos refinando los objetos de acuerdo a un proceso de especificacin
incremental.
1.4.3 Diseo Orientado a Objetos.
Un diseo orientado a objetos no es un diseo top down ni bottom up, aunque
envuelve elementos prximos a ambos. En el diseo top down, usted prueba a ver
Pg. 18

y comprender el problema en su aspecto ms general; una vez superado este


paso, tratar de descomponer el problema general en subproblemas ms
pequeos y fciles de resolver, procediendo con stos de forma similar. El diseo
opuesto a top down es el diseo bottom up, en el que usted empieza resolviendo
problemas bsicos, para a continuacin construir el problema en su totalidad.
Un diseo orientado a objetos, entre otras cosas, nos hace pensar el aspecto
fundamental del problema a resolver, y sobre la representacin de diversos
aspectos fundamentales, como los objetos. Esto es la esencia del diseo top
down. Pero el diseo orientado a objetos tambin sugiere que usted mire hacia la
meta, pensando en cmo pueden ser compuestos los objetos fundamentales para
alcanzar dicha meta. Esto es la esencia del diseo bottom up.
Donde el diseo orientado a objetos toma ventaja es en la comparticin y
reutilizacin del cdigo. En cambio, las rutinas bsicas de un diseo top down, que
son creadas a propsito, probablemente no son reutilizables.
1.4.4 POO, conceptos y caractersticas.
Programacin Orientada a Objetos (POO)
La POO es una forma de programacin que utiliza objetos que responden a
sucesos. Estos sucesos producen un flujo de mensajes entre los objetos, lo que
origina cambios en el estado del objeto que recibe el mensaje. Como ejemplo,
piense en el problema de que un objeto caja de texto visualice un comunicado
cuando se haga click en otro objeto botn de pulsacin. La estructura del
programa bsicamente estar formada por dos objetos y un mapa de mensajes;
uno de los mensajes relacionar el clic sobre el botn con el mtodo que tiene que
ejecutarse para poner el comunicado en la caja de texto.
As, la POO es un enfoque sumamente natural, puesto que la estructura de los
programas refleja directamente la estructura del problema.
Adems, la POO puede considerarse como una extensin natural de la
programacin estructurada en un intento de potenciar los conceptos de
modularidad y reutilizacin del cdigo.
Para entender esto, piensen en un objeto libro con los atributos ttulo y autor, y los
mtodos necesarios para manipularlos. En un instante determinado durante el
desarrollo de una aplicacin, si la estructura de este objeto se ajusta exactamente
a las necesidades de la misma, se utilizar; si no, por ejemplo, porque
necesitamos un nuevo atributo editorial, habra que crearlo de nuevo asumiendo el
costo inherente a su total construccin
Otra forma es que podamos reutilizar el cdigo, lo que significa asumir un costo
menor, el inherente a la ampliacin del objeto. Esto fue uno de los motivos del
xito de la POO y si no piense la cantidad de bibliotecas de objetos que se han
creado para el desarrollo de interfaces grficas de usuario.
1.5 Elementos primordiales en el modelo de objetos.
Caractersticas de la POO
Pg. 19

Las caractersticas fundamentales de la POO son: abstraccin, encapsulamiento,


herencia y polimorfismo.
1.5.1 Abstraccin
El trmino abstraccin significa accin de separar mentalmente. Otra definicin
podra ser: representacin de las caractersticas esenciales de algo sin incluir
antecedentes o detalles irrelevantes. Esto es, por medio de la abstraccin
conseguimos no detenernos en los detalles concretos de las cosas que no
interesen en cada momento, sino generalizar y centrarse en los aspectos que
permitan tener una visin global del tema.
Por ejemplo, el estudio de una computadora podemos realizarlo a nivel de
funcionamiento de circuitos electrnicos, en trminos de corriente, tensin, etc., o
a nivel de transferencia entre registros, centrndose as el estudio en el flujo de
informacin entre las unidades que lo componen (memoria, unidad aritmtica,
unidad de control, registros, etc.), sin importarnos el comportamiento de los
circuitos electrnicos que componen estas unidades.
Segn lo expuesto, la abstraccin consiste en la generalizacin conceptual de los
atributos y propiedades de un determinado conjunto de objetos. Precisamente la
clave de la programacin orientada a objetos est en abstraer los mtodos y los
datos comunes a un conjunto de objetos y almacenarlos en una clase. Desde este
nivel de abstraccin, la introduccin o eliminacin de un objeto en una
determinada aplicacin supondr un trabajo mnimo o nulo.
Una abstraccin que describa un conjunto de objetos en trminos de una
estructura de datos encapsulada u oculta y las operaciones sobre esa estructura,
la denominaremos tipo abstracto de datos.
1.5.2 Encapsulamiento
El encapsulamiento u ocultamiento de informacin se refiere a la prctica de incluir
dentro de un objeto todo lo que necesita, de tal forma que ningn otro objeto
necesite conocer nunca su estructura interna. Esta caracterstica permite ver un
objeto como una caja negra, en la que se ha metido de alguna manera toda la
informacin relacionada con dicho objeto. Esto nos permitir manipular los objetos
como unidades bsicas, permaneciendo oculta su estructura interna.
Por ejemplo, si definimos una clase complejo, las operaciones con nmeros
complejos no presentarn ninguna dificultad. Esto es, si X e Y son nmeros
complejos, las operacin Z=X/Y nos dar otro complejo. Si en lugar de operar a
este nivel de abstraccin y encapsulamiento descendemos a la estructura interna
del nmero complejo, entonces la operacin no es tan simple. Las operaciones en
este nivel ms inferior son las que tienen que realizar los mtodos de la clase
complejo con los datos que encierra.
En el ejemplo anterior, el operador / representa la operacin de dividir dos
variables de tipo complejo. Dicho operador es el mensaje que el objeto Y enva al
objeto X, siendo la respuesta a tal mensaje un mtodo implementado en la clase
complejo. Anteriormente se ha expuesto que mensaje equivale a prototipo de
funcin. Para que esto siga siendo vlido, considere que un operador es una
funcin, esto es, X/Y es equivalente a llamar a una funcin operator/(X,Y).

Pg. 20

En realidad, si operator / es una funcin miembro de la clase complejo, X/Y


equivale a la llamada X.operator(/), lo que pone de manifiesto que el objeto situado
a la derecha del operador enva el mensaje al objeto situado a la izquierda.
Esto mismo sucede con los tipos predefinidos en el compilador C; esto es, los
tipos de datos short, int, float, etc. son realmente clases.
1.5.3. Modularidad:
Es la propiedad que permite subdividir una aplicacin en partes ms pequeas
cada una de las cuales debe ser tan independiente como sea posible.
1.5.4 Jerarqua y Herencia
Jerarqua:
Es una propiedad que permite ordenar las abstracciones. Las dos jerarquas ms
importantes son las clases y los objetos. Las clases se relacionan unas con otras
por medio de la relacin herencia mediante la cual pueden definirse nuevos
objetos a partir de los existentes.
Herencia
Es el mecanismo para compartir automticamente mtodos y atributos entre
clases y subclases. Por ejemplo, como vimos anteriormente, si declaramos la
clase profesor como una subclase de empleado, todos los mtodos y variables
asociadas con la clase empleado son automticamente heredados por la subclase
profesor. Si la clase empleado contiene mtodos inapropiados para la subclase
profesor, stos pueden obviarse, escribiendo nuevos mtodos y almacenndolos
como parte de la clase profesor, o tambin pueden redefinirse para que respondan
de forma distinta a como lo hacen en la clase base.
Esta caracterstica de la POO est fuertemente ligada a la reutilizacin del cdigo.
Esto es, el cdigo de cualquiera de las clases existentes puede ser utilizado sin
ms que crear una clase derivada de ella.
El concepto de herencia conduce a una estructura jerarquizada de clases, lo cual
no significa que en POO todas las relaciones entre clases deban ajustarse a una
estructura jerrquica.
La herencia puede ser tambin mltiple; esto es, una clase puede derivarse de
dos o ms clases base.
1.5.4 Polimorfismo
Esta caracterstica permite implementar mltiples formas de un mismo mtodo,
dependiendo cada una de ellas de la clase sobre la que se realice la
implementacin. Esto hace que se pueda acceder a una variedad de mtodos
distintos (todos con el mismo nombre) utilizando exactamente el mismo medio de
acceso.
1.6 Historia de los paradigmas en el desarrollo del software.
Los paradigmas son procedimientos computacionales que utilizamos para dar
solucin a algn problema. hay muchas clases de paradigmas se encuentran los
demostrativos, declarativos, imperativo, funcionales y orientados a objetos.
Pg. 21

Paradigmas Demostrativos: En este tipo de paradigmas el programador verifica


cual es el problema y envs de resolverlo aporta al cliente diferentes ejemplos de
soluciones a problemas similares.
Paradigmas imperativos: Este paradigma se lleva a cabo mediante un
almacenamiento de informacin en una computadora para despus donde
la computadora almacena la representacin codificada de un clculo y
realiza una secuencia de comandos que van modificando el contenido
almacenado dndole forma de un programa. (Algoritmos mas una
estructura de datos dan como resultado un programa)
Paradigma Funcional: Tiene como objeto imitar las funciones matemticas
lo ms posible. Un lenguaje funcional posee la propiedad matemtica de
transparencia referencial, lo que significa que una expresin representa
siempre el mismo valor. Esto permite razonar sobre la ejecucin de un
programa y demostrar matemticamente que es correcto. Las variables de
un lenguaje funcional son como las variables en algebra. Inicialmente
representan un valor desconocido que, una vez calculado, ya no cambia.
Paradigmas Orientados a Objetos: La Orientacin a Objetos se basa en
estas ideas: un programa es un mundo que representa un subconjunto del
mundo real. La estructura del programa se simplifica en gran medida si
cada una de las entidades u objetos del problema que se est modelando
corresponde directamente con un objeto que se puede manipular
internamente en un programa. Para el desarrollo de sistemas, la orientacin
a objetos es un nivel de abstraccin de computadora ms all de los
procedimientos y los datos. La orientacin a objetos anima al desarrollador
de sistemas a concentrarse en los temas importantes e ignorar el resto a la
hora de la modelacin. La orientacin a objetos quiere decir algo familiar en
el cual se considera al mundo como un conjunto de objetos que se
relacionan y comunican entre ellos. Esta es la forma en que la gente normal
ve el mundo, as es que este pensamiento tiene intrnsecamente sentido.
1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas.
La POO frente a la Progr. Trad.
En la historia de la programacin ha habido varias evoluciones sucesivas. Una de
las principales fue la programacin estructurada, cuyo principio fundamental era
dividir un programa en subprogramas ms pequeos y fciles de resolver, hasta
llegar a niveles de complejidad elementales, siempre apoyndonos en la idea de
qu debe hacer el programa?. este mtodo de diseo, a pesar de haber dado
resultados satisfactorios, tiene limitaciones.
Algunas de ellas son:
No favorece la reutilizacin del cdigo. Si en la figura anterior fn1 y fn2 fueran
idnticas, este hecho seguramente pasara desapercibido y no se compartira
una nica funcin fn.
Si dos subprogramas comparten una misma funcin fn reutilizando as el
cdigo que define la misma, y ms adelante queremos modificar fn porque
Pg. 22

hay un cambio en uno de los subprogramas que la utilizan, la modificacin


afectar tambin al otro subprograma, razn por la que ahora tendremos que
realizar dos funciones.
De lo expuesto se deduce que la programacin tradicional se desarrolla a partir de
procedimientos y datos, sin delimitar qu procedimientos actan sobre qu datos.
Los datos se estructuran con el fin de que puedan ser procesados por un conjunto
de procedimientos diferentes, por lo que ambos, estructuras de datos y
procedimientos, estn sujetos a cambios.
Si la programacin estructurada se interesa primero por los procedimientos y
despus por los datos, el diseo orientado a objetos se interesa en primer lugar
por los datos, a los que se asocian posteriormente procedimientos. Esto es, ahora
la idea principal es de qu trata el programa? Entonces se organizan los
desarrollos alrededor de los datos manipulados, y no alrededor de las
funcionalidades. Esta forma de construir el programa resulta mucho ms eficaz
puesto que en la vida de un programa los elementos ms estables son los datos.
Por lo tanto, en la programacin orientada a objetos, un programa es una
coleccin de una sola entidad bsica, el objeto, el cual combina los datos son los
procedimientos que actan sobre ellos. Durante la ejecucin, los objetos reciben y
envan mensajes a otros objetos para ejecutar las acciones requeridas.
La programacin orientada a objetos puede llevarse a cabo con lenguajes
convencionales, pero esto exige al programador la construccin de los
mecanismos de que disponen los lenguajes orientados a objetos. Por ello, lo ms
apropiado es utilizar directamente un lenguaje orientado a objetos, ya que stos
soportan los mecanismos y las caractersticas que anteriormente se han expuesto,
tales como objetos, clases, mtodos, mensajes, herencia, etc. La herencia
constituye uno de los mecanismos ms potentes de la programacin orientada a
objetos.

Unidad II Tcnicas bsicas de modelado de objetos.


2.1 Definicin de clases, atributos, mtodos y objetos.
Objetos o instancias.
Un objeto es un concepto, una abstraccin o una cosa con unos lmites definidos y
que es relevante para el problema en cuestin. Los modelos de objetos sirven
tanto para obtener un conocimiento mejor del dominio de aplicacin como de base
para la implementacin del sistema en un ordenador.
Una caracterstica de los objetos es que tienen identidad y son distinguibles.
Aunque dos objetos tengan los mismos valores para todos sus atributos son
diferentes.
El trmino objeto est sobrecargado. Mediante l podemos referirnos tanto a
clases de objetos (p. ej. el concepto abstracto mesa) como a las instancias de
estas clases (una mesa determinada). Es mejor utilizar los trminos clase e
instancia para evitar confusiones.
Pg. 23

La mayora de las instancias de una clase derivan su individualidad de tener


valores diferentes en alguno/s de sus atributos o de tener relaciones con
instancias diferentes. No obstante pueden existir instancias con los mismos
valores de los atributos e idnticas relaciones.
El smbolo grfico para representar instancias es un rectngulo de esquinas
redondeadas. Dentro del rectngulo figura la clase a la que pertenece la instancia
(entre parntesis) y los valores de sus atributos.

Las instancias figuran en diagramas de instancias, que se utilizan normalmente


para describir ejemplos que aclaren un diagrama de objetos complejos o para
describir escenarios determinados (p. ej. situaciones tpicas o anmalas,
escenarios de prueba, etc.).
Clases.
Una clase o clase de objetos es una abstraccin que describe un grupo de
instancias con propiedades (atributos) comunes, comportamiento (operaciones)
comn, relaciones comunes con otros objetos y (lo que es ms importante) una
semntica comn. As un caballo y un establo tienen los dos un coste y una
edad, pero posiblemente pertenezcan a clases diferentes (aunque esto depende
del dominio de aplicacin: en una aplicacin financiera ambos perteneceran
posiblemente a la misma clase: Inversiones).
La diferencia entre instancia y clase est en el grado de abstraccin. Un objeto es
una abstraccin de un objeto del mundo real, pero una clase es una abstraccin
de un grupo de objetos del mundo real. La abstraccin permite la generalizacin y
evita la redefinicin de las caractersticas (atributos, comportamiento o relaciones)
comunes, de forma que se produce una reutilizacin de estas definiciones
comunes por parte de cada uno de los objetos. Por ejemplo todas las elipses
(instancias) comparten las mismos operaciones para dibujarlas o calcular su rea.
El smbolo grfico para representar clases es un rectngulo, en el que figura el
nombre de la clase. Las clases se representan en los diagramas de clases, que
son plantillas que describen un conjunto de posibles diagramas de instancias.
Describen, por tanto el caso general.

Atributos.
Un atributo es un dato contenido en todas las instancias de una clase. Cada
atributo tiene un valor para cada una de las instancias. Varias clases pueden tener
atributos comunes (p. ej. nombre, en las clases Persona y Calle) pero cada
atributo debe ser nico dentro de una clase.
Pg. 24

Los atributos tienen que ser datos, no objetos. La diferencia entre unos y otros
reside en la identidad: los objetos tienen identidad, pero los atributos no. Por
ejemplo, todas las ocurrencias del valor 3 de un atributo son indistinguibles.
Los atributos se representan en el segundo rea de los smbolos de clase e
instancia. En las clases, figurar el nombre del atributo, el tipo y el valor por
defecto. En las instancias, el valor del atributo para ese objeto determinado.

Operaciones.
Una operacin o mtodo es una funcin o transformacin. Cada operacin lleva
implcito un objeto destino, sobre el que se va a realizar la operacin. El
comportamiento de la operacin depende de la clase del objeto destino. Todos los
objetos de una clase comparten las mismas operaciones o mtodos. Cada objeto
conoce la clase a que pertenece y, por tanto, la implementacin correcta de la
operacin. Una misma operacin puede aplicarse a objetos de clases distintas. En
este caso diremos que la operacin es polimrfica, y a la implementacin de la
operacin en cada una de las clases la llamaremos mtodo.
Una operacin puede tener una serie de argumentos explcitos, adems del objeto
destino, que acta siempre como argumento implcito.

Las operaciones figuran en la tercer rea del smbolo de las clases.


Opcionalmente figuran tambin la lista de argumentos y el tipo de resultado de la
operacin (si es que la operacin devuelve algn resultado). En los smbolos de
instancia no figuran las operaciones.
Objetos
El propsito del modelado de objetos es describir objetos. Por ejemplo, Jos
Garca, la compaa Simplex, Lassie, el proceso nmero 7468 y la ventana
superior son objetos. Un objeto es, sencillamente, algo que tiene sentido en el
contexto de la aplicacin.
Se definir un objeto como un concepto, abstraccin o cosa con lmites bien
definidos y con significado a efectos del problema que se tenga entre manos. Los
objetos tienen dos propsitos: promover la comprensin del mundo real y
proporcionar una base prctica para la implementacin por computadora. La
descomposicin de un problema en objetos depende del juicio y de la naturaleza
del problema. No existe una nica representacin correcta.
Todos los objetos poseen su propia identidad y se pueden distinguir entre s. Dos
manzanas del mismo color, forma y textura siguen siendo manzanas individuales;
Pg. 25

una persona puede comerse una manzana y otra persona podr comerse la otra.
De manera similar, dos gemelos idnticos son dos personas diferentes, aun
cuando puedan tener el mismo aspecto. El trmino identidad significa que los
objetos se distinguen por su existencia inherente y no por las propiedades
descriptivas que puedan tener. .
Es frecuente ver que la palabra objeto se utiliza de forma vaga en la literatura. En
algunas ocasiones, objeto significa una sola cosa; en otras ocasiones se refiere a
un grupo de cosas similares. Normalmente, el contexto resuelve las posibles
ambigedades. Cuando se desea ser preciso y aludir a una cosa exactamente se
utiliza la frase instancia de objeto y la expresin clase de objetos para aludir a un
grupo de cosas similares.
Clases
Una clase de objetos describe un grupo de objetos con propiedades (atributos)
similares, con relaciones comunes con otros y con una semntica comn.
Persona, compaa, animal, proceso y ventana son todos ellos clases de objetos.
Cada persona tiene una edad, un CI* y puede efectuar un cierto trabajo. Todo
proceso tiene un poseedor, una prioridad y una lista de recursos requeridos. Los
objetos y sus clases suelen aparecer como sustantivos en las descripciones de
problemas.
Es frecuente utilizar la abreviatura clase en lugar de decir clase de objetos. Los
objetos de una clase tienen los mismos atributos y los mismos patrones de
comportamiento. Casi todos los objetos derivan su individualidad de diferencias en
los valores de sus atributos y en sus relaciones con otros objetos. Sin embargo,
son posibles, objetos que tengan unos valores de atributos idnticos y tambin las,
mismas relaciones entre s.
Los objetos de una clase comparten un propsito semntico comn, ms all de
los requisitos de comunidad de atributos y de comportamiento. Por tanto, aun
cuando un granero y un caballo tienen ambos un coste y una edad, pueden
pertenecer a diferentes clases. Si se considerase el caballo y el granero tan slo
como activos financieros, podran pertenecer a una misma clase. Si el
desarrollador ha tenido en cuenta que las personas pintan los graneros y
alimentan a los caballos, entonces habrn sido modelados como clases diferentes.
La interpretacin de la semntica depende del proceso de cada aplicacin y de
nuestro propio juicio.
Cada objeto "conoce" su clase. La mayora de los lenguajes de programacin
orientados a objetos puede determinar la clase del objeto en el momento de la
ejecucin. La clase del objeto es una propiedad implcita de s mismo.
Atributos.
Un atributo es un valor de un dato que est almacenado en los objetos de una
clase. Nombre, edad y peso son atributos de los objetos del tipo Persona. Color;
peso y ao del modelo son atributos de los objetos del tipo Coche*. Cada atributo
tiene un valor para cada instancia del objeto. Por ejemplo, el atributo edad tiene el
valor "24" en el objeto Juan Garca. Dicho de otra manera, Juan Garca tiene 24
aos. Las instancias distintas de un cierto objeto pueden tener el mismo valor o
valores distintos para un atributo dado. El nombre del atributo es nico dentro de
Pg. 26

la clase (frente a ser nico en todas las clases). De esta manera las clase Persona
y Compaa* pueden tener ambas un atributo llamado direccin.
Los atributos deberan ser valores puros de datos y no objetos. A diferencia de los
objetos, los valores puros de datos no poseen identidad. Por ejemplo, todas las
apariciones del entero "17" son indistinguibles, al igual que todas las apariciones
de la cadena "Canad". El pas Canad es un objeto cuyo atributo nombre tiene
de valor "Canad" (la cadena). La capital de Canad es un objeto del tipo ciudad y
no debera modelarse como un atributo, sino ms bien como una asociacin entre
un objeto del tipo pas y un objeto del tipo ciudad. El nombre de este objeto del
tipo ciudad es "Ottawa" (la cadena).
Los atributos se enumeran en la segunda parte del cuadro de clase. El nombre de
cada atributo puede ir seguido por detalles opcionales, tales como el tipo y el valor
por omisin. El tipo ir precedido por dos puntos. El valor por omisin ir
precedido por un signo igual. En algunas ocasiones puede uno decidir omitir los
atributos en los cuadros de clase. Depende del nivel de detalle deseado en el
modelo de objetos. Los cuadros de clase tienen una lnea entre el nombre de la
clase y los atributos. Los cuadros de objeto no tienen esta lnea para distinguirlos
todava ms de los cuadros de clase.
La Figura 3.2 muestra la notacin de modelado de objetos. La clase Persona tiene
como atributos nombre y edad. Nombre es una cadena y edad es un entero. Un
objeto de la clase Persona tiene el valor Juan Garca como nombre y el valor 24
como edad. Otro objeto tiene el nombre Mara Prez y la edad 52.

Figura 3.2 Atributos y valores


Operaciones y mtodos
Una operacin es una funcin o transformacin que se puede aplicar o que puede
ser aplicada por los objetos de una clase. Contratar; despedir y pagar dividendos
son operaciones de la clase Compaa. Abril; cerrar; ocultar y mostrar son
operaciones de la clase Ventana. Todos los objetos de una clase comparten las
mismas operaciones.
Cada operacin tiene un objeto blanco como argumento implcito. El
comportamiento de la operacin depende de la clase de su blanco. Todo objeto
"conoce" su clase y, por tanto, la implementacin correcta de la operacin.
Una misma operacin puede aplicarse a muchas clases distintas. Tal operacin
ser polimrfica; esto es, una misma operacin adopta distintas formas en
distintas clases. Un mtodo es la implementacin de una operacin para una
clase. Por ejemplo, la clase archivo puede tener una operacin llamada imprimir.
Se podran implementar distintos mtodos para imprimir archivos ASCII, archivos
binarios, y archivos de imgenes digitalizadas. Todos estos mtodos efectan una
Pg. 27

misma tarea lgica: imprimir un archivo; por tanto es posible aludir a ellos
mediante la operacin genrica imprimir. Sin embargo, cada mtodo puede estar
implementado mediante un segmento de cdigo diferente.
Una operacin puede poseer argumentos adems del objeto destino blanco. Tales
argumentos parametrizan la operacin pero no afectan a la eleccin del mtodo.
Los mtodos solamente dependen de la clase del objeto blanco. (Unos pocos
lenguajes orientados a objetos y, especialmente, CLOS permiten que la seleccin
del mtodo dependa de cualquier nmero de argumentos, pero esta generalidad
da lugar a una notable complejidad semntica que no se explorar).
Cuando una operacin posee mtodos aplicables a distintas clases es importante
que todos los mtodos tengan la misma signatura: este nmero, los tipos de los
argumentos y el tipo del valor del resultado. Por ejemplo, imprimir no debera tener
como argumento nombre-archivo para un mtodo y puntero-archivo para otro. El
comportamiento de todos los mtodos de una operacin debera tener una
intencionalidad comn. Lo mejor es evitar utilizar el mismo nombre para dos
operaciones que sean semnticamente distintas, aun cuando sean aplicables a
conjuntos distintos de clases. Por ejemplo, sera poco inteligente utilizar el nombre
invertir para describir, tanto una inversin de matrices como darle la vuelta a una
figura geomtrica. En un proyecto muy grande, puede ser necesario algn tipo de
mbito de los nombres para evitar las colisiones accidentales de los mismos, pero
lo mejor es evitar toda posibilidad de confusin.
Las operaciones se enumeran en el tercio inferior del cuadro de clase. El nombre
de cada operacin puede ir seguido por detalles opcionales, tales como la lista de
argumentos y el tipo de resultado. Una lista de argumentos se escribir entre
parntesis a continuacin del nombre; los argumentos irn separados por comas.
El nombre y el tipo de cada argumento pueden indicarse tambin. El tipo y el
resulta- do viene precedido por dos puntos y no debera omitirse porque es
importante distinguir aquellas operaciones que proporcionan valores de las que
no. Una lista de argumentos vaca entre parntesis muestra explcitamente que no
hay argumentos; en caso contrario no se puede extraer ninguna conclusin. Las
operaciones se pueden omitir en los diagramas de alto nivel.
En la Figura 3.4 la clase Persona tiene los atributos nombre y edad y las
operaciones cambiar de trabajo y cambiar de direccin. Nombre, edad, cambiar de
trabajo y cambiar de direccin son caractersticas de Persona.

Figura 3.4 Operaciones


Caracterstica es una palabra genrica tanto para un atributo como para una
operacin. De manera similar, Archivo tiene una opcin para imprimir: El objeto
Pg. 28

geomtrico tiene las operaciones mover; seleccionar y rotar: Mover tiene el


argumento delta que es un Vector; seleccionar tiene un argumento p que es del
tipo Punto y proporciona un tipo de dato Boolean; y rotar tiene el argumento
ngulo.
Durante el modelado resulta til distinguir aquellas operaciones que tengan
efectos laterales de las que nicamente calculan un valor funcional sin modificar
ningn objeto. Este ltimo tipo de operacin se denomina consulta. Las consultas
sin argumentos, salvo el objeto destino, se pueden considerar como atributos
derivados. Por ejemplo, la anchura de un cuadro se puede calcular a partir de las
posiciones de sus lados. Un atributo derivado es como un atributo en tanto en
cuanto es una propiedad del objeto en s y calcularlo no va a cambiar el estado del
objeto. En muchos casos, un objeto posee un conjunto de atributos cuyos valores
estn interrelacionados y de los cuales solamente se puede seleccionar,
independientemente, un nmero prefijado de valores. El modelo de objetos
debera distinguir, general- mente, los atributos base independientes de los
atributos derivados dependientes. La seleccin de atributos base es arbitraria,
pero debera hacerse para evitar especificar, excesivamente, el estado del objeto.
Los atributos restantes se pueden omitir o bien se pueden mostrar como atributos
derivados.
2.2 El Modelo como resultado de la abstraccin.
Un modelo representa a un sistema software desde una perspectiva especfica. Al
igual que la planta y el alzado de una figura en dibujo tcnico nos muestran la
misma figura vista desde distintos ngulos, cada modelo nos permite fijarnos en
un aspecto distinto del sistema.
Cuando nos referimos a un modelo como resultado de una abstraccin, estamos
diciendo que es resultado de nuestras propias apreciaciones de un sistema, bajo
nuestro punto de vista y fijndonos en lo que nos parece ms relevante, entonces,
esa abstraccin que llevamos a cabo la vamos a plasmar en un modelo, con el fin
de mostrar el sistema que vamos a elaborar, a travs de l.
La abstraccin es un proceso mental que se aplica al seleccionar algunas
caractersticas y propiedades de un conjunto de objetos y excluir otras no
pertinentes. En otras palabras, se hace una abstraccin al fijar la atencin en las
propiedades consideradas esenciales de un conjunto de cosas y desechar sus
diferencias.
En el modelamiento de datos, se usan tres tipos de abstracciones: clasificacin,
agregacin y generalizacin.
Abstraccin de clasificacin.
Se utiliza para definir un concepto como una clase de objetos de la realidad
caracterizados por propiedades comunes.
Pg. 29

Se representa grficamente como un rbol de un nivel que tiene como raz la clase
y como hojas los elementos de la clase. Las ramas del rbol se representan por
lneas discontinuas. Cada rama del rbol indica que un nodo hoja es un miembro
(ES_MIEMBRO_DE) la clase que representa la raz.
Un mismo objeto real puede clasificarse de varias maneras.
Das de la semana
Lunes

Martes

...

Domingo

Abstraccin de Agregacin.
Define una nueva clase a partir de un conjunto de (otras, no necesariamente
distintas) clases que representan sus partes componentes. Se representa por un
rbol de un nivel en el cual todos los nodos son clases; la raz representa la clase
creada por agregacin de las clases representadas en las hojas. Cada rama del
rbol indica que una clase hoja es una parte de (ES_PARTE_DE) la clase
representada por la raz. Para distinguirla de la agregacin de clasificacin, las
ramas dirigidas estn representadas por lneas dobles que van de los
componentes a los objetos agregados.
Persona

rut

nombre

direccin

telfono

La clasificacin y la agregacin son las dos abstracciones bsicas utilizadas para


construir estructuras de datos dentro de la base de datos y dentro de los lenguajes
convencionales de programacin. La clasificacin es el procedimiento utilizado
cuando, partiendo de elementos individuales de informacin, se identifican tipos de
campos o atributos. La agregacin es el procedimiento mediante el cual se renen
tipos de campos relacionados en grupos como por ejemplo tipos de registros.
Abstraccin de generalizacin.
Define una relacin de subconjunto entre elementos de dos o mas clases. Cada
generalizacin se representa con un rbol de un nivel, en el que todos los nodos
son clases, con la clase genrica como raz y las clases subconjunto como hojas;
cada rama del rbol expresa que una clase hoja es un (ES_UN) subconjunto de la
clase raz. Para distinguir la generalizacin de otras abstracciones, se usa una
flecha sencilla apuntando hacia la raz. Esta abstraccin, a pesar de ser muy
comn e intuitiva, no se usa en muchos modelos de datos. Sin embargo es muy
til por su cualidad fundamental de herencia: en una generalizacin, todas las
abstracciones definidas para la clase genrica son heredadas por las clases
subconjunto.
Pg. 30

2.3 El UML como una herramienta de modelado de objetos.


Qu es UML?
El Lenguaje Unificado de Modelado preescribe un conjunto de notaciones y
diagramas estndar para modelar sistemas orientados a objetos, y describe la
semntica esencial de lo que estos diagramas y smbolos significan. Mientras que
ha habido muchas notaciones y mtodos usados para el diseo orientado a
objetos, ahora los modeladores slo tienen que aprender una nica notacin. UML
se puede usar para modelar distintos tipos de sistemas: sistemas de software,
sistemas de hardware, y organizaciones del mundo real. UML ofrece nueve
diagramas en los cuales modelar sistemas. Diagramas de Casos de Uso para
modelar los procesos business.
Diagramas de Secuencia para modelar el paso de mensajes entre objetos.
Diagramas de Colaboracin para modelar interacciones entre objetos.
Diagramas de Estado para modelar el comportamiento de los objetos en el
sistema.
Diagramas de Actividad para modelar el comportamiento de los Casos de Uso,
objetos u operaciones.
Diagramas de Clases para modelar la estructura esttica de las clases en el
sistema.
Diagramas de Objetos para modelar la estructura esttica de los objetos en el
sistema.
Diagramas de Componentes para modelar componentes.
Diagramas de Implementacin para modelar la distribucin del sistema.
UML es una consolidacin de muchas de las notaciones y conceptos ms usadas
orientados a objetos. Empez como una consolidacin del trabajo de Grade
Booch, James Rumbaugh, e Ivar Jacobson, creadores de tres de las metodologas
orientadas a objetos ms populares.
En 1996, el Object Management Group (OMG), un pilar estndar para la
comunidad del diseo orientado a objetos, public una peticin con propsito de
un metamodelo orientado a objetos de semntica y notacin estndares. UML, en
su versin 1.0, fue propuesto como una respuesta a esta peticin en enero de
1997. Hubo otras cinco propuestas rivales. Durante el transcurso de 1997, los seis
promotores de las propuestas, unieron su trabajo y presentaron al OMG un
documento revisado de UML, llamado UML versin 1.1. Este documento fue
aprobado por el OMG en Noviembre de 1997. El OMG llama a este documento
OMG UML versin 1.1. El OMG est actualmente en proceso de mejorar una
edicin tcnica de esta especificacin, prevista su finalizacin para el 1 de abril de
1999.
UML ofrece notacin y semntica estndar
UML preescribe una notacin estndar y semnticas esenciales para el modelado
de un sistema orientado a objetos. Previamente, un diseo orientado a objetos
podra haber sido modelado con cualquiera de la docena de metodologas
populares, causando a los revisores tener que aprender las semnticas y
notaciones de la metodologa empleada antes que intentar entender el diseo en
s. Ahora con UML, diseadores diferentes modelando sistemas diferentes pueden
sobradamente entender cada uno los diseos de los otros.
Pg. 31

UML no es un Mtodo
Aun as, UML no prescribe un proceso o mtodo estndar para desarrollar un
sistema. Hay varias metodologas existentes; entre las ms populares se incluyen
las siguientes:
Catalysis: Un mtodo orientado a objetos que fusiona mucho del trabajo reciente
en mtodos orientados a objetos, y adems ofrece tcnicas especficas para
modelar componentes distribuidos.
Objetory: Un mtodo de Caso de Uso guiado para el desarrollo, creado por Ivar
Jacobson.
Shlaer/Mellor: El mtodo para disear sistemas de tiempo real, puesto en
marcha por Sally Shlaer y Steven Mellor en dos libros de 1991, Ciclos de vida de
Objetos, modelando el Mundo en Estados y Ciclos de vida de Objetos, Modelando
el mundo en Datos (Prentice Hall). Shlaer/Mellor countinan actualizando su
mtodo continuamente (la actualizacin ms reciente es el OOA96 report), y
recientemente publicaron una gua sobre cmo usar la notacin UML con
Shlaer/Mellor.
Fusion: Desarrollado en Hewlett Packard a mediados de los noventa como
primer intento de un mtodo de diseo orientado a objetos estndar. Combina
OMT
y
Booch
con
tarjetas
CRC
y
mtodos
formales.
(www.hpl.hp.com/fusion/file/teameps.pdf)
OMT: La Tcnica de Modelado de Objetos fue desarrollada por James
Rumbaugh y otros, y publicada en el libro de gran influencia "Diseo y Modelado
Orientado a Objetos" (Prentice Hall, 1991). Un mtodo que propone anlisis y
diseo iterative, ms centrado en el lado del anlisis.
Booch: Parecido al OMT, y tambin muy popular, la primera y segunda edicin de
"Diseo Orientado a Objetos, con Aplicaciones" (Benjamin Cummings, 1991 y
1994), (Object-Oriented Design, uIT Applications), detallan un mtodo ofreciendo
tambin diseo y anlisis iterative, centrndolo en el lado del diseo.
Adems, muchas organizaciones han desarrollado sus propias metodologas
internas, usando diferentes diagramas y tcnicas con orgenes varios. Ejemplos
son el mtodo Catalyst por Computer Sciences Corporation (CSC) o el Worlwide
Solution Design and Delivery Method (WSDDM) por IBM. Estas metodologas
difieren, pero generalmente combinan anlisis de flujo de trabajo, captura de los
requisitos, y modelado de negocio con modelado de datos, con modelado de
objetos usando varias notaciones (OMT, Booch, etc), y algunas veces incluyendo
tcnicas adicionales de modelado de objetos como Casos de Uso y tarjetas CRC.
La mayora de estas organizaciones estn adoptando e incorporando el UML
como la notacin orientada a objetos de sus metodologas.
Algunos modeladores usarn un subconjunto de UML para modelar what theyre
after, por ejemplo simplemente el diagrama de clases, o solo los diagramas de
clases y de secuencia con Casos de Uso. Otros usarn una suite ms completa,
incluyendo los diagramas de estado y actividad para modelar sistemas de tiempo
real, y el diagrama de implementacin para modelar sistemas distribuidos. Aun as,
otros no estarn satisfechos con los diagramas ofrecidos por UML, y necesitarn
extender UML con otros diagramas como modelos relacionales de datos y CRC
cards.
Pg. 32

Tras la aceptacin del paradigma orientado a objetos (OO) como el ms adecuado


para producir software de calidad, a principios de los noventa emergieron un buen
nmero de mtodos de desarrollo de software OO. En julio de 1993, Jacobson
critic en lo que l denominaba guerra de mtodos y plante la necesidad de
llegar a una notacin estndar de modelado, para evitar la confusin reinante y
favorecer el uso de los mtodos de software OO. A finales de 1994 se inici un
esfuerzo de unificacin por parte de los creadores de los tres principales mtodos:
Booch, Rumbaugh y Jacobson. El Lenguaje Unificado de Modelado (UML, Unified
Modeling Language) es el resultado de esa colaboracin y de las aportaciones de
las principales empresas de software.
UML fue adoptado en noviembre de 1997 por OMG (Object Management Group)
como una de sus especificaciones y desde entonces se ha convertido en un
estndar de facto para visualizar, especificar y documentar los modelos que se
crean durante la aplicacin de un proceso software. UML ha ejercido un gran
impacto en la comunidad software, tanto a nivel de desarrollo como de
investigacin.
Su xito ha sido enorme, como lo prueban, por una parte, su utilizacin en todo el
mundo para construir aplicaciones en todos los dominios y de todos los tamaos,
y, por otra, que los entornos de desarrollo ms extendidos --como son los de
Borland, Microsoft e IBM-- integran herramientas para el modelado con UML.
Otras dos especificaciones de OMG relacionadas con UML son el lenguaje OCL
(Object Constraint Language) y XMI (XML Metadata Interchange). OCL es un
lenguaje que se utiliza para escribir expresiones sobre modelos, de modo que
extiende la potencia expresiva de UML y permite crear modelos ms precisos y
ms completos; XMI es un formato para intercambio de modelos basado en XML
(eXtensible Markup Language).
reas de trabajo en torno a UML Los principales objetivos en el diseo de UML
fueron stos: obtener un lenguaje simple pero suficientemente expresivo, que
permitiese modelar aplicaciones en cualquier dominio; obtener un lenguaje legible,
puesto que sera un lenguaje utilizado por las personas; y permitir la generacin
automtica de cdigo.
Para combinar la simplicidad con la aplicabilidad a cualquier dominio, UML
incorpora un conjunto de mecanismos de extensibilidad que permiten definir
perfiles (profiles) que lo adaptan a un dominio concreto (aplicaciones web, CORBA
--Common Object Request Broker Architecture --, modelado del negocio, EJB
--Enterprise Java Bean(s), ...). La legibilidad se obtiene mediante diagramas
visuales que representan los mode- los. Por ltimo, la generacin de cdigo por
parte de herramientas exige una definicin for- mal de UML, que se consigue
mediante un metamodelo expresado en un metalenguaje denominado MOF (MetaObject Facility). La definicin de perfiles y los trabajos sobre formalizacin de UML
han sido dos reas en las que se ha investigado intensamente.
El Proceso Unificado (Unified Process, UP) es un marco para definir procesos
software basa- dos en UML definido en Rational, la empresa de sus creadores que
fue adquirida por IBM a finales de 2002. En los ltimos aos se han definido
numerosos procesos que se ajustan a los principios del UP: procesos dirigidos por
casos de uso, iterativos e incrementales, y centrados en la arquitectura. El proceso
ms extendido ha sido el RUP (Rational Unified Process), definido en Rational.
Pg. 33

En estos aos, el rea de la definicin de procesos y tcnicas asociadas, como


modelado de negocio o casos de uso, ha recibido mucha atencin por parte tanto
de la industria como del mundo acadmico. Sin duda, los casos de uso ha sido la
tcnica de modelado que ha gozado de mayo aceptacin. Sin embargo, como
seala Booch [2], todava slo un pequeo porcentaje de los desarrolladores
utilizan UML y muchos proyectos lo usan tan slo para documentar sus decisiones
de diseo en vez de utilizar los modelos para razonar sobre el sistema, lo que
supone su principal beneficio.
La aparicin de UML ha supuesto el reconocimiento de la actividad del modelado
(diseo basado en modelos) como una actividad clave para producir software de
calidad. Sin embargo, resulta paradjico que al mismo tiempo haya surgido el
movimiento del desarrollo gil de software (Agile Software), que considera que el
valor est en el cdigo y en las personas ms que en los modelos y los procesos
[3], as como la llamada programacin extrema (eXtreme Programming, XP) [4].
Con la iniciativa MDA (Model Driven Architecture), promovida por el OMG, ha
surgido un nuevo paradigma de desarrollo, no centrado en el cdigo sino en los
modelos, que se denomina desarrollo guiado por modelos. Con esta nueva visin,
se puede obtener cdigo a partir de modelos centrados en el dominio del problema
e independientes de cualquier aspecto relacionado con la plataforma, mediante
transformaciones de modelos.
2.4 Planteamiento del problema.
Necesidad del anlisis y diseo
Punto inicial: planteamiento de un problema
Punto final: implementacin de una solucin al problema planteado
Como llegar a nuestro objetivo? Paso a paso.
Primer paso: Anlisis - comprender un determinado dominio o contexto pero sin
cubrir toda la realidad. Solo la parte afectada por el problema.
Segundo paso: Diseo - base para la implementacin de lo definido en el
anlisis. Existe mas de un diseo correcto dentro de cada contexto.
Tercer paso: Implementacin del diseo realizado.
Anlisis y diseo: modelizacin de problemas
Pasos a seguir:
1. Leer atentamente el planteamiento del problema
2. Extraer una lista de nombres y otra de verbos candidatos
3. Completar los nombres y los verbos
4. Combinar nombres: asignar clases y atributos
5. Colocar verbos: asignar mtodos a clases
6. Establecer relaciones entre clases
7. Comprobar el diseo con el planteamiento inicial
1. Planteamiento del problema
La tienda de libros
Se desea llevar a cabo una aplicacin capaz de gestionar libros, lo que supone
poder adquirir nuevos libros y modificar el precio de los libros a la venta. Para
Pg. 34

cada libro se dispone del ttulo, el autor, la fecha de publicacin, la editorial y el


precio. Adems, la tienda desea ofrecer a sus compradores informacin sobre los
autores de los libros, incluyendo, adems de su nombre completo, su pgina web
y su correo electrnico. La tienda trabaja directamente con las distintas editoriales,
por lo que necesita tambin disponer de la direccin, el telfono y la persona de
contacto de cada editorial, teniendo en cuenta que estos datos pueden cambiar.
2.4.1 Analizar el enunciado del problema.
Debemos hacer un anlisis minucioso del enunciado del problema anterior y de
esta manera continuar con lo siguiente:
2. Extraer una lista de nombres y otra de verbos
Nombres
aplicacin?
Libros
Precio
Ttulo
Autor
fecha de publicacin
editorial
compradores
nombre completo
pgina web
correo electrnico
direccin
telfono
persona de contacto

Verbos
gestionar?
adquirir
modificar
ofrecer
cambiar

2.4.2 Identificar funciones del sistema.


Esta parte es muy importante, ya que debemos llevar a cabo entrevistas con los
usuarios y poder identificar las funciones que tendr nuestro sistema, las cuales
deben de ser creadas con el fin de lograr un ptimo desempeo del sistema y
adems cumplir con los objetivos que nos marc el usuario.
2.5 Anlisis.
Anlisis del Problema.
El anlisis del problema involucra capturar el mximo de informacin referente a
este, obtener la visin del mismo por parte de los involucrados y generar un
modelo para cada una de estas visiones. Se deben refinar estos modelos hasta
obtener una o varias representaciones (modelos) del problema, los que posibilitan
su anlisis. Estos modelos que describen las visiones del problema son los que
posibilitarn que se vislumbre alguna solucin.
Se debe modelar tanto el problema como la situacin esperada, de modo de poder
disear la forma de llegar del estado actual al estado objetivo(problema
solucionado).
Pg. 35

Lo relevante de este punto es que el anlisis es una tarea creativa que requiere de
capacidades de abstraccin y uso de lenguajes que faciliten la tarea de
generacin de modelos y anlisis de los mismos. En el anlisis del problema se
deben contestar las siguientes preguntas:
Cul es el problema? (Cul es el estado actual considerado insatisfactorio?)
En qu forma se considerara el problema solucionado? (Cul es el estado
deseado?)
Qu restricciones existen para llegar a esa solucin?
2.5.1 Descubrir clases y objetos en el dominio del problema.
3. Completar los nombres y los verbos
Nombres
Libros
precio de libro
Ttulo de libro
Autor de libro
Fecha de publicacin de libro
Editorial de libro
compradores de libro?
Nombre completo de autor
pgina web de autor
correo electrnico de autor
direccin de editorial
Telfono de editorial
persona de contacto de editorial

Verbos
adquirir libro
modificar precio
ofrecer info autores
cambiar direccin
cambiar telfono
cambiar persona de contacto

2.5.2 Identificar atributos de los objetos.


4. Combinar nombres: asignar clases y atributos
Clases
Libro

Autor
Editorial

Atributos
Precio
Titulo
Autor
fecha de publicacin
editorial
nombre
web
correo
nombre
direccin
telfono
persona de contacto

2.5.3 Identificar mtodos en los objetos.


5. Colocar verbos: asignar mtodos a clases
Clases

Atributos

Mtodos

Pg. 36

Libro

Autor
Editorial

precio
Titulo
autor
fecha de publicacin
editorial
nombre
Web
Correo
nombre
Direccin
Telfono
persona de contacto

Adquirir, modificar precio

mostrar nombre
mostrar web
mostrar correo
cambiar direccin
cambiar telfono
cambiar persona contacto

6. Establecer relaciones entre clases

7. Comprobar el diseo con el planteamiento inicial


- Comprobar cada uno de los pasos con el planteamiento del problema
- Asegurarse de que las decisiones tomadas a lo largo del proceso no estn
en contradiccin con nada de lo expresado en el planteamiento del
problema
- Plantear posibles formas de completar el diseo. Ej: Inclusin de la fecha
como otra clase?
- En caso de duda, consultar con el cliente.
Abstraccin: clase-objeto
Definicin de objeto: Un objeto es una entidad significativa en un determinado
dominio de aplicacin. Ej: una persona, un cliente de una tienda virtual, una cuenta
corriente de un banco,...
Caractersticas de los objetos: Los objetos deben ser distinguibles y tener
identidad por s mismos. Ej: Pas/Mxico.
Descripcin de los objetos: Los objetos contienen valores que los describen e
identifican. Ej: Juan Prez (nombre, apellido, CURP).

Pg. 37

Comportamiento de los objetos: Los objetos se relacionan con el exterior a travs


de mensajes que reciben y a los que responden de distintas maneras. Ej:
ingresar/sacar dinero de una cuenta.
Definicin de clase: Una clase describe un grupo de objetos que tienen
propiedades similares y ser comportan de manera similar.
Caractersticas de las clases: Actan como plantilla o tipo para un conjunto de
objetos. Un objeto es una instancia de una clase. Ej: coche/revista de coches.
Atributos: Son los valores comunes a todos los objetos de una clase.
Cada atributo tiene asociado un tipo. Ej: cilindrada (cc).
Mtodos: Definen el comportamiento que tendrn los objetos instancia de la clase.
El comportamiento de cada objeto concreto vara. Ej: sacar dinero de una cuenta
con/sin dinero.
Relacin de asociacin: Es una relacin estructural que describe un conjunto de
enlaces o conexiones entre objetos.
Atributo o Asociacin: La diferencia entre la modelizacin como atributo o como
asociacin depende, en la mayora de los casos, del planteamiento del problema.
Ejemplo:
1. Libro: titulo, autor, nombreAutor, webAutor, correoAutor, nombreEditorial,
direccionEditorial, telefonoEditorial, personaContactoEditorial, precio.
2. Libro: titulo, autor, editorial, precio.
Autor : nombre, web, correo.
Editorial : nombre, direccin, telfono, personaContacto.
Interfaz: utilizacin de los objetos
Los mtodos de una clase definen su interfaz.
Los mtodos reciben parmetros. Ej: sacar dinero - cunto?
Los mtodos devuelven un resultado. Ej: sacar dinero - nuevo saldo
Los mtodos pueden modificar los valores contenidos en los objetos. Ej: sacar
dinero - modifica el saldo.
Los mtodos pueden solo consultar los valores contenidos en los objetos. Ej:
consultar saldo - no modifica nada.
Los mtodos se definen en las clases pero se ejecutan sobre objetos concretos.
Signatura de un mtodo: nombre del mtodo mas los parmetros que recibe y
devuelve.
Notacin utilizada

2.6 Introduccin al diseo de la solucin. Diseo de la Solucin.


El diseo de la solucin es el proceso por el cual se determina cuales son los
pasos a seguir para conseguir pasar desde el estado actual (problema) al estado
deseado u objetivo. Muchas veces este proceso de diseo involucra a variados
Pg. 38

componentes, no slo de ndole informtica, los cuales no son el objetivo de este


curso.
En algunas ocasiones, el modelo del estado objetivo es ya el diseo de la
solucin, como por ejemplo, en el caso de los sistemas software, el modelo de la
situacin objetivo se traslapa con la primera versin del diseo.
2.6.1 Representacin grfica de una clase.
Nombre
Atributos
Mtodos
2.6.2 Diagramas de interaccin entre la aplicacin y una clase.
Diagramas de Interaccin:
La vista de interaccin describe secuencias de intercambios de mensajes entre los
roles que implementan el comportamiento de un sistema. Un rol clasificador, o
simplemente "un rol", es la descripcin de un objeto, que desempea un
determinado papel dentro de una interaccin, distinto de los otros objetos de la
misma clase. Esta visin proporciona una vista integral del comportamiento del
sistema, es decir, muestra el flujo de control a travs de muchos objetos. La vista
de interaccin se exhibe en dos diagramas centrados en distintos aspectos pero
complementarios: centrados en los objetos individuales y centrados en objetos
cooperantes.
Los objetos interactan para realizar colectivamente los servicios ofrecidos por las
aplicaciones. Los diagramas de interaccin muestran cmo se comunican los
objetos en una interaccin. Existen dos tipos de diagramas de interaccin: el
Diagrama de Colaboracin y el Diagrama de Secuencia.
Diagramas de Secuencia:
Diagrama que muestra las interacciones entre los objetos organizadas en una
secuencia temporal. En particular muestra los objetos participantes en la
interaccin y la secuencia de mensajes intercambiados.
Representa una interaccin, un conjunto de comunicaciones entre objetos
organizadas visualmente por orden temporal. A diferencia de los diagramas de
colaboracin, los diagramas de secuencia incluyen secuencias temporales pero no
incluyen las relaciones entre objetos. Pueden existir de forma de descriptor
(describiendo todos los posibles escenarios) y en forma de instancia (describiendo
un escenario real).
Dentro del conjunto de mensajes representados dispuestos en una secuencia
temporal, cada rol en la secuencia se muestra como una lnea de vida, es decir,
una lnea vertical que representa el rol durante cierto plazo de tiempo, con la
interaccin completa. Los mensajes se muestran como flechas entre lneas de
vida. Un diagrama de secuencia puede mostrar un escenario, es decir, una historia

Pg. 39

individual de transaccin. Un uso de un diagrama de secuencia es mostrar la


secuencia del comportamiento de un caso de uso.
Un dilogo de secuencia posee dos dimensiones: la vertical representa el tiempo,
la horizontal representa los objetos que participan en la interaccin. En general, el
tiempo avanza hacia abajo dentro de la pgina (se pueden invertir los ejes si se
desea). Con frecuencia slo son importantes las secuencias de mensajes pero en
aplicaciones de tiempo real el eje temporal puede ser una mtrica. La ordenacin
horizontal de los objetos no tiene ningn significado.
Cada objeto representa una columna distinta, se pone un smbolo de objeto al final
de la flecha que representa el mensaje que ha creado el objeto; est situada en el
punto vertical que denota el instante en que se crea el objeto. Esta se conoce
como lnea de vide del objeto. Se pone una X grande en el punto en que deja de
existir el objeto o en el punto en que el objeto se destruye a s mismo. Para el
periodo durante el cual est activo el objeto, la lnea de vida se ampla para ser
una lnea doble continua. Si el objeto se llama a s mismo, entonces se superpone
otra copia de la doble lnea para mostrar la doble activacin. El orden relativo de
los objetos no tiene significado an cuando resulta til organizarlos de modo que
se minimice la distancia de las flechas.
Cada mensaje se representa mediente una flecha horizontal que va desde la lnea
de vida del objeto que envi el mensaje hasta la lnea de vida del objeto que ha
recibido el mensaje. Si un mensaje requiere un cierto tiempo para llegar a su
destino, entonces la flecha del mensaje se dibuja diagonalmente hacia abajo.
Para un flujo de objeto asncrono entre objetos activos, los objetos se representan
mediante lneas dobles continuas y los mensajes se representan como flechas. Se
pueden enviar simultneamente dos mensajes pero no se pueden recibir
simultneamente porque no sxe puede garantizar una recepcin simultnea.
Las bifurcaciones se muestran partiendo la lnea de vida del objeto. Cada
bifurcacin puede enviar y recibir mensajes. Eventualmente las lneas de vida del
objeto tienen que fusionarse de nuevo.
Un diagrama de secuencia tambin se puede mostrar en forma de descriptor, en el
cual los constituyentes son roles en lugar de objetos. Este diagrama muestra en el
caso general, no una sola ejecucin del mismo. Los diagramas del nivel de
descriptores se dibujan sin subrayados porque los smbolos denotan roles y no
objetos individuales.
Diagramas de Secuencia:
1. Muestra la secuencia de mensajes entre objetos durante un escenario
concreto
2. Cada objeto viene dado por una barra vertical
3. El tiempo transcurre de arriba abajo
4. Cuando existe demora entre el envo y la atencin se puede indicar usando
una lnea oblicua
Diagrama de Secuencia

Pg. 40

Ejemplo de Diagrama de Secuencia

Diagramas de Colaboracin:
1.
Son tiles en la fase exploratoria para identificar objetos.
2.
La distribucin de los objetos en el diagrama permite observar
adecuadamente la interaccin de un objeto con respecto de los dems
3.
La estructura esttica viene dada por los enlaces; la dinmica por el
envo de mensajes por los enlaces
Diagrama que muestra interacciones organizadas alrededor de los roles. A
diferencia de los diagramas de secuencia, los diagramas de colaboracin
muestran explcitamente las relaciones de los roles. Por otra parte, un diagrama
de colaboracin no muestra el tiempo como una dimensin aparte, por lo que
resulta necesario etiquetar con nmeros de secuencia tanto la secuencia de
mensajes como los hilos concurrentes.
Pg. 41

Un diagrama de colaboracin es tambin un diagrama de clases que contiene


roles de clasificador y roles de asociacin en lugar de slo clasificadores y
asociaciones. Los roles de clasificador y los de asociacin describen la
configuracin de los objetos y de los enlaces que pueden ocurrir cuando se
ejecuta una instancia de la colaboracin. Cuando se instancia una colaboracin,
los objetos estn ligados a los roles de clasificador y los enlaces a los roles de
asociacin. El rol de asociacin puede ser desempeado por varios tipos de
enlaces temporales, tales como argumentos de procedimiento o variables locales
del procedimiento. Los smbolos de enlace pueden llevar estereotipos para indicar
enlaces temporales.
Un uso de un diagrama de colaboracin es mostrar la implementacin de una
operacin. La colaboracin muestra los parmetros y las variables locales de la
operacin, as como asociaciones ms permanentes. Cuando se implementa el
comportamiento, la secuencia de los mensajes corresponde a la estructura de
llamadas anidadas y el paso de seales del programa.
Un diagrama de secuencia muestra secuencias en el tiempo como dimensin
geomtrica, pero las relaciones son implcitas. Un diagrama de colaboracin
muestra relaciones entre roles geomtricamente y relaciona los mensajes con las
relaciones, pero las secuencias temporales estn menos claras.
Es til marcar los objetos en cuatro grupos: los que existen con la interaccin
entera; los creados durante la interaccin (restriccin {new}); los destruidos
durante la interaccin (restriccin {destroyed}); y los que se crean y se destruyen
durante la interaccin (restriccin {transient}).
Aunque las colaboraciones muestran directamente la implementacin de una
operacin, pueden tambin mostrar la realizacin de una clase entera. En este
uso, muestran el contexto necesario para implementar todas las operaciones de
una clase. Esto permite que el modelador vea los roles mltiples que los objetos
pueden desempear en varias operaciones.
Mensajes
Los mensajes se muestran como flechas etiquetadas unidas a los enlaces. Cada
mensaje tiene un nmero de secuencia, una lista opcional de mensajes
precedentes, una condicin opcional de guarda, un nombre y una lista de
argumentos y un nombre de valor de retorno opcional. El nombre de serie incluye
el nombre (opcional) de un hilo. Todos los mensajes del mismo hilo se ordenan
secuencialmente. Los mensajes de diversos hilos son concurrentes a menos que
haya una dependencia secuencial explcita.
Flujos
Generalmente, un diagrama de colaboracin contiene un smbolo para un objeto
durante una operacin completa. Sin embargo, a veces, un objeto contiene
diferentes estados que se deban hacer explcitos. Por ejemplo, un objeto pudo
cambiar de localizacin o sus asociaciones pudieron diferenciarse.
Los diferentes smbolos de objeto que representan un objeto se pueden coenctar
usando flujos "become" o "conversion". Un flujo "become" es una transicin, a
aprtir de un estado de un objeto a otro. Se dibuja como una flecha de lnea
dsicontinua con el estereotipo "become" o "conversion" y puede ser eqtiquetado
con un nmero de serie para mostrar cuando ocurre. Un flujo de conversin
Pg. 42

tambin se utiliza para mostrar la migracin de un objeto a partir de una


localizacin a ota distinta.
Qu es una Colaboracin?
Es una descripcin de una coleccin de objetos que interactan para implementar
un cierto comportamiento dentro de un contexto. Describe una sociedad de
objetos cooperantes unidos para realizar un cierto propsito. Una colaboracin
contiene ranuras que son rellenadas por los objetos y enlaces en tiempo de
ejecucin. Una ranura de colaboracin se llama Rol porque describe el propsito
de un objeto o un enlace dentro de la colaboracin.
Un rol clasificador representa una descripcin de los objetos que pueden participar
en una ejecucin de la colaboracin, un rol de asociacin representa una
descripcin de los enlaces que pueden participar en una ejecucin de
colaboracin. Un rol de clasificador es una asociacin que est limitada por tomar
parte en la colaboracin. Las relaciones entre roles de clasificador y asociacin
dentro de una colaboracin slo tienen sentido en ese contexto. En general fuera
de ese contexto no se aplican las mismas relaciones.
Una Colaboracin tiene un aspecto estructural y un aspecto de comportamiento. El
aspecto estrucutral es similar a una vista esttica: contiene un conjunto de roles y
relaciones que definen el contexto para su comprtamiento. El comportamiento es
el conjunto de mensajes intercambiados por los objetos ligados a los roles. Tal
conjunto de mensajes en una colaboracin se llama Interaccin. Una colaboracin
puede incluir una o ms interacciones.
Qu es una Interaccin?
Es el conjunto de mensajes intercambiados por los roles de clasificador a travs
de los roles de asociacin. Un mensaje es una comunicain unidireccional entre
dos objetos, un flujo de objeto con la informacin de un remitente a un receptor.
Un mensaje puede tener parmetros que transporten valores entre objetos. Un
mensaje puede ser una seal (comunicacin explcita entre objetos, con nombre y
asncrona) o una llamada (la invocacin sncrona de una operacin con un
mecanismo para el control, que retorna posteriormente al remitente). Un patrn de
intercambios de mensajes que se realizan para lograr un propsito especfico es lo
que se denomina una interaccin.
Qu es Patrn?
Un patrn es una colaboracin parametrizada, junto con las pautas sobre cundo
utilizarlo. Un parmetro se puede sustituir por diversos valores, para producir
distintas colaboraciones. Los parmetros sealan generalmente las ranuras para
las clases. El uso de un patrn se representa como una elipse de lnea discontinua
conectada con cada una de las clases por una lnea discontinua, que se etiqueta
con el nombre del rol.
Diagrama de Colaboracin

Pg. 43

Ejemplo de Diagrama de Colaboracin

2.6.3 Diagramas de estado de una clase.


Diagramas de Estado
Muestra el conjunto de estados por los cuales pasa un objeto durante su vida en
una aplicacin, junto con los cambios que permiten pasar de un estado a otro.
Los Diagramas de Estado representan autmatas de estados finitos, desde el
p.d.v. de los estados y las transiciones. Son tiles slo para los objetos con un
comportamiento significativo. Cada objeto est en un estado en cierto instante. El
estado est caracterizado parcialmente por los valores algunos de los atributos del
objeto. El estado en el que se encuentra un objeto determina su comportamiento.
Cada objeto sigue el comportamiento descrito en el Diagrama de Estados
asociado a su clase. Los Diagramas de Estados y escenarios son
complementarios, los Diagramas de Estados son autmatas jerrquicos que
permiten expresar concurrencia, sincronizacin y jerarquas de objetos, son grafos
dirigidos y deterministas. La transicin entre estados es instantnea y se debe a la
ocurrencia de un evento.
Estado
Identifica un periodo de tiempo del objeto (no instantneo) en el cual el objeto est
esperando alguna operacin, tiene cierto estado caracterstico o puede recibir
cierto tipo de estmulos. Se representa mediante un rectngulo con los bordes
redondeados, que puede tener tres compartimientos: uno para el nombre, otro
para el valor caracterstico de los atributos del objeto en ese estado y otro para las
Pg. 44

acciones que se realizan al entrar, salir o estar en un estado (entry, exit o do,
respectivamente).
Eventos
Es una ocurrencia que puede causar la transicin de un estado a otro de un
objeto. Esta ocurrencia puede ser una de varias cosas:
Condicin que toma el valor de verdadero o falso
Recepcin de una seal de otro objeto en el modelo
Recepcin de un mensaje
Paso de cierto perodo de tiempo, despus de entrar al estado o de cierta
hora y fecha particular
El nombre de un evento tiene alcance dentro del paquete en el cual est definido,
no es local a la clase que lo nombre.
Envo de mensajes
Adems de mostrar y transicin de estados por medio de eventos, puede
representarse el momento en el cual se envan mensajes a otros objetos. Esto se
realiza mediante una lnea punteada dirigida al diagrama de estados del objeto
receptor del mensaje.
Transicin simple
Una transicin simple es una relacin entre dos estados que indica que un objeto
en el primer estado puede entrar al segundo estado y ejecutar ciertas operaciones,
cuando un evento ocurre y si ciertas condiciones son satisfechas. Se representa
como una lnea slida entre dos estados, que puede venir acompaada de un
texto con el siguiente formato:
event-signature "[" guard-condition] "/" action-expression "^"send-clause
event-signature es la descripcin del evento que da lugar la transicin, guardcondition son las condiciones adicionales al evento necesarias para que la
transicin ocurra, action-expression es un mensaje al objeto o a otro objeto que
se ejecuta como resultado de la transicin y el cambio de estado y send-clause
son acciones adicionales que se ejecutan con el cambio de estado, por ejemplo, el
envo de eventos a otros paquetes o clases.
Transicin interna
Es una transicin que permanece en el mismo estado, en vez de involucrar dos
estados distintos. Representa un evento que no causa cambio de estado. Se
denota como una cadena adicional en el compartimiento de acciones del estado.
Acciones:
Podemos especificar la solicitud de un servicio a otro objeto como consecuencia
de la transicin. Se puede especificar el ejecutar una accin como consecuencia
de entrar, salir, estar en un estado, o por la ocurrencia de un evento.
Generalizacin de Estados:
Podemos reducir la complejidad de estos diagramas usando la
generalizacin de estados.
Distinguimos as entre superestado y subestados.
Un estado puede contener varios subestados disjuntos.
Los subestados heredan las variables de estado y las transiciones externas.
La agregacin de estados es la composicin de un estado a partir de varios
estados independientes.
Pg. 45

La composicin es concurrente por lo que el objeto estar en alguno de los


estados de cada uno de los subestados concurrentes. La destruccin de un objeto
es efectiva cuando el flujo de control del autmata alcanza un estado final no
anidado. La llegada a un estado final anidado implica la subida al superestado
asociado, no el fin del objeto.
Subestados
Un estado puede descomponerse en subestados, con transiciones entre ellos y
conexiones al nivel superior. Las conexiones se ven al nivel inferior como estados
de inicio o fin, los cuales se suponen conectados a las entradas y salidas del nivel
inmediatamente superior.
Transaccin Compleja
Una transicin compleja relaciona tres o ms estados en una transicin de
mltiples fuentes y/o mltiples destinos. Representa la subdivisin en threads del
control del objeto o una sincronizacin. Se representa como una lnea vertical de
la cual salen o entran varias lneas de transicin de estado.
Transicin a estados anidados
Una transicin de hacia un estado complejo (descrito mediante estados anidados)
significa la entrada al estado inicial del subdiagrama. Las transiciones que salen
del estado complejo se entienden como transiciones desde cada uno de los
subestados hacia afuera (a cualquier nivel de profundidad).
Transiciones temporizadas
Las esperas son actividades que tienen asociada cierta duracin.
La actividad de espera se interrumpe cuando el evento esperado tiene lugar.
Este evento desencadena una transicin que permite salir del estado que
alberga la actividad de espera. El flujo de control se transmite entonces a
otro estado.
Diagrama de Estado

Ejemplo de Diagrama de Estado

Pg. 46

Pg. 47

Unidad III Tcnicas de diseo detallado.


Introduccin
Los sistemas modernos de computacin consisten en una gran conjuncin de
elementos de circuitos (hardware) y de programacin (software) que han sido
diseados para proporcionar a la computacin un ambiente productivo y hasta
cierta medida agradable.
El trmino Sistema de Cmputo se utiliza para sealar lo que el usuario emplea,
en lugar del trmino Computadora. En los primeros aos de la computacin, los
usuarios del sistema deban interactuar ms estrechamente con el hardware real
que lo que es hoy necesario, muchas funciones que deban realizar los usuarios
mismos se manejan ahora por software mediante Sistemas Operativos. El
sistema operativo crea un ambiente en el cual los usuarios pueden preparar
programas y ejecutarlos sin tener que entrar en los detalles del hardware del
sistema.
Para satisfacer el crecimiento de la demanda de medios de computacin, es que
se ha desarrollado la multiprogramacin, en la cual varios usuarios emplean el
sistema de forma simultnea, como Windows por ejemplo.
La computadora no solamente es una maquina que puede realizar procesos para
darnos resultados, sin que tengamos la nocin exacta de las operaciones que
realiza para llegar a esos resultados. Con la computadora adems de lo anterior
tambin podemos disear soluciones a la medida, de problemas especficos que
se nos presenten. Mas aun, si estos involucran operaciones matemticas
complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de
datos.
El diseo de soluciones a la medida de nuestros problemas, requiere como en
otras disciplinas una metodologa que nos ensee de manera gradual, la forma de
llegar a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no
son mas que una serie de operaciones que realiza la computadora para llegar a un
resultado, con un grupo de datos especficos. Lo anterior nos lleva al
razonamiento de que un programa nos sirve para solucionar un problema
especifico.
Para poder realizar programas, adems de conocer la metodologa mencionada,
tambin debemos de conocer, de manera especifica las funciones que puede
realizar la computadora y las formas en que se pueden manejar los elementos que
hay en la misma.
Computadora: Es un dispositivo electrnico utilizado para procesar informacin y
obtener resultados. Los datos y la informacin se pueden introducir en la

Pg. 48

computadora como entrada (input) y a continuacin se procesan para producir una


salida (output).
Proceso de informacin en la computadora
Datos de
entrada

Proceso

Datos de
salida

Programa: Es el conjunto de instrucciones escritas de algn lenguaje de


programacin y que ejecutadas secuencialmente resuelven un problema
especifico.
Organizacin fsica de una computadora
CPU
Dispositivos de
Entrada

Unidad de
Control

Unidad
Arit.-Log.

Dispositivos de
Salida

Memoria
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos
(informacin) en la computadora para su proceso. Los datos se leen de los
dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplos:
teclado , scanners (digitalizadores de rastreo), mouse (ratn), trackball (bola de
ratn estacionario), joystick (palancas de juego), lpiz ptico.
Dispositivos de Salida: Regresan los datos procesados que sirven de
informacin al usuario. Ejemplo: monitor, impresora.
La Unidad Central de Procesamiento (C.P.U) se divide en dos:
Unidad de control
Unidad Aritmtico - Lgica
Unidad de Control: Coordina las actividades de la computadora y determina que
operaciones se deben realizar y en que orden; as mismo controla todo el proceso
de la computadora.
Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales
como suma, resta, multiplicacin, divisin y comparaciones.
La Memoria de la computadora se divide en dos:
Memoria Central o Interna
Memoria Auxiliar o Externa
Memoria Central (interna): La CPU utiliza la memoria de la computadora para
guardar informacin mientras trabaja con ella; mientras esta informacin
permanezca en memoria, la computadora puede tener acceso a ella en forma
Pg. 49

directa. Esta memoria construida internamente se llama memoria de acceso


aleatorio (RAM).
La memoria interna consta de dos reas de memoria:
La memoria RAM (Randon Access Memory): Recibe el nombre de memoria
principal o memoria del usuario, en ella se almacena informacin solo mientras la
computadora esta encendida. Cuando se apaga o arranca nuevamente la
computadora, la informacin se pierde, por lo que se dice que la memoria RAM es
una memoria voltil.
La memoria ROM (Read Only Memory): Es una memoria esttica que no puede
cambiar, la computadora puede leer los datos almacenados en la memoria ROM,
pero no se pueden introducir datos en ella, o cambiar los datos que ah se
encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de
la memoria ROM estn grabados en forma permanente y son introducidos por el
fabricante de la computadora.
Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o
datos que el usuario desee. Los dispositivos de almacenamiento o memorias
auxiliares (externas o secundarias) mas comnmente utilizados son: cintas
magnticas y discos magnticos.
1.2 Definicin de Lenguaje
Lenguaje: Es una serie de smbolos que sirven para transmitir uno o mas
mensajes (ideas) entre dos entidades diferentes. A la transmisin de mensajes se
le conoce comnmente como comunicacin.
La comunicacin es un proceso complejo que requiere una serie de reglas
simples, pero indispensables para poderse llevar a cabo. Las dos principales son
las siguientes:
Los mensajes deben correr en un sentido a la vez.

Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de


Comunicacin y Mensaje.
Lenguajes de Programacin
Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a las
personas comunicarse con la computadora.
Los lenguajes de programacin tienen un conjunto de instrucciones que nos
permiten realizar operaciones de entrada/salida, calculo, manipulacin de textos,
lgica/comparacin y almacenamiento/recuperacin.

Pg. 50

Los lenguajes de programacin se clasifican en:


Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente
entendibles por la computadora y no necesitan traduccin posterior para que la
CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje
maquina se expresan en trminos de la unidad de memoria mas pequea el bit
(dgito binario 0 o 1).
Son aqullos que estn escritos en lenguajes directamente inteligibles por la
mquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas
o series de caracteres de dgitos 0 y 1) que especifican una operacin y las
posiciones (direccin) de memoria implicadas en la operacin se denominan
instrucciones de mquina o cdigo mquina. El cdigo mquina es el conocido
cdigo binario.
Las instrucciones en lenguaje mquina dependen del hardware de la
computadora y, por tanto, diferirn de una computadora a otra.
Ventajas del Lenguaje Mquina
- Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de
traduccin posterior, lo que supone una velocidad de ejecucin superior a
cualquier otro lenguaje de programacin.
Desventajas del Lenguaje Mquina
- Dificultad y lentitud en la codificacin.
- Poca fiabilidad.
- Gran dificultad para verificar y poner a punto los programas.
- Los programas solo son ejecutables en el mismo procesador (CPU).
En la actualidad, las desventajas superan a las ventajas, lo que hace
prcticamente no recomendables a los lenguajes mquinas.
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se
escriben en cdigos alfabticos conocidos como mnemotcnicos para las
operaciones y direcciones simblicas.
Son ms fciles de utilizar que los lenguajes mquina, pero al igual que ellos,
dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es
el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones
conocidas como nemotcnicos. Por ejemplo, nemotcnicos tpicos de
operaciones aritmticas son : en ingls : ADD, SUB, DIV, etc. ; en espaol : SUM,
RES, DIV, etc.
Una instruccin tpica de suma sera :
ADD M, N, P

Pg. 51

Esta instruccin significa "sumar el contenido en la posicin de memoria M al


nmero almacenado en la posicin de memoria N y situar el resultado en la
posicin de memoria P" . Evidentemente es ms sencillo recordar la instruccin
anterior con un nemotcnico que su equivalente en cdigo mquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador, requiere de una fase de
traduccin al lenguaje mquina para poder ser ejecutado directamente por la
computadora.
El programa original escrito en lenguaje ensamblador se denomina programa
fuente y el programa traducido en lenguaje mquina se conoce como programa
objeto, el cual ya es directamente entendible por la computadora.
Ventajas del lenguaje ensamblador frente al lenguaje mquina
- Mayor facilidad de codificacin y, en general, su velocidad de clculo.
Desventajas del lenguaje ensamblador
- Dependencia total de la mquina lo que impide la transportabilidad de los
programas (posibilidad de ejecutar un programa en diferentes mquinas. El
lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple
Machintosh.
- La formacin de los programadores es ms compleja que la correspondiente
a los programadores de alto nivel, ya que exige no solo las tcnicas de
programacin, sino tambin el conocimiento del interior de la mquina.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran
bsicamente en aplicaciones de tiempo real, control de procesos y de dispositivos
electrnicos.
Lenguaje de Alto Nivel: Los lenguajes de programacin de alto nivel (BASIC,
pascal, cobol, frotran, etc.) son aquellos en los que las instrucciones o sentencias
a la computadora son escritas con palabras similares a los lenguajes humanos (en
general en ingles), lo que facilita la escritura y comprensin del programa.
Estos lenguajes son los ms utilizados por los programadores. Estn diseados
para que las personas escriban y entiendan los programas de un modo mucho
ms fcil que los lenguajes mquina y ensambladores. Un programa escrito en
lenguaje de alto nivel es independiente de la mquina (las instrucciones no
dependen del diseo del hardware o de una computadora en particular), por lo que
estos programas son portables o transportables. Los programas escritos en
lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en
diferentes tipos de computadoras.
Ventajas de los lenguajes de alto nivel
- El tiempo de formacin de los programadores es relativamente corto
comparado con otros lenguajes.

Pg. 52

- La escritura de programas se basa en reglas sintcticas similares a los


lenguajes humanos. Nombres de las instrucciones tales como READ,
WRITE, PRINT, OPEN, etc.
- Las modificaciones y puestas a punto de los programas son ms fciles.
- Reduccin del coste de los programas.
- Transportabilidad.
Desventajas de los lenguajes de alto nivel
- Incremento del tiempo de puesta a punto al necesitarse diferentes
traducciones del programa fuente para conseguir el programa definitivo.
- No se aprovechan los recursos internos de la mquina que se explotan
mucho mejor en lenguajes mquina y ensambladores.
- Aumento de la ocupacin de memoria.
- El tiempo de ejecucin de los programas es mucho mayor.
3.1 Diseo algortmico.
Definicin de Algoritmo
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe
alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un
tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados que describe el proceso que se
debe seguir, para dar solucin a un problema especifico.
Las caractersticas fundamentales que debe cumplir todo algoritmo son :
- Debe ser preciso. e indicar el orden de realizacin de cada paso.
- Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado.
- Debe ser finito. Si se sigue un algoritmo, se debe terminar en algn
momento ; o sea debe tener un nmero finito de pasos.
La definicin de un algoritmo debe describir tres partes : Entrada, Proceso y
Salida.
Tipos de Algoritmos
Cualitativos: Son aquellos en los que se describen los pasos utilizando
palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para
definir los pasos del proceso.
Algoritmos Cotidianos
Se refiere a todos aqullos algoritmos que nos ayudan a resolver problemas
diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una
metodologa para resolverlos.
Algunos ejemplos son :
Disear un algoritmo para cambiar una llanta a un coche.
1. Inicio.
Pg. 53

2. Traer gato.
3. Levantar el coche con el gato.
4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar el gato.
11. Fin
Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de
datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el
pedido, en caso contrario rechazar el pedido.
Pasos del algoritmo :
Inicio
Leer el pedido
Examinar ficha del cliente
Si el cliente es solvente aceptar pedido, en caso
contrario rechazar pedido
Fin
Determinar el mayor de tres nmeros enteros.
Pasos del algoritmo :
1.- Comparar el primero y el segundo entero, deduciendo cul es el
mayor.
2.- Comparar el mayor anterior con el tercero y deducir cul es el
mayor. Este ser el resultado.
Los pasos anteriores se pueden descomponer en otros pasos ms simples en los
que se denomina refinamiento del algoritmo.
1.- Obtener el primer nmero (entrada), denominado NUM1
2.- Obtener el segundo nmero (entrada), denominado NUM2
3.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos
enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR.
4.- Obtener el tercer nmero (entrada), y se denomina NUM3.
5.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos
enteros son iguales, seleccionar el MAYOR. Denominar a este nmero
MAYOR.
6.- Presentar el valor MAYOR (salida).
7.- Fin
Lenguajes Algortmicos
Es una serie de smbolos y reglas que se utilizan para describir de manera
explcita un proceso.
Tipos de Lenguajes Algortmicos
Pg. 54

Grficos: Es la representacin grfica de las operaciones que realiza un


algoritmo (diagrama de flujo).
No Grficos: Representa en forma descriptiva las operaciones que debe
realizar un algoritmo (pseudocodigo).
Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de
estos lenguajes permiten describir los pasos con mayor o menor detalle.
La clasificacin de los lenguajes para algoritmos puede enunciarse de la siguiente
manera :
Lenguaje Natural.
Lenguaje de Diagrama de Flujo.
Lenguaje Natural de Programacin.
Lenguaje de Programacin de Algoritmos.
Lenguaje Natural
Es aqul que describe en espaol, para nuestro caso, los pasos a seguir utilizando
un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan
trminos especializados de una determinada ciencia, profesin o grupo.
Lenguaje de Diagrama de Flujo
Es aqul que se vale de diversos smbolos para representar las ideas o acciones a
desarrollar. Es til para organizar las acciones o pasos de un algoritmo pero
requiere de etapas posteriores para implementarse en un sistema de cmputo.
Lenguaje Natural de Programacin
Son aqullos que estn orientados a la solucin de problemas que se definen de
una manera precisa. Generalmente son aplicados para la elaboracin de frmulas
o mtodos cientficos.
Tiene las siguientes caractersticas :
- Evita la ambigedad (algo confuso que se puede interpretar de varias
maneras).
- Son precisos y bien definidos.
- Utilizan trminos familiares al sentido comn.
- Elimina instrucciones innecesarias.
3.1.1 Elementos y reglas de la representacin grfica de los algoritmos.
Las dos herramientas utilizadas comnmente para disear algoritmos son:
Diagrama de Flujo
Pseuducodigo
5.1 Diagrama de Flujo

Pg. 55

Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se


puede decir que es la representacin detallada en forma grfica de como deben
realizarse los pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes
procesos en la computadora), se relacionan entre si mediante lneas que indican el
orden en que se deben ejecutar los procesos.
Los smbolos utilizados han sido normalizados por el instituto norteamericano de
normalizacin (ANSI).
SMBOLO

DESCRIPCIN
Indica el inicio y el final de nuestro diagrama de flujo.

Indica la entrada y salida de datos.


Smbolo de proceso y nos indica la asignacin
de un valor en la memoria y/o la ejecucin de
una operacin aritmtica.
Smbolo de decisin indica la realizacin de una
comparacin de valores.
Se utiliza para representar los subprogramas.
Conector dentro de pagina. Representa la
continuidad del diagrama dentro de la misma pgina.

Conector fuera de pgina. Representa la


continuidad del diagrama en otra pgina.
Indica la salida de informacin por impresora.

Indica la salida de informacin en la pantalla o


Monitor.
Lneas de flujo o direccin. Indican la
secuencia en que se realizan las operaciones.

Pg. 56

Recomendaciones para el diseo de Diagramas de Flujo


Se deben de usar solamente lneas de flujo horizontales y/o verticales.
Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo son conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia
abajo y de izquierda a derecha.
Todo texto escrito dentro de un smbolo deber ser escrito claramente,
evitando el uso de muchas palabras.
Ejemplo:
Calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al
salario bruto en concepto de impuestos (20 por 100).

Pg. 57

Pg. 58

Ejemplo:
Realizar un diagrama de flujo que permita mostrar en pantalla un mensaje de
mayora o minora de edad segn sea el caso para un nombre especfico.

Pg. 59

4.2 Pseudocodigo
Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo
- Ocupa menos espacio en una hoja de papel
- Permite representar en forma fcil operaciones repetitivas complejas
- Es muy fcil pasar de pseudocodigo a un programa en algn lenguaje de
programacin.
- Si se siguen las reglas se puede observar claramente los niveles que tiene
cada operacin.
El pseudocdigo naci como un lenguaje similar al ingls y era un medio
representar bsicamente las estructuras de control de programacin estructurada.
Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse
posteriormente a un lenguaje de programacin. Cabe sealar que el pseudocdigo
no puede ser ejecutado por una computadora.
La ventaja del pseudocdigo es que en su uso en la planificacin de un programa,
el programador se puede concentrar en la lgica y en las estructuras de control y
no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar
el pseudocdigo si se descubren errores o anomalas en la lgica del programa,
adems de todo esto es fcil su traduccin a lenguajes como pascal, COBOL, C,
FORTRAN o BASIC.
El pseudocdigo utiliza para representar las acciones sucesivas palabras
reservadas en ingls (similares a sus homnimos en los lenguajes de
programacin), tales como star,begin, end, stop, if-then-else, while, repeatuntil.etc
Secuencial
Inicio
accin1
accin2
:
accin n
Fin
Decisin
Simple
si condicin entonces
accin1
accin2
:
accin n
Doble
si condicin entonces
accin1
accin2
:
Pg. 60

en caso contrario
accin1
acci2
Iteraccin
Fija
para var. Entera inicial hasta final
hacer
accin1
accin2
:
accin n
Condicional al inicio
mientras condicin hacer
accin1
accin2
:
accin n
Condicional al final
Repetir
accin1
accin2
:
accin n
Hasta que condicin
Seleccin
casos selector de
valor1 : accin1
accin2
valor2 : accin1
accin2
valor n : accin1
accin2
Ejercicio :
Se requiere preguntar dos valores, y a continuacin ofrecer un men con las
operaciones bsicas (+, -, *, /). Despus de presentar el resultado se ofrecer la
posibilidad de una nueva operacin.
Declaracin de variables :
Real : X, Y, RESPUESTA
Entero : OPCION
Carcter : OP
Inicio
Repetir
escribir(Primer valor : )
leer(X)
Pg. 61

escribir(Segundo valor : )
leer(Y)
escribir(1) Suma )
escribir(2) Resta )
escribir(3) Multiplicacin )
escribir(4) Divisin )
escribir(Qu
operacin
deseas realizar ? : )
leer(OPCION)
casos OPCION de
1 : RESULTADO
X+Y
2 : RESULTADO
X-Y
3 : RESULTADO
X*Y
4 : si Y=0 entonces
escribir( Error )
RESULTADO
0
en caso contrario
RESULTADO
X/Y
escribir (Resultado : ,RESULTADO)
escribir(Deseas
otro
clculo : [S/N] )
leer(OP)
Hasta que RES = N
Fin
Ejercicio :
Preguntar un nombre y repetirse en pantalla tantas veces como se desee.
(preguntar cantidad de repeticiones), indicando el nmero de repeticin.
Declaracin de variables
Cadena : nom
entero : x, n
Inicio
escribir(Nombre : )
leer(nom)
escribir(Cuntas
veces
repetirlo ? : )
leer(n)
para x
1 hasta n hacer
escribir(x.- , nom)
Fin

quieres

4.3 Diagramas estructurados (Nassi-Schneiderman)


El diagrama estructurado N-S tambin conocido como diagrama de chapin es
como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son
contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como
Pg. 62

en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un


algoritmo se represente en la sig. forma:
Inicio
Accion1
Accion2
...
Fin
Inicio
Leer
Nombre,Hrs,Precio
Calcular
Salario = Hrs * Precio
Calcular
Imp = Salario* 0.15
Calcular
Neto = Salario + Imp
Escribir
Nombre, Imp, SNeto
Fin
Una estructura condicional en N-S se representa de la siguiente manera :

Ejemplo: Se desea calcular el salario neto semanal de un trabajador en funcin


del nmero de horas trabajadas y la tasa de impuestos.

Pg. 63

Ejemplo:
Calcular el salario neto de un trabajador en funcin del nmero de horas
trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al
sueldo bruto en concepto de impuestos (20 por 100).
Pseudocdigo
Inicio
{clculo salario neto}
leer nombre, horas, precio_hora
salario_bruto
horas * precio
impuestos
0.20 * salario_bruto
salario_neto
salario_bruto_impuestos
escribir
nombre,
salario_bruto,
salario_neto_bruto, salario_neto
Fin
Diagrama N-S
Diagrama de flujo

Pg. 64

Condicionales
La especificacin formal de algoritmos tiene realmente utilidad cuando el algoritmo
requiere una descripcin ms complicada que una lista sencilla de instrucciones.
Este es el caso cuando existen un nmero de posibles alternativas resultantes de
la evaluacin de una determinada condicin.
Las estructuras selectivas se utilizan para tomar decisiones lgicas; de ah que se
suelan denominar tambin estructuras de decisin o alternativas.
En las estructuras selectivas se evala una condicin y en funcin del resultado la
misma se realiza una opcin u otra. Las condiciones se especifican usando
expresiones lgicas. La representacin de una estructura selectiva se hace con
palabras en pseudocdigo (if, then, else o bien en espaol si, entonces, sino), con
una figura geomtrica en forma de rombo o bien con un tringulo en el interior de
una caja rectangular.
Las estructuras selectivas o alternativas pueden ser:
Simples
Mltiples
Alternativa Simple (si-entonces/if-then)
La estructura alternativa simple si-entonces (en ingls if-then o bien IF-THEN )
ejecuta una determinada accin cuando se cumple una determinada condicin. La
seleccin si-entonces evala la condicin y . . .
Si la condicin es verdadera, entonces ejecuta la accin S1 (o acciones caso de
ser S1 una accin compuesta y constar de varias acciones).
Si la condicin es falsa, entonces no hacer nada.
A continuacin se muestra la grfica de la estructura condicional simple.

Pseudocdigo en espaol
Si
<condicin>
Entonces
<accin
S1>
Fin_si
Pseudocdigo en ingls
If
<condicin>
then
Pg. 65

<accin S1>
end_if
Diagrama N-S

Alternativas Mltiples (segn_sea, caso de / case)


Cuando existen ms de dos elecciones (alternativas) posibles, es cuando se
presenta el caso de alternativas mltiples. Si el nmero de alternativas es grande
puede plantear serios problemas de escritura del algoritmo y naturalmente de
legibilidad.
La estrucura de decisin mltiple evaluar una expresin que podr tomar n
valores distintos 1,2,3,4,..n . Segn que elija uno de estos valores en la condicin,
se realizara una de las n acciones, o lo que es igual, el flujo del algoritmo seguir
un determinado camino entre los n posibles.
La representacin grfica se muestra a continuacin:
Diagrama de Flujo

Diagrama N-S
Modelo 1

Modelo 2

Pg. 66

Pseudocdigo
En ingls la estructura de decisin mltiple se representa
Case
expresin
of
[e1]: accin S1
[e2]: accin S2
:
[en]: accin Sn
else
accin Sx
end_case
Ejemplo:
Se desea disear un algoritmo que escriba los nombres de los das de la semana
en funcin del valor de una variable DIA introducida por teclado.
Los das de la semana son 7; por consiguiente, el rango de valores de DIA ser
1..7, y caso de que DIA tome un valor fuera de este rango se deber producir un
mensaje de error advirtiendo la situacin anmala.
Inicio
Leer DIA
Segn_sea DIA hacer
1: escribir('Lunes')
2: escribir('Martes')
3: escribir('Mircoles')
4: escribir('Jueves')
5: escribir('Viernes')
6: escribir('Sabado')
7: escribir('Domingo')
else
escribir('Error')
fin_segn
fin
3.1.2 Implementacin de algoritmos secuenciales (utilizando notacin
algebraica).
Estructuras Secuenciales
La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra
en secuencia. Las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una
estructura secuencial se representa de la siguiente forma:
Inicio
Accion1
Pg. 67

Accion2
.
.
AccionN
Fin
- Asignacin: La asignacin consiste, en el paso de valores o resultados a una
zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que
recibe el valor. La asignacin se puede clasificar de la siguiente forma:
Simples: Consiste en pasar un valor constate a una variable (a=15)
Contador: Consiste en usarla como un verificador del numero de veces
que se realiza un proceso (a=a+1)
Acumulador: Consiste en usarla como un sumador en un proceso
(a=a+b)
De trabajo: Donde puede recibir el resultado de una operacin
matemtica que involucre muchas variables (a=c+b*2/4).
- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el
teclado) un valor. Esta operacin se representa en un pseudocodigo como sigue:
Leer a, b
Donde a y b son las variables que recibirn los valores
Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o
impresora) un resultado o mensaje. Este proceso se representa en un
pseudocodigo como sigue:
Escribe El resultado es:, R
Donde El resultado es: es un mensaje que se desea aparezca y R es una
variable que contiene un valor.
Ejemplos de Problemas Secuenciales
1) Suponga que un individuo desea invertir su capital en un banco y desea saber
cuanto dinero ganara despus de un mes si el banco paga a razn de 2%
mensual.
Inicio
Leer cap_inv
gan = cap_inv * 0.02
Imprimir gan
Fin
2) Un vendedor recibe un sueldo base mas un 10% extra por comisin de sus
ventas, el vendedor desea saber cuanto dinero obtendr por concepto de
Pg. 68

comisiones por las tres ventas que realiza en el mes y el total que recibir en el
mes tomando en cuenta su sueldo base y comisiones.
Inicio
Leer sb, v1, v2, v3
tot_vta = v1 + v2 + v3
com = tot_vta * 0.10
tpag = sb + com
Imprimir tpag, com
Fin
3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente
desea saber cuanto deber pagar finalmente por su compra.
Inicio
Leer tc
d = tc * 0.15
tp = tc - d
Imprimir tp
Fin
4) Un alumno desea saber cual ser su calificacin final en la materia de
Algoritmos. Dicha calificacin se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificacin del examen final.
15% de la calificacin de un trabajo final.
Inicio
Leer c1, c2, c3, ef, tf
prom = (c1 + c2 + c3)/3
ppar = prom * 0.55
pef = ef * 0.30
ptf = tf * 0.15
cf = ppar + pef + ptf
Imprimir cf
Fin
5) Un maestro desea saber que porcentaje de hombres y que porcentaje de
mujeres hay en un grupo de estudiantes.
Inicio
Leer nh, nm
ta = nh + nm
ph = nh * 100 / ta
pm = nm * 100 / ta
Imprimir ph, pm
Fin
6) Realizar un algoritmo que calcule la edad de una persona.
Inicio
Leer fnac, fact
edad = fact - fnac
Imprimir edad
Fin.
Pg. 69

Problemas Propuestos
1) Dada un cantidad en pesos, obtener la equivalencia en dlares, asumiendo
que la unidad cambiara es un dato desconocido.
2) Leer un numero y escribir el valor absoluto del mismo.
3) La presin, el volumen y la temperatura de una masa de aire se relacionan por
la formula:
masa = (presin * volumen)/(0.37 * (temperatura + 460))
4) Calcular el nmero de pulsaciones que una persona debe tener por cada 10
segundos de ejercicio, si la formula es:
num. pulsaciones = (220 - edad)/10
5) Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre
su salario anterior.
6) En un hospital existen tres reas: Ginecologa, Pediatra, Traumatologia. El
presupuesto anual del hospital se reparte conforme a la sig. tabla:
rea
Porcentaje del presupuesto
Ginecologa
40%
Traumatologia
30%
Pediatra
30%
Obtener la cantidad de dinero que recibir cada rea, para cualquier monto
presupuestal.
7) El dueo de una tienda compra un articulo a un precio determinado. Obtener el
precio en que lo debe vender para obtener una ganancia del 30%.
8) Todos los lunes, mircoles y viernes, una persona corre la misma ruta y
cronometra los tiempos obtenidos. Determinar el tiempo promedio que la
persona tarda en recorrer la ruta en una semana cualquiera.
9) Tres personas deciden invertir su dinero para fundar una empresa. Cada una
de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien
invierte con respecto a la cantidad total invertida.
10)Un alumno desea saber cual ser su promedio general en las tres materias
mas difciles que cursa y cual ser el promedio que obtendr en cada una de
ellas. Estas materias se evalan como se muestra a continuacin:
La calificacin de Matemticas se obtiene de la sig. manera:
Examen 90%
Promedio de tareas 10%
En esta materia se pidi un total de tres tareas.
Pg. 70

La calificacin de Fsica se obtiene de la sig. manera:


Examen 80%
Promedio de tareas 20%
En esta materia se pidi un total de dos tareas.
La calificacin de Qumica se obtiene de la sig. manera:
Examen 85%
Promedio de tareas 15%
En esta materia se pidi un promedio de tres tareas.
3.2 Diseo algortmico de las funciones.
Definicin, Funcin y Manipulacin
Un problema complejo se puede dividir en pequeos subproblemas mas sencillos.
Estos subproblemas se conocen como Mdulos y su complementacin en un
lenguaje se llama subprograma (procedimientos y funciones).
Un subprograma realiza las mismas acciones que un programa, sin embargo, un
subprograma lo utiliza solamente un programa para un propsito especifico.
Un subprograma recibe datos de un programa y le devuelve resultados (el
programa llama o invoca al subprograma, este ejecuta una tarea especifica y
devuelve el control al programa que lo llamo).
Funciones
Tipos de
Mdulos
Procedimientos
Funcin: Una funcin en matemticas, es una operacin que toma un o mas
valores (argumentos) y devuelve un resultado (valor de la funcin para los
argumentos dados). Por ejemplo:
F(X) = X / (1+X2)
Donde:
F .. Nombre de la funcin
X . Es el argumento (tambin conocido como parmetro formal)
Definicin de funciones: Una definicin de funcin se presenta de la siguiente
manera:
Funcin nombre_funcion (p1, p2, , pn)
Inicio
Bloque de instrucciones
Fin
Pg. 71

Donde:
Funcin Es la palabra clave que nos indica una definicin de funcin.
Nombre_funcion ..
Es el identificador con el cual se reconoce a la funcin
en el cuerpo del
algoritmo principal.
P1,p2,,pn ... Es el grupo de parmetros que define a la funcin.
Llamado a una funcin
Cuando definimos una funcin solo le indicamos al algoritmo que esta
funcin existe, pero una definicin de funcin no implica la realizacin de las
instrucciones que la constituyen. Para hacer uso de una funcin, el algoritmo
principal la debe llamar. Por ejemplo:
Funcin F(X)
Inicio
F = X /(1 + X^2)
Fin
Inicio
Imprimir Este es el algoritmo principal
Leer N
R = F(N)
llamado de la funcin
Imprimir El resultado de la funcin es:,R
Fin
Problemas Propuestos
1) Disee un algoritmo que llene una matriz de 10 * 10 y determine:
A) El numero mayor almacenado en la matriz
B) El numero mayor almacenado en cada rengln
C) La columna que tuvo la mxima suma
D) El rengln que tuvo la mxima suma
Disea una funcin para cada inciso.
2) Disee un algoritmo que lea un numero y mediante una funcin regrese el valor
de 1 si el numero es positivo y -1 si es negativo).

Pg. 72

Unidad IV Introduccin a la programacin.


4.1 Clasificacin del software.
Programas (software)
Software: Parte lgica del sistema informtico que dota al equipo fsico de la
capacidad para realizar cualquier tipo de tareas. De acuerdo a esta definicin, el
software integrara el conjunto de programas ejecutables sobre el hardware junto
con los documentos y datos asociados a los mismos.
Teniendo en cuenta que el concepto software est ntimamente ligado al concepto
de programa, analicemos la definicin de programa. Un programa no es ms que
un conjunto de instrucciones que se dan a la computadora para indicarle la tarea
que se desea realizar. Aqu, una instruccin es un conjunto de smbolos de un
repertorio, construidos de acuerdo a unas reglas, que representan una orden de
operacin para la computadora. Las instrucciones de un programa responden a
unas reglas sintcticas y semnticas bien establecidas que definen lo que se
denomina lenguaje de programacin.
4.1.1 Software del sistema.
Software es un trmino general para las organizadas colecciones de datos e
instrucciones de computadora, frecuentemente se rompe en dos grandes
categoras: software de sistema que proporciona las funciones del sistema en
general, y el software de aplicacin el cual es usado por los usuarios para tareas
especficas.
El software de sistema es responsable para controlar, integrar, y administrar los
componente de hardware individuales de un sistema de computo as que otro
software y los usuarios de el sistema ven esto como una unidad funcional sin tener
que estar interesado con los de talles de bajo nivel tales como transferir datos de
la memoria al disco, o representacin del texto sobre una exhibicin.
Generalmente, el software de sistema consiste de un sistema operativo y algunas
utilidades fundamentales tal como formateador de disco, administrador de
archivos, administradores de visualizacin, editores de texto, autenticacin de
usuario (login) y herramientas de administracin, y gestin de redes y software de
control de dispositivos.
4.1.2 Software de aplicacin.
El software de aplicacin, en la otra mano, es usado para cumplir tareas
especficas con excepcin del funcionamiento justo el sistema de cmputo
El software de aplicacin puede consistir de un simple programa, tal como un
visualizador de imagen, una pequea coleccin de programas (frecuentemente
llamado un paquete de software) que trabaja cercanamente junto para cumplir una
tarea, tales como una hoja de calculo o un sistema de procesamiento de texto; una
larga coleccin (frecuentemente llamado un suite de software) de relacionado pero
programas independientes y paquetes que tienen interfaz de usuario comn o
Pg. 73

formato de datos compartida, tal como Microsoft Office, el cual consiste en un


integrador cercano procesador de palabras, hoja de calculo, base de datos, etc; o
un software de sistema, tal como un sistema de administracin de base de datos,
el cual es una coleccin de los programas fundamentales que puede proporcionar
algn servicio de una variedad de otras aplicaciones independientes.
El software es creado con lenguajes de programacin y utilidades relacionadas,
las cuales pueden venir en varias formas de las de arriba: programas simples
como interpretes, paquetes que contienen un compilador, ligador, y otras
herramientas; y largas suites (frecuentemente llamadas IDE -ambiente de
desarrollo integrado-) que incluye editores, depuradores, y otras herramientas para
mltiples lenguajes.
Programacin
o Lenguajes de programacin
o Editores de texto
o Compiladores
o Algoritmos
o Administracin de color
o Proceso del desarrollo del software
o Herramientas para desarrollo de software
o Optimizacin de software
o Interfaz de programacin de aplicacin (API)
Paquete de software
o Programas de grficos
Formatos de archivos grficos
Grficos de trama
Grficos de vector
Grficos 3D
Video digital
o Art software
MLCAD
o Suite de aplicaciones Office
Procesador de palabras
Hoja de clculo
Base de datos
Sistema de administrador de documentos
o Utilidades
Productores multimedia
Grabador en disco duro
o Software de colaboracin
OpenSource
Blog
WikiWiki
Slashcode
NupeCode
Everything Engine
Pg. 74

Criptografa
Pretty Good Privacy
GNU Privacy Guard
Sistemas Operativos
o Windows
o DOS
o Linux
o Unix
o Mac OS
o OS2
o Palm OS
o Etc.
Licencias de software
o Open Source software
o Software piracy
o

4.2 Conceptos de la programacin.


Existen cinco estilos de programacin y son los siguientes:
1. Orientados a Objetos.
2. Imperativa: Entrada, procesamiento y salidas de Datos.
3. Funcional: "Funciones", los datos son funciones, los resultados pueden ser
un valor o una funcin.
4. Lgico: {T,F} + operaciones lgicos (Inteligencia Artificial).
5. Concurrente: An esta en proceso de investigacin.
4.2.1 Definicin de programa.
Programa: Es el conjunto de instrucciones escritas de algn lenguaje de
programacin y que ejecutadas secuencialmente resuelven un problema
especifico.
4.2.2 Definicin de programacin.
La programacin es un arte en que se ejercita la mente para cumplir unos
objetivos, en los cuales, aparte de nosotros -los humanos- tambin lo interpretan
las mquinas. La programacin se basa en cdigos. Un cdigo es una serie de
instrucciones que aprovecharemos para hacer nuestros programas.
Qu es la programacin orientada a objetos
La programacin Orientada a objetos (POO) es una forma especial de programar,
ms cercana a como expresaramos las cosas en la vida real que otros tipos de
programacin.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en trminos de objetos, propiedades, mtodos y
otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea
base que permita soltarnos un poco con este tipo de programacin.
Motivacin

Pg. 75

Durante aos, los programadores se han dedicado a construir aplicaciones muy


parecidas que resolvan una y otra vez los mismos problemas. Para conseguir que
los esfuerzos de los programadores puedan ser utilizados por otras personas se
cre la POO. Que es una serie de normas de realizar las cosas de manera que
otras personas puedan utilizarlas y adelantar su trabajo, de manera que
consigamos que el cdigo se pueda reutilizar.
La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de
quien la programa, de manera que la forma de hacer las cosas puede ser diferente
segn el programador. Aunque podamos hacer los programas de formas distintas,
no todas ellas son correctas, lo difcil no es programar orientado a objetos sino
programar bien. Programar bien es importante porque as nos podemos
aprovechar de todas las ventajas de la POO.
Cmo se piensa en objetos
Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un
esquema de POO. Diramos que el coche es el elemento principal que tiene una
serie de caractersticas, como podran ser el color, el modelo o la marca. Adems
tiene una serie de funcionalidades asociadas, como pueden ser ponerse en
marcha, parar o aparcar.
Pues en un esquema POO el coche sera el objeto, las propiedades seran las
caractersticas como el color o el modelo y los mtodos seran las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO
una fraccin, es decir, esa estructura matemtica que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
La fraccin ser el objeto y tendr dos propiedades, el numerador y el
denominador. Luego podra tener varios mtodos como simplificarse, sumarse con
otra fraccin o nmero, restarse con otra fraccin, etc.
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de
matemticas hars uso de objetos fraccin y en un programa que gestione un
taller de coches utilizars objetos coche. Los programas Orientados a objetos
utilizan muchos objetos para realizar las acciones que se desean realizar y ellos
mismos tambin son objetos. Es decir, el taller de coches ser un objeto que
utilizar objetos coche, herramienta, mecnico, recambios, etc.
Clases en POO
Las clases son declaraciones de objetos, tambin se podran definir como
abstracciones de objetos. Esto quiere decir que la definicin de un objeto es la
clase. Cuando programamos un objeto y definimos sus caractersticas y
funcionalidades en realidad lo que estamos haciendo es programar una clase. En
los ejemplos anteriores en realidad hablbamos de las clases coche o fraccin
porque slo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las caractersticas de los objetos. Cuando
definimos una propiedad normalmente especificamos su nombre y su tipo. Nos
Pg. 76

podemos hacer a la idea de que las propiedades son algo as como variables
donde almacenamos datos relacionados con los objetos.
Mtodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando
las clases las llamamos mtodos. Los mtodos son como funciones que estn
asociadas a un objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar
tenemos que especificar la clase a partir de la cual se crear. Esta accin de crear
un objeto a partir de una clase se llama instanciar (que viene de una mala
traduccin de la palabra instace que en ingls significa ejemplar). Por ejemplo, un
objeto de la clase fraccin es por ejemplo 3/5. El concepto o definicin de fraccin
sera la clase, pero cuando ya estamos hablando de una fraccin en concreto 4/7,
8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instruccin especial que puede ser
distinta dependiendo el lenguaje de programacin que se emplee, pero ser algo
parecido a esto.
miCoche = new Coche()
Con la palabra new especificamos que se tiene que crear una instancia de la clase
que sigue a continuacin. Dentro de los parntesis podramos colocar parmetros
con los que inicializar el objeto de la clase coche.
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando
tenemos un coche la propiedad color tomar un valor en concreto, como por
ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se
llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el
operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por ltimo el nombre e
la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el
valor del estado de la propiedad del objeto a rojo con una simple asignacin.
Mensajes en objetos
Un mensaje en un objeto es la accin de efectuar una llamada a un mtodo. Por
ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos
pasndole el mensaje ponte en marcha.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del
mtodo que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar
parntesis igual que cualquier llamada a una funcin, dentro iran los parmetros.
Pg. 77

Otras cosas
Hay mucho todava que conocer de la POO ya que slo hemos hecho referencia a
las cosas ms bsicas. Tambin existen mecanismos como la herencia y el
polimorfismo que son unas de las posibilidades ms potentes de la POO.
La herencia sirve para crear objetos que incorporen propiedades y mtodos de
otros objetos. As podremos construir unos objetos a partir de otros sin tener que
reescribirlo todo.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que
estamos trabajando, y abstraernos para definir un cdigo que sea compatible con
objetos de varios tipos.
Son conceptos avanzados que cuesta explicar en las lneas de ese informe. No
hay que olvidar que existen libros enteros dedicados a la POO y aqu solo
pretendemos dar un repaso a algunas cosas para que os suenen cuando tengis
que poneros delante de ellas en los lenguajes de programacin que debe conocer
un desarrollador del web.
4.2.3 Definicin de lenguaje de programacin.
Definicin de Lenguaje.- Es una serie de smbolos que sirven para transmitir uno
o mas mensajes (ideas) entre dos entidades diferentes. A la transmisin de
mensajes se le conoce comnmente como comunicacin.
Lenguajes de Programacin.- Es un conjunto de smbolos, caracteres y reglas
(programas) que le permiten a las personas comunicarse con la computadora.
Los lenguajes de programacin tienen un conjunto de instrucciones que nos
permiten realizar operaciones de entrada/salida, calculo, manipulacin de textos,
lgica/comparacin y almacenamiento/recuperacin.
4.3 Datos.
4.3.1 Definicin.- Un dato se define como la expresin general que describe los
objetos con los cuales opera una computadora. Los datos de entrada se
transforman por el programa, despus de las etapas intermedias, en datos de
salida.
4.3.2 Tipos de datos.
Tipos De Datos.- Todos los datos tienen un tipo asociado con ellos. Un dato
puede ser un simple carcter, tal como b, un valor entero tal como 35. El tipo de
dato determina la naturaleza del conjunto de valores que puede tomar una
variable.
Simples
Tipos de
datos
Estructurados

Numricos
Lgicos
Alfanumricos (string)
Arreglos (Vectores, Matrices)
Registros
Pg. 78

(Def. por el
usuario)

Archivos
Apuntadores

Los datos se clasifican en diversas categoras, segn el tipo de mquina o del


lenguaje en uso. Generalmente podemos encontrar las siguientes categoras :
Numricos
Lgicos
Cadenas
Datos Numricos
Son aqullos que representan una cantidad o valor determinado. Su
representacin se lleva a cabo en los formatos ya conocidos (enteros, punto y
fracciones decimales si estas existen).
Estos pueden representarse en dos formas distintas :
Tipo Numrico Entero (integer).
Tipo Numrico Real (real).
Enteros
Es un conjunto finito de los nmeros enteros. Los enteros son nmeros
completos, no tienen componentes fraccionarios o decimales y pueden ser
negativos y positivos.
Algunos ejemplos son :
37
-10 9
15.25
50
Reales
Consiste en un subconjunto de los nmeros reales. Estos nmeros siempre tienen
un punto decimal y pueden ser positivos o negativos. Un nmero real consiste de
un nmero entero y una parte decimal. Algunos ejemplos son :
0.52 664.32
6.579 8.0
-9.3 -47.23
Lgicos
Tambin se le denomina Booleano, es aqul dato que solo puede tomar uno de
dos valores : Falso y verdadero.
Se utiliza para representar las alternativas (si/no) a determinadas condiciones.
Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta ser
verdadera o falsa, segn sea.
Las categoras y tipos que se mencionaron anteriormente se conocen como
Tipos Simples, puesto que no poseen una estructura compleja.
En forma adicional, cada lenguaje puede proporcionar la utilizacin de Tipos
Compuestos, siendo estos, datos que tienen una estructura predeterminada.
Tipos Compuestos
Pg. 79

Entre los principales tipos compuestos se encuentran los siguientes:


a.- SUBRANGO :Son aqullos en los que se especifca con precisin el intervalo
de valores vlidos para un dato.
Ejemplos:
0..100 (son enumerativos de tipo entero)
'A'..'Z' (son enumerativos de tipo cadena)
Los Reales no son vlidos para crear enumerativos, ya que su intervalo no est
definido.
b.- ENUMERATIVOS : Son aquellos en los que se definen individualmente los
valores para un dato.
Ejemplos: (0,25,40,52) Siempre deben ponerse entre parntesis.
c.- DEFINIDOS POR EL USUARIO :Son aquellos que el programador crea para
satisfacer las necesidades del programa en diseo.
Cadenas
Son los datos que representan informacin textual (palabras, frases, smbolos,
etc). No representan valor alguno para efectos numricos. Pueden distinguirse
porque son delimitados por apstrofes o comillas.
Se clasifica en dos categoras :
Datos tipo carcter (char)
Datos tipo Cadena (string)
Datos Tipo Carcter
Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un
dato de este tipo contiene solo un carcter.
Reconoce los siguientes caracteres :
Caracteres Alfabticos (A,B,C,Z,a,b,cz)
Caracteres Numricos (0,1,2,9)
Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, .)
Datos Tipo Cadena (string)
Es un sucesin de caracteres que se encuentran delimitados por una comilla
(apstrofe) o dobles comillas, segn el tipo de lenguaje de programacin. La
longitud de una cadena de caracteres es el nmero de ellos comprendidos entre
los separadores o delimitadores.
Ejemplos :
Hola Mortimer
12 de octubre de 1496
Enunciado cualquiera
Nota: Los smbolos disponibles para la formulacin de caracteres y de
cadenas son aqullos que se encuentran en el codigo ASCII.
ASCII (American Standard Code for Information Interchange).

Pg. 80

4.3.3 Identificadores.
Constantes y variables
Una Constante es aqulla que no cambia de valor durante la ejecucin de un
programa (o comprobacin de un algoritmo en este caso). Se representa en la
forma descrita para cada categora.
Las Variables son aqullas que pueden modificar su valor durante la ejecucin de
un programa (idem).
Su representacin se da a travs de letras y smbolos generalmente numricos a
los que se les asigna un valor.
Ejemplos:
Constantes
Numricos

36
450.35
0.58

Cadena

'A'
'Juan'
'La Paz'

Lgicos

Falso
Verdadero

Variables
A
Nom
Edad
Ciudad
Estatura

Tipos de Datos Simples


Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de
operacin, parntesis y nombres de funciones especiales. Por ejemplo:
a+(b + 3)/c
Cada expresin toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de
datos que manipulan, se clasifican las expresiones en:
-

Aritmticas
Relacinales
Lgicas

Pg. 81

4.4 Operadores, operandos y expresiones.


Operadores en Java
Instrucciones del lenguaje
Existen varios tipos de instrucciones en java: Instruccin simple, Instruccin
condicional, Instruccin iterativa y Instruccin simple
Una instruccin simple debe finalizar en punto y coma, y puede ser una expresin
con operadores, una llamada a un mtodo, una declaracin de variable o una
instruccin compuesta por varias instrucciones simples:
int a = 5; //Declaracin de variable
System.out.println(a); //Llamada a mtodo
a = a+4; // Expresin con operadores
System.out.println(++a); //instruccin compuesta de llamada a mtodo y operador
++
Para definir una variable se emplea la misma sintaxis que para la definicin de un
atributo en una clase, pero sin utilizar los modificadores de visibilidad, ni los
modificadores de atributos.
Operadores aritmticos
Adems, en una instruccin simple pueden aparecer operadores, los hay de dos
tipos: los que actan sobre un operador, o los que lo hacen sobre dos. Los
operadores los clasificaremos por su empleo:
Operadores aritmticos

(*) En java tambin se emplea el operador + para concatenar cadenas de texto.


Operadores relacionales

Pg. 82

Nota: Los operadores relacionales siempre devuelven un valor booleano.


Hay que hacer especial mencin a los operadores == y !=, adems de ser
empleados en los tipos bsicos del lenguaje pueden ser utilizados para comparar
dos objetos, o ms especficamente, comparar dos referencias a objetos. Al
comparar dos referencias a objetos lo que realmente se comprueba es si ambas
referencias apuntan al mismo objeto o no. No confundir esto con comparar dos
referencias de tipo String, no se comparara si el texto es el mismo, sino si ambas
referencias apuntan al mismo objeto String. Para comparar String es necesario
hacerlo mediante los mtodos que para ellos existen dentro de la clase String,
como por ejemplo equals:
String cad1 = "Texto";
String cad2 = "Texto2";
boolean resultado = cad1.equals(cad2);
Operadores lgicos:

Nota: Los operadores logicos siempre devuelven un valor booleano.


Operadores a nivel de bit:

Los operadores a nivel a bit toman los operadores, los transforman a binario y
realizan las operaciones trabajando con los bits uno a uno.
Operadores de asignacin:

Nota: Estos operadores son en realidad abreviaturas de otros operadores unidos


junto al operador asignacin.
Pg. 83

Por el hecho de poder emplear varios operadores en la misma expresin nos


encontramos con la necesidad de conocer el orden de evaluacin de los
operadores:
4.5 Prioridad de operadores, evaluacin de expresiones.
Precedencia de Operadores en Java

Existe una palabra clave llamada instanceof que puede ser interpretada como un
operador, encargado de comprobar si un objeto es una instancia de una
determinada clase, por ejemplo:
String cad = "unTexto";
Bolean resultado = cad instanceof String;
Instrucciones Condicionales
Java proporciona las instrucciones if/else, switch y el operador ternario para poder
tomar decisiones en funcin del resultado de la evaluacin de una condicin o
variable.
La instruccin if tiene la siguiente estructura:
if (condicin)
{
//Cdigo a ejecutar si condicin es true
}
else
{
//Cdigo a ejecutar si condicin es false
}
Esta instruccin evala la expresin condicin, y si es true, ejecuta el cdigo que
hay entre las llaves que hay debajo de if. Si condicin fuese false, el cdigo a
ejecutar sera el contenido entre las llaves que existen debajo de else.
La parte else es opcional, es decir, esto tambin es correcto:
if (condicin)
{
//Cdigo a ejecutar si condicin es true
}
En este caso si condicin es false no sucede nada, la instruccin no ejecuta
ninguna instruccin.
Pg. 84

Otra simplificacin tambin correcta es que en caso de que slo exista una
instruccin dentro de las llaves (del if, o del else) se pueden eliminar las llaves, es
decir:
if (condicin) //instruccin a ejecutar si condicin es true;
else //instruccin a ejecutar si condicin es false;
Lo que no est permitido eliminar en ningn caso, son los puntos y coma de las
instrucciones que empleemos en la parte verdadera (if) o falsa (else), tengamos o
no las llaves.
4.6 Estructura bsica de un programa.
C# es un lenguaje orientado a objetos puro, esto es, slo puede manejar
aplicaciones creadas con el modelo de objetos ( a diferencia del lenguaje C++ que
permite crear aplicaciones con el modelo de objetos y aplicaciones con el modelo
procedimental). Debido a sto, toda aplicacin de C# debe constar de, al menos,
una clase que contenga al mtodo Main().
Ejemplo:
saludo.cs
// Mi primer programa en C#
class HolaMundo
{
public static void Main( )
{
System.Console.WriteLine(" Hola, Mundo !");
}
}
Una aplicacin puede definir tantas clases como sea necesario y tambin utilizar
clases predefinidas. La nica condicin es que una de las clases contenga al
mtodo Main( ).
El cdigo del mtodo Main( ) marca el inicio para la ejecucin de toda aplicacin.
4.7.- Proceso de creacin de un ejecutable
Una vez que se crea el cdigo fuente en C#, se procede a la creacin del cdigo
ejecutable.
Para la creacin de un ejecutable, primero debe compilarse el cdigo fuente.
Para compilar una aplicacin existen dos formas:
1. Desde la lnea de comandos del DOS
2. Utilizando el IDE de Visual Studio .NET
Compilacin desde la lnea de comandos
1. Cargar Visual Studio .NET en modo comando desde: Todos los programas /
Microsoft Visual Studio .NET 2003/ Visual Studio .NET Tools / Smbolo del
sistema de Visual Studio .NET
2. Cambiarse a la carpeta donde se haya almacenado el cdigo fuente.
Ejemplo: C:\ > cd C:\EjemC#
3. Invocar al compilador: C:\EjemC#>csc saludo.cs . Esto crea el archivo
saludo.exe
Pg. 85

El programa saludo.exe se ejecuta desde el smbolo del sistema, tecleando:


saludo <enter>
Compilacin desde Visual Studio .NET
1. Todos los programas / Microsoft Visual Studio .NET 2003/ Visual Studio
.NET 2003
2. En la ventana Microsoft Development Environment hacer clic en el botn
Nuevo proyecto
3. En la ventana Nuevo proyecto, con la carpeta Proyectos de Visual C#
abierta, ir a la parte derecha de la ventana y hacer doble clic en el icono
Aplicacin de consola.
4. Despus de crearse algunas carpetas y archivos para el nuevo proyecto, se
abrir una ventana con el siguiente texto:
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Descripcin breve de Class1.
/// </summary>
class Class1
{
/// <summary>
/// Punto de entrada principal de la aplicacin.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: agregar aqu cdigo para iniciar la aplicacin
//
}
}
}
Modifique este texto para que luzca como el archivo saludo.cs
En la barra de men, haga clic en Depurar/Iniciar sin Depurar.
Si el cdigo fuente fue tecleado correctamente, aparecer una ventana de
consola, similar a la siguiente:
C:\EjemC#\EjemploHola\bin\Debug\saludo.exe
Hola, Mundo !
Press any key to continue

Pg. 86

Unidad V Implementacin de una clase.


Introduccin
En la fase de implementacin, una clase es un tipo o molde que sirve para crear
objetos.
La sintaxis para declarar una clase es:
[modificador] class <nombre>
{
// Campos de la clase
// Mtodos de la clase
}
5.1.- Modificadores de acceso
Los modificadores de acceso sirven para restringir el acceso a los campos o a los
mtodos de una clase.
Los principales modificadores de acceso son:
private
protected
public
El modificador private permite que el campo o mtodo slo pueda ser accedido
dentro de la clase donde fue declarado.
El modificador protected permite que el campo o mtodo slo pueda ser accedido
dentro de la clase donde fue declarado y en todas las clases derivadas de ella.
El modificador public permite que el campo o mtodo pueda ser accedido desde
cualquier clase.
5.2.- Encapsulamiento de la clase
La clase se encapsula encerrando entre un par de llaves los campos y los
mtodos de la clase.
Ejemplo:
public class Punto
{
// Campos
int x;
int y;
// Mtodos
public Punto(int a, int b)
{
x = a;
y = b;
}
public int daX( )
{
return x ;
}
Pg. 87

public int daY( )


{
return y ;
}
}
// De aqu en adelante se puede utilizar el nuevo tipo Punto para crear objetos.
// La creacin de objetos debe hacerse dentro de una clase.
class Principal
{
static void Main( )
{
// Se crea el objeto centro de la clase Punto
Punto centro = new Punto(10,20);
System.Console.WriteLine("X = {0} \n Y = {1} \n", centro.daX(), centro.daY());
}
}
5.3.- El mtodo como elemento de la comunicacin
Para que los objetos de un sistema trabajen coordinadamente necesitan
comunicarse.
La comunicacin entre objetos se lleva a cabo a travs del envo y/o recepcin de
mensajes. La comunicacin se establece a travs de los mtodos.
En C#, el envo y recepcin de mensajes es semejante a la invocacin a funciones
que se maneja en otros lenguajes de programacin.
5.3.1.- Sintaxis
Los mtodos pueden ser de dos tipos:
de clase y
de instancia
Los mtodos de clase se declaran por medio del modificador static antepuesto al
nombre del mtodo.
La sintaxis para declarar un mtodo de clase o esttico es:
[modificador de acceso] <tipoDeRetorno> static <nombre>( [parmetros])
{
// Cuerpo del mtodo.
}
Ejemplo:
public static float daArea( )
{
return ba*altura ;
}
Cuando un mtodo se declara como esttico, slo existe un ejemplar de l para
ser compartido por todos los objetos de la clase.
Los mtodos de instancia no tienen el modificador static.
De los mtodos de instancia existe un ejemplar en cada objeto de la clase.

Pg. 88

5.3.2.- Concepto de parmetro


Los parmetros son variables que se usan para que los mtodos se pasen
informacin.
Un parmetro puede pasar una copia del valor contenido (parmetro valor) o la
direccin (parmetro referencia) del contenedor de un valor.
Ejemplo de parmetro valor :
// Declaracin
public double suma( double x, double y)
{
double z;
z=x+y;
return z ;
}
.............
// Comunicacin
............. objeto.suma(a, b);
................
Para utilizar los parmetros referencia se utiliza la palabra ref en la lnea de
cabecera del mtodo y en la instruccin de comunicacin.
Puesto que reciben una direccin de memoria, pueden modificar el contenido
almacenado en esa direccin.
Ejemplo de parmetro referencia:
// Declaracin
public double cambia( ref double x, ref double y)
{
x = 10.5 ;
y = 20.6 ;
}
...........
// Comunicacin
..............objeto.cambia(ref a, ref b) ;
5.3.3.- Parmetros de salida
Un mtodo puede regresar un slo valor por medio de la instruccin return.
Los parmetros de salida son tiles cuando se requiere que un mtodo regrese
ms de un valor.
Los parmetros de salida se declaran utilizando el modificador out.
Los parmetros de salida funcionan como los parmetros referencia, slo que el
objeto referenciado no necesita estar inicializado.
Ejemplo:
class EjemploOut
{
static int paramSalida(out int x)
{
x = 100 ;
return 5 ;
Pg. 89

}
static void Main( )
{
int m , n ;
n = paramSalida(out m);
System.Console.WriteLine("El valor de m es : " + m ) ;
System.Console.WriteLine("El valor de n es : " + n ) ;
}
}
5.3.4.- El constructor.
El constructor es un mtodo especial que sirve para inicializar el estado de un
objeto.
El constructor es utilizado por el operador new para crear un objeto de la clase a la
que pertenece el constructor.
Ejemplo:
class Cuadrado
{
public int lado;
public Cuadrado( int x)
{
lado = x ;
}
}
class Principal
{
static void Main( )
{
Cuadrado c = new Cuadrado( 10 );
System.Console.WriteLine("Lado = " + c.lado ) ;
}
}
Cuando no se declara un constructor, el compilador crea un constructor
predeterminado, sin parmetros y con el cuerpo vaco.
Ejemplo:
public Cuadrado( )
{
}
Obsrvese que el mtodo constructor debe tener el modificador de acceso public y
no tener tipo de retorno.
5.3.5.- El destructor
El mtodo destructor sirve para liberar el espacio de memoria que se asigno a un
objeto de una clase.
La sintaxis para declarar un destructor es:
[atributos] ~ <identificador> ( )
{
Pg. 90

// Cuerpo del destructor.


}
El identificador para el mtodo destructor es el mismo que para el constructor.
Ejemplo:
public ~ Cuadrado( )
{
}
En C# no es necesario utilizar explcitamente un mtodo destructor, ya que existe
un programa llamado recolector de basura (garbage collector), que se encarga de
checar cules objetos no estn siendo referenciados en una aplicacin y, cuando
esto sucede, devuelve la memoria ocupada por esos objetos. A partir de ese
momento, la memoria devuelta puede ser utilizada para crear nuevos objetos.

Pg. 91

UNIDAD Vl. Estructuras secuenciales y selectivas


6.1.- Estructuras secuenciales
Una estructura secuencial consiste de una secuencia de instrucciones, como se
muestra en el siguiente diagrama de flujo.

Donde un Bloque consiste de una o ms instrucciones.


6.2.- Entrada y salida de datos
La entrada de datos consiste en colocar en la memoria principal datos
provenientes desde algn dispositivo de entrada( teclado, disco, etc. ) para que la
computadora, de acuerdo a un programa, realice una tarea.
La salida de datos consiste en enviar datos ( que, generalmente, son el resultado
de un procesamiento) desde la memoria principal hacia un dispositivo de salida (
pantalla, impresora, disco, etc.).
La siguiente figura muestra un esquema conceptual del equipo de cmputo.
Pg. 92

Esquema conceptual del equipo de cmputo


La consola
En los albores de la computacin, el teclado y la pantalla formaban la consola.
En la actualidad, a la combinacin de teclado y pantalla se les sigue considerando
como a la antigua consola.
En C#, la entrada y la salida de datos se pueden manejar a travs de los mtodos
de la clase Console.
Entrada de datos desde el teclado
Para la entrada de datos por medio del teclado se pueden utilizar los mtodos
Read( ) y ReadLine( ) de la clase Console.
Ejemplos:
System.Console.Read( ) ; // Lee el siguiente carcter desde el flujo de la entrada
estndar.
System.Console.ReadLine( ) ; // Lee la siguiente lnea de caracteres desde el flujo
de la entrada estndar.
Salida de datos hacia la pantalla
La salida de datos hacia la pantalla se puede realizar utilizando los mtodos Write
y WriteLine( ) de la clase Console.
Ejemplos:
System.Console.Write( ) ; // Escribe el siguiente carcter en el flujo de la salida
estndar (la pantalla).
System.Console.WriteLine( ) ; // Escribe la siguiente lnea de caracteres en el flujo
de la salida estndar.

Pg. 93

6.3.- Interaccin de la aplicacin y la clase


Existen dos maneras de crear aplicaciones: una donde los campos y mtodos se
declaran como estticos, en cuyo caso se dice que son "de clase" porque existir
un solo ejemplar que pertenecer a la clase.
Ejemplo:
using System;
class Procedimental
{
static double sueldo = 10000.00;
static void Main( )
{
Console.WriteLine("Sueldo = " + sueldo ) ;
}
}
La otra manera es declarar los campos y mtodos sin el modificador static. En
este caso se dice que los elementos son "de instancia", porque cada objeto de la
clase tendr su propia copia de cada elemento.
En una aplicacin pueden declararse tantas clases como sea necesario, pero en
una de ellas deber declararse el mtodo Main( ).
Ejemplo:
using System ;
class Crculo
{
int x, y ; // private, por omisin.
public Circulo( int a, int b)
{
x=a;
y=b;
}
public int daX( )
{
return x ;
}
public int daY( )
{
return y ;
}
}
class Principal
{
static void Main( )
{
Crculo circ = new Crculo( 10,15); // Crea e inicializa a circ.
Console.WriteLine("X = " + circ.daX( ) ) ;
Console.WriteLine("Y = " + circ.daY( ) ) ;
}
}
Pg. 94

6.4.- Estructuras selectivas


Las estructuras selectivas sirven para seguir una sola de entre varias lneas de
ejecucin disponibles.
6.4.1.- Selectiva simple
La estructura selectiva simple sirve para seguir una lnea de ejecucin cuando se
cumple una condicin.
Diagrama de flujo:

Sintaxis:
Caso 1)
if(condicin) instruccin ; // Una sola instruccin
Caso 2)
if(condicin)
{
Bloque // Varias instrucciones
Pg. 95

}
Ejemplo 1:
if(calificacin >= 70) estatus = "Acreditado" ;
Ejemplo 2:
if(crdito == true)
{
clave = 1200 ;
adeudo += compra ;
}
6.4.2.- Selectiva doble
La estructura selectiva doble sirve para seguir una lnea de ejecucin cuando se
cumple la condicin, o seguir otra lnea cuando no se cumple la condicin.
Diagrama de flujo:

Pg. 96

Sintaxis:
Caso 1)
if(condicin) instruccin 1 ; // Una sola instruccin
else instruccin 2 ;
Caso 2)
if(condicin)
{
Bloque 1 // Varias instrucciones
}
else
{
Bloque 2 // Varias instrucciones
}
Ejemplo 1:
if(calificacin >= 70) estatus = "Acreditado";
else estatus = "No Acreditado";
Ejemplo 2:
if(crdito == true)
{
clave = 1200 ;
adeudo += compra ;
}
else
{
clave = 1000 ;
adeudo += 0.0 ;
}
6.4.3.- Selectiva anidada
La estructura selectiva anidada es una cadena de estructuras selectivas que se
conectan de la parte else de la actual con la parte if de la siguiente.

Pg. 97

Diagrama de flujo:

Sintaxis:
if(condicin1) Bloque 1 ;
else if(condicin2) Bloque 2 ;
else Bloque 3;
Ejemplo:
if(edad < = 2 )
Console.WriteLine("Beb" ) ;
Pg. 98

else if(edad < 12)


Console.WriteLine("Nio" ) ;
else if( edad < 18)
Console.WriteLine("Adolescente" ) ;
else Console.WriteLine (" Adulto" ) ;
6.4.4.- Selectiva mltiple
La estructura selectiva mltiple es similar a la selectiva anidada, salvo que las
condiciones deben ser de alguno de los tipos enteros o de tipo carcter.
Diagrama de flujo:

Sintaxis:
switch(Expresin)
{
case Cte 1: Bloque 1 ; break;
case Cte 2: Bloque 2 ; break;
case Cte N: Bloque N ; break;
default: Bloque X ; break;// Opcional.
}
Pg. 99

Ejemplo:
switch(opcin)
{
case 'A': System.Console.WriteLine("Altas"); break;
case 'B': System.Console.WriteLine("Bajas") ; break;
case 'C': System.Console.WriteLine("Cambios") ; break;
default: System.Console.WriteLine("Opcin invlida") ; break;
}
6.4.5.- Selectiva intenta
La estructura intenta ( try/catch ) se utiliza para atrapar excepciones. Aunque es
una estructura de uso especializado, vale la pena describirla brevemente aqu
para compararla con alguna de las otras estructuras aqu estudiadas.

Pg. 100

Diagrama de flujo:

Sintaxis:
try
{
// Bloque de instrucciones que pueden generar una o ms
// situaciones excepcionales.
}
catch(Excepcin 1)
Pg. 101

{
// Bloque alternativo para el caso de existir la Excepcin 1
}
...
catch(Excepcin N )
{
// Bloque alternativo para el caso de existir la Excepcin N
}
finally // Opcional
{
// Bloque de instrucciones que siempre se ejecutan
}
Ejemplo:
try
{
byte num1;
byte num2;
byte suma;
byte cociente;
num1 = 126;
num2 = 2;
cociente = checked ((byte)(num1/num2));
suma = checked ((byte)(num1 + num2));
Console.WriteLine(suma);
Console.WriteLine(cociente);
Console.WriteLine("Pulse enter para finalizar...");
Console.Read();
}
catch ( OverflowException )
{
Console.WriteLine("Una operacin matemtica produjo desbordamiento.");
Console.Read();
}
catch ( DivideByZeroException )
{
Console.WriteLine("Se intent dividir por cero.");
Console.Read();
}
finally
{
Console.WriteLine("El bloque finally siempre se ejecuta.");
}

Pg. 102

Unidad VII Estructuras de repeticin.


Las estructuras de repeticin sirven para formar bucles o ciclos en los que se
ejecuta repetidamente un bloque de instrucciones.
7.1.- Mientras ( while )
En esta estructura, de entrada se evala una condicin. En caso de que el
resultado de tal evaluacin sea true, se ejecuta un bloque de instrucciones, en el
cual debe existir una instruccin que modifique la condicin. De no existir esa
instruccin, se ejecutar un ciclo infinito ( loop ). Si el resultado de la evaluacin es
false , el bloque de instrucciones no se ejecuta y finaliza la ejecucin de la
estructura.
Diagrama de flujo:

Pg. 103

Sintaxis:
while( condicin )
{
Bloque ;
}
Ejemplo:
using System;
namespace EjemploWhile
{
class Capturador
{
public string leeClave( )
{
string c = "" ;
while(c == "")
{
c = Console.ReadLine( ) ;
}
return c ;
}
}
class Principal
{
static void Main()
{
string clave= "";
Capturador objeto = new Capturador();
Console.Write("Escriba la clave: ");
clave = objeto.leeClave();
Console.WriteLine("Clave = " + clave );
}
}
}
7.2.- Hacer mientras ( do-while )
La estructura do-while tiene un comportamiento similar a while, slo que en este
caso primero se ejecuta el bloque de instrucciones y despus se evala la
condicin. Con esto se asegura que el bloque se ejecutar al menos una vez.

Pg. 104

Diagrama de flujo:

Sintaxis:
do
{
Bloque ;
} while(condicin) ;
Ejemplo:
using System;
namespace EjemploDoWhile
{
class Capturador
{
public string leeClave( )
{
string c ;
do
{
Pg. 105

c = Console.ReadLine( ) ;
} while(c != "") ;
return c ;
}
}
class Principal
{
static void Main()
{
string clave= "";
Capturador objeto = new Capturador();
Console.Write("Escriba la clave: ");
clave = objeto.leeClave();
Console.WriteLine("Clave = " + clave );
}
}
}
7.3.- Desde ( for )
Entre las estructuras de iteracin, for es la ms verstil ya que, entre otras
caractersticas, permite la declaracin de variables dentro de su estructura.
Diagrama de flujo:

Pg. 106

Sintaxis:
for( Inicializacin ; Condicin ; Control) Bloque ;
donde:
Inicializacin es un bloque de instrucciones que puede incluir la declaracin de las
variables involucradas y la asignacin de valores iniciales.
Condicin es una instruccin que puede evaluarse de tal forma que se obtenga
como resultado un valor de verdad ( false o true). Mientras se cumpla la condicin,
se ejecutar el Bloque.
Control es un conjunto de instrucciones, separadas por comas, que controlan la
variacin de los valores de las variables utilizadas.
Los bloques de Inicializacin, Condicin y Control no son obligatorios, pero s los
dos punto y coma que los separan, por lo que la forma mnima de una estructura
for quedara as:
for ( ; ; ) ; // ciclo infinito que no realiza tarea alguna.
Ejemplo:
for(int i = 1 ; i <= 10 ; i++)
{
Console.WriteLine("Soy la lnea {0}" , i ) ;
}

Pg. 107

Bibliografa
Anlisis y Diseo Orientado a Objetos
Grady Booch
www.mitecnolgico.com
http://sistemas.itlp.edu.mx/tutoriales/fundamentosdeprog/
Aprenda Java como si estuviera en primero, Escuela Superior de Ingenieros
Industriales UNIVERSIDAD DE NAVARRA
Aprenda C++ como si estuviera en primero, Escuela Superior de Ingenieros
Industriales de San Sebastin UNIVERSIDAD DE NAVARRA
El Lenguaje Unificado de Modelado
Ivar Jacobson, Grady Booch, James Rumbaugh

Pg. 108

Você também pode gostar