logotipo

img_google
unidades
en este blog esta todo lo vistio en nuestra primera unidad de metodos de programacion
Sindicación
 
ultima unidad y nos vamos
PROGRAMACION 5TA UNIDAD::::



Modificadores De Acceso Public Private
Modificadores
Los modificadores son elementos del lenguaje que se colocan delante de la definición de variables locales, datos miembro, métodos o clases y que alteran o condicionan el significado del elemento. En capítulos anteriores se ha descrito alguno, como es el modificador static que se usa para definir datos miembros o métodos como pertenecientes a una clase, en lugar de pertenecer a una instancia. En capítulos posteriores se tratarán otros modificadores como final, abstract o synchronized. En este capítulo se presentan los modificadores de acceso, que son aquellos que permiten limitar o generalizar el acceso a los componentes de una clase o a la clase en si misma.
Modificadores de acceso
Los modificadores de acceso permiten al diseñador de una clase determinar quien accede a los datos y métodos miembros de una clase.
Los modificadores de acceso preceden a la declaración de un elemento de la clase (ya sea dato o método), de la siguiente forma:
[modificadores] tipo_variable nombre;
[modificadores] tipo_devuelto nombre_Metodo ( lista_Argumentos );
Existen los siguientes modificadores de acceso:
public - Todo el mundo puede acceder al elemento. Si es un dato miembro, todo el mundo puede ver el elemento, es decir, usarlo y asignarlo. Si es un método todo el mundo puede invocarlo.
private - Sólo se puede acceder al elemento desde métodos de la clase, o sólo puede invocarse el método desde otro método de la clase.
protected - Se explicará en el capítulo dedicado a la herencia.
sin modificador - Se puede acceder al elemento desde cualquier clase del package donde se define la clase.
Pueden utilizarse estos modificadores para cualquier tipo de miembros de la clase, incluidos los constructores (con lo que se puede limitar quien puede crear instancias de la clase).
En el ejemplo los datos miembros de la clase Punto se declaran como private, y se incluyen métodos que devuelven las coordenadas del punto. De esta forma el diseñador de la clase controla el contenido de los datos que representan la clase e independiza la implementación de la interface.
class Punto {
private int x , y ;
static private int numPuntos = 0;

Punto ( int a , int b ) {
x = a ; y = b;
numPuntos ++ ;
}

int getX() {
return x;
}

int getY() {
return y;
}

static int cuantosPuntos() {
return numPuntos;
}
}
Si alguien, desde una clase externa a Punto, intenta:
. . . Punto p = new Punto(0,0); p.x = 5; . . .
obtendrá un error del compilador. Modificadores de acceso para clases
Las clases en si mismas pueden declararse:
public - Todo el mundo puede usar la clase. Se pueden crear instancias de esa clase, siempre y cuando alguno de sus constructores sea accesible.
sin modificador - La clase puede ser usada e instanciada por clases dentro del package donde se define.
Las clases no pueden declararse ni protected , ni private .
¿Son importantes los modificadores de acceso?
Los modificadores de acceso permiten al diseñador de clases delimitar la frontera entre lo que es accesible para los usuarios de la clase, lo que es estrictamente privado y ‘no importa’ a nadie más que al diseñador de la clase e incluso lo que podría llegar a importar a otros diseñadores de clases que quisieran alterar, completar o especializar el comportamiento de la clase.
Con el uso de estos modificadores se consigue uno de los principios básicos de la Programación Orientada a Objetos, que es la encapsulación: Las clases tienen un comportamiento definido para quienes las usan conformado por los elementos que tienen un acceso público, y una implementación oculta formada por los elementos privados, de la que no tienen que preocuparse los usuarios de la clase.
Los otros dos modificadores, protected y el acceso por defecto (package) complementan a los otros dos. El primero es muy importante cuando se utilizan relaciones de herencia entre las clases y el segundo establece relaciones de ‘confianza’ entre clases afines dentro del mismo package. Así, la pertenencia de las clases a un mismo package es algo más que una clasificación de clases por cuestiones de orden.
Cuando se diseñan clases, es importante pararse a pensar en términos de quien debe tener acceso a que. Qué cosas son parte de la implantación y deberían ocultarse (y en que grado) y que cosas forman parte de la interface y deberían ser públicas.



Encapsulamiento De La Clase
Definición previa: un paquete es una colección de clases que se encuentran en el mismo directorio. Las clases permiten implementar tipos de datos abstractos. El problema que se presenta es que desde cualquier clase se puede accesar los campos de un objeto perteneciente a otra clase. Esto es una violación al principio de abstracción que dice que un tipo de datos abstracto sólo puede ser manipulado a través de las operaciones que se definen para éste.
Visibilidad de Campos y Métodos
En java al definir una clase se puede controlar la visibilidad que tendrán sus campos y métodos al exterior de la clase. Este control se efectúa de la siguiente forma:
class A {
private int privx;
protected int protb;
public int pubc;
int paqd;

private void Met Priv?() { … }
protected void Met Prot?() { … }
public void Met Pub?(A a)
{
// Un campo siempre es visible
// en la clase en donde se define
… privx … a.privx …
… protb … a.protb …
… pubc … a.pubc …
// Un método siempre es visible
// en la clase en donde se define
Met Priv(); a.Met Priv();
}
void Met Paq?() { … }
}
Las palabras private, protected y public son atributos de un campo o un método y su significado es el siguiente:
private: El campo o método sólo es visible dentro de la clase donde se define.
protected: El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases.
public: El campo o método es visible en cualquier clase.
Ninguna de las anteriores: El campo o método es visible en cualquiera de las clases pertenecientes al paquete en donde se define. Ejemplo: class B {
public void Met B?()
{
A a= new A();
a.pubc= 1; // Ok
a.priva= 2; // error, privado
a.protb= 3; // error, B no es
// subclase de A

a.Met Pub(); // Ok
a.Met Priv(); // error, privado
}
}
________________________________________
Visibilidad de Clases Al declarar una clase se puede especificar que es pública usando el atributo public. De este modo la clase podrá ser usada por cualquier otra clase. Si la clase no es pública entonces la clase sólo puede ser usada dentro del paquete que la contiene.
public class Box extends Graph Obj { … }
Podemos hacer un resumen de los atributos que pueden tener campos, métodos o clases: Campo: private {final} {static}
Método: private final {static}
Clase: public} {final Sólo se puede especificar uno de los atributos puestos en la misma llave.
________________________________________
El nombre de archivo Un archivo puede contener a lo más una clase pública, en cuyo caso el nombre del archivo debe ser el mismo de la clase pública, más la extensión .java. El resto de las clases del archivo sólo serán visibles dentro del paquete. Es usual que los archivos contengan una sola clase, pero también a veces se agregan otras clases al archivo cuando éstas son usadas sólo dentro de ese mismo archivo


El Metodo Como Elemento De La Comunicacion
Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes.
Son sinónimos de ‘método’ todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término ‘método’ para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.
Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes:
-Métodos propios. Están incluídos dentro de la cápsula del objeto.
-Métodos heredados. Estan definidos en un objeto diferente, antepasado de éste (padre,”abuelo”, etc.). A veces estos métodos se llaman métodos miembro porque el objeto los posee por el mero hecho de ser miembro de una clase
Sintaxis Del Metodo
SINTAXIS
El lenguaje se basa en pensar que hay en el mundo real objetos y esos objetos tienen un tipo, o clase. Por ello el lenguaje se basa en clases, que describen como son los objetos. Por ejemplo, el lenguaje tiene una clase que describe ficheros, una que describe cadenas de texto, o bien nosotros podemos crear clases, como por ejemplo la clase Persona, que describe los datos que interesan de una persona. Por ello siempre para comenzar a trabajar con un programa java hay que crear una clase: public class Tabla multiplicar{ } Además se deben de cumplir las siguientes características: La clase se debe de llamar exactamente igual que el fichero que la contiene. La clase que se llama igual que el fichero debe de estar precedida de la palabra public. Cuando se intenta ejecutar una clase java, la máquina virtual lo que hace es llamar a un método especial llamado main que debe estar dentro de la clase a ejecutar: Public class Tabla Multiplicar? { Public static void main (String arg[]){ } } Y es dentro de la función main donde escribiremos el código que queremos que se ejecute: Public class Tabla Multiplicar{ public static void main(String arg[]){ int numero = Integer.parseInt(arg[0]); for(int i = 1 ; i<=10 ; i++){ System.out.println(“”+numero+” * “+i+” = “+(i*numero)); } } }

Concepto De Parametro
Un parametro es una variable que puede pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algún proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parametros. Entonces una declaracion completa es: Static void Nom Proc?(lista de parametros) { cuerpo de instrucciones; }; import java.lang.*; import java.io.*; class prog13 { public static void main(String[] args) {
// llamando procedimiento1 y pasando algunos parametros double beta=3.1416; proc1(8+4 , beta, “Jesus” ); }; // cierra main public static void proc1(int a, double b, String nom ) { double c = a + b; System.out.println(nom+ “ la suma fue =“ + c); }; // cierra proc } // cierra clase
REGLAS PARA EL USO DE PARAMETROS
1.- Cuando se usan variables como parametros, la variable que se manda debe ser declarada dentro del principal o del procedimiento de donde se esta enviando. 2.- La variable que se manda tiene un nombre, la que se recibe puede tener otro nombre. 3.- La cantidad de variables que se envian deben ser igual en cantidad, orden y tipo a las variables que reciben. 4.- La variable que recibe tiene un ambito local dentro del procedimiento, es decir solo la puede usar ese procedimiento. Y se pueden mandar datos, valores (excepto decimales), expresiones algebraicas, pero siempre se recibe en variables. Eduardo :p ITH
Parametros Salida Y Entrada
METODOS DE ENTRADA/SALIDA

A. Introducción
Normalmente, cuando se codifica un programa, se hace con la intención de que ese programa pueda interactuar con los usuarios del mismo, es decir, que el usuario pueda pedirle que realice cosas y pueda suministrarle datos con los que se quiere que haga algo. Una vez introducidos los datos y las órdenes, se espera que el programa manipule de alguna forma esos datos para proporcionarnos una respuesta a lo solicitado.
Además, en muchas ocasiones interesa que el programa guarde los datos que se le han introducido, de forma que si el programa termina los datos no se pierdan y puedan ser recuperados en una sesión posterior. La forma más normal de hacer esto es mediante la utilización de ficheros que se guardarán en un dispositivo de memoria no volátil (normalmente un disco).
A todas estas operaciones, que constituyen un flujo de información del programa con el exterior, se les conoce como Entrada/Salida (E/S).
Existen dos tipos de E/S; la E/S estándar que se realiza con el terminal del usuario y la E/S a través de fichero, en la que se trabaja con ficheros de disco.
Todas las operaciones de E/S en Java vienen proporcionadas por el paquete estándar de la API de Java denominado java.io que incorpora interfaces, clases y excepciones para acceder a todo tipo de ficheros. En este tutorial sólo se van a dar algunas pinceladas de la potencia de este paquete.
B. Entrada/Salida estándar
Aquí sólo trataremos la entrada/salida que se comunica con el usuario a través de la pantalla o de la ventana del terminal. Si creamos una applet no se utilizarán normalmente estas funciones, ya que su resultado se mostrará en la ventana del terminal y no en la ventana de la applet. La ventana de la applet es una ventana gráfica y para poder realizar una entrada o salida a través de ella será necesario utilizar el AWT. El acceso a la entrada y salida estándar es controlado por tres objetos que se crean automáticamente al iniciar la aplicación: System.in, System.out y System.err
a.) System.in Este objeto implementa la entrada estándar (normalmente el teclado). Los métodos que nos proporciona para controlar la entrada son: • read(): Devuelve el carácter que se ha introducido por el teclado leyéndolo del buffer de entrada y lo elimina del buffer para que en la siguiente lectura sea leído el siguiente carácter. Si no se ha introducido ningún carácter por el teclado devuelve el valor −1. • skip(n): Ignora los n caracteres siguientes de la entrada.
b.) System.out
Este objeto implementa la salida estándar. Los métodos que nos proporciona para controlar la salida son: • print(a): Imprime a en la salida, donde a puede ser cualquier tipo básico Java ya que Java hace su conversión automática a cadena. • println(a): Es idéntico a print(a) salvo que con println() se imprime un salto de línea al final de la impresión de a. • flush(a): vacia el buffer de salida escribiendo su contenido
c.) System.err
Este objeto implementa la salida en caso de error. Normalmente esta salida es la pantalla o la ventana del terminal como con System.out, pero puede ser interesante redirigirlo, por ejemplo hacia un fichero, para diferenciar claramente ambos tipos de salidas.’‘’

