lunes, 10 de diciembre de 2007

4. Introducción a la programación.

INSTITUTO TECNOLÓGICO DE TUXTLA GUTIÉRREZ





Fundamentos de Programación




Catedrática:

Alicia González Laguna


Presentan:

Jorge Emilio del Carpio Hernández
Nestor Cuauhtemoc Entzín Gómez
Francisco Javier Abraham Herrera




Ingeniería en Sistemas Computacionales




Primer Semestre Turno Matutino





Tuxtla Gutiérrez, Chiapas; a 10 de diciembre de 2007.

4.1 Clasificación del software.

Aademás de estas categorías basadas en tareas, varios tipos de software se describen basándose en su método de distribución. Entre estos se encuentran los así llamados programas enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele con llevar una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por último, el infame vapourware, que es software que no llega a presentarse o que aparece mucho después de lo prometido.


El software es la parte logica de computadora, que permite el manejo de los recursos y la realizacion de tareas especificas, tambien denominados programas. Se clasifica en 2 partes:

1. SOFTWARE DE SISTEMAS
2. SOFWARE DE APLICACION

1. SOFTWARE DE SISTEMAS: Son aquellos programas que permiten la administracion de la parte fisica o los recursos de la computadora, es la que interactua entre el usuario y los componentes hardware del ordenador. Se clasifican el Sistemas Operativos Monousuarios y Multiusuarios.

2.SOFTWARE DE APLICACION:Son aquellos programas que nos ayudan a tareas especificas como edicion de textos, imagenes, calculos, etc. tambien conocidos como aplicaciones.

Software de Uso General

El software para uso general ofrece la estructura para un gran número de aplicaciones empresariales, científicas y personales. El software de hoja de cálculo, de diseño asistido por computadoras (CAD), de procesamiento de texto, de manejo de Bases de Datos, pertenece a esta categoría. La mayoría de software para uso general se vende como paquete; es decir, con software y documentación orientada al usuario ( manuales de referencia, plantillas de teclado y demás ).

Software de aplicaciones

El software de aplicación esta diseñado y escrito para realizar tareas específicas personales, empresariales o científicas como el procesamiento de nóminas, la administración de los recursos humanos o el control de inventarios. Todas éstas aplicacion es procesan datos (recepción de materiales) y generan información (registros de nómina). para el usuario.

