Professional Documents
Culture Documents
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
Pg. 5
Datos
Datos
Operacion
es
Operacione
s
Entrada
Caja Negra
Salida
Pg. 6
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
Pg. 11
Fase conceptual.
Fase de definicin.
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
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
Pg. 20
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.
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.
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.
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
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
Verbos
gestionar?
adquirir
modificar
ofrecer
cambiar
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
Autor
Editorial
Atributos
Precio
Titulo
Autor
fecha de publicacin
editorial
nombre
web
correo
nombre
direccin
telfono
persona de contacto
Atributos
Mtodos
Pg. 36
Libro
Autor
Editorial
precio
Titulo
autor
fecha de publicacin
editorial
nombre
Web
Correo
nombre
Direccin
Telfono
persona de contacto
mostrar nombre
mostrar web
mostrar correo
cambiar direccin
cambiar telfono
cambiar persona contacto
Pg. 37
Pg. 39
Pg. 40
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
Pg. 43
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
Pg. 46
Pg. 47
Pg. 48
Proceso
Datos de
salida
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
Pg. 50
Pg. 51
Pg. 52
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
Pg. 55
DESCRIPCIN
Indica el inicio y el final de nuestro diagrama de flujo.
Pg. 56
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
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
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
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
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
Pg. 75
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
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
Aritmticas
Relacinales
Lgicas
Pg. 81
Pg. 82
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:
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
Pg. 86
Pg. 88
}
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
Pg. 91
Pg. 93
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
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
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