El Constructor




DEFINICIÓN DE CONSTRUCTORES Y DESTRUCTORES DE UNA CLASE.
Definicion:
El constructor de una clase es un método estándar para inicializar los objetos de esa clase. Es una función que se ejecuta siempre al crear un objeto. Los constructores de una clase tienen siempre el nombre de la clase y no tiene ningún valor devuelto (ni siquiera void). Si el usuario no declara un constructor el sistema (En este caso Java) siempre crea un constructor por defecto sin argumentos. En el momento en el que el usuario define un constructor el constructor del sistema se elimina y es sustituido por el, o los, constructores definidos (al tratarse de un método más el constructor puede sobrecargarse).
Para inicializar un objeto basta con llamar a su constructor después de la palabra reservada new y asignarlo a una referencia declarada previamente.Un constructor es un método que se ejecuta cada vez que se crea un objeto, el propósito de este procedimiento es el de inicializar los datos del objeto. El nombre del constructor siempre es igual al nombre de la clase. Se invoca automáticamente cuando new crea un objeto de esa clase. • Los constructores se declaran en el momento de definir la clase.

class A {
int x, y;
A() { x=0; y=0; } // el constructor
}

A a= new A();
a.Print(); // 0 0
• El constructor puede tener parámetros. En este caso, se deben colocar los argumentos respectivos al crear el objeto:
class A {
int x, y;
A(int ix, int iy)
{ x=ix; y=iy; } // el constructor

}

A a= new A(1,2);
a.Print(); // 1 2

a= new A(); // error, hay que colocar
// los argumentos
a.A(1,2); // error, no se puede
// invocar el constructor
• Se pueden colocar varios constructores. Durante la creación de un objeto, se invoca aquel que calza con los argumentos dados:
class A {
int x, y;
A() { x=0; y= 0; }
A(int ix, int iy)
{ x=ix; y=iy; }
A(A from)
{ x= from.x; y= from.y; }
}
A a1= new A();
a1.Print(); // 0 0
A a2= new A(1,2);
a2.Print(); // 1 2
A a3= new A(a2);
a3.Print(); // 1 2
Definición:
Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. JAVA no posee destructores, porque tiene recolección de basuras. C++ posee destructores. Un destructor es un método que es ejecutado cada vez que se destruye (se elimina de RAM) un objeto, el objetivo de este método es el de eliminar toda la memoria que ocupó un objeto. En JAVA no es necesaria la definición de destructores (es más no existen), pues el mismo lenguaje se encarga de la eliminación y liberación de la memoria ocupada por un objeto, esto se realiza cada vez que un objeto pierde todas sus referencias. En resumen es un método de clase que sirve para realizar ciertas operaciones necesarias al dejar de existir un objeto, por ejemplo, cerrar conexiones de una comunicación, cerrar ficheros, etc. Java dispone de un elemento denominado recolector de basura (garbage collector) que se encarga de liberar memoria asignada a objetos que ya no se utilizan, aún así en ocasiones será necesario disponer de una función que realice operaciones adicionales a la mera liberación de memoria. Para este fin se crea un método, denominado finalize, con las siguientes características:
protected void finalize() throws throwable
{
… cuerpo del destructor
}
DEFINICION DE CONSTRUCTOR
Constructores
Un constructor es una función especial que sirve para construir o inicializar objetos. En C++ la inicialización de objetos no se puede realizar en el momento en que son declarados; sin embargo, tiene una característica muy importante y es disponer de una función llamada constructor que permite inicializar objetos en el momento en que se crean.
Un constructor es una función que sirve para construir un nuevo objeto y asignar valores a sus miembros dato. Se caracteriza por: - Tener el mismo nombre de la clase que inicializa - Puede definirse inline o fuera de la declaración de la clase - No devuelve valores - Puede admitir parámetros como cualquier otra función - Puede existir más de un constructor, e incluso no existir
Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto. El constructor por defecto no tiene argumentos y simplemente sitúa ceros en cada byte de las variables instancia de un objeto. Si se definen constructores para una clase, el constructor por defecto no se genera.
Un constructor del objeto se llama cuando se crea el objeto implícitamente: nunca se llama explícitamente a las funciones constructoras. Esto significa que se llama cuando se ejecuta la declaración del objeto. También, para objetos locales, el constructor se llama cada vez que la declaración del objeto se encuentra. En objetos globales, el constructor se llama cuando se arranca el programa.
El constructor por defecto es un constructor que no acepta argumentos. Se llama cuando se define una instancia pero no se especifica un valor inicial.
Se pueden declarar en una clase constructores múltiples, mientras tomen parte diferentes tipos o número de argumentos. El compilador es entonces capaz de determinar automáticamente a qué constructor llamar en cada caso, examinando los argumentos.
Los argumentos por defecto se pueden especificar en la declaración del constructor. Los miembros dato se inicializarán a esos valores por defecto, si ningún otro se especifica.
C++ ofrece un mecanismo alternativo para pasar valores de parámetros a miembros dato. Este mecanismo consiste en inicializar miembros dato con parámetros.
class prueba { tipo1 d1; tipo2 d2; tipo3 d3; public: prueba(tipo1 p1, tipo2 p2, tipo3 p3):d1(p1),d2(p2),d3(p3) { } };
Un constructor que crea un nuevo objeto a partir de uno existente se llama constructor copiador o de copias. El constructor de copias tiene sólo un argumento: una referencia constante a un objeto de la misma clase. Un constructor copiador de una clase complejo es: complejo::complejo(const complejo &fuente) { real=fuente.real;imag=fuente.imag; }
Si no se incluye un constructor de copia, el compilador creará un constructor de copia por defecto. Este sistema funciona de un modo perfectamente satisfactorio en la mayoría de los casos, aunque en ocasiones puede producir dificultades. El constructor de copia por defecto inicializa cada elemento de datos del objeto a la izquierda del operador = al valor del elmento dato equivalente del objeto de la derecha del operador =. Cuando no hay punteros invicados, eso funciona bien. Sin embargo, cuando se utilizan punteros, el constructor de copia por defecto inicializará el valor de un elemento puntero de la izquierda del operador = al del elemento equivalente de la derecha del operador; es decir que los dos punteros apuntan en la misma dirección. Si ésta no es la situación que se desea, hay que escribir un constructor de copia.
El Destructor
Un destructor es una función miembro con igual nombre que la clase, pero precedido por el carácter ~. Una clase sólo tiene una función destructor que, no tiene argumentos y no devuelve ningún tipo. Un destructor realiza la operación opuesta de un constructor, limpiando el almacenamiento asignado a los objetos cuando se crean. C++ permite sólo un destructor por clase. El compilador llama automáticamente a un destructor del objeto cuando el objeto sale fuera del ámbito. Si un destructor no se define en una clase, se creará por defecto un destructor que no hace nada.
Normalmente los destructores se declaran public.
Creación y supresión dinámica de objetos
Los operadores new y delete se pueden utilizar para crear y destruir objetos de una clase, así como dentro de funciones constructoras y destructoras.
Un objetro de una determinada clase se crea cuando la ejecución del programa entra en el ámbito en que está definida y se destruye cuando se llega al final del ámbito. Esto es válido tanto para objetos globales como locales, ya que los objetos globales se crean al comenzar el programa y se destruyen al salir de él. Sin embargo, se puede crear un objeto también mediante el operador new, que asigna la memoria necesaria para alojar el objeto y devuelve su dirección, en forma de puntero, al objeto en cuestión.
Los constructores normalmente implican la aplicación de new. p =new int(9) //p es un puntero a int inicializado a 9 cadena cad1(“hola”); cadena *cad2=new cadena;
Un objeto creado con new no tiene ámbito, es decir, no se destruye automáticamente al salir fuera del ámbito, sino que existe hasta que se destruye explícitamente mediante el operador delete. class cadena { char *datos; public:cadena(int); ~cadena(); }; cadena::cadena(int lon) { datos=new char[lon]; } cadena::~cadena() { delete datos; }
 