Software de Aplicación, programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un sistema operativo (que hace funcionar al ordenador), de una utilidad (que realiza tareas de mantenimiento o de uso general) y de un lenguaje (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como puede ser la contabilidad o la gestión de un almacén. Ciertas aplicaciones desarrolladas ‘a medida’ suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos.

4.1.1 Software del sistema.

Es un conjunto de programas que verifica que los programas se ejecuten correctamente, y administra los recursos materiales internos de la computadora.

Estos programas deben detener las siguientes características:

Eficientes, para no desperdiciar el tiempo útil de un proceso. Confiables, porque una falla crearía grandes problemas en el control de los procesos. Versátiles, para que permitan la corrección de posibles errores durante el proceso. Pequeños, para que ocupen poco estacional mora y sean poco propensos a los errores.

Este tipo de programas realizan las siguientes tareas:

Facilitan el trabajo de quienes utilizan la computadora. Administra los dispositivos periféricos del sistema informático. Mantienen el sistema archivos en los dispositivos de memoria. Apoyan a otros programas. Proteger los datos y los programas. Controlan el uso de los recursos utilizados por los distintos usuarios.

4.1.2 Software de aplicación.


Éste tipo de software son los que utilizamos en la casa escuela u oficina. Son las aplicaciones que todo usuario debe conocer. Entre los más comunes software’s de aplicación encontramos los procesadores de texto; como lo son Word, Word Pro y Word Perfect.


Software de Aplicación, programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un sistema operativo (que hace funcionar al ordenador), de una utilidad (que realiza tareas de mantenimiento o de uso general) y de un lenguaje (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como puede ser la contabilidad o la gestión de un almacén. Ciertas aplicaciones desarrolladas ‘a medida’ suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos


domingo, 9 de diciembre de 2007

4.2 Conceptos de la programación.

Programación: es automatizar y definir una serie de procesos para resolver un problema y obtener un resultado final. Un programa es el conjunto de instrucciones que se le dan al ordenador para resolver un problema o tarea determinada. Consiste en proporcionar a un equipo un conjunto de instrucciones (o sentencias) que deben ser ejecutadas en orden, y que proporcionan una salida. Preparacion de los datos previos indispensables para obtener la solucion de un problema mediante las instrucciones codificadas de un ordenador. Lenguaje de Programacion Se utilizan para indicar al ordenador las acciones que ha de realizar para resolver un determinado problema. Basicamente los lenguajes de programacion se componen de ordenes (en adelante llamadas instrucciones) que es lo que en si mismo le dice al ordenador lo que tiene que hacer. Un conjunto de esas instrucciones forman el programa.

4.2.1 Definición de programa.

Un programa es un conjunto de instrucciones u ordenes basadas en un lenguaje de programacion que una computadora interpreta para resolver un problema o una funcion especifica. 1.- Es la relacion ordenada de actividades, en informatica se le conoce como la serie codificada de instrucciones. 3. Redaccion de un algoritmo en un lenguaje de programacion. 4. Conjunto de instrucciones ordenadas correctamente que permiten realizar una tarea o trabajo específico. 5. Toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informático para realizar una función o una terea o para obtener un resultado determinado, cualquiera que fuere su forma de expresión y fijación. 6. Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje determinado con unos fines específicos. Aunque en el lenguaje común con frecuencia se denomina programa al sistema operativo, la diferencia estriba, precisamente, en la especificidad de aquél frente al carácter de gestión global de éste. La palabra software engloba ambos.


4.2.2 Definición de programación.

Se conoce como programación de computadoras a la implementación de un algoritmo en un determinado lenguaje de programación, conformando un programa. Mientras que un algoritmo se ejecuta en una máquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una máquina real, que sí tiene esas limitaciones. El lenguaje de programación puede ser de alto nivel o bajo nivel, en función del grado de abstracción.


4.2.3 Definición de lenguaje de programación.

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web).
Un lenguaje de programación permite a uno o más programadores especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Lexico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.



4.3.1 Definición.

Un dato puede definirse como la unidad minima de informacion o bit, puede ser un caracter una palabra, etc.

Tipo Sintaxis/Ambito Ejemplos/Declaración Tipos de Datos Entero Base decimal [ej. 1234] Base octal [ej. 01234] Base hexadecimal [ej. 0xF10] byte [−128 a 127] short [−32768 a 32767] int [−2147483648 a 2147483647] long [−9223372036854775808 a 9223372036854775807] int variable; byte variable; short variable; long variable; int i1,i2; Coma Flotante float [32 bits, precisión simple; 3,4E-38 a 3,4E38] double [64 bits, precisión doble; 1,7E-308 a 1,7E308] float fvar=3,1416; fvar=6.5E-5; double dvar=3.1416d; dvar=6.5E-5d; Booleano true [valor cierto] false [valor falso] Boolean llave=false; llave=true; Carácter char [carácter alfanumérico] char letra=’a’; letra=’b’; Cadena String [Matriz de caracteres; realmente se trata de una clase, que encapsula las operaciones de gestión de caracteres] String s; s=new String(); // declaración conjunta String s=new String(); // con inicialización String s=“cadena”; // forma alternativa String s; s=“cadena”; Matrices array [puede ser de varias dimensiones] char c[]; // forma alternativa char[] c; // declarar amplitud c=new char[10]; // declaración conjunta char c[]=new char[10]; // multidimensional int i[][]; // declarar amplitud i=new int[10][15]; // declaración conjunta int i[][]=new int[10][15] Caracteres Especiales \ [continúa en la línea siguiente] \n [nueva línea] \t [tabulador horizontal] \b [retroceso] \r [retorno de carro] \f [salto de página] \\ [carácter \] \’ [comilla simple] \” [comilla doble] \udddd [carácter unicode]


4.3.2 Tipos de datos.

Simples:

Son todos aquellos que abarcan una sola casilla de memoria como los boleanos, enteros, flotantes, etc.

Estructurales:

Arreglos de cadenas, pilas o estructuras, abarcan mas de una casilla de memoria.

TABLA COMUN DE TIPOS DE DATOS


















TIPORANGOBYTES
E N T E R O S
Entero−32,768 a 32,7672
Entero sin signo0 a 65,5352
Corto−32,768 a 32,7672
Corto sin signo0 a 65,5352
Largo entero−2,147,483,648 a 2,147,483,2954
Largo sin signo0 a 4,294,967,2954
C A R A C T E R
Caracter−128 a 1271
Caracter sin signo0 a 2551
DE PUNTO FLOTANTE
Flotante3.4−38 a 3.4384
Doble1.7−308 a 1.73088
Largo doble3.4−4932 a 3.44932 10


Primitivos:

No tienen “descomposición”, están predefinidos en el lenguaje.

Tipos compuestos:

Aparte de los anteriores, C++ soporta tipos compuestos (también denominados tipos-clase). Son compuestos o agregados de tipos básicos, por esta razón se les denomina también tipos agregados o abstractos ADTs (“Abstract data types”). El “material” de que están compuestos son los tipos básicos, bien en estado “puro” o en sus diversas “adaptaciones”. El proceso es recursivo, de forma que un tipo complejo puede contener miembros que son a su vez tipos complejos y así sucesivamente.

Desde el punto de vista semántico la gramática C++ establece como tipos compuestos (“Compound types”) los siguientes:

Arreglos.

Matrices de objetos de cualquier tipo.

Funciones, que aceptan parámetros de ciertos tipos y devuelven void u objetos (o referencias a objetos) de cierto tipo.

Punteros a-void; punteros a-objetos, o punteros a-función (incluyendo miembros estáticos de clases) de un tipo determinado.

Punteros a miembros no-estáticos de clases (que señalan miembros de un tipo determinado dentro de objetos de una clase determinada).

Referencias a objetos o funciones de un tipo determinado.

Clases.

Uniones.

Tambien existen tipos de datos definidos por el usuario que varian sus sintaxis segun el lenguaje de programación.

4.3.3 Identificadores.

Es el nombre utilizado para referenciar variables, constantes, tipos, funciones y otros objetos definidos por el usuraio.

Un identificador puede tener uno o mas caracteres (letras, digitos y caracter de subrayado), siendo significativos los primeros 32.

El primer caracter debe ser una letra o un simbolo de _.

Se consideran caracteres distintos las mayusculas y las minusculas.

Se recomienda poner identificadores representativos.

Cuando un identificador se asocia a una entidad concreta entonces es el “nombre” de dicha entidad, y en adelante la representa en el programa. Por supuesto puede ocurrir que varios identificadores se refieran a una misma entidad (polimorfismo).

Sintaxis general: tipo nombre_identificador;

Ejemplo: objeto x;

4.3.4 Almacenamiento Direccionamiento y Representacion en Memoria

Supongamos que la memoria utilizada tiene un tamaño de 4 Gigabytes y por tanto sus direcciones se representan con 32 bits. Las direcciones de memoria son números naturales en el rango [0, 232 - 1]. Pero este número natural es susceptible de ser almacenado él mismo en memoria. Es decir, se puede almacenar la representación binaria de una dirección de memoria en la propia memoria. Al tener un tamaño de 32 bits o 4 bytes, se utilizan para ello cuatro posiciones de memoria consecutivas.

Una dirección de memoria, por tanto, se puede considerar de dos formas posibles: o como una dirección de una celda de memoria, o como un número natural susceptible de ser manipulado como tal. Supóngase que en la posición de memoria 0×00000100 se encuentra almacenado el número entero de 32 bits 0×0153F2AB y que en la posición 0×00000200 se debe almacenar la dirección de dicho número. Para ello se almacena, a partir de la posición 0×00000200 el número 0×00000100 utilizando los cuatro bytes a partir de esa posición y se hace en orden creciente de significación al utilizar el esquema little endian.

Tras almacenar la dirección de memoria de un dato en la posición 0×00000200, ¿es posible obtener de nuevo el número 0×0153F2AB? La respuesta es afirmativa, pero no de forma inmediata, se debe obtener de memoria primero los cuatro bytes almacenados en la posición 0×00000200 y utilizarlos como una dirección de memoria de donde obtener los cuatro bytes contenidos en la posición 0×00000100. El acceso a este último dato se ha realizado de forma indirecta, es decir, mediante un acceso previo a memoria para obtener la dirección del dato final. Utilizando la notación funcional de operaciones sobre memoria, el acceso al dato se logra ejecutando Lectura(Lectura(0×00000200)).



4.3.5 Sistema de numeración binaria y hexadecimal.

El sistema binario es el que usan los ordenadores, que es como si sólo tuvieran un dedo, su unidad básica de memoria, el bit, sólo puede tomar dos valores, inactivo o activo, y se codifican como 0 y 1, respectivamente. Los ordenadores se quedan sin dedos enseguida, en cuanto tienen que contar más de uno, así que añaden más dígitos. Por ejemplo, veamos el número binario 10110. Estamos en base 2, así que el número se calcula así: 0 * 2^0 + 1 * 2^1 + 1 * 2^2 + 0 * 2^3 + 1 * 2^4 = 2 + 4 + 16 = 22 (decimal) Este tipo de numeración resulta muy útil cuando cada bit puede significar cosas diferentes para un ordenador. El sistema hexadecimal, que es el rey de los sistemas de numeración, al menos en lo que respecta a los ordenadores. Usa 16 dígitos, los archiconocidos 0 a 9 y para los otros seis se usan las letras A, B, C, D, E y F, que tienen valores 10, 11, 12, 13, 14 y 15, respectivamente. Se usan indistintamente mayúsculas y minúsculas. Por ejemplo, un número hexadecimal 4F3D: 13 * 16^0 + 3 * 16^1 + 15 * 16^2 + 4 * 16^3 = 13 + 3 * 16+ 15 * 256 + 4 * 4096 = 20285 Este sistema de numeración tiene muchas ventajas: • La conversión entre binario y hexadecimal es tan simple como en octal, la única diferencia es que los bits se agrupan de cuatro en cuatro. 0000 es 0, 0001 es 1, 0010 es 2 … 1111 es F. • El byte, es la unidad de memoria más usada por los ordenadores y agrupa ocho bits. Para codificar un número de 8 bits sólo se necesitan dos dígitos hexadecimales. El mayor número expresable por un byte, 11111111(binario), equivale a 255(decimal) y a FF(hexadecimal). • Y para palabras de dos bytes (16 bits), se usan sólo cuatro dígitos hexadecimales. (El número 16 aparece mucho cuando se habla de ordenadores.) • Para 32 bits: 8 dígitos hexadecimales, y sucesivamente. Con la práctica podrás hacer conversiones de hexadecimal a binario de memoria: 3E equivale a 00111110


4.4 Operadores, operandos y expresiones.

OPERADORES: ES EL SÍMBOLO QUE ASIGNA YA SEA UNA OPERACIÓN O UNA RELACIÓN ENTRE LOS OPERANDOS, DE LOS CUALES HABLAREMOS MAS TARDE, LOS OPERANDOS SE CLASIFICAN EN 3 GRUPOS DISTINTOS:

A) ARITMÉTICOS
B) RELACIONES
C) LÓGIOS
OPERADORES ARITMÉTICOS

