Fundamentos de programación

Name:
Location: Tuxtla Gutiérrez, Mexico

Friday, July 27, 2007

SALON X DE SISTEMAS

EDWIN(ROJO)


DANIEL (GORRA)

EMANUEL





Monday, May 14, 2007

sdffsfdsd



Hola

Friday, December 08, 2006

PROGRAMANDO CON EDITOR BLUE J

Tutorial de BlueJ



1 Prólogo

1.1 Acerca de BlueJ
Este tutorial es una introducción al uso del entorno de programación BlueJ. BlueJ es un
entorno de desarrollo para Java™ diseñado específicamente para la enseñanza en un
curso introductorio. Fue diseñado e implementado por el equipo de BlueJ en la
Universidad de Monash, Melbourne, Australia, y la Universidad de Southern Denmark,
Odense.

Más información sobre BlueJ se encuentra disponible en http://www.bluej.org.

1.2 Alcance y Audiencia
Este tutorial está hecho para las personas que desean familiarizarse con las
capacidades de este entorno de programación. Aquí no se explican las decisiones de
diseño que subyacen en la construcción del entorno o la investigación en la cual se basa.

Este tutorial no tiene la intención de enseñar Java. A los principiantes en la programación
en Java se les aconseja estudiar también con un texto introductorio o tomar un curso de
Java.

Este no es un manual de referencia comprensivo del entorno. Muchos detalles se
dejaron – se hace énfasis en una introducción breve y concisa, en vez de un cubrimiento
completo de características.

Cada sección comienza con una oración inicial de resumen. Esto permite a los usuarios
familiarizados con algunas partes decidir si ellos quieren leer o saltar cada parte en
particular. La sección 10 repite únicamente las líneas resumen como una referencia
rápida.

1.3 Copyright, licencia y redistribución
El Sistema BlueJ y su tutorial están disponibles libremente para cualquier persona y para
cualquier clase de uso. El sistema y su documentación pueden ser redistribuidos
libremente.

Ninguna parte del sistema BlueJ o su documentación pueden ser vendidos para obtener
lucro o incluidos en un paquete que sea vendido para lucro sin autorización escrita de los
autores.

El copyright © para BlueJ está reservado a M. Kölling y J. Rosenberg.


Prólogo

1.4 Realimentación
Comentarios, preguntas, correcciones, críticas y cualquier otra clase de realimentación
concerniente al sistema BlueJ o a su tutorial son bienvenidas y acogidas activamente.
Por favor escriba un correo electrónico a Michael Kölling ( mik@mip.sdu.dk ).


2 Instalación

BlueJ es distribuido en tres formatos diferentes: uno para sistemas Windows, uno para
MacOS, y uno para los otros sistemas. La instalación es fácil y rápida.

Prerrequisitos

Usted debe tener J2SE v1.3 ( o. JDK 1.3 ) o posterior instalado en sus sistema para
utilizar BlueJ. Si usted no tiene instalado el JDK usted puede descargarlo del sitio web de
Sun en http://java.sun.com/j2se/. En MacOS X, una versión reciente del JDK está
preinstalada – usted no necesita instalarla. Si usted encuentra una página de descargas
que ofrece el “JRE”( Java Runtime Environment ) y el “SDK” ( Software Development Kit
), usted debe descargar el “SDK” – el JRE no es suficiente.

2.1 Instalación en Windows
El archivo de distribución para los sistemas Windows es llamado bluejsetup-xxx.exe,
donde xxx es un número de versión. Por ejemplo, la distribución de Bluej versión 1.2.0 se
llama bluejsetup-120.exe. Usted puede tener este archivo en disco, o puede descargarlo
del sitio web de Bluej http://www.bluej.org. Ejecute este instalador.

El instalador le permite seleccionar un directorio para instalarlo. El también ofrece la
opción de instalar un acceso directo en el menú de inicio y en el escritorio.

Luego de finalizada la instalación, usted encontrará el programa bluej.exe en el directorio
de instalación de BlueJ.

La primera vez que usted lance BlueJ, él buscará el sistema Java ( JDK ). Si él
encuentra disponible más de un sistema Java ( e.j. usted tiene JDK 1.3.1 y JDK 1.4
instalado ), una ventana de diálogo le dejará seleccionar uno de ellos para utilizarlo. Si él
no encuentra un sistema Java, a usted se le solicitará que lo localice ( esto puede ocurrir
cuando un sistema JDK ha sido instalado, pero las correspondientes entradas de registro
han sido removidas ).

El instalador de BlueJ también instala un programa llamado vmselect.exe. Usando este
programa, usted puede cambiar posteriormente cuál versión de Java utiliza BlueJ.
Ejecute vmselect para ejecutar BlueJ con una versión diferente de Java.

La selección del JDK es almacenado para cada versión de BlueJ. Si usted tiene
diferentes versiones instaladas de BlueJ, usted puede usar una versión de BlueJ con el
JDK 1.3.1 y otra versión de BlueJ con JDK 1.4. Cambiar la versión de Java para BlueJ
hará que se cambie para todas las instalaciones de BlueJ de la misma versión para el
mismo usuario.


Instalación

2.2 Instalación en Macintosh
Por favor note que BlueJ se ejecuta solamente en MacOS X. El archivo de distribución
para MacOS es llamado BlueJ-xxx.sit, donde xxx es un número de versión. Por ejemplo,
la distribución de Bluej versión 1.2.0 se llama BlueJ-120.sit. Usted puede tener este
archivo en disco, o puede descargarlo del sitio web de Bluej http://www.bluej.org.

Este archivo puede ser descomprimido por el expansor StuffIt. Muchos navegadores
descomprimirán este archivo por usted. De otro modo, haciendo doble clic se
descomprimirá.

Luego de descomprimir, usted tendrá una carpeta llamada BlueJ-xxx. Mueva esta
carpeta dentro de su carpeta de Aplicaciones ( o donde quiera que a usted le guste
guardarlo ). No son necesarias posteriores instalaciones.

2.3 Instalación en Linux/Unix y otros sistemas
El archivo de distribución para MacOS es llamado BlueJ-xxx.sit, donde xxx es un número
de versión. Por ejemplo, la distribución de Bluej versión 1.2.0 se llama BlueJ-120.sit.
Usted puede tener este archivo en disco, o puede descargarlo del sitio web de Bluej
http://www.bluej.org.