4 INTRODUCCIÓN A LA PROGRAMACIÓN.
4.1 CLASIFICACIÓN DEL SOFTWARE.

untitled.bmp

SOFTWARE: El software es quien determina la tarea a realizar por la computadora, pues en el están contenidas las instrucciones electrónicas, las cuales generalmente residen en un dispositivo de almacenamiento.

4.1.1 Software.A un grupo específico de instrucciones se les llama programa y son quienes le dicen a los componentes físicos de la máquina que deben hacer.

El software se divide en dos categorías:

A) Software de sistema: Indica a la computadora como usar sus propios componentes.
Cuando enciendes la computadora ésta ejecuta varios pasos para ser usada:

- Primero:Es la autoprueba sirve para identificar los dispositivos que están conectados a ella, cuenta la memoria disponible y si está trabajando bien.

Segundo: Busca el sistema operativo el cual le indica como interactuar con el usuario, como usar los dispositivos ( disco duro, monitor, y teclado ) y cargar el sistema en la memoria.
- Tercero: La computadora se encuentra lista para recibir comandos.
Los sistemas más populares son: Dos, Unix , OS/2 o Windows NT de Microsoft .

4.1.2 Software de aplicación. Son el tipo de software que hacen de la computadora una herramienta útil para el usuario, existen varias categorías:
Aplicaciones de negocios
Aplicaciones de utilerías
Aplicaciones personales
Aplicaciones entretenimiento

En las aplicaciones de negocios encontramos:

a) Los procesadores de palabras, los cuales te permiten crear prácticamente cualquier tipo de documento Ej. Word, Word perfect etc.
b) Las hojas de cálculo; éstas despliegan una matríz muy grande de columnas y renglones, las que al ser interceptadas forman las celdas que es la zona en donde se captura texto, números fórmulas etc.
c) Las bases de datos te permiten la organización de los datos guardados en la computadora así como la búsqueda de datos específicos .
d) Los gráficos son usados para crear ilustraciones, gráficas y tablas con calidad profesional basadas en datos numéricos generalmente importados de otro programa.



Las Utilerías
Ayudan a administrar y dar mantenimiento a la computadora, te ayudan a correr los diferentes programas, recuperar información, aumentar la eficiencia de la máquina y organizar la información del sistema.

Las Personales
Son programas diseñados para quitar lo tedioso a las tareas personales. Ej. el control de cheques, agenda de direcciones, operaciones bancarias, envío de correo electrónico etc.
Las de Entretenimiento

Aquí encontramos a los videojuegos. Ej. Carmen San Diego, los de astronomía, aprender el cuerpo humano etc.

4.2 Conceptos de la programación.

4.2.1 Definición de programa.Es un conjunto de instrucciones escritas en un lenguaje de programación que indican a la computadora la secuencia de pasos para resolver un problema.

4.2.2 Definición de programación.

4.2.3 Definición de lenguaje de programación.Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema.
Estos lenguajes se clasifican en tres grandes categorías :
Lenguaje Máquina, Lenguaje de Bajo nivel (ensamblador), Lenguaje de Alto nivel.

Lenguaje Máquina Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.
Las instrucciones en lenguaje máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra.

 Lenguajes de Bajo Nivel



 Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos.

 Por ejemplo, nemotécnicos típicos de operaciones aritméticas son : en inglés : ADD, SUB, DIV, etc. ; en español : SUM, RES, DIV, etc.

Una instrucción típica de suma sería :
ADD M, N, P

 Esta instrucción significa "sumar el contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P" . Evidentemente es más

 sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina.
 0110 1001 1010 1011
 Un programa escrito en lenguaje ensamblador, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora.

 El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora

 Lenguajes de Alto Nivel
 Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular),

por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.


4.3 Datos.

4.3.1 Definición de datos.

 Es la materia prima de la cual se deriva la información y son representaciones de hechos.
4.3.2 Tipos de datos.
 Un dato se define como la expresión general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida.

 Los datos se clasifican en diversas categorías, según el tipo de máquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categorías:

 Numéricos
 Lógicos
 Cadenas

Datos Numéricos
 Son aquellos que representan una cantidad o valor determinado. Su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen).
 Estos pueden representarse en dos formas distintas :

 Tipo Numérico Entero (integer).
 Tipo Numérico Real (real).

Enteros
 Es un conjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos.
 Algunos ejemplos son :
 3 7
 -109
 15.25
 50

Reales

Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto decimal y pueden ser positivos o negativos.
Un número real consiste de un número entero y una parte decimal. Algunos ejemplos son :
0.526
64.32
6.579
8.0
-9.3
-47.23

Cadenas
 Son los datos que representan información textual (palabras, frases, símbolos, etc). No representan valor alguno para efectos numéricos. Pueden distinguirse porque son delimitados por apóstrofes o comillas.
 Se clasifica en dos categorías :
 Datos tipo carácter (char)
 Datos tipo Cadena (string)

 Datos Tipo Carácter
 Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene solo un carácter.
 Reconoce los siguientes caracteres :
Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z)
Caracteres Numéricos (0,1,2,…9)
Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)

Datos Tipo Cadena (string)
 Es un sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores.
 Ejemplos :
 ‘Hola Mortimer’’12 de octubre de 1496’‘Enunciado cualquiera’
Nota: Los símbolos disponibles para la formulación de caracteres y de cadenas son aquéllos que se encuentran en el código ASCII

Lógicos
También se le denomina Booleano, es aquél dato que solo puede tomar uno de dos valores : Falso y verdadero.
Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta será verdadera o falsa, según sea.

Las categorías y tipos que se mencionaron anteriormente se conocen como Tipos Simples, puesto que no poseen una estructura compleja.
En forma adicional, cada lenguaje puede proporcionar la utilización de Tipos Compuestos, siendo estos, datos que tienen una estructura predeterminada.

Tipos Compuestos
Entre los principales tipos compuestos se encuentran los siguientes:
a.- SUBRANGO : Son aquéllos en los que se especifíca con precisión el intervalo de valores válidos para un dato.
Ejemplos:
0..100 (son enumerativos de tipo entero)
'A'..'Z' (son enumerativos de tipo cadena)


Los Reales no son válidos para crear enumerativos, ya que su intervalo no está definido.

b.- ENUMERATIVOS : Son aquéllos en los que se definen individualmente los valores para un dato.
Ejemplos:
(0,25,40,52) Siempre deben ponerse entre paréntesis.

c.- DEFINIDOS POR EL USUARIO : Son aquéllos que el programador crea para satisfacer las necesidades del programa en diseño.

Constantes y variables
Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (comprobación de un algoritmo en este caso). Se representa en la forma descrita para cada categoría.
Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un programa (idem).

4.3.3 IDENTIFICADORES

Identificadores
Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, etc.). Es una secuencia de carácteres que puede ser de cualquier longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son:
1. Debe comenzar con una letra o "_" y no puede contener espacios en blanco.
2. Letras, dígitos y caracteres subrayados ("_") están permitidos después del primer carácter.
En síntesis un identificador es un método para nombrar a las celdas de memoria en la computadora, en lugar de memorizarnos una dirección de memoria.






4.3.4. ALMACENAMIENTO , DIRECIONAMIENTO


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 0x00000100 se encuentra almacenado el número entero de 32 bits 0x0153F2AB y que en la posición 0x00000200 se debe almacenar la dirección de dicho número. Para ello se almacena, a partir de la posición 0x00000200 el número 0x00000100 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. El resultado se ilustra en la figura 3.15.



Figura 3.15. Dirección de memoria almacenada como número natural




Tras almacenar la dirección de memoria de un dato en la posición 0x00000200, ¿es posible obtener de nuevo el número 0x0153F2AB? La respuesta es afirmativa, pero no de forma inmediata, se debe obtener de memoria primero los cuatro bytes almacenados en la posición 0x00000200 y utilizarlos como una dirección de memoria de donde obtener los cuatro bytes contenidos en la posición 0x00000100. 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(0x00000200)).
A este mecanismo de acceso a un dato en memoria a través de su dirección a su vez almacenada en otra posición se le conoce con el nombre de “indirección”. En el ejemplo anterior se dice que el dato almacenado en la posición 0x00000200 apunta al dato 0x0153F2AB. La figura 3.16 ilustra esta situación.


Figura 3.16. Una posición de memoria “apunta a” otra

















4.3.5 SISTEMA DE NUMERACIÓN BINARIA A 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.