COMO SU NOMBRE LO INDICA SON AQUELLOS QUE REALIZAN OPERACIONES O CÁLCULOS ARITMÉTICOS, LOS CUALES SON: SUMA(+), RESTA(-), MULTIPLICACIÓN(*), DIVISIÓN REAL(/), DIVISIÓN ENTERA(DIV), RESIDUO(MOD), EXPONENCIACIÓN(^). POR EJEMPLO:
a) 15+7=22
b) 77-76=1
c) 2*1=2
d) 4 DIV 2=2
e) 10 MOD 2=0

OPERADORES RELACIONALES

ESTAS TE PERMITEN HACER COMPARACIONES DE VALORES DE TIPO NUMÉRICO Y DE TIPO CARÁCTER, SIRVEN PARA EXPRESAR LAS CONDICIONES EN LOS ALGORITMOS PARA ASI PROPORCIONAR RESULTADOS LÓGICOS.

TIPOS DE OPERADORES RELACIONALES

  • > MAYOR QUE
  • <>
  • > = MAYOR O IGUAL QUE
  • < = MENOR O IGUAL QUE
  • < > DIFERENTE
  • = IGUAL

EJEMPLOS:

SI A = 10, B = 20, C = 30

EJEMPLOS NO LÓGICOS:

A <>