El archivo de distribución general es un archivo jar ejecutable. Se llama bluej-xxx.jar,
donde xxx es el número de versión. Por ejemplo, la distribución de Bluej versión 1.2.0 se
llama bluej-120.jar. Usted puede tener este archivo en disco, o puede descargarlo del
sitio web de Bluej http://www.bluej.org.

Ejecute el instalador a través del siguiente comando. NOTA: Para este ejemplo, el
archivo utilizado es el de la distribución bluej-120.jar – usted necesita utilizar el nombre
del archivo que vaya a utilizar ( con el número de versión correcto ).

<>/bin/java -jar bluej-120.jar
<> es el directorio, donde el JDK fue instalado.

Una ventana se lanza, permitiéndole escoger el directorio de instalación de Bluej yla
versión del JDK utilizada para ejecutar BlueJ. Importante: El camino para BlueJ ( esto es,
cualquiera de los directorios padre ) no deben contener espacios en blanco.

Haga clic en Install. Luego de finalizar, BlueJ deberá estar instalado.

2.4 Problemas de Instalación
Si usted tiene algún problema, verifique la sección Frequently Asked Questions ( FAQ )
en el sitio web de BlueJ ( http://www.bluej.org/help/faq.html ) y lea la sección How To Ask
For Help ( http://www.bluej.org/help/ask-help.html ).


3 Comenzando – edit / compile / execute

3.1 Lanzando BlueJ
En Windows y MacOS, está instalado un programa llamado BlueJ. Ejecútelo.

En sistemas Unix el instalador guarda un script llamado bluej en el directorio de
instalación. Desde una interfaz GUI, haga doble clic en el archivo. Desde una línea de
comandos usted puede iniciar BlueJ con o sin un proyecto como argumento:

$ bluej

o

$ bluej examples/people


Figura 1: La ventana principal de BlueJ


Comenzando -edit / compile / execute

3.2 Abriendo un proyecto
Resumen: Para abrir un proyecto, seleccione Open del menú Project.

Los proyectos en BlueJ, como los paquetes estándar en Java, son directorios
conteniendo los archivos incluidos en el proyecto.

Luego de iniciar BlueJ, use el comando de menú Project – Open... para seleccionar y abrir
un proyecto.

Algunos proyectos de ejemplo están incluidos en la distribución estándar de BlueJ en el
directorio examples.

Para esta sección del tutorial, abra el proyecto people, el cual está incluido en este
directorio. Usted puede encontrar el directorio examples en el directorio instalación de
BlueJ. Luego de abrir el proyecto, usted debería ver algo similar a la ventana mostrada
en la Figura 1. La ventana puede no lucir exactamente como en su sistema, pero las
diferencias deberían ser menores.

3.3 Creando objetos
Resumen: Para crear un objeto, seleccione un constructor del menú emergente de la
clase.

Una de las características fundamentales de BlueJ es que usted no puede ejecutar
únicamente una aplicación directamente, sino que también debe interactuar directamente
con objetos simples pertenecientes a cualquier clase y, ejecutar sus métodos públicos.
Una ejecución en BlueJ normalmente se realiza creando un objeto y luego invocando
uno de los métodos del objeto. Esto es muy útil durante el desarrollo de una aplicación –
usted puede probar clases individualmente tan pronto como hayan sido escritas. No hay
necesidad de escribir primero la aplicación.

Nota al pie: Los métodos estáticos pueden ser ejecutados directamente sin crear primero
un objeto. Uno de los métodos estáticos puede ser “main”, así podemos hacer lo mismo
que normalmente pasa en las aplicaciones – iniciar una aplicación sólo ejecutando un
método estático main. Regresaremos a esto luego. Primero, haremos algunas otras cosas,
cosas más interesantes las cuales normalmente no pueden ser realizadas en los entornos
Java.
Los cuadros que se ven en la parte central de la ventana principal ( etiquetados
Database, Person, Staff y Student ) son iconos representando las clases involucradas en
esta aplicación. Usted puede obtener un menú con operaciones, aplicable a una clase
haciendo clic en el icono de la clase con el botón derecho del ratón (Macintosh: ctrl.-clic1)
( Figura 2 ). Las operaciones mostradas son operaciones new con cada uno de los

1 Donde se mencione clic derecho en este tutorial, los usuarios Macintosh deberían leerlo como ctrl.-clic.


Comenzando -edit / compile / execute

constructores definidos para esta clase ( primero ) seguidas por algunas operaciones
proporcionadas por el entorno.


Figura 2: Operaciones de Clase ( menú emergente )

Queremos crear un objeto Staff, así usted debería hacer clic derecho sobre el icono de
Staff ( lo cual hace que emerja el menú mostrado en la Figura 2 ). El menú muestra dos
constructores para crear un objeto Staff, uno con parámetros y otro sin ellos. Primero,
seleccione el constructor sin parámetros. Aparece la ventana de diálogo mostrada en la
Figura 3.


Figura 3: Creación de Objeto sin parámetros


Comenzando -edit / compile / execute

Esta ventana de diálogo pregunta por un nombre para el objeto a ser creado. Al mismo
tiempo, se sugiere un nombre por defecto ( staff_1 ). Este nombre por defecto es lo
suficientemente bueno por ahora, así que sólo haga clic en OK. Un objeto Staff será
creado.

Desde que el objeto ha sido creado, él se coloca en el área de objetos ( Figura 4 ). Esto
es todo lo necesario para crear un objeto: seleccione un constructor del menú de la
clase, ejecútelo y usted tendrá el objeto en el área de objetos.


Figura 4: Un Objeto sobre el área de Objetos

Usted puede haber notado que la clase Person está etiquetada como <>
( ésta es una clase abstracta ). Usted notará ( si lo trata de probar ) que no puede crear
objetos desde clases abstractas ( como la especificación del lenguaje Java lo define ).

3.4 Ejecución
Resumen: Para ejecutar un método, selecciónelo del menú emergente del objeto.

Ahora que ha creado un objeto, usted puede ejecutar sus operaciones públicas. ( Java
llama a las operaciones métodos. ) Haga clic con el botón derecho del ratón sobre el
objeto y emerge un menú con las operaciones del objeto ( Figura 5 ). El menú muestra
los métodos disponibles para este objeto y dos operaciones especiales proporcionadas
por el entorno ( Inspect y Remove ). Discutiremos esto luego. Primero, concentrémonos
en los métodos.


Comenzando -edit / compile / execute


Figura 5: El menú de Objeto

Usted ve que existen los métodos getRoom y setRoom los cuales configuran y retornan
el número de la habitación para este miembro del staff. Haga un llamado a getRoom.
Simplemente selecciónelo de su menú de objeto y éste se ejecutará. Una ventana de
diálogo aparece mostrando el resultado del llamado ( Figura 6 ). En este caso el nombre
dice “( unknown room )” porque no especificamos ninguna habitación para esta persona.


Figura 6: Ventana mostrando el resultado de una función

Los métodos heredados de una superclase están disponibles a través de un submenú.
En la parte superior del menú emergente de objeto existen dos submenús, uno para los
métodos heredados de Object y otro para los de Person ( Figura 5 ). Usted puede llamar
a los métodos de Person ( tales como getName ) seleccionándolos desde el submenú.
Pruébelo. Usted notará que la respuesta es igualmente vaga: se responde “( unknown
name )”, debido a que no hemos dado un nombre a la persona.

Ahora tratemos de especificar un número de habitación. Esto se mostrará como un
llamado que tiene parámetros. ( Los llamados a getRoom y getName tienen valores de
retorno, pero no parámetros ).

Llame la función setRoom seleccionándola del menú. Una ventana de diálogo aparece
solicitándole que digite un parámetro ( Figura 7 ).


Comenzando -edit / compile / execute


Figura 7: Ventana de Diálogo del Llamado a una función con parámetros

En la parte superior de esta ventana de diálogo se muestra la interfaz del método a ser
llamado ( incluyendo el comentario y la signatura ). Debajo de esto, existe un campo de
entrada de texto donde usted puede digitar el parámetro. La signatura al comienzo nos
indica se que espera un parámetro de tipo String. Digite la nueva habitación, como una
cadena de caracteres ( incluyendo las comillas ) en el campo de texto y haga clic en OK.

Esto es todo – debido a que este método no retorna un parámetro, no hay ventana
resaltada. Llame de nuevo al método getRoom para verificar que la habitación realmente
ha sido cambiada.

Practique la creación de objetos y el llamado de métodos por un rato. Trate llamando al
constructor con argumentos y llame algunos otros métodos hasta que se familiarice con
estas operaciones.

3.5 Editando una clase
Resumen: Para editar el archivo fuente de una clase, haga doble clic sobre su icono de
clase.

Hasta ahora hemos tratado solamente son una interfaz de objetos. Ahora es tiempo de
profundizar. Usted puede ver la implementación de una clase seleccionando Open Editor
desde las operaciones de la clase. ( Recuerde: haga clic derecho sobre el icono de la
clase y se muestran las operaciones de la clase. ) Hacer doble clic sobre la clase es un
atajo para la misma función. El editor no se describe en mucho detalle dentro de este
tutorial, pero no es muy importante para su uso. Los detalles del editor serán descritos
luego. Por ahora, abra la implementación de la clase Staff. Encuentre la implementación
del método getRoom. El retorna, como su nombre lo sugiere, el número de la habitación
del miembro del staff. Cambiemos el método agregando el prefijo “room” al resultado de
la función( así que el método retorna, “room M.3.18” en lugar de sólo “M.3.18” ).

Podemos hacer esto cambiando la línea

return room;

por

return "room " + room;


Comenzando -edit / compile / execute

BlueJ soporta instrucciones Java por completo y sin modificar, así que no hay nada
especial acerca de cómo implemente sus clases.

3.6 Compilación
Resumen: Para compilar una clase, haga clic en el botón Compile en el editor. Para
compilar un proyecto, haga clic en el botón Compile en la ventana de proyecto.

Luego de insertar el texto ( antes de hacer cualquier otra cosa ), verifique la vista del
proyecto ( ventana principal ). Usted notará que ha cambiado el icono de clase para la
clase Staff: él ahora está rayado. La apariencia rayada marca las clases que no han sido
compiladas desde el último cambio. Regrese al editor.

Nota al lado: Usted debe preguntarse por qué los iconos de clase no fueron rayados
cuando usted abrió por primera vez este proyecto. Esto es porque las clases en el
proyecto People fueron distribuidas estando compiladas. A menudo los proyectos en
BlueJ son distribuidos sin compilar, así que espere ver más clases sin compilar al abrir un
por primera vez un proyecto.
En la barra de herramientas en la parte superior del editor existen algunos botones con
funciones utilizadas frecuentemente. Uno de ellos es Compile. Esta función le permite
compilar esta clase directamente desde el editor. Ahora haga clic en el botón Compile. Si
usted no tuvo ninguna equivocación, un mensaje debería aparecer en el área de
información en la parte inferior del editor, notificándolo que la clase ha sido compilada. Si
usted cometió una equivocación que se basa en un error de sintaxis, la línea de error es
marcada y un mensaje de error se muestra en el área de información. ( En el caso de
que su compilación funcione correctamente la primera vez, trate de introducir un error de
sintaxis ahora – tal como un punto y coma faltante – y compile de nuevo, observe qué
aparece )

Luego de que ha compilado exitosamente la clase, cierre el editor.

Nota al lado: No hay necesidad de guardar explícitamente el código fuente de la clase. El
código fuente es guardado automáticamente donde sea apropiado ( e.j. cuando el editor se
cierra o antes de compilar una clase ). Usted puede guardar explícitamente una clase si
usted lo desea ( hay una función en el menú del editor de clase ), pero esto sólo se
necesita realmente si su sistema es inestable y frecuentemente se daña, y usted se
encuentra preocupado sobre la posible pérdida de su trabajo.
La barra de herramientas de la ventana de proyecto también tiene un botón Compile.
Esta operación compila el proyecto completo. ( De hecho, ella determina cuáles clases
necesitan ser recompiladas y luego recompila aquellas clases en el orden correcto. )
Trate de hacer esto cambiando dos o más clases ( de tal forma que dos o más clases
aparecen rayadas en el diagrama de clases ) y luego haga clic en el botón Compile. Si


Comenzando -edit / compile / execute

se detecta un error en una de las clases compiladas, el editor se abrirá y la localización
del error y el mensaje serán mostrados.

Usted puede notar que el área de objetos está vacía de nuevo. Los objetos son
removidos cada vez que la implementación se cambia.

3.7 Ayuda con errores del compilador
Resumen: Para obtener ayuda sobre un mensaje de error del compilador, haga clic en el
símbolo de interrogación cercano al mensaje de error.

Muy frecuentemente, los estudiantes principiantes tienen dificultad en entender los
mensajes de error del compilador. Nosotros tratamos de proporcionar alguna ayuda.

Abra el editor de nuevo, introduzca un error en el código fuente, y compile. Un mensaje
de error debería mostrarse en el área de información del editor. En la parte derecha del
área de información aparece un botón con el símbolo de interrogación ( ? ) en el cual
usted puede hacer clic para obtener más información acerca de este tipo de error
( Figura 8 ).


Figura 8: Un error del compilador y el botón de Ayuda ( Help )

En este momento, los textos de ayuda no están disponibles para todos los mensajes de
error. Algunos textos de ayuda aún se deben escribir. Pero es difícil hacerlo – muchos
errores ya se han explicado. El resto serán escritos e incluidos en una futura versión de
BlueJ.


4 Haciendo un poco más...

En esta sección cubriremos algunas otras cosas que usted puede hacer en el entorno.
Cosas que no son esenciales, pero utilizadas muy comúnmente.

4.1 Inspección
Resumen: Un objeto puede ser pasado como un parámetro a un llamado de un método
haciendo clic sobre el icono del objeto.

Cuando usted ejecuta métodos de un objeto, usted puede haber notado la operación
Inspect, la cual está disponible sobre los objetos además de los métodos definidos para
los usuarios ( Figura 5 ). Esta operación permite verificar el estado de las variables de
instancia ( “campos” o “fields” ) de objetos. Trate de crear un objeto con algunos valores
definidos por el usuario ( e.j. un objeto Staff que tiene parámetros en el constructor ).
Luego seleccione Inspect del menú de objeto. Una ventana de diálogo aparece
mostrando los campos de objeto, sus tipos y sus valores ( Figura 9 ).


Figura 9: Ventana de diálogo de Inspección

La inspección es útil para verificar rápidamente que una operación mutadora ( una
operación que cambia el estado de un objeto ) fue ejecutada correctamente. Así, la
inspección es una herramienta simple de traceo.

En el ejemplo con la clase Staff, todos los campos son tipos de datos simples
( cualesquiera que no sean objetos o cadenas de caracteres ). El valor de estos tipos
puede ser mostrado directamente. Usted puede ver inmediatamente si el constructor ha
realizados las asignaciones correctas.


Haciendo un poco más…

En casos más complejos, los valores de los campos pueden ser referencias a objetos
definidos por el usuario. Para un ejemplo de tal caso usaremos otro proyecto. Abra el
proyecto people2, el cual se incluye también en la distribución estándar de BlueJ. La
ventana del escritorio de people2 se muestra en la Figura 10. Como usted puede ver,
este segundo ejemplo tiene una clase Address además de las clases vistas previamente.
Uno de los campos en la clase Person es del tipo Address, definido por el usuario.


Figura 10: La Ventana del proyecto people2

Para lo siguiente que queremos probar – inspección con campos de objeto – cree un
objeto Staff y luego llame el método setAddress de este objeto ( usted lo encontrará en el
submenú de los métodos heredados de Person ). Digite una dirección. Internamente, el
código de Staff crea un objeto de clase Address y lo almacena en su campo address.

Ahora, inspeccione el objeto Staff. La ventana de diálogo de la inspección resultante se
muestra en la Figura 11. Los campos dentro del objeto Staff ahora incluyen address.
Como usted puede ver, su valor se muestra como

PROGRAMANDO EN JAVA




PROGRAMACION EN JAVA
Cuando se programa en Java, se coloca todo el código en métodos, de la misma forma que se escriben funciones en lenguajes como C.

Comentarios
En Java hay tres tipos de comentarios:
// comentarios para una sola línea
/* comentarios de una o
más líneas
*/
/** comentario de documentación, de una o más líneas
*/
Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.
En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.

Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.
En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.
Serían identificadores válidos: identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
$transaccion
y su uso sería, por ejemplo: int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
Palabras claveLas siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como indentificadores: abstract continue for new switch
boolean default goto null synchronized
break do if package this
byte double implements private threadsafe
byvalue else import protected throw
case extends instanceof public transient
catch false int return true
char final interface short try
class finally long static void
const float native super while
Palabras ReservadasAdemás, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son: cast future generic inner
operator outer rest var

Literales

Un valor constante en Java se crea utilizando una representación literal de él. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él.
Enteros: byte 8 bits complemento a dos
short 16 bits complemento a dos
int 32 bits complemento a dos
long 64 bits complemento a dos
Por ejemplo: 21 077 0xDC00
Reales en coma flotante: float 32 bits IEEE 754
double 64 bits IEEE 754
Por ejemplo: 3.14 2e12 3.1E12
Booleanos: true
false
Caracteres: Por ejemplo: a \t \u???? [????] es un número unicode
Cadenas: Por ejemplo: "Esto es una cadena literal"

Arrays
Se pueden declarar en Java arrays de cualquier tipo:
char s[];
int iArray[];
Incluso se pueden construir arrays de arrays: int tabla[][] = new int[4][5];
Los límites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la corrupción de memoria.
En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array. int a[][] = new int[10][3];
a.length; /* 10 */
a[0].length; /* 3 */
Para crear un array en Java hay dos métodos básicos. Crear un array vacío: int lista[] = new int[50];
o se puede crear ya el array con sus valores iniciales: String nombres[] = {
"Juan","Pepe","Pedro","Maria"
};
Esto que es equivalente a: String nombres[];
nombres = new String[4];
nombres[0] = new String( "Juan" );
nombres[1] = new String( "Pepe" );
nombres[2] = new String( "Pedro" );
nombres[3] = new String( "Maria" );
No se pueden crear arrays estáticos en tiempo de compilación: int lista[50]; // generará un error en tiempo de compilación
Tampoco se puede rellenar un array sin declarar el tamaño con el operador new: int lista[];
for( int i=0; i < name="operadores">
OperadoresLos operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de precedencia:
. [] ()
++ --
! ~ instanceof
* / %
+ -
<< >> >>>
< > <= >= == !=
& ^
&&
? :
= op= (*= /= %= += -= etc.) ,
Los operadores numéricos se comportan como esperamos: int + int = int
Los operadores relacionales devuelven un valor booleano.
Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones además de + y += para la concatenación: String nombre = "nombre" + "Apellido";
El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargará el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.

Separadores
Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:
() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.
{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.
[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.
; - punto y coma. Separa sentencias.
, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.
. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.
Muchas de las sentencias de control del flujo del programa se han tomado del C:

Sentencias de Salto

if/else if( Boolean ) {
sentencias;
}
else {
sentencias;
}
switch switch( expr1 ) {
case expr2:
sentencias;
break;
case expr3:
sentencias;
break;
default:
sentencias;
break;
}

Sentencias de Bucle

Bucles for for( expr1 inicio; expr2 test; expr3 incremento ) {
sentencias;
}
El siguiente trocito de código Java que dibuja varias líneas en pantalla alternando sus colores entre rojo, azul y verde. Este fragmento sería parte de una función Java (método): int contador;
for( contador=1; contador <= 12; contador++ ) { switch( contador % 3 ) { case 0: setColor( Color.red ); break; case 1: setColor( Color.blue ); break; case 2: setColor( Color.green ); break; } g.drawLine( 10,contador*10,80,contador*10 ); } También se soporta el operador coma (,) en los bucles for for( a=0,b=0; a <>Bucles while while( Boolean ) {
sentencias;
}
Bucles do/while do {
sentencias;
}while( Boolean );

Excepciones

try-catch-throw try {
sentencias;
} catch( Exception ) {
sentencias;
}
Java implementa excepciones para facilitar la construcción de código robusto. Cuando ocurre un error en un programa, el código que encuentra el error lanza una excepción, que se puede capturar y recuperarse de ella. Java proporciona muchas excepciones predefinidas.

Control General del Flujo

break [etiqueta]
continue [etiqueta]
return expr;
etiqueta: sentencia;
En caso de que nos encontremos con bucles anidados, se permite el uso de etiquetas para poder salirse de ellos, por ejemplo: uno: for( )
{
dos: for( )
{
continue; // seguiría en el bucle interno
continue uno; // seguiría en el bucle principal
break uno; // se saldría del bucle principal
}
}
En el código de una función siempre hay que ser consecuentes con la declaración que se haya hecho de ella. Por ejemplo, si se declara una función para que devuelva un entero, es imprescindible que se coloque un return final para salir de esa función, independientemente de que haya otros en medio del código que también provoquen la salida de la función. En caso de no hacerlo se generará un Warning, y el código Java no se puede compilar con Warnings. int func()
{
if( a == 0 )
return 1;
return 0; // es imprescindible porque se retorna un entero
}

CLASES
Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.
Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.
Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. En C la unidad fundamental son los ficheros con código fuente, en Java son las clases. De hecho son pocas las sentencias que se pueden colocar fuera del bloque de una clase. La palabra clave import (equivalente al #include) puede colocarse al principio de un fichero, fuera del bloque de la clase. Sin embargo, el compilador reemplazará esa sentencia con el contenido del fichero que se indique, que consistirá, como es de suponer, en más clases.

Tipos de Clases

Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:
abstract
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.
final
Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.
public
Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.
synchronizable
Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
VARIABLES Y METODOS DE INSTANCIA
Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.
Por ejemplo, en el siguiente trozo de código podemos observarlo: public MiClase {
int i;
public MiClase() {
i = 10;
}
public void Suma_a_i( int j ) {
i = i + j;
}
}
La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ).

Ambito de una variable

Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las variables de Java sólo son válidas desde el punto donde están declaradas hasta el final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias compuestas, y cada una puede contener su propio conjunto de declaraciones de variables locales. Sin embargo, no se puede declarar una variable con el mismo nombre que una de ámbito exterior.
El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal.Class Ambito {
int i = 1; // ámbito exterior
{ // crea un nuevo ámbito
int i = 2; // error de compilación
}
}

Métodos y Constructores

Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.
Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.
Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase: MiClase mc;
mc = new MiClase();
La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto: mc.i++; // incrementa la instancia de i de mc
Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc:
mc.Suma_a_i( 10 );
y ahora la variable mc.i vale 21.

Finalizadores

Java no utiliza destructores (al contrario que C++) ya que tiene una forma de recoger automáticamente todos los objetos que se salen del alcance. No obstante proporciona un método que, cuando se especifique en el código de la clase, el reciclador de memoria (garbage collector) llamará: // Cierra el canal cuando este objeto es reciclado
protected void finalize() {
close();
}
ALCANCE DE OBJETOS Y RECICLADO DE MEMORIA
Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto no se va a utilizar más, debería liberar el espacio que ocupaba en la memoria de forma que las aplicaciones no la agoten (especialmente las grandes).
En Java, la recolección y liberación de memoria es responsabilidad de un thread llamado automatic garbage collector (recolector automático de basura). Este thread monitoriza el alcance de los objetos y marca los objetos que se han salido de alcance. Veamos un ejemplo: String s; // no se ha asignado todavia
s = new String( "abc" ); // memoria asignada
s = "def"; // se ha asignado nueva memoria
// (nuevo objeto)
Más adelante veremos en detalle la clase String, pero una breve descripción de lo que hace esto es; crear un objeto String y rellenarlo con los caracteres "abc" y crear otro (nuevo) String y colocarle los caracteres "def".
En esencia se crean dos objetos: Objeto String "abc"
Objeto String "def"
Al final de la tercera sentencia, el primer objeto creado de nombre s que contiene "abc" se ha salido de alcance. No hay forma de acceder a él. Ahora se tiene un nuevo objeto llamado s y contiene "def". Es marcado y eliminado en la siguiente iteración del thread reciclador de memoria.

Tuesday, October 24, 2006

Técnicas de diseño detallado.


Diseño algorítmico.



Definición
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema.



El algoritmo se puede representar por medio de dos formas :
Pseudo código
Diagrama de flujo:


Pseudo código: es el lenguaje de especificación de algoritmos y tiene una estructura:
Las instrucciones se escriben en ingles o en palabras similares al ingles o español que facilitan la escritura de programación.



Para la resolución de una ecuación de segundo grado se escribiría

inicio
Introducir coeficientes a, b y c
Imprimir títulos primera raíz, segunda raíz, no tiene solución,
Calcular raíz 1 y raíz 2
Imprimir raíz 1 y raíz 2
Fin

Diagramas de flujo (flows charts):

Es la representación grafica del algoritmo; según la ANSI consta de una simbologia , que tiene los siguientes significados:




Elementos y reglas de la representación gráfica de los algoritmos.



a) Descripción Narrada

b) Pseudocódigo
c) Diagramas de Flujo
d) Diagramas N- S (Nassi-Schneiderman o de Chapin)

a) Descripción Narrada
Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

Ejemplo 1:




Algoritmo para asistir a clases:

1. Levantarse

2. Bañarse

3. Vestirse

4. Desayunar

5. Cepillarse los dientes

6. Salir de casa

7. Tomar el autobús

8. Llegar al ITTG

9. Buscar el aula

10. Ubicarse en un asiento

b) Descripción en Pseudocódigo