4.4 OPERADORES OPERANDOS Y EXPRESIONES
Los operadores pueden (en cierta forma) considerarse como funciones que tienen un álgebra un tanto especial. De hecho, al tratar la sobrecarga de operadores, veremos que precisamente la forma en que se definen es mediante una función, la función-operador ( 4.9.18). En este sentido podríamos imaginar que la expresión y = a + b es otra forma de representar algo como: y = suma (a, b). Del mismo modo, la asignación x = y sería algo así: asigna(x, y). Siguiendo con nuestra analogía podríamos suponer que los operadores unitarios, binarios y ternarios serían funciones que aceptarían unos, dos o tres argumentos respectivamente y que la sobrecarga de operadores no es sino una forma encubierta de sobrecarga de funciones.


4.5 PRIORIDAD OPERADORES EN EVALUACION DE EXPRESIONES

Expresiones
Una expresión es una combinación de operadores y operandos de cuya evaluación se obtiene un valor. Los operandos pueden ser nombres que denoten objetos variables o constantes, funciones, literales de cualquier tipo adecuado de acuerdo con los operadores u otras expresiones más simples. La evaluación de una expresión da lugar a un valor de algún tipo, una expresión se dice que es del tipo de su resultado. Ejemplos de expresiones: a + 5*b (a >= 0) and ((b+5) > 10) a -a * 2 + b -b + sqrt(b**2 - 4*a*c) length(s) > 0 Las expresiones se evalúan de acuerdo con la precedencia de los operadores. Ante una secuencia de operadores de igual precedencia, la evaluación se realiza según el orden de escritura, de izquierda a derecha. El orden de evaluación puede modificarse usando paréntesis. ‘’‘ OPERADORES’‘’ Normalmente, las expresiones con operadores se evalúan de izquierda a derecha, aunque no todos, ciertos operadores que se evalúan y se asocian de derecha a izquierda. Además no todos los operadores tienen la misma prioridad, algunos se evalúan antes que otros, de hecho, existe un orden muy concreto en los operadores en la evaluación de expresiones. Esta propiedad de los operadores se conoce como precedencia o prioridad. Veremos ahora las prioridades de todos los operadores incluidos los que aún conocemos.
Considera esta tabla como una referencia, no es necesario aprenderla de memoria, en caso de duda siempre se puede consultar, incluso puede que cambie ligeramente según el compilador, y en último caso veremos sistemas para eludir la precedencia.
Hdr Hdr Hdr


Operadores Asociatividad () [] → :: . Izquierda a derecha Operadores unitarios: ! ~ + - ++ — & (dirección de) * (puntero a) sizeof new delete Derecha a izquierda .* →* Izquierda a derecha
• (multiplicación) / % Izquierda a derecha
+ - (operadores binarios) Izquierda a derecha « » Izquierda a derecha < <= > >= Izquierda a derecha == != Izquierda a derecha & (bitwise AND) Izquierda a derecha ^ (bitwise XOR) Izquierda a derecha | (bitwise OR) Izquierda a derecha && Izquierda a derecha ?: Derecha a izquierda = *= /= %= += -= &= ^= |= «= »= Derecha a izquierda , Izquierda a derechaLa tabla muestra las precedencias de los operadores en orden decreciente, los de mayor precedencia en la primera fila. Dentro de la misma fila, la prioridad se decide por el orden de asociatividad. La asociatividad nos dice en que orden se aplican los operadores en expresiones complejas, por ejemplo: int a, b, c, d, e; b = c = d = e = 10; El operador de asignación “=“ se asocia de derecha a izquierda, es decir, primero se aplica “e = 10″, después “d = e”, etc. O sea, a todas las variables se les asigna el mismo valor: 10. a = b * c + d * e; El operador * tiene mayor precedencia que + e =, por lo tanto se aplica antes, después se aplica el operador +, y por último el =. El resultado final será asignar a “a” el valor 200. int m[10] = {10,20,30,40,50,60,70,80,90,100}, *f; f = &m[5]; ++*f; cout << *f << endl;


La salida de este ejemplo será, 61, los operadores unitarios tienen todos la misma precedencia, y se asocian de derecha a izquierda. Primero se aplica el *, y después el incremento al contenido de f. f = &m[5]; f—;
cout << *f << endl; La salida de este ejemplo será, 50. Primero se aplica el decremento al puntero, y después el *. a = b * (c + d) * e; Ahora el operador de mayor peso es (), ya que los paréntesis están en el grupo de mayor precedencia. Todo lo que hay entre los paréntesis se evalúa antes que cualquier otra cosa. Primero se evalúa la suma, y después las multiplicaciones. El resultado será asignar a la variable “a” el valor 2000. Este es el sistema para eludir las precedencias por defecto, si queremos evaluar antes una suma que un producto, debemos usar paréntesis.
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:
1. include
main( )
{
printf(“Hola amigos!\n”); }
Con el visualizamos el mensaje Hola amigos! 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.
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.
bueno 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.*;
public static void main{ { system.out.println(“este es mi primer programa en java”); system.out.println(“pero no es el ultimo que hare”); } }’‘’

4.7 PROCESO CREACION 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. J2C lo puedes encontrar aquí (creo; cuando veas la página sabrás el porqué de mis dudas), 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.

Etiquetas:  
 
UNIDAD3 DISEÑO ALGORITMO
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.

Implementación



Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada.
El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación, y en la mayoría de los casos su estudio es completamente abastracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces codificar) un algoritmo es escribirlo en pseudocódigo. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de éste con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia, y en cualquier otro caso, devolverá una mezcla de señales positivas y negativas.
Ejemplo
Se presenta el algoritmo para encontrar el máximo de un conjunto de enteros positivos. En el caso de que el elemento actual sea mayor que el máximo, se le asigna su valor al máximo.
El algoritmo escrito de una manera más formal, esto es, en pseudocódigo tendría el siguiente aspecto:
ALGORITMO Maximo
ENTRADAS: Un conjunto no vacío de enteros C.
SALIDAS: El mayor número en el conjunto C.

maximo ← -∞
PARA CADA elemento EN el conjunto C, HAZ
SI item > maximo, HAZ
maximo ← elem
DEVUELVE maximo
Sobre la notación:
* “←” representa la asignación entre dos elementos. Por ejemplo, con maximo ← elem significa que el número maximo cambia su valor por el de elem.
* “DEVUELVE” termina el algoritmo y devuelve el valor a su derecha (en este caso maximo).
Como medida de la bondad de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. Por eso, se ha desarrollado el análisis de algoritmos para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada. Por ejemplo, el algoritmo anterior tiene un orden de efiniencia en tiempo de O(n), en la notación O mayúscula n es el tamaño de la entradas; en este caso n es la el número de elementos de C. Además, como el algoritmo necesita recordar un único valor (el máximo) requiere un espacio de O(1) (hay que tener en cuenta que el tamaño de las entradas no se considera como memoria usada por el algoritmo). [editar]
Historia El posible rostro de al-Khwarizmi.
La palabra algoritmo proviene del nombre del matemático persa llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi que vivió entre los siglos VIII y IX.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador.
Ténicas de diseño de algoritmos
* Algoritmos greedy: Informalmente, podemos decir que este tipo de algoritmos selecciona los elementos del conjunto de candidatos en un determinado orden hasta encontrar una solución; es decir, calcula la solución al problema tomando en cada paso la opción más prometedora. En la mayoría de los casos la solución no es óptima.
* Algoritmos paralelos
* Algoritmos probabilísticos
* Divide y vencerás(divide & conquer, en inglés): este tipo de algoritmos particionan el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos, para luego después unirla logrando así, la solución al problema completo.
* Heurísticas: algoritmos que encuentran soluciones a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.
* Programación dinámica
* Ramificación y acotación: también conocidos como ramificación y poda, branch and bound. * Vuelta Atrás: al igual que el método ramificación y acotación, vuelta atrás (backtracking, en inglés) se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
Elementos Y Reglas Representacion Grafica Algoritmos
a) Descripción Narrada b) Pseudocódigo c) Diagramas de Flujo d) Diagramas N- S (Nassi-Schneiderman o de Chapin)
1 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 ITCA 9. Buscar el aula 10. Ubicarse en un asiento
2.Descripción en Pseudocódigo Pseudo = falso. 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. 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
4. Diagramas de Flujo. Son la representación gráfica de la solución algorítmica de un problema. 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.
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
DESVENTAJAS DE LOS FLUJOGRAMAS 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.
Implementacion Algoritmos Secuenciales
Implementación de algoritmos secuenciales
(Utilizando notación algebraica)
Seguramente muchas veces has escuchado la palabra algoritmo, pero nunca has sabido cual es su definición. Pues bien 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.
Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, así podremos quedar satisfechos con los resultados.




Diseño Algoritmico De Funciones


La realización de algoritmos es natural e innata en el hombre y en la mayoría de los casos es de tipo inconsciente, en otras palabras, las personas suelen resolver problemas sin tener que recurrir a la aplicación de cierto algoritmo. Los ejercicios fueron divididos en dos grupos, en el primer grupo se encuentran los algoritmos correspondientes a diferentes actividades, los pasos de estos algoritmos fueron marcados con números y después se utilizaron las figuras lógicas hasta llegar al último paso, el cual fue planteado por el mismo niño. El segundo grupo de ejercicios está compuesto por algoritmos y diagramas de flujo de los programas que realizaron los niños en el curso, datos del ejercicio se hicieron utilizando las instrucciones del lenguaje Logo. Los ejercicios fueron divididos en dos grupos, en el primer grupo se encuentran los algoritmos correspondientes a diferentes actividades, los pasos de estos algoritmos fueron marcados con números y después se utilizaron las figuras lógicas hasta llegar al último paso, el cual fue planteado por el mismo niño. El segundo grupo de ejercicios está compuesto por algoritmos y diagramas de flujo de los programas que realizaron los niños en el curso, datos del ejercicio se hicieron utilizando las instrucciones del lenguaje Logo. SOTO

 
2 Unidad
En esta unidad comprenderemos todo lo realacionado con el lenguaje dfd.