OPERADORES LÓGICOS
ESTOS OPERADORES SE UTILIZAN PARA ESTABLECER RELACIONES ENTRE VALORES LÓGICOS. ESTOS VALORES PUEDEN SER RESULTADO DE UNA EXPRESIÓN RELACIONAL.


TIPOS DE OPERADORES LÓGICOS


AND Y
OR O
NOT NEGACIÓN

4.5 Prioridad de operadores, evaluación de expresiones.

Determina el orden en que habrán de realizarse las operaciones en una expresión determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas se evalúan primero.

Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad.

En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe agruparse a los operandos involucrados.

4 + 12 /2 = 10 (sin agrupar)
(4 + 12) /2 = 8 (con agrupador)


Ejemplo:

Obtener los resultados de las expresiones:
-4 * 7 + 2 ^ 3 / 4 - 5

Solución:
-4 *7 + 2 ^ ¾ -5
Resulta:
-4 * 7+ 8/4 -5
-28 + 8/4 -5
-28 + 2 - 5
-26 - 5
-31


Los paréntesis tienen prioridad sobre el resto de las operaciones.

A * (B+3) La constante 3 se suma primero al valor de B, después este resultado se multiplica por el valor de A.

(A*B) +3 A y B Se multiplican primero y a continuación se suma 3.