Pseudo = falso.


El pseudocódigo no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema.

Ejemplo 1


Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética.


inicio

leer (a, b, c, d)

producto <-- (a * b * c * d)

suma <-- (a + b + c + d)

media <-- (a + b + c + d) / 4

escribir (producto, suma, media)

fin

c) Diagramas N-S


Son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de pseudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y sus estructuras lógicas son las siguientes:
Estructura Secuencial





d) Diagramas de Flujo.



Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.

Para su elaboración se siguen ciertas reglas:



Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jamás curvas
Evitar cruce de flujos
En cada paso expresar una acción concreta
Secuencia de flujo normal en una solución de problema
Tiene un inicioUna lectura o entrada de datos
El proceso de datosUna salida de información
Un final

Ventajas de usar Flujogramas



Rápida comprensión de las relaciones.

Análisis efectivo de las diferentes secciones del programa.
Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas.
Comunicación con el usuario.
Documentación adecuada de los programas.
Codificación eficaz de los programas.
Depuración y pruebas ordenadas de programas.

Desventaja de los flojugramas



Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño.
Acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos
No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.

Representando el ejemplo como flujograma tenemos:

Implementación de algoritmos secuenciales.



Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cíclica.
La más sencilla de las tres es la lineal, también llamada secuencial que se caracteriza porque todos los pasos del algoritmo se realizan en secuencia, es decir, se suceden uso a otros.