Tecnicas Basicas De Modelado De Objetos

Según la Real Lengua Española: Técnica: es Conjunto de procedimientos y recursos de que se sirve una ciencia o un arte. Modelado: es una técnica que ayuda a “visualizar” el sistema a construir. Objeto: Un objeto es una representación detallada, concreta y particular de un “algo”. Tal representación determina su identidad, su estado y su comportamiento particular en un momento dado.
En conclusión es Una serie de procedimientos para visualizar una serie de caracteristicas asignadas a un objeto.

Definicion De Clases Atributos Metodos 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).



El Modelo Como Resultado De La Abstraccion

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.
El UML es una técnica de modelado de objetos y como tal supone una abstracción de un sistema para llegar a construirlo en términos concretos. El modelado no es más que la construcción de un modelo a partir de una especificación.
Un modelo es una abstracción de algo, que se elabora para comprender ese algo antes de construirlo. El modelo omite detalles que no resultan esenciales para la comprensión del original y por lo tanto facilita dicha comprensión.
Los modelos se utilizan en muchas actividades de la vida humana: antes de construir una casa el arquitecto utiliza un plano, los músicos representan la música en forma de notas musicales, los artistas pintan sobre el lienzo con carboncillos antes de empezar a utilizar los óleos, etc. Unos y otros abstraen una realidad compleja sobre unos bocetos, modelos al fin y al cabo. La OMT, por ejemplo, intenta abstraer la realidad utilizando tres clases de modelos OO: el modelo de objetos, que describe la estructura estática; el modelo dinámico, con el que describe las relaciones temporales entre objetos; y el modelo funcional que describe las relaciones funcionales entre valores. Mediante estas tres fases de construcción de modelos, se consigue una abstracción de la realidad que tiene en sí misma información sobre las principales características de ésta.
Los modelos además, al no ser una representación que incluya todos los detalles de los originales, permiten probar más fácilmente los sistemas que modelan y determinar los errores. Según se indica en la Metodología OMT (Rumbaugh), los modelos permiten una mejor comunicación con el cliente por distintas razones: • Es posible enseñar al cliente una posible aproximación de lo que será el producto final. • Proporcionan una primera aproximación al problema que permite visualizar cómo quedará el resultado. • Reducen la complejidad del original en subconjuntos que son fácilmente tratables por separado.
Se consigue un modelo completo de la realidad cuando el modelo captura los aspectos importantes del problema y omite el resto. Los lenguajes de programación que estamos acostumbrados a utilizar no son adecuados para realizar modelos completos de sistemas reales porque necesitan una especificación total con detalles que no son importantes para el algoritmo que están implementando. En OMT se modela un sistema desde tres puntos de vista diferentes donde cada uno representa una parte del sistema y una unión lo describe de forma completa. En esta técnica de modelado se utilizó una aproximación al proceso de implementación de software habitual donde se utilizan estructuras de datos (modelo de objetos), las operaciones que se realizan con ellos tienen una secuencia en el tiempo (modelo dinámico) y se realiza una transformación sobre sus valores (modelo funcional).
UML utiliza parte de este planteamiento obteniendo distintos puntos de vista de la realidad que modela mediante los distintos tipos de diagramas que posee. 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. Un diagrama es una representación gráfica de una colección de elementos del modelo, que habitualmente toma forma de grafo donde los arcos que conectan sus vértices son las relaciones entre los objetos y los vértices se corresponden con los elementos del modelo. Los distintos puntos de vista de un sistema real que se quieren representar para obtener el modelo se dibuja dé forma que se resaltan los detalles necesarios para entender el sistema.





El Uml Como Una Herramienta De Modelado De Objetos

El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.
Casos de Uso (Use Case) El diagrama de casos de uso representa la forma en como un Cliente (Actor) opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactuan (operaciones o casos de uso).
Un diagrama de casos de uso consta de los siguientes elementos:
Actor. Casos de Uso. Relaciones de Uso, Herencia y Comunicación.
Elementos
Actor:
Una definición previa, es que un Actor es un rol que un usuario juega con respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto se especifica que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema.
Como ejemplo a la definición anterior, tenemos el caso de un sistema de ventas en que el rol de Vendedor con respecto al sistema puede ser realizado por un Vendedor o bien por el Jefe de Local.
Caso de Uso:
Es una operación/tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso.
Relaciones:
 Asociación
Es el tipo de relación más básica que indica la invocación desde un actor o caso de uso a otra operación (caso de uso). Dicha relación se denota con una flecha simple.
 Dependencia o Instanciación
Es una forma muy particular de relación entre clases, en la cual una clase depende de otra, es decir, se instancia (se crea). Dicha relación se denota con una flecha punteada.
 Generalización
Este tipo de relación es uno de los más utilizados, cumple una doble función dependiendo de su estereotipo, que puede ser de Uso («uses») o de Herencia («extends»).


Analizar El Enunciado Del Problema
El análisis comienza con la definición de un problema generada por clientes y, posiblemente, por los desarrolladores. El análisis hace que sea más precisa y expone las ambigüedades e incongruencias y no debería tomarse como inmutable, sino que tiene que servir como base para refinar los requisitos reales. El analista debe ser para los requisitos verdaderos de las decisiones del diseño y de implementación disfrazada de requisitos y atacar a estos pseudorequisitos, porque restringen la flexibilidad. El propósito del análisis subsiguiente es comprender en su totalidad el problema y sus implicaciones.



Identificar Funciones Del Sistema

Consiste en describir por escrito a nivel técnico los procedimientos relacionados con el programa y su modo de uso. También se debe documentar el programa para que sea más entendible.
¿Para quiénes son la documentación? - Usuarios (Digitadores) - Operadores - -Programadores - Analistas de sistemas
Documentos que se elaboran: Manual de Usuario y Manual del Analista. A los usuarios se les elabora un manual de referencia para que aprendan a utilizar el programa. Esto se hace a través de capacitaciones y revisión de la documentación del manual de usuario. El manual del usuario no está escrito a nivel técnico sino al de los distintos usuarios previstos y explica en detalle cómo usar el programa: descripción de las tareas que realiza el programa, instrucciones necesarias para su instalación puesta en marcha y funcionamiento, recomendaciones de uso, menús de opciones, método de entrada y salida de datos, mensajes de error, recuperación de errores, etc. A los operadores por si se presentan mensajes de error, sepan cómo responder a ellos. Además que se encargan de darle soporte técnico al programa. A los programadores a través del manual del analista para que recuerden aspectos de la elaboración del programa o en caso que otras personas puedan actualizarlo o modificarlo (darle mantenimiento) y no son necesariamente las personas que lo diseñaron. Es por ello, que la documentación debe contener algoritmos y flujogramas de los diferentes módulos que lo constituyen y las relaciones que se establecen entre ellos; listados del programa, corridas, descripción de variables que se emplean en cada módulo, cuáles son comunes a diferentes módulos y cuáles locales; descripción de los ficheros de cada módulo y todo lo que sea de importancia para un programador. A los analistas de sistemas que son las personas que deberán proporcionar toda la información al programador. Estos se encargan de hacer una investigación previa de cómo realizar el programa y documentar con las herramientas necesarias para que el programador pueda desarrollar el sistema en algún lenguaje de programación adecuado.


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).


Identificar Atributos De Los Objetos
Los atributos describen un objeto que ha sido seleccionado para ser incluido en el modelo de análisis. En esencia, son los atributos los que definen al objeto, los que clarifican lo que representa el objeto en el contexto del espacio del problema. Por ejemplo, si se tratara de construir un sistema de estadísticas para jugadores profesionales de béisbol, los atributos del objeto Jugador serían muy diferentes de los atributos del mismo objeto cuando se use dentro del contexto de un sistema de pensiones para jugadores profesionales. En el primero, atributos tales como nombre, posición, promedio de bateo, porcentaje de estancia en el campo de juego, años jugados y partidos jugados pueden ser relevantes. En el segundo caso, algunos de estos atributos serían relevantes pero otros serían reemplazados (o potenciados) por atributos como salario medio, crédito total, opciones elegidas para el plan de pensión, dirección postal, etc. Para desarrollar un conjunto significativo de atributos para un objeto, el analista puede estudiar de nuevo la narrativa del proceso (o descripción del ámbito del alcance) para el problema y seleccionar aquellos elementos que razonablemente “pertenecen” al objeto. Además, para cada objeto debe responderse el siguiente interrogante: “¿Qué elementos (compuestos y/o simples) definen completamente al objeto en el contexto del problema actual?” Para ilustrar esto, se considerará el objeto Sistema definido para Hogar Seguro. Anteriormente se indicó que el propietario puede configurar el sistema de seguridad para reflejar la información acerca de los sensores, sobre la respuesta de la alarma, sobre la activación / desactivación, sobre identificación, etc. Usando la notación de la descripción del contenido se podría representar estos elementos de datos compuestos de la siguiente manera: Información del sensor = tipo de sensor + número de sensor + umbral de alarma.Información de respuesta de la alarma = tiempo de retardo + número de teléfono + tipo de alarma. Información de activación / desactivación = contraseña maestra + cantidad de intentos permitidos + contraseña temporal. Información de identificación = ID del sistema + verificación de número de teléfono + estado del sistema.


Identificar Metodos En Los Objetos