A + (B/C) + D Esta expresión equivale a A+ B/C + D



OperadorPrioridad
^Alta
*,/,DivMedia
+,-,ModBaja
RelacionalesMuy baja

4.6 Estructura básica de un programa.

Estructura básica de un programa en C

La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo que se puede escribir en C es el siguiente:

main( )
{
}

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más importante de cualquier programa C y además, es el más pequeño que se puede escribir y que se compile correctamente. En el se define la función main, que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre de una función C siempre va seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está formada por un bloque de sentencias, que esta encerrado entre llaves {}.

Un programa algo más complicado es el siguiente:

include<stdio.h>
include<conio.h>
void main( )
{
clrscr();
printf(“Hola mundo.\n”);
getch();
}

Con el visualizamos el mensaje Hola mundo. en el terminal. En la primera línea indica que se tengan en cuenta las funciones y tipos definidos en la librería stdio (standard input/output). Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la función main se incluye una única sentencia que llama a la función printf. Esta toma como argumento una cadena de caracteres, que se imprimen van encerradas entre dobles comillas “ “. El símbolo \n indica un cambio de línea.

Hay un grupo de símbolos, que son tratados como caracteres individuales, que especifican algunos caracteres especiales del código ASCII. Los más importantes son:

\a Alerta
\b Espacio atrás
\f Salto de página
\n Salto de línea
\r Retorno de carro
\t Tabulación horizontal
\v Tabulación vertical
\\ Barra invertida
\’ Comilla simple
\” Comillas dobles
\OOO Visualiza un carácter cuyo código ASCII es OOO en octal
\xHHH Visualiza un carácter cuyo código ASCII es HHH en hexadecimal

Un programa C puede estar formado por diferentes módulos o fuentes. Es conveniente mantener los fuentes de un tamaño no muy grande, para que la compilación sea rápida. También, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su estructuración. Los diferentes fuentes son compilados de forma separada, únicamente los fuentes que han sido modificados desde la última compilación, y después combinados con las librerías necesarias para formar el programa en su versión ejecutable.

Como los lenguajes han cambiado de c a java(que es un derivado de c y c++) para aquellos que apenas empezamos en java un primer programa seria:

import java.io.*;
class primero{
public static void main(){
system.out.println(“Hola mundo.”);
}
}

4.7 Proceso de creación de un ejecutable.

En Java, en principio, no se pueden crear autoejecutables ya que este es un lenguaje multiplataforma y los archivos autoejecutables son dependientes de la plataforma. Esto provoca que tengamos que usar la consola para ejecutar nuestros programas; lo que supone un gran inconveniente para usuarios sobre todo acostumbrados a los entornos gráficos. Existen varias soluciones para este asunto. Aquí se explican tres de ellas. La primera es la de crear ejecutables dependientes de la plataforma ; la segunda permite hacer más fácil la ejecución en cada plataforma sin impedir su ejecución en otra plataforma; la tercera es válida para cualquier plataforma y aporta otras muchas posibilidades. Podemos crear un ejecutable de la plataforma de varias maneras: Podemos usar traducir el código java a código C con Toba o J2C. De esta forma sólo nos queda compilar el código C para crear el ejecutable. Toba es un proyecto libre cuyo desarrollo ha quedado estancado cuando Java iba por la versión 1.1, pero podemos descargarlo todavía desde su página web. Existe un compilador que además de permitirnos, como cualquier otro compilador, crear bytecodes a partir de ficheros .java, nos da la posibilidad de compilar el fuente (archivos .java) para obtener un ejecutable de la plataforma y también permite crear un ejecutable de la plataforma a partir del bytecode. De esta forma el código obtenido es mucho más rápido. El programa se llama GJC y forma parte la familia de compiladores GCC del proyecto GNU que se desarrolla bajo la GPL (General Public License). Si lo que queremos es crear un archivo ejecutable .exe (para plataforma Windows) y prescindir de la cualidad de multiplataforma de este lenguaje, lo que hay que hacer es conseguir un programa que realice esta tarea. Esto lo hacen algunas IDE’s y el programa Jto Exe. Al crear un .exe lo que hacemos es sustituir los archivos de clase de Java, al contrario que la siguiente opción que complementa y no sustituye. En particular el programa Jto Exe necesita de la máquina virtual de Java para poder ejecutar el programa de modo seguiremos necesitando instalar la JVM al contrario que las dos opciones anteriores.