Un ejemplo de esta estructura es el algoritmo para calcular la densidad de un cuerpo a partir de los datos de masa y volumen, mostrada a continuación a través de un diagrama de flujo:



Diseño algorítmico de las funciones


El diseño algorítmico de cualquier función implica como se hace o realiza la tarea (problema) solicitado a resolver.
En el diseño, en la resolución de un problema complejo, se divide en varios sub- problemas y seguidamente se vuelven a dividir los sub-problemas en otros más sencillos, hasta que puedan implementarse en la computadora.


Esta característica define lo que se entiende como diseño descendente o diseño modular.· Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. · Un programa bien diseñado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (módulos de nivel mas bajo), que a su vez pueden llamar otros sub-programas.


Los programas que se estructuran de esta forma, se dicen que tienen diseño modular y el método de romper el programa en modos pequeños se llama programación modular.

Wednesday, October 18, 2006

UBICACIÓN DEL PELIGRO



La información sobre el lugar del incidente, como materiales peligrosos, ubicación de tuberías de gas, etc., no se tiene disponible o no existe.

INFORMACION NECESARIA





§Durante una emergencia, quienes la atienden pueden adquirir información útil
§Está información no se trasmite por radio, a menos que se solicite, debido al tiempo aire limitado.

INFORMACION EN EMERGENCIA