Las operaciones indican el comportamiento del objeto dentro del sistema, cambia uno o más atributos contenidos en el sistema.
Pueden ser clasificados entre tres grandes categorías • Operaciones que manipulan datos • Operaciones que realizan algún Calculo • Operaciones que monitorizan un objeto frente a la ocurrencia de un sistema de control El ciclo de vida de un objeto puede resumirse de la siguiente manera: • Crear el objeto • Modificarlo • Manipulación • Borrar Las actividades conocidas que ocurren durante su ciclo de vida son: • Asignación de Tarea • Panel de control • Alarma audible
ESTUDIO DE FACTIBILIDAD • Factibilidad Económica Se refiere a los gastos que pueda generar durante el desarrollo del sistema, el cual se traduce principalmente en gastos de papelería (cintas de impresoras, fotocopias, hojas blancas, encuadernación, entre otros) y otros gastos como energía eléctrica e Internet mostrada en la tabla número 2; Hay que destacar que esta investigación no busca ninguna renumeración o beneficio económico. En cuanto a los recursos necesarios para el desarrollo de “PCSOFT”, se utilizará la información obtenida de las entrevistas no estructuradas (anexo 2) que se aplicarán a los futuros usuarios potenciales del sistema PCSOFT. • Factibilidad Operativa El sistema PCSOFT podrá ser utilizado por cualquier persona que sepa manejar un computador y este interesado por el tema. Además esta investigación podrá ser utilizado en un futuro como soporte para la realización de un sistema que pueda ser portado a una plataforma WEB que podrá ser visitado por una gran cantidad de usuarios a través de Internet. En cuanto al mantenimiento del sistema, solo se requiere algunas actualizaciones, para que su contenido siempre este vigente. • Factibilidad Técnica Hardware: o Tarjeta madre pii celeron/ video 8 mb o Disco duro de 6.0 gb o Ram 64 mb o Monitor svga 14’’ o Modem 56kb o Caja minitower o Teclado 101/102 teclas o Floppy 3.5’’ hd o Kit multimedia 24x o Scanner Plus Tek? Opticpro p12. o Hewlett Packard Deskjet 840c Software: o Sistema Operativo: Windows Millenium. o Lenguajes de Programación: Macronedia Director 8.5 o Suite de Oficina: Microsoft Office 2000 o Software Publicitario: Microsoft Publisher 2000 o Software de Diseño Gráfico: Corel Draw 8 o Software Compresor de Datos: Winzip 7.0
CRONOGRAMA DE ACTIVIDADES
El siguiente cronograma está basado en el diagrama de Gantt, referenciado por Senn (1989). Este diagrama consiste en un gráfico de barras donde las ordenadas representan las actividades y las abscisas el tiempo, representado en meses. La línea punteada de la gráfica indica la fase actual del desarrollo del sistema.
Introduccion Al Diseño De La Solucio
Describe cómo funciona el sistema Define la estructura del sistema: _ qué componentes existen _ qué papel juega cada componente _ cómo se relacionan los componentes Justifica las decisiones de diseño Emplea diagramas y notaciones formales Debe acomodar cambios (se producirán) Independiente del lenguaje, el S.O. y la máquina Guía la implementación
Representacion Grafica De Una Clase
Encontramos muy util representar de forma grafica los objetos que conforman nuestra aplicación, cada clase se representa por una caja en la que se realizan tres divisiones. - En la Superior se especifica el nombre del objeto.
- En la intermedia se incluyen las propiedades del objeto
- En la inferior se indican las operaciones que realiza el
objeto Nombre Clase m_Atributo1 m_Atributo2 Operacion1() Operacion2()
Nombre: El nombre del objeto lo identifica, este debe describir de forma clara el objeto, no debe ser un verbo.
Diagramas Interaccion Entre Aplicacion Y Clase
El diagrama de interacción, representa la forma en como un Cliente (Actor) u Objetos (Clases) se comunican entre si en petición a un evento. Esto implica recorrer toda la secuencia de llamadas, de donde se obtienen las responsabilidades claramente.
Dicho diagrama puede ser obtenido de dos partes, desde el Diagrama Estático de Clases o el de Casos de Uso (son diferentes).
Los componentes de un diágrama de interacción son:
Un Objeto o Actor. Mensaje de un objeto a otro objeto. Mensaje de un objeto a si mismo. Elementos
Objeto/Actor:
El rectángulo representa una instancia de un Objeto en particular, y la línea punteada representa las llamadas a métodos del objeto.
Mensaje a Otro Objeto:
Se representa por una flecha entre un objeto y otro, representa la llamada de un método (operación) de un objeto en particular.
Mensaje al Mismo Objeto:
No solo llamadas a métodos de objetos externos pueden realizarse, también es posible visualizar llamadas a métodos desde el mismo objeto en estudio.
Ejemplo
En el presente ejemplo, tenemos el diagrama de interacción proveniente del siguiente modelo estatico:
Aquí se representa una aplicación que posee una Ventana gráfica, y ésta a su vez posee internamente un botón.
Entonces el diagrama de interacción para dicho modelo es:
En donde se hacen notar las sucesivas llamadas a Draw() (entre objetos) y la llamada a Paint() por el objeto Botón.
Diagramas De Estado De Una Clase
Los Diagramas de Estado representan autómatas de estados finitos, desde el p.d.v. de los estados y las transiciones. Son útiles sólo para los objetos con un comportamiento significativo. Cada objeto está en un estado en cierto instante. El estado está caracterizado parcialmente por los valores algunos de los atributos del objeto. El estado en el que se encuentra un objeto determina su comportamiento. Cada objeto sigue el comportamiento descrito en el Diagrama de Estados asociado a su clase. Los Diagramas de Estados y escenarios son complementarios, los Diagramas de Estados son autómatas jerárquicos que permiten expresar concurrencia, sincronización y jerarquías de objetos, son grafos dirigidos y deterministas. La transición entre estados es instantánea y se debe a la ocurrencia de un evento.
Estado Identifica un periodo de tiempo del objeto (no instantáneo) en el cual el objeto está esperando alguna operación, tiene cierto estado característico o puede recibir cierto tipo de estímulos. Se representa mediante un rectángulo con los bordes redondeados, que puede tener tres compartimientos: uno para el nombre, otro para el valor característico de los atributos del objeto en ese estado y otro para las acciones que se realizan al entrar, salir o estar en un estado (entry, exit o do, respectivamente).
Eventos Es una ocurrencia que puede causar la transición de un estado a otro de un objeto. Esta ocurrencia puede ser una de varias cosas:
Condición que toma el valor de verdadero o falso Recepción de una señal de otro objeto en el modelo Recepción de un mensaje Paso de cierto período de tiempo, después de entrar al estado o de cierta hora y fecha particular El nombre de un evento tiene alcance dentro del paquete en el cual está definido, no es local a la clase que lo nombre.
Envío de mensajes Además de mostrar y transición de estados por medio de eventos, puede representarse el momento en el cual se envían mensajes a otros objetos. Esto se realiza mediante una línea punteada dirigida al diagrama de estados del objeto receptor del mensaje.
Transición simple Una transición simple es una relación entre dos estados que indica que un objeto en el primer estado puede entrar al segundo estado y ejecutar ciertas operaciones, cuando un evento ocurre y si ciertas condiciones son satisfechas. Se representa como una línea sólida entre dos estados, que puede venir acompañada de un texto con el siguiente formato:
event-signature “[“ guard-condition] “/” action-expression “^”send-clause
event-signature es la descripción del evento que da lugar la transición, guard-condition son las condiciones adicionales al evento necesarias para que la transición ocurra, action-expression es un mensaje al objeto o a otro objeto que se ejecuta como resultado de la transición y el cambio de estado y send-clause son acciones adicionales que se ejecutan con el cambio de estado, por ejemplo, el envío de eventos a otros paquetes o clases.
Transición interna Es una transición que permanece en el mismo estado, en vez de involucrar dos estados distintos. Representa un evento que no causa cambio de estado. Se denota como una cadena adicional en el compartimiento de acciones del estado.
Acciones: Podemos especificar la solicitud de un servicio a otro objeto como consecuencia de la transición. Se puede especificar el ejecutar una acción como consecuencia de entrar, salir, estar en un estado, o por la ocurrencia de un evento.
Generalización de Estados:
Podemos reducir la complejidad de estos diagramas usando la generalización de estados. Distinguimos así entre superestado y subestados. Un estado puede contener varios subestados disjuntos. Los subestados heredan las variables de estado y las transiciones externas. La agregación de estados es la composición de un estado a partir de varios estados independientes. La composición es concurrente por lo que el objeto estará en alguno de los estados de cada uno de los subestados concurrentes. La destrucción de un objeto es efectiva cuando el flujo de control del autómata alcanza un estado final no anidado. La llegada a un estado final anidado implica la subida al superestado asociado, no el fin del objeto.
Subestados Un estado puede descomponerse en subestados, con transiciones entre ellos y conexiones al nivel superior. Las conexiones se ven al nivel inferior como estados de inicio o fin, los cuales se suponen conectados a las entradas y salidas del nivel inmediatamente superior.
Transacción Compleja Una transición compleja relaciona tres o más estados en una transición de múltiples fuentes y/o múltiples destinos. Representa la subdivisión en threads del control del objeto o una sincronización. Se representa como una línea vertical de la cual salen o entran varias líneas de transición de estado.
Transición a estados anidados Una transición de hacia un estado complejo (descrito mediante estados anidados) significa la entrada al estado inicial del subdiagrama. Las transiciones que salen del estado complejo se entienden como transiciones desde cada uno de los subestados hacia afuera (a cualquier nivel de profundidad).
Transiciones temporizadas Las esperas son actividades que tienen asociada cierta duración. La actividad de espera se interrumpe cuando el evento esperado tiene lugar. Este evento desencadena una transición que permite salir del estado que alberga la actividad de espera. El flujo de control se transmite entonces a otro estado.



 
unidad 1