sábado, 20 de octubre de 2007

2. Técnicas básicas de modelado de objetos.

INSTITUTO TECNOLÓGICO DE TUXTLA GUTIÉRREZ





Fundamentos de Programación




Catedrática:

Alicia González Laguna


Presentan:

Ana Claudia Suárez Domínguez
Jorge Emilio del Carpio Hernández
Nestor Cuauhtemoc Entzín Gómez
Francisco Javier Abraham Herrera




Ingeniería en Sistemas Computacionales




Primer Semestre Turno Matutino





Tuxtla Gutiérrez, Chiapas; a 19 de septiembre de 2007.

2.1 Definición de clases, atributos, métodos y objetos.

Es decir, en java las variables de tipo básico son el nombre de una zona de memoria en la cuál podemos almacenar valores, pero que en cambio, las variables de tipo objeto son en realidad referencias (punteros o alias) de objetos.

Una variable de tipo objeto no es un objeto completo, sino tan solo almacena la situación del objeto en la memoria del equipo. Esto es muy similar a lo que ocurre con las casas y las direcciones de dichas casas: la dirección calle Alcalá 950 es una dirección válida, pero no podemos mandar cartas a dicha dirección porque es…un descampado!!!
Lo mismo sucede con los objetos, podemos tener una variable para referirnos a objetos, pero la variable puede que no apunte a ningún objeto y por tanto no la puedo emplear para intentar acceder a un método o a un atributo del objeto referenciado por la variable, sencillamente porque no existe el objeto referenciado.

Una variable que no apunta a un objeto se asume que tiene un valor especial llamado null, e incluso podemos asignar el valor null a la variable:

Thread t = null;
Es por ello que se deben construir objetos y asignárselos a las referencias, usando la palabra clave new. new permite crear un objeto a partir de la descripción de la clase que le pasamos como argumento, por ejempo:

new Persona()
Conseguimos crear un objeto de la clase Persona, los paréntesis permiten especificar qué constructor estamos llamando al crear el objeto (veremos constructores más adelante).
Pero al crear un objeto persona como en el código anterior lo estamos creando como un objeto anónimo, es decir sin asignar el objeto a una variable de tipo referencia, desde la cuál poder referirnos al objeto y poder llamar a sus métodos y atributo, por ello lo más habitual será asignar el objeto a una variable como en: 0359

2.2 El Modelo como resultado de la abstracción.

En la especificación del UML podemos comprobar que una de las partes que lo componen es un metamodelo formal. Un metamodelo es un modelo que define el lenguaje para expresar otros modelos. Un modelo en OO es una abstracción cerrada semánticamente de un sistema y un sistema es una colección de unidades conectadas que son organizadas para realizar un propósito específico. Un sistema puede ser descripto por uno o más modelos, posiblemente desde distintos puntos de vista.

Una parte del UML define, entonces, una abstracción con significado de un lenguaje para expresar otros modelos (es decir, otras abstracciones de un sistema, o conjunto de unidades conectadas que se organizan para conseguir un propósito). Lo que en principio puede parecer complicado no lo es tanto si pensamos que uno de los objetivos del UML es llegar a convertirse en una manera de definir modelos, no sólo establecer una forma de modelo, de esta forma simplemente estamos diciendo que UML, además, define un lenguaje con el que podemos abstraer cualquier tipo de modelo.

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 esta compuesto de clases (Abstracciones de la realidad y de la solución del problema) y objetos (instancias de éstas abstracciones) que interactúan entre si para realizar una funcionalidad, así veremos el mundo. Este es precisamente al paradigma a que le apuesta UML: el modelo orientado a objetos. Si vemos la realidad como compuesta de procesos donde cada uno a su vez se puede descomponer en subprocesos entonces estamos concibiendo la realidad según el modelo estructurado y la arquitectura del sistema en desarrollo estará conformada de programas y subprogramas.

Para modelar un sistema complejo no es suficiente un único modelo se requieren múltiples modelos donde cada uno representa una vista (aspecto) del sistema; estos modelos se complementan entre si. 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 funcionales del mismo.