§Los departamentos de bomberos, policía, servicios y médicos de emergencia, recopilan gran cantidad de información basada en papel. Durante una emergencia, esta información basada en papel es en extremo difícil de usar, y rara vez se usa.

SOBRECARGA DE LLAMADAS




§Los sistemas del manejo de emergencias están establecidos para manejar cargas de llamadas normales, y se sobrecargan de inmediato cuando sucede un evento no usual o varios eventos.

ENUNCIADO DEL PROBLEMA FRIEND


DEBILIDADES DEL MANEJO
DEL SISTEMA DE
EMERGENCIAS ACTUAL

DEFINICION DEL PROBLEMA


REQUERIMIENTOS



FUNCIONALES
NO FUNCIONALES
CRITERIOS DE ACEPTACION

DEFINICION DEL PROYECTO



§La actividad de definición del proyecto produce un documento de definición del problema que indica el dominio y la funcionalidad del sistema.

DEFINICION DEL PROBLEMA



§Su objetivo es que el gerente de proyecto y el cliente se pongan de acuerdo sobre el alcance del sistema que se va a construir.

EL MÉTODO DE LA INGENIERÍA


INCLUYE CINCO PASOS:



Ø1.- Formular el problema
Ø2.- Analizar el problema
Ø3.- Buscar soluciones
Ø4.- Decidir cual es la Solución adecuada
Ø5.- Especificar la solución