INSTITUTO TECNOLOGICO DE TUXTLA GUTIERREZ








UNIDAD 1
CONCEPTOS BASICOS DEL MODELO ORIENTADO A OBJETOS








PROF. LIC. ALICIA GONZALES LAGUNA






INTEGRANTES.
Patricia Solorzano Sanchez
Cristian de Jesús Sánchez Aguilar
Emanuel Vázquez López
ERVIN DE JESUS MORAES PEREZ
JUAN MANUEL LEON AGUILAR






BENEFICIOS DEL MODELO DE OBJETOS Y LA POO SOBRE OTROS PARADIGMAS

¿Cuáles son las ventajas de un lenguaje orientado a objertos?

 Fomentar la reutilizacion y extension del codigo
 Permite crear sistemas maas complejos
 Relacionar el sistema al mundo real
 Facilita la creacion de programas visuales
 Construccion de prototipos
 Agiliza el desarrollo de software
 Facilita el trabajo en equipo
 Facilita el mantenimiento del software

Lo interesante de la POO eds que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.




Historia de los paradigmas en el desarrollo del software
 Los paradigmas representan un enfoque para la construccion de algun software

Antes la programacion era echa de una forma secuencial, en pocas palabras con estructuras consecutivas y bifurcaciones.
Este tipo de lenguaje ofrecia ventajas al principio pero despues ocurrian los problemas cuando los sistemas se volvian complejos.
Frente a todo esto aparecio la programacion estructurada la idea principal de este es seaparar las partes complejas en modulos que sean ejecutados según se requiera. De esta forma tenemos un diseño modular compuesto por modulos independientes que pueadan comunicarse entre si.




















1. CONCEPTOS BÁSICOS DEL MODELO ORIENTADO A OBJETOS.

1.1 RECONOCIMIENTO DE OBJETOS Y CLASES EN EL MUNDO REAL Y LA INTERACCIÓN ENTRE ELLOS.


Se refiere a todos los objetos como tal lo vemos así describimos en pocas palabras es todo lo que nos rodea.
Ejemplos de objetos del mundo real son: persona, tabla, computadora, avión, vuelo de avión, diccionario, ciudad o la capa de ozono, etc.

La mayoría de los objetos del mundo real tienen ATRIBUTOS (características que lo describen). Por ejemplo: los atributos de una persona incluyen : el nombre, la edad, el sexo, la fecha de nacimiento, la dirección, etc.

COMPORTAMIENTO: Es el conjunto de cosas que puede hacer un objeto.
Ejemplo: PERSONA: Estudiar, Caminar, Trabajar, etc.En síntesis los OBJETOS conocen o tienen y hacen cosas.
Los objetos tienen atributos y ellos a su vez, comportamiento. Los objetos tienen atributos y ellos a su vez, comportamiento.

a. LA ABSTRACCIÓN Y EL ENCAPSULAMIENTO COMO UN PROCESO NATURAL.

Los diferentes mecanismos utilizados por los programadores para controlar la complejidad, es la ABSTRACCION. De igual forma que un mapa debe ser más pequeño significativamente que su territorio e incluye solo información seleccionada cuidadosamente, así los modelos mentales abstraen esas características de un sistema requerido para nuestra comprensión, mientras ignoran características irrelevantes.

El método más idóneo para controlar la complejidad fue aumentar los niveles de abstracción. En esencia, la abstracción supone la capacidad de encapsular y aislar la información del diseño y ejecución.



b. LA POO Y LA COMPLEJIDAD DEL SOFTWARE.

La complejidad inherente al software como dice Booch, se deriva de cuatro elementos:

 la complejidad del dominio del problema
 la dificultad de gestionar el proceso de desarrollo
 la posible flexibilidad a través del software
 los problemas de caracterización del comportamiento de sistemas discretos.

1. La complejidad del dominio del problema:
Esta complejidad se produce por las difíciles interacciones entre los usuarios de un sistema y sus desarrolladores-. Son los obstáculos que se presentan en el desarrollo de un buen sistema.




2. La dificultad de gestionar el proceso de desarrollo:

La escritura de un gran programa requiere la escritura de grandes cantidades de nuevo software y la reutilización del software existente. La cantidad de trabajo exige el uso de un equipo de desarrolladores, aunque se trata por todos los medios de que este equipo sea lo más pequeño posible. Aquí no hay que programar una fecha exacta en la terminación de un programa porque puede llevarse más tiempo de lo planeado.


3. La flexibilidad a través del software:

El software ofrece flexibilidad, de modo que es posible para un desarrollador expresar prácticamente cualquier clase de abstracción y poder realizar cualquier actividad o hasta poder modificar algo sobre el mismo. Los sistemas orientados a objetos proporcionan el rendimiento, la flexibilidad y la funcionalidad requerida para implementaciones prácticas.

El desarrollo de sistemas, un proceso formado por las etapas de análisis y diseño, comienza cuando la administración o algunos miembros del personal encargado de desarrollar sistemas, detectan un sistema de la empresa que necesita mejoras.
El método de ciclo de vida para desarrollo de sistemas (SDLC), es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información.


c. CONCEPTOS DEL CICLO DE VIDA DEL SOFTWARE
(MÉTODO DE CASCADA)


Análisis: Es la parte donde identificas las necesidades y te involucras lo necesario para poder conocer todo lo necesario para darle solución al problema que se te presentó y resolverlo con el software. Aquí interviene un analista para comprender con más facilidad lo que se requiere .

Diseño: Después he haber recopilado toda la información necesaria, entonces se procede a buscar métodos para el diseño ya sea por medio de algoritmos, UML que nos permite presentar nuestro modelo por medio de diagramas con la interacción del cliente.

Implementación: es donde el software es entregado e implementado a los dispositivos para que el cliente comience a usarlo.

Depuración: tiene como objetivo la verificación de que el sistema desarrollado cumple con los requisitos expresados inicialmente por el cliente.

Mantenimiento: se refiere después de que el software sea entregado al usuario final debe darse mantenimiento. Como: actualizaciones para mejorar el rendimiento, nuevas herramientas.








i. ESPECIFICACIONES DE REQUERIMIENTOS

Tener en cuenta todos los puntos importantes para solucionar el problema de una empresa, verificar los programas en proceso y su funcionamiento en general y desde allí empezar a solucionar el problema.
Los analistas al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave:

¿Qué es lo que hace? Si existe algún programa y contestar toda las preguntas.
¿cómo se hace?
¿con qué frecuencia se presenta?
¿Qué tan grande es el volumen de transacciones o de decisiones?
¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
¿Existe algún problema?
si existe un problema, ¿qué tan serio es?
si existe un problema, ¿cuál es la causa que lo origina?

ii. ANÁLISIS ORIENTADO A OBJETOS.

El problema fundamental que debe asumir un equipo de desarrollo de software, es la de darle más facilidad a los usuarios en un programa informática. En esencia, la tarea clave de la programación es describir las tareas de especificación del programa que resuelve el problema dado.

Durante la fase de análisis se piensa en las especificaciones en términos utilizados en el lenguaje y de la máquina. La etapa crítica de esta actividad es deducir los tipos de objetos del mundo real que están implicados y obtener los atributos de estos objetos determinando su comportamiento e interacciones.

1.4.3 DISEÑO ORIENTADO A OBJETOS.

La siguiente fase del proceso de desarrollo de software es el diseño orientado a objetos (DOO), que responde a la pregunta: ¿cómo lo hace?. Durante esta fase se comienza a crear un modelo en computadora basado en el análisis que realice la tarea específica concreta.

En esta etapa se piensa en objetos del mundo real que pueden ser representados como objetos del mundo informático. Se deben especificar los objetos con mayor precisión especificando en detalle lo que los objetos conocen y lo que pueden hacer, y describe son prudencia, sus interacción.
Durante la fase de diseño se pueden encontrar atributos útiles adicionales y comportamiento de los objetos que no aparecieron en la fase de análisis o no estaban definidos con claridad.
La fase de diseño conduce a la fase de implementación, que consiste en traducir dicho diseño en un código real en un lenguaje de programación OO. La fase de codificación del proceso de desarrollo OO se llama Programación Orientada a Objetos (POO).

iii. PROGRAMACIÓN ORIENTADO A OBJETOS, CONCEPTOS Y CARACTERÍSTICAS

El objetivo de la POO es permitir que los sistemas informáticos sean fácilmente extendidos para mejorar su funcionalidad, o reutilizados en otros sistemas que requieran sus servicios. Idealmente, la extensión o reutilización de una componente software no requiere un conocimiento específico acerca de los detalles de la implementación del componente.
iv. PROGRAMACIÓN ORIENTADA A OBJETOS, CONCEPTOS Y CARACTERÍSTICAS

La posibilidad de desarrollar aplicaciones de esta manera permite a los componentes software ser empaquetadas de tal forma que son fácilmente incorporadas en los sistemas según se necesiten. Un enfoque como éste facilita el desarrollo y mantenimiento de los sistemas informáticos.

Los principios en que se apoyan las tecnologías orientadas a objetos son:
Objetos como instancias de una clase
Métodos
Mensajes

Y las características que ayudan a definir un
objeto son:Encapsulamiento, Modularidad, Abstracción,Polimorfismo.

d. ELEMENTOS PRIMORDIALES EN EL MODELO DE OBJETOS.

i. Abstracción:Denota las características esenciales de un objeto que lo distingue de los demás y proporciona fronteras conceptuales.

1.5.2 Encapsulamiento :Proceso mediante el cual se oculta los detalles de un objeto con respecto a su usuario. También se le conoce como ocultación de la información, en esencia, es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales. Esto nos permitirá manipular los objetos como unidades básicas, permaneciendo oculta su estructura interna.