Cualquier modelo puede ser representado 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 representa un modelo; por ejemplo, si lo que se 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 relaciones; por otro lado, si lo que se desea es transmitir el diagrama de clases para que sea implementado en un DBMS (Data Base Management System, Sistema Administrador de Bases de Datos) por un programador, el diagrama con toda seguridad contendrá la visibilidad de las características (atributos y operaciones) de las clases, los tipos de datos de los atributos y las signaturas de las métodos de las clases. La segunda forma de ver la precisión de un modelo se refiere al nivel de abstracción, ese decir, a los detalles y la vista (porción del sistema o realidad) que presenta un modelo al lector; por ejemplo, en un sistema Bancario que maneja los retiros que hacen los clientes ya sea en un cajero automático o humano, el diagrama de clases contiene decenas de éstas; sin embargo las personas encargadas de desarrollar la interfaz de un cajero electrónico estarían interesadas en las clases necesarias para realizar el comportamiento del cajero y omiten el resto de clases del sistema.

Los mejores Modelos están ligados a la realidad. El símbolo de un actor en un diagrama de casos de uso representa, de hecho, un actor en el sistema real; así como un componente en un diagrama de componentes representa un componente físico del software. Cada elemento de UML como una clase, objeto, estado, componente o nodo tiene su correspondencia con algún elemento conceptual o físico del mundo real.

2.3 El UML como una herramienta de modelado de objetos.

Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; aún cuando todavía no es un estándar oficial, está respaldado por el OMG (Object Management Group).

Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema de software.

En UML 2.0 hay 13 tipos diferentes de diagramas.

Para comprenderlos de manera concreta, a veces es útil categorizar los jerárquicamente, así:

Diagramas de estructura enfatizan en los elementos que deben existir en el sistema modelado:

• Diagrama de clases

• Diagrama de componentes
• Diagrama de objetos



• Diagrama de estructura compuesta (UML 2.0)

• Diagrama de despliegue


• Diagrama de paquetes



Diagramas de comportamiento enfatizan en lo que debe suceder en el sistema modelado:

• Diagrama de actividades


• Diagrama de casos de uso


• Diagrama de estados

Diagramas de Interacción, un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado:

• Diagrama de secuencia


• Diagrama de comunicación


• Diagrama de tiempos (UML 2.0)

• Diagrama de vista de interacción (UML 2.0)

2.4 Planteamiento del problema.

Esta es la problemática detectada en la negocicaión "Tepozquilas", se ha encontrado en la información recabada por medio de entrevista es que existe cierta lentitud al realizar las anotaciones de las actividades, además de que no hay completa seguridad en los archivos de control, también los errores frecuentes que se llevan acabo al realizar el registro de movimientos diarios.

2.4.1 Analizar el enunciado del problema.

La problemática que se ha encontrado en la información recabada por medio de entrevista es que existe cierta lentitud al realizar las anotaciones de las actividades, además de que no hay completa seguridad en los archivos de control, también los errores frecuentes que se llevan acabo al realizar el registro de movimientos diarios.






A partir de lo anterior concluimos que es necesario el diseño y desarrollo de un sistema que permita realizar y controlar los movimientos de la empresa, como lo son las ventas, compras, altas, bajas y consultas de productos, empleados y proveedores. Además de esto es necesario restingir el acceso a la inforación que recabe este sistema, para lograr ésto es necesario el uso de una contraseña y nombre de usuario los cuales deben ser privados y confidenciales.


Otra cosa observado mediante el analisis de la problematica y de la información recabada es que no se necesita el control de clientes esto debido a que no se realiza ventas por mayoreo y no se expiden facturas.

2.4.2 Identificar funciones del sistema.

Para la problematica arriba mencionada, necesitamos un sitema que permita el registro de ventas de manera rápida y eficaz, además de que debe contar con funciones de red para que el propietario del negocio pueda accesar a la base de datos de cada sucursal para obtener la infromación necesaria. Por lo tanto las funciones del sistema son las siguientes:


1.- Administración de acceso al sistema y bases de datos.

2.- Conexión a red e internet.

3.- Control de ventas e inventario.

4.- Control de proveedores.

5.- Capacidad para hacer consultas específicas o por aproximación.

6.- Capacidad de expedir ticket o nota de remisión y/o facturas.


2.5 Análisis.

El análisis es la base de todo proyecto, es considerado como la primera etapa del ciclo de vida y es en esta etapa en la que se debe realizar un estudio detallado de la información para poder detectar las alternativas de solución al o a los problemas que presente la empresa.




El analisis OO nos permite identificar los objetos del problema con sus respectivos metodos y atributos. Lo cual nos permitirá realizar el diseño de la solución.


En nuestro caso identificamos como objetos a los empleados, clientes, tequilas, artesanías, notas y los sistemas de pago.

viernes, 19 de octubre de 2007

2.5.1 Descubrir objetos en el dominio del problema.



Si se observa alrededor en una habitación, existen un conjunto de objetos físicos que pueden ser fácilmente identificados, clasificados y definidos (en términos de atributos y operaciones). Pero cuando se “observa” el espacio de un problema en una aplicación de software, los objetos pueden ser más difíciles de identificar. Se puede empezar a identificar objetos examinando el planteamiento del problema o realizando un “análisis sintáctico gramatical” en la narrativa del sistema que se va a construir. Los objetos se determinan subrayando cada nombre o cláusula nominal e introduciéndola en una tabla simple. Los sinónimos deben destacarse. Si se requiere del objeto que implemente una solución, entonces éste formará parte del espacio de solución; en caso de que el objeto se necesite solamente para describir una solución, éste forma parte del espacio del problema. Los objetos se manifiestan de alguna de las formas siguientes: • Entidades Externas que producen o consumen información a usar por un sistema computacional. Por ejemplo: otros sistemas, dispositivos, personas. • Cosas que son parte del dominio de información del problema. Por ejemplo: informes, presentaciones, cartas, señales. • Ocurrencias o Sucesos que ocurren dentro del contexto de una operación del sistema. Por ejemplo: una transferencia de propiedad o la terminación de una serie de movimientos en un robot. • Papeles o Roles desempeñados por personas que interactúan con el sistema. Por ejemplo: director, ingeniero, vendedor. • Unidades Organizacionales que son relevantes en una aplicación. Por ejemplo: división, grupo, equipo. • Lugares que establecen el contexto del problema y la función general del sistema. Por ejemplo: planta de producción o muelle de carga. • Estructuras que definen una clase de objetos o, en casos extremos, clases relacionadas de objetos. Por ejemplo: sensores, vehículos de cuatro ruedas o computadoras. La clasificación mostrada es una de las muchas que se han propuesto en la literatura. También es importante destacar qué no son los objetos. En general, un objeto nunca debe tener un “nombre procedimental imperativo”. Coud y Yourdon sugieren seis características de selección a usar cada vez que un analista considera si incluye o no un objeto potencial en el modelo de análisis: o Información retenida el objeto potencial será de utilidad durante el análisis solamente si la información acerca de él debe recordarse para que el sistema funciones. o Servicios necesarios el objeto potencial debe poseer un conjunto de operaciones identificables que pueden cambiar de alguna manera el valor de sus atributos. o Atributos múltiples durante el análisis de requisitos, se debe centrar la atención en la información principal (un objeto con un solo atributo puede, en efecto, ser útil durante el diseño, pero seguramente será mejor presentado como un atributo de otro objeto durante la actividad de análisis). o Atributos comunes puede definirse un conjunto de atributos para el objeto potencial, los cuales son aplicables a todas las ocurrencias del objeto. o Operaciones comunes puede definirse un conjunto de operaciones para el objeto potencial, las cuales son aplicables a todas las ocurrencias del objeto. o Requisitos esenciales entidades externas que aparecen en el espacio del problema y producen o consumen información esencial para la producción de cualquier solución para el sistema, serán casi siempre definidas como objetos en el modelo de requisitos. Para ser considerado un objeto válido a incluir en el modelo de requisitos, un objeto potencial debe satisfacer todas (o casi todas) las características anteriores. La decisión de incluir objetos potenciales en el modelo de análisis es algo subjetivo, y una evaluación posterior puede llegar a descartar un objeto o reincluirlo. Sin embargo, el primer paso del Análisis Orientado a Objetos debe ser la definición de objetos, y la consiguiente toma de decisiones (incluso subjetivas).



Enfocado a nuestro problema


Los objetos que nosotros detectamos están clasificado dentro de las siguientes clases:

  • Productos: que son los tequilas y las artesanías.
  • Personal: El cual consta de dos empleados por sucursal, uno que es el Agente de ventas y otro que es el Gerente General, sin embargo hay un Director General quien debe tener acceso total a la información.
  • Proveedores: que son los productores de artesnías y el distribuidor de los tequilas.
  • Clientes: quien no se necesita realizar un control esto debido a que solo se realiza ventas sin facturas.
  • Notas: Estas son en los comprobantes de venta expedidos por la sucursal.