Planteamiento del problema



§La ingeniería es una actividad para la solución de problemas.
§ Los ingenieros buscan una solución adecuada, a menudo mediante ensayo y error

Fundamentos de programaci�n: Diagrama de Actividades

Fundamentos de programaci�n: Diatgrama de Actividades

Diagrama de Secuencia

Diatgrama de Actividades

Diagrama de Estado

Diagrama de Casos de Uso

Planteamiento del problema

Planteamiento del problema







Con la creación del UML se persigue obtener un lenguaje que sea capaz de abstraer cualquier tipo de sistema, sea informático o no, mediante los diagramas, es decir, mediante representaciones gráficas que contienen toda la información relevante del sistema.

En cualquier proyecto de ingeniería
Requiere etapas de modelamiento que permitan experimentar y visualizar el sistema que se construirá.

Principios de Modelado

a) La forma como vemos el problema tiene una profunda influencia en forma como acometemos el problema y le damos solución al mismo. Si pensamos que el mundo está compuesto de clases (abstracción de la realidad y la solución del problema) y objetos (instancias de éstas) que interactúan entre sí para efectuar (realizar) una funcionalidad, así veremos el mundo. Es precisamente al paradigma a que le apuesta UML, el modelo orientado a objetos. Si vemos la calidad como compuesta de procesos desde cada uno a su vez se puede descomponen subprocesos entonces estamos contiendo la realidad según el modelo estructurado y la arquitectura del sistema en desarrollo estará conformada de programas y subprogramas.

b) Para modelar un sistema complejo no es suficiente un único modelo, se requieren múltiples modelos donde cada una representa una vista (aspecto) del sistema; estos modelos se complementan entre sí. Esta es la razón de la existencia de varios diagramas en UML que modelan diferentes aspectos del sistema desde las vistas lógicas y físicas del sistema hasta los aspectos dinámicos, estáticos y funciones del mismo.

c) Cualquier modelo puede ser presentado con diferentes grados de precisión. La precisión se puede ver desde dos ópticas. La primera es el grado de detalle con que se presenta un modelo; por ejemplo, si lo que desea es razonar acerca de los requerimientos del sistema con un cliente o usuario final, se puede elaborar un diagrama de clases que muestra las clases, sus atributos y operaciones, así como varios adornos (multiplicidad) en las relac9ones; por otro lado, si lo que desea es transmitir el diagrama de clases para que sea implementado en un DBMS (Data Base Management System, Sistema de Administrador de B

Diagramas de UML y modelando una problematica

¿QUÉ ES UML?


ES UN LENGUAJE GRAFICO PARA VISUALIZAR, ESPECIFICAR, CONSTRUIR Y DOCUMENTAR CADA UNA DE LAS PARTES QUE COMPRENDE EL DESARROLLO DE SOFTWARE. CAPTA LA INFORMACION SOBRE LA ESTRUCTURA ESTATICA Y EL COMPORTAMIENTO DINAMICO DE UN SISTEMA Y PREESCRIBE UN CONJUNTO DE NOTACIONES Y DIAGRAMAS ESTANDAR PARA MODELAR SISTEMAS ORIENTADOS A OBJETOS, ADEMAS DE DESCRIBIR LA SEMANTICA ESENCIAL DE LO QUE LOS DIAGRAMAS Y SIMBOLOS SIGNIFICAN.
UN SISTEMA SE MODELA COMO UNA COLECCIÓN DE OBJETOS DISCRETOS QUE INTERACTUAN PARA REALIZAR UN TRABAJO QUE BENEFICIA A UN USUARIO EXTERNO.



  • UML TAMBIEN ES CONSIDERADO COMO UN LENGUAJE DE MODELAMIENTO VISUAL QUE PERMITE UNA ABSTRACCION DEL SISTEMA Y SUS COMPONENTES.
    UTILIDAD
    DISEÑAR, CONFIGURAR, MANTENER Y CONTROLAR LA INFORMACION DE SISTEMAS A DESARROLLAR
  • MODELAR COSAS CONCEPTUALES COMO PROCESOS DE NEGOCIO Y FUNCIONES DE SISTEMA
  • MODELAR COSAS CONCRETAS COMO ESCRIBIR CLASES EN UN LENGUAJE DETERMINADO, ESQUEMAS DE BASE DE DATOS Y COMPONENTES DE SOFTWARE REUSABLES
  • MODELAR DISTINTOS TIPOS DE SISTEMAS COMO SISTEMAS DE SOFTWARE, SISTEMAS DE HARDWARE Y ORGANIZACIONES DEL MUNDO REAL


CARACTERISTICAS

  • UML NO ES UN LENGUAJE DE PROGRAMACION
  • ES UN LENGUAJE DE PROPOSITO GENERAL PARA EL MODELADO ORIENTADO A OBJETOS


PARA MODELAR UN SISTEMA DE SOFTWARE DE GRANDES DIMENSIONES, LA CLAVE PARA SU DESARROLLO ES DIVIDIRLO EN AREAS MANEJABLES O PEQUEÑAS A LAS CUALES SE LES LLAMA DOMINIOS, CATEGORIAS O SUBSISTEMAS.
LA DIVISION DEL SISTEMA VIENE DEL NIVEL MAS ALTO PARA SUBDIVIDIRLO EN DOMINIOS; HASTA EL NIVEL MAS BAJO USADOS PARA AGRUPAR CASOS DE USOS INDIVIDUALES, CLASES O COMPONENTES.


OBJETIVOS

  • PUEDE SER UTILIZADO POR TODOS LOS MODELADORES
  • CONSTRUIR UNA SÓLIDA ARQUITECTURA PARA RESOLVER REQUISITOS
  • SER FACIL DE ENTENDER Y TENER LA CAPACIDAD DE MODELAR TODO TIPO DE SISTEMAS
  • SER UN LENGUAJE UNIVERSAL
  • IMPONER UN ESTANDAR MUNDIAL


ARQUITECTURA

  1. META-METAMODELO
  2. METAMODELO
  3. MODELO
  4. OBJETOS DE USUARIO
    AREAS CONCEPTUALES DE UML
  5. ESTRUCTURA ESTATICA
  6. COMPORTAMIENTO DINAMICO
  7. CONSTRUCCIONES DE IMPLEMENTACION
  8. ORGANIZACIÓN DEL MODELO
  9. MECANISMOS DE EXTENSION

Un Diagrama de Casos de Uso muestra la relación entre los actores y los casos de uso del sistema. Representa la funcionalidad que ofrece el sistema en lo que se refiere a su interacción externa. En el diagrama de casos de uso se representa también el sistema como una caja rectangular con el nombre en su interior. Los casos de uso están en el interior de la caja del sistema, y los actores fuera, y cada actor está unido a los casos de uso en los que participa mediante una línea. En la Figura 15 se muestra un ejemplo de Diagrama de Casos de Uso para un cajero automático.



Los elementos que pueden aparecer en un Diagrama de Casos de Uso son: actores, casos de uso y relaciones entre casos de uso.

Un diagrama de Secuencia muestra una interacción ordenada según la secuencia temporal de eventos. En particular, muestra los objetos participantes en la interacción y los mensajes que intercambian ordenados según su secuencia en el tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos y actores participantes en la interacción, sin un orden prefijado. Cada objeto o actor tiene una línea vertical, y los mensajes se representan mediante flechas entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que se refieren.


Diagrama de Colaboración Un Diagrama de Colaboración muestra una interacción organizada basándose en los objetos que toman parte en la interacción y los enlaces entre los mismos (en cuanto a la interacción se refiere). A diferencia de los Diagramas de Secuencia, los Diagramas de Colaboración muestran las relaciones entre los roles de los objetos. La secuencia de los mensajes y los flujos de ejecución concurrentes deben determinarse explícitamente mediante números de secuencia.


Un Diagrama de Estados muestra la secuencia de estados por los que pasa bien un caso de uso, bien un objeto a lo largo de su vida, o bien todo el sistema. En él se indican qué eventos hacen que se pase de un estado a otro y cuáles son las respuestas y acciones que genera. En cuanto a la representación, un diagrama de estados es un grafo cuyos nodos son estados y cuyos arcos dirigidos son transiciones etiquetadas con los nombres de los eventos. Un estado se representa como una caja redondeada con el nombre del estado en su interior. Una transición se representa como una flecha desde el estado origen al estado destino. La caja de un estado puede tener 1 o 2 compartimentos. En el primer compartimento aparece el nombre del estado. El segundo compartimento es opcional, y en él pueden aparecer acciones de entrada, de salida y acciones internas.


Una clase se representa mediante una caja subdividida en tres partes: En la superior se muestra el nombre de la clase, en la media los atributos y en la inferior las operaciones. Una clase puede representarse de forma esquemática, con los atributos y operaciones suprimidos, siendo entonces tan solo un rectángulo con el nombre de la clase. En la Figura 5 se ve cómo una misma clase puede representarse a distinto nivel de detalle según interese, y según la fase en la que se esté.

Un objeto se representa de la misma forma que una clase. En el compartimento superior aparecen el nombre del objeto junto con el nombre de la clase subrayados, según la siguiente sintaxis: nombre_del_objeto: nombre_de_la_clase Puede representarse un objeto sin un nombre específico, entonces sólo aparece el nombre de la clase.

By charleXs

Saturday, October 14, 2006

Introduccion a UML

DEFINICION DE UML:

El lenguaje unificado de modelado, es una herramienta que permite a los creadores de sistemas generar diseños que capturen sus ideas en una forma convencional y facil de comprender para comunicarlas a otras personas.


DIAGRAMAS DE UML


• El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas, éste cuenta con reglas para combinar tales elementos.
• La finalidad de los diagramas es presentar diversas perspectivas de un sistema a los cuales se les conoce como modelo.
Se Dispone de dos tipos diferentes de diagramas los que dan una vista estática del sistema y los que dan una visión dinámica.
Estructura estática:
Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática..
Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. La información que almacena es modelada como atributos; La estructura estática se expresa con diagramas de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa.

Los diagramas estáticos son:


Diagrama de clases
Diagrama de objetos
Diagrama de componentes
Diagrama de despliegue
Diagrama de casos de uso

Estructura estática:

Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática. Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. La información que almacena es modelada como atributos; La estructura estática se expresa con diagramas de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa.

Los diagramas dinámicos son:
• Diagrama de secuencia
• Diagrama de colaboración
• Diagrama de estados
• Diagrama de actividades

Como podemos ver el número de diagramas es muy alto, en la mayoría de los casos excesivos, y UML permite definir solo los necesarios, ya que no todos son necesarios en todos los proyectos. Se verá una explicación de todos, ampliándose para los más necesarios.

DIAGRAMA DE CLASES
: Una clase es una categoría o grupo de cosas que tienen atributos y acciones similares.

Ejemplo:

lavadoras, tienen atributos como: marca, modelo, no. De serie y la capacidad; acciones como agregar ropa, agregar detergente sacar ropa.
Un rectángulo es el símbolo que representa a la clase y se divide en tres áreas:
• área superior: que contiene el nombre
• área central: que contiene los atributos
• área inferior: que contiene las acciones

El ejemplo se representa de esta manera:

Los diagramas de clases colaboran en lo referente al análisis; permiten al
Analista hablarle a los clientes en su propia terminología

Atributos: es una propiedad o característica de una clase y describe un rango de valores que la propiedad podrá contener en los objetos (esto es, instancias) de la clase.
OPERACIONES: Es algo que la clase puede realizar

Restricciones: Una manera más formal es agregar una restricción, un texto libre bordeado por llaves; este texto especifica una o varias reglas que sigue la clase.
RESPONSABILIDADES: Es una descripción de lo que hará la clase, es decir lo que sus atributos y operaciones intentan realizar en conjunto.
Diagrama de objetos: Un objeto es una instancia de clase; esta es la forma en que UML, representa a un objeto:



USO DE LA ORIENTACION A OBJETOS

CONCEPCION DE UNA CLASE: El nombre de la clase es, por convención, una palabra con la primera letra en mayúscula y normalmente se coloca en la parte superior del rectángulo. Si el nombre de su clase consta de 2 palabras, únalas e inicie cada una con mayúscula.
NOMBRE DE RUTA: Si la clase “Lavadoras” es parte de un paquete llamado “Electrodomesticos”, podrá darle el nombre “Electrodomesticos::Lavadoras”, a este tipo de nombre de clase se le conoce como nombre de ruta

Thursday, September 07, 2006

Objeto (Clasificando)


Mensaje: es el estimulo para que el objeto tenga una reacción


OBJETO
Métodos: es el comportamiento que tiene un objeto




Diseño o.o: se hace un modelo del software para darle apariencia en este paso se ven cuales son las características del software y como interactuar con los usuarios

Programación o.o:
su objetivo es que el software pueda ser extendido con facilidad. Esto se logra reutilizando los objetos.


ENCAPSULAMIENTO:

Es ocultar la información que el cliente no tiene que ver

JERARQUIA:

Es el nivel de prioridad que tienen las clases en el software

HERENCIA:


Es una propiedad que permite compartir los rasgos entre clases, subclases, y objetos

Definiendo partes del Método en cascada

ANALISIS:


Técnicas:

  • Cuestionarios
  • Entrevistas
  • Mesas redondas definición del
  • Folletos problema
  • Observación

DISEÑO:

Es la fase donde se define la interfase y la apariencia del programa

PROGRAMACION:

Es donde se empiezan a generar líneas de códigos en “x” lenguaje


MANTENIMIENTO:

Son todas las modificaciones que se le tienen que hacer al software después de la implantación

Métodos para desarrollar un sofware

Método de Cascada




Análisis: Estudio del problema (recabar la informacion)
Técnicas para recopilar información: Cuestionario, entrevista, mesa redonda, Folletos, conversacion. Todo lo anterior permite definir el problema, lo que daria solucion al mismo.

Diseño: Es el diseño de la interfaz, presentarla al cliente para que este este deacuerdo con el trabajo.

Programación: Llevar a líneas de código lo que hemos planteado.


Implantación: Prueba, depuracion y validación.


Mantenimiento: Actualizaciones, modificaciones que se le harán o hacen al software despues de dado una terminacion y entrega.



¿Por que se le llama método de cascada?

Este sistema se llama de cascada por que se tiene que hacer al 100% cada paso antes de empezar con el otro.

Conceptos del ciclo de vida del software

Objetivos:

· Resolver un problema
· Aprovechar la oportunidad
· Dar respuesta inmediata a los directivos



Estos son los objetos del desarro de un software. Son los que dan pauta para que se pueda crear, diseñar e imprementar el software.