1.5.3 Modularidad : Es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales deben ser tan independientes como sea posible de la aplicación en sí y de las restantes partes.
La modularización como indica Liskov, consiste en dividir un programa en módulos que se puedan compilar por separado, pero que tienen conexiones con otros módulos.

1.5.4 Jerarquía y herencia: La jerarquía es una propiedad que permite una ordenación de las abstracciones. La herencia es el mecanismo para compartir automáticamente métodos y datos entre clases, subclases y objetos. Básicamente, la herencia define una relación entre clases, en donde una clase comparte la estructura o comportamiento definido en una o más clases (herencia simple y herencia múltiple, respectivamente).

ii. Polimorfismo: característica que se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos.

e. HISTORIA DE LOS PARADIGMAS EN EL DESARROLLO DEL SOFTWARE.

Nacieron a finales 50´s primeros años 60´s como Cobol(1960), Fortran(1961), Basic(1964). En los años 80´s surgieron nuevos lenguajes como: Pascal(1971), C(1972), ADA(1979) estos siendo dominantes, desplazando a otros: Algol,Basic,Cobol y Fortran todos estos lenguajes anteriores seguían el estilo de programación estructurada. El programa OO. “Smalltak, Simula”
Paradigmas: Representan un enfoque particular o filosofía para la construcción del software.











PLAN ORGANIZACIONAL ACADEMICA
Patricia Solorzano Sanchez

MATERIAS LUNES MARTES MIERCOLES JUEVES VIERNES SSABADO DOMINGO
DIBUJO Estudiar 11am-1pm Estudiar 10am-12
FUND. PROG. Estudiar8-9 Estudiar 8-9 Estudiar 6-7 Estudiar 6-7 Tareas7-8
FÍSICA 1 Estudiar 9-10 Estudiar 9-10 Estudiar 9-10 Estudiar 10-11 Estudiar 8-9 Tareas9-10 Tareas8-9
INTROD. A LA ISC. Estudiar 6-7 Estudiar 5-6 Estudiar 7-8 Tareas8-9
MAT/P/COMP. Estudiar 7-8 Estudiar 7-8 Estudiar 9-10 Tareas10-11
MATEMATICAS Estudiar 10-11 Estudiar 8-9 Estudiar 10-11 Estudiar 9-10 Estudiar 10-11 Tareas11-12 Tareas 9-10
SEMINARIO DE ETICA Estudiar 8-9
básquetbol 5-7 5-7


























Plan organizacional a académico de:
Cristian de Jesús Sánchez Aguilar mat. Fundamento de programación
Materias Lunes Martes Miércoles Jueves Viernes Sábado domingo
Dibujo Avanzo con las tareas. Trabajo de 8 a 12 Trabajo de 9 a 13
Fundam. de programación Tareas de 8 a 9pm. Doy una repasada a lo que vimos. De 9 a 10 pm Mas tarea de unas 2 horas. 5 a 7 pm
Física 1 Tareas de 5 a 6.30 pm. Estudio para los exámenes sorpresas. 10 asta q me duerma. Ago los ejercicios
Intro. Isc Tarea de 5 a 6 pm Suvo información a la red de 7 a 8 pm Estudio una 2 horas. Suvo información.
Mat/computadora Tarea de 5 a 7.30 o mas tiempo. Realizo las tareas q deja d 5 a 7 pm Eswtudio de 5 a
Matemáticas 1 Tarea de 9.20 a 10.30.. Reapso lo q bimos en clases de 10 a 11 pm. Ejercicios. De 6 a 7 pm Repaso otro rato 13 a 15.
Seminario d ética Leo los apuntes 3 a 4 pm. Tarea para el otro dia de 8 a 9 pm. Repaso un rato
Fútbol Entrenamiento de 14 a 16 pm. Entrenamiento de 14 a 16
Me comprometo a ponerle todas las ganas para entenderle y realizar todos los trabajos que nos deje la maestra. Cumpliendo con la fechas acordadas.
















Plan organizacional académico De Emanuel Vázquez López

Asignaturas Lunes Martes Miércoles Jueves Viernes Sábado Domingo
Dibujo De 10 a 11 pm De 10 a 11 pm De 7 a 9 am
Fund. De Prog. De 4 a 6 pm De 4 a 6 pm De 9 a 10 am De 2 a 3 pm
Física De 7 a 8 pm De 8 a 10 pm De 10 a 11 am
ISC De 6 a 7 pm De 4 a 5 pm
Mat. P Comp. De 3 a 4 pm De 6 a 7 pm
Matemáticas I De 8 a 9 pm De 5 a 7 pm De 7 a 8 pm De 3 a 4 pm De 4 a 5 pm
Semi. De Ética De 8 a 9 pm De 4 a 5 pm De 4 a 5 pm

Horas de estudio y realización de tareas en cada asignatura


Bitácora de la academia

Pues yo me comprometo a cumplir con lo que se requiera para realizar los trabajos que la catedrática me implante y también con hacer entrega de los mismos, con ellos también me comprometo en dedicarle un tiempo de 2 horas de estudio de la materia, sin tomar en consideración las horas que estaré en el aula recibiendo la materia de programación.
Siendo eso en lo que me comprometo doy gracias a la ingeniero en sistemas la Alicia Gonzáles Laguna, profesora y asesora académica de la carrera de Ingeniería en Sistemas.





























PLAN ORGANIZACIONAL
Juan Manuel Leon Aguilar

MATERIAS LUNES MARTES MIERCOLES JUEVES VIERNES SSABADO DOMINGO

TECNOLOGICO
7 A 2
8 A 2
7 A 12
7 A 2
7 A 2



FUND. PROG.

Estudiar 8 9
Estudiar 8 9

Tareas 12a 5

DIBUJO

Tareas 12a 5
Estudiar 10am-12
SEMINARIO DE ETICA Estudiar 8-9
Tareas 12a 5


INTROD. A LA ISC.

Estudiar 6-7
Estudiar 5-6
Estudiar 7-8
Tareas 12a 5


MAT/P/COMP.
Estudiar 7-8 Estudiar 7-8 Estudiar 9-10
Tareas 12a 5


MATEMATICAS
Estudiar 10-11 Estudiar 8-9 Estudiar 10-11 Estudiar 9-10 Estudiar 10-11
Tareas 12a 5 Tareas 9-10

FÍSICA 1
Estudiar 9-10 Estudiar 9-10 Estudiar 9-10 Estudiar 10-11 Estudiar 8-9
Tareas 12a 5 Tareas8-9
Básquet
5-7 5-7







Me comprometo a cumplir con los trabajos que me imparte mi maestra, a respetarla tanto dentro del plantel como a fuera y dedicarle almenos 2 horas al estudio de su materia. Salir adelante con mis estudios y ayudar a mis semejantes con los valores y estudios que aproveche del tecnologico
















PLAN ORGANIZACIONAL ACADEMICO
ERVIN DE JESUS MORAES PEREZ

MATERIAS LUNES MARTES MIERCOLES JUEVES VIERNES SSABADO DOMINGO
DIBUJO Empiezo mi tarea de 3 a 4 Hago la tarea de 6 a 7 Tarea de 3 a 5 Libre
FUND. PROG. De 4 a 5 repaso lo que vimos Hago la tarea de 8 a 9 De 4 a 5 practico java Estudio lo que vimos de 9 a 10 Repaso lo de la semana de 6 a 7 libre
FÍSICA 1 De 5ª 5:30 practico Practico de 5 a 5:30 Practico de 5 a 5_30 Repaso lo que vimos de 5:30 a 6 Hago mi tarea de 11 a 12 Libre
INTROD. A LA ISC. De 6 a 7 estudio Estudio de 7 a 8 Estudio de 7 a 8 Libre
MAT/P/COMP. Hago la tarea de 5 a 6
Practoco lo que vimos de 5:30 a 6 Repaso lo que vimos de 6 a 7 Libre
MATEMATICAS De 5:30 a 6
practico Practico lo que vimos de 5:30 a 6 Practico de 8 a 9 Hago la tarea de 12 a 1 Libre
SEMINARIO DE ETICA Estudio de 6 a 7 Hago la tarea de 7 a 8 Estudio de 8 a 9 Hago la tarea de 5 a 6 Libre
futbol 2-4 2-4 Juego en el torneo

ERVIN DE JESUS MORAES PEREZ


Me comprometo a estudiar y realizar todos los trabajos devidos que usted nos proporcione para realizarlo y ponerle todo de mi parte para ser un profesionista de bien y sacar a adelante a este pais. Y me comprometo a poner de todo mi empeño a cada una de mis materias asignadas en todo el periodo escolar.



Sugerencias para un mejor aprendisaje...

¿que fue lo qu emas se me dificulto del tema?
Siento que lo que mas se a dificultado son las definiciones de cada cosa ya que tenemos la idea y si lo sabemos pero no sabemos explicarnos sobre las definiciones

¿como me huviera gustado aprenderlo?
De hecho a mi me encanto el hecho de usar diapositivas para el aprendisaje de cada tema pero siento que no hay mejor que la maestra nos lo valla explicando ya que aveces nos revolvian mucho nuestros compañeros.

¿que fue lo que mas se me dificulto?
lo que mas se me dificulto fueron las explicaciones de los metodos que hay que seguir de los diferentes metodos que hay ¨como el de casacada
por que
siento que fue por que es muy teorico.

¿Como es la integracion del equipo?
La integracion de nuestro equipo esta muy unida y todos nos apoyamos en los diferentes temas ya que nos llevamos muy bien y ponemos todos nuestro cien por ciento de esfuerzo para salir adelante y si alguien no le entiende lo apoyamos
Etiquetas: