Sunteți pe pagina 1din 45

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

UNIDAD 2. ESTRUCTURA DE UN OBJETO - INTRODUCCION A JAVA Capitulo 3. Anlisis De La Estructura Y Comportamiento De Un Objeto 3.1 Anlisis de la Estructura de Objetos. 1 El anlisis de la estructura de objetos (AEO) define las categoras de los objetos que percibimos y las formas en que los asociamos. 3.1.1 Objetos y Tipos de Objetos. En el anlisis se trata de identificar los tipos de objeto ms que los objetos individuales en un sistema. Los tipos de objetos se definen en base a la comprensin del analista de nuestro mundo. Un objeto puede categorizarse de variadas formas.

3.1.2 Asociaciones de Objetos. Es importante modelar la forma como los objetos se asocian entre s. Adems es necesario identificar el significado de la asociacin y la cantidad de objetos con los que un objeto dado puede y debe asociarse (cardinalidad).

Representacin para la Asociacin entre dos Tipos de Objetos. Un objeto del tipo persona posee cero o muchos objetos del tipo vehculo. Un objeto del tipo vehculo es de un y slo un objeto del tipo persona. 3.1.3 Jerarquas de Generalizacin. Una de las vas de sentido comn por las que el hombre organiza su volumen de conocimiento es el de las jerarquas, de lo ms general a lo ms especfico.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Representacin de una Jerarqua de generalizacin, para el tipo de objeto Persona. En las jerarquas se habla de subtipo o especializacin de un supertipo o generalizacin. En el caso anterior, persona es el supertipo para Empleado y Estudiante, que son sus subtipos. Por otra parte, Empleado es el supertipo para los subtipos Ejecutivo y Vendedor. Los subtipos (niveles inferiores de la jerarqua) heredan las caractersticas de sus supertipos, adems, cada instancia de un tipo de objeto lo es tambin de sus supertipos. 3.1.4 Jerarquas Compuestas. Un objeto se denomina complejo si est formado por otros. Las jerarquas Compuestas permiten realizar agregaciones de objetos.

Un objeto del tipo edificio se compone de a lo menos un objeto del tipo piso. A su vez un objeto del tipo piso se compone de a lo menos un objeto del tipo pasillo, podra tener varios (o ninguno) objetos del tipo bao y oficina. 3.1.5 Diagramas de relacin entre los objetos. Los tipos de objetos estn relacionados con otros tipos de objeto. Por ejemplo, un empleado trabaja en una sucursal, o un cliente realiza un pedido de varios productos.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Un objeto del tipo cliente puede ordenar muchos objetos del tipo pedidos, y un objeto del tipo pedido es ordenado por un y slo un objeto del tipo cliente. Un objeto del tipo producto est en muchos o ningn objeto del tipo pedido, mientras que un objeto del tipo pedido tiene al menos un objeto del tipo producto. 3.1.6 Esquemas de Objetos. La comprensin de un modelo suele ser ms sencilla si los tipos de objetos y relaciones se presentan mediante un diagrama de relacin entre objetos; los supertipos y subtipos se presentan en un diagrama de jerarquas de generalizacin y las estructuras compuestas en un diagrama compuesto. Sin embargo, para los usuarios ms sofisticados puede ser til presentarlo todo en un mismo diagrama, el que se denomina esquema de objetos. 3.2 Anlisis del comportamiento de objetos 2 En el anlisis del comportamiento de objetos (ACO) realizamos esquemas de eventos que muestran eventos, la secuencia en que ocurren y cmo los eventos cambian el estado de los objetos. 3.2.1 Estados de un Objeto. Un objeto puede existir en varios estados. Por ejemplo, un objeto reservacin area puede ser una instancia de alguno de los siguientes tipos de objeto:
Reservacin

solicitada, Reservacin en lista de espera, Reservacin confirmada, Reservacin cancelada, Reservacin satisfecha, Reservacin archivada. Tales tipos de objetos suelen percibirse como estados posibles del ciclo vital de un objeto. Sin embargo, un objeto puede tener una gran variedad de perspectivas de

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
ciclos vitales. Por ejemplo, el mismo objeto reservacin area tambin puede tener los siguientes estados relacionados con el pago:
Reservacin Reservacin

no liquidada, con un pago de depsito, Reservacin totalmente pagada, Reservacin reembolsada. As, el estado de un objeto es la coleccin de asociaciones que tiene un objeto. 3.2.2 Eventos. El mundo est lleno de eventos: una coneja tiene conejitos, llega el pesado del vecino en forma inesperada, un cliente solicita un prstamo, el servidor se cae, se termina la tarea, etc. En el anlisis orientado a objetos el mundo se describe en trminos de los objetos y sus estados, as como los eventos que modifican esos estados. Un evento produce un cambio en el estado de un objeto. Los eventos sirven como indicadores de los instantes en que ocurren los cambios de estado. Para saber de los cambios y reaccionar adecuadamente ante ellos, debemos entender y modelar los eventos. 3.2.3 Tipos de Eventos El analista no necesita conocer cada evento que ocurra en una organizacin: slo los tipos de eventos. Por ejemplo, el tipo de evento reservacin en lista de espera confirmada es la coleccin de eventos donde un objeto cambia de una reservacin en lista de espera a una reservacin confirmada. Los tipos de eventos indican los cambios sencillos en el estado de un objeto; por ejemplo, cuando se deposita dinero en una cuenta bancaria o se actualiza el sueldo de un trabajador. Bsicamente, los tipos de eventos describen las siguientes formas de cambios de estado:
Un

objeto se crea. Un objeto se termina. Un objeto se clasifica como una instancia de un tipo de objeto.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Un

objeto se desclasifica como una instancia de un tipo de objeto. Un objeto cambia de clasificacin. Un atributo de un objeto se cambia. Los objetos pueden asociar un objeto con otro. Por ejemplo, en la mayora de las organizaciones, cuando un objeto se clasifica como empleado, debe estar asociado con un departamento. Un evento clasificar al objeto como empleado. Otro evento crear una asociacin entre el objeto empleado y un objeto Departamento (las asociaciones son objetos como los dems). Algunos eventos requieren que antes ocurran otros. Por ejemplo, antes de cerrar un departamento, todos los empleados deben ser asignados a otra parte, las oficinas que ocupaban deben tener otro uso, etc. Algunas veces, un evento puede provocar la reaccin encadena de otros eventos. Por ejemplo, el cambio de circuito a las conexiones de un avin, puede exigir cambios a varios otros objetos. Una operacin hace que los eventos ocurran. Dibujamos la operacin como un cuadro con esquinas redondeadas, puesto que los eventos indican los puntos en el tiempo en que se da el cambio de estado de un objeto. Los tipos de eventos se representan como tringulos negros llenos, generalmente unidos a la caja de operacin.

Segn el rea que se modele, puede ocurrir ms de un evento al terminar una operacin, y cada uno de estos puede activar operaciones independientes.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

3.2.4 El Ciclo Vital de un Objeto La mayora de los objetos tienen un ciclo vital en el que una sucesin de eventos pueden ocurrirle y cada uno de stos modifica su estado. En este anlisis, se dibuja un diagrama que muestre el ciclo vital de un objeto, incluyendo los estados posibles de los objetos, adems de los cambios de estado permisibles. Este se denomina diagrama de reja.

Diagrama de reja que muestra los estados posibles de un objeto reservacin area. Las lneas horizontales representan estados y las verticales muestran las transiciones entre estados. 3.2.5 Interacciones entre tipos de objetos La mayora de los procesos requieren la interaccin de varios objetos.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

En esta otra figura, se desarrolla el diagrama anterior para mostrar las operaciones necesarias.

3.2.6 Operaciones. En el anlisis OO, una operacin se refiere a una unidad de procesamiento que puede ser solicitada. El procedimiento se implanta mediante un mtodo. El mtodo es la especificacin de cmo llevar a cabo la operacin. A nivel de programa, el mtodo es el cdigo que implanta la operacin. Las operaciones se invocan. Una operacin invocada es una instancia de una operacin. Una operacin puede o no cambiar el estado de un objeto, si lo cambiara ocurrira un evento.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

3.2.7 Fuentes externas de eventos Los eventos son cambios de estado que un sistema debe conocer y reaccionar ante ellos de algn modo. Muchas de las operaciones que producen estos eventos son externas al sistema. 3.2.8 Reglas de activacin Cuando ocurre un evento, lo normal es que el cambio de estado active el llamado a una o ms operaciones. Por ejemplo, si se retiran bienes de un almacn y la cantidad baja de cierto nivel, ello puede activar una operacin para volver a realizar un pedido. Las reglas de activacin definen la relacin entre la causa y el efecto. Siempre que ocurra un evento de cierto tipo, la regla de activacin invoca a una operacin ya definida. Un tipo de evento puede tener varias reglas de activacin, cada una de las cuales invoca a su operacin en paralelo. Las operaciones paralelas pueden producir diferentes cambios de estado en forma simultnea. 3.2.9 Condiciones de Control Una operacin puede ser invocada por una o varias reglas de activacin. Sin embargo, antes de invocar de hecho a la operacin se puede verificar una condicin de control. Si el resultado de evaluacin de la condicin es verdadera se invoca su operacin, en otro caso no.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Las condiciones de control tambin pueden actuar como puntos de sincronizacin para el procesamiento en paralelo, pues garantizan que un conjunto de eventos est completo antes de proceder con una operacin. 3.2.10 Subtipos y Supertipos de Eventos.

Los eventos pueden dividirse en subtipos mediante diagramas independientes; o bien, es posible expresar la misma informacin en un diagrama ampliado.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
La operacin revisar tarea produce dos eventos: tarea aceptada o tarea rechazada. Slo se puede dar uno de estos tipos de evento al revisar una tarea. Aqu tarea revisada es un supertipo de tarea aceptada y tarea rechazada, que son los subtipos. Siempre se entiende que existe una relacin de exclusividad entre los subtipos. 3.3 Diseo de la Estructura y Comportamiento de un Objeto En el diseo de la estructura y comportamiento de objetos se identifican los componentes siguientes:
Clases

que se implantarn. Los tipos de objetos en el AEO sern la gua en esta decisin. Estructuras de Datos que utilizar cada clase. Se puede hacer un diagrama para representar la estructura de datos. Operaciones que ofrecer cada clase y cules sern sus mtodos. Se enumeran las operaciones y se especifican los mtodos. Forma de Implantacin de la herencia de clases y efecto sobre las especificaciones de los datos y operaciones. Identificacin de variantes de clases ("igual que, excepto..."). 3.3.1 Objeto

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Estructura de un Objeto: Un objeto puede considerarse como una especie de cpsula dividida en tres partes, donde cado uno de ellas desempean un papel independiente que son: LAS RELACIONES: Permiten que el objeto se inserte en la organizacin y estn formadas esencialmente por punteros a otros objetos. LAS PROPIEDADES: Distinguen un objeto determinado de los restantes que forman parte de la misma organizacin y tienen valores que dependen de la propiedad de que se trate. Las propiedades de u objeto pueden ser heredadas a sus descendientes en la organizacin. LOS METODOS: Son las operaciones que pueden realizarse sobre el objeto, que normalmente estarn incorporados en formas de programas (en cdigo) que el objeto es capaz de ejecutar y que tambin pone a disposicin de sus descendientes a travs de la herencia.

Una clase es la evolucin natural de una estructura, la existencia de clases es la caracterstica ms significativa que convierte a muchos lenguajes de programacin en un lenguaje orientado a objetos. Las clases son estructuras que contienen no slo declaraciones de datos, sino tambin declaraciones de funciones. Las funciones se conocen como funciones miembro, e indican qu tipos de cosas puede hacer una clase. La palabra reservada class introduce una declaracin de clase.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Clase es la implantacin de un tipo de objeto. Especifica la estructura de datos y los mtodos operativos permitidos que se aplican a cada uno de sus objetos. La clase especfica la estructura de datos de cada uno de sus objetos y las operaciones que se utilizan para tener acceso a los objetos. La especificacin de cmo se llevan a cabo las funciones de una clase se llama mtodo. Los objetos se pueden utilizar exclusivamente con mtodos especficos. Una instancia de una clase, almacena sus datos dentro de l. Se tiene acceso a los datos y se les modifica slo mediante operaciones que son permitidas. Esta restriccin al acceso se debe al encapsulado. El encapsulado protege los datos del uso arbitrario o no permitido. El acceso o la actualizacin directa de los datos de un objeto por parte del usuario violara el encapsulado. Los usuarios observan el "comportamiento" del objeto en trminos de las operaciones que se pueden aplicar a los objetos, as como los resultados de tales operaciones. Estas operaciones forman la interfaz del objeto con sus usuarios. Las clases son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definicin de un objeto. Cuando se programa un objeto y se definen sus caractersticas y funcionalidades, realmente se programa una clase. 3.3.2.1 Componentes Una clase es un contenedor de uno o ms datos (variables o propiedades miembro) junto a las operaciones de manipulacin de dichos datos (funciones/mtodos). Las clases pueden definirse como estructuras (struct), uniones (unin) o clases (class) pudiendo existir diferencias entre cada una de las definiciones segn el lenguaje. Variables miembro Las propiedades o atributos que son caractersticas de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las variables son algo as como el almacn de los datos de estado relacionados con los objetos. Habitualmente, las variables miembro son privadas al objeto (siguiendo las directrices de diseo del Principio de ocultacin) y su acceso se realiza mediante propiedades o mtodos que realizan comprobaciones adicionales. Suelen denominarse con nombres.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Mtodos en las clases Implementan la funcionalidad asociada al objeto. Los mtodos son el equivalente a las funciones en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de la clase de forma implcita. Cuando se desea realizar una accin sobre un objeto, se dice que se le manda un mensaje invocando a un mtodo que realizar la accin. Habitualmente, los mtodos suelen ser verbos. Propiedades Las propiedades son un tipo especial de mtodos. Debido a que suele ser comn que las variables miembro sean privadas para controlar el acceso y mantener la coherencia, surge la necesidad de permitir consultar o modificar su valor mediante pares de mtodos: GetVariable y SetVariable. Los lenguajes orientados a objetos ms modernos (Java, C#, aaden la construccin de propiedad que es una sintaxis simplificada para dichos mtodos: tipo Propiedad { get { } set { } } De esta forma es posible realizar operaciones sobre las propiedades como si fuesen variables normales, el compilador se encarga de crear el cdigo apropiado que llame a la clusula get o set segn se necesite. Las propiedades se denominan con nombres como las variables. 3.3.3 Diferencia entre operacin y mtodo.5 Las operaciones son procesos que se pueden solicitar como unidades. Losmtodos son especificaciones del procedimiento de una operacin dentro de una clase. Es decir, la operacin es el tipo de servicio solicitado y el mtodo es su cdigo de programacin.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Por ejemplo una operacin asociada con la clase pedido podra ser aquella que calcule el total del pedido. El mtodo especificara la forma de calcular el total. Para esto, el mtodo podra obtener el precio de cada artculo del pedido al enviar una solicitud a los objetos artculo asociados. A su vez, cada objeto artculo regresara su precio al mtodo pedido mediante un mtodo de la clase artculo. Los mtodos de una clase controlan solamente a los objetos de esa clase. No pueden tener acceso directo a las estructuras de datos de un objeto en una clase distinta. Para utilizar las estructuras de datos en una clase diferente, deben enviar una solicitud a ese objeto. 3.3.4 Herencia de Clase. La generalizacin es una nocin conceptual. La herencia de clase (que slo se conoce como herencia) es una implantacin de la generalizacin. La generalizacin establece que las propiedades de un tipo se aplican a sus subtipos. La herencia de clase hace que la estructura de datos y operaciones sean disponibles para su reutilizacin por parte de sus subclases. La herencia de las operaciones de una superclase permite que las clases compartan cdigo. La herencia de la estructura de datos permite la reutilizacin de la estructura. 3.3.5 Herencia Mltiple. En la herencia mltiple, una clase puede heredar estructuras de datos y operaciones de ms de una superclase. Por ejemplo supngase que existe un tipo de objeto cuenta, que tiene como subtipos a los tipos de objetos cuenta de cliente y cuenta vencida. A su vez, cuenta de cliente tiene como a subtipo a cuenta de cliente vencida y cuenta vencida tambin tiene como subtipo a cuenta de cliente vencida. 3.3.6 Seleccin del Mtodo. Cuando se enva una solicitud a un objeto, el software selecciona los mtodos por utilizar. El mtodo no se almacena en el objeto, pues esto causara una rplica mltiple y prdida de espacio. En vez de esto, el mtodo se asocia con la clase. El mtodo puede no estar en la clase de la que el objeto es una instancia, sino en una superclase.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
En ese caso, el mecanismo de seleccin buscar la operacin en su superclase y en todas las superclases de la jerarqua hasta que lo encuentre, nivel por nivel. Si la encuentra, selecciona la operacin. Si la operacin no se encuentra en ningn nivel de la superclase, se considera invlida la fuente de la solicitud. De esta forma, los usuarios slo deben especificar lo que se debe hacer, dejando que sea el mecanismo de seleccin el que determine la forma de localizar la operacin y la ejecute. El mecanismo de seleccin deja en manos de la aplicacin OO el problema de localizar la operacin y la ejecute. 3.3.7 Polimorfismo Uno de los objetivos principales de las tcnicas OO es utilizar otra vez el cdigo. Sin embargo, algunas de las operaciones requieren adaptacin para resolver necesidades particulares. Esta necesidad, se da generalmente entre superclases y subclases, donde una subclase es una especializacin de su superclase, y puede requerir alcanzar los mismos objetivos, pero con distintos mecanismos. Por ejemplo, una superclase rectngulo podra tener una operacin rea cuyo objetivo es calcular el rea del rectngulo, definida como la multiplicacin de los largos de dos lados contiguos. A su vez, la clase cuadrado es una subclase de rectngulo que tambin tiene una operacin rea cuyo objetivo es calcular el rea del cuadrado, pero que est definida especialmente para los objetos del tipo cuadrado como la multiplicacin del largo de uno de sus lados por si mismo. El fenmeno recin descrito se conoce como polimorfismo, y se aplica a una operacin que adopta varias formas de implantacin segun el tipo de objeto, pero cumple siempre el mismo objetivo. Una de las ventajas del polimorfismo es que se puede hacer una solicitud de una operacin sin conocer el mtodo que debe ser llamado. Estos detalles de la implantacin quedan ocultos para el usuario; la responsabilidad descansa en el mecanismo de seleccin de la implantacin OO. 3.3.8 Notacin. Para representar una clase, sus atributos y sus mtodos:

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

Para representar una instancia de una clase:

Objeto es una instancia de la Clase. La media luna representa una jerarqua de generalizacin (se lee Objeto 'es un' Clase). La forma general de la declaracin de una clase es: class Nombre_de_la_clase { datos y funciones privados . public: datos y funciones publicas . . } lista de objetos; La sintaxis tpica de una clase es: class Nombre { // Variables miembro (habitualmente privadas) miembro_1; //lista de miembros miembro_2; miembro_3;

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
// Funciones o mtodos (habitualmente pblicas) funcion_miembro_1( ); // funciones miembro conocidas funcion_miembro_2 ( ); // funciones como mtodos // Propiedades (habitualmente pblicas) propiedad_1; propiedad_2; propiedad_3; propiedad_4; }

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
CAPITULO 4. Fundamentos De Java 4.1 Introduccin Plataforma de software desarrollada por Sun Microsystems. Esta plataforma ha sido desarrollada de tal manera que los programas desarrollados para ella puedan ejecutarse de la misma forma en diferentes tipos de arquitecturas y dispositivos computacionales. La plataforma Java se divide en 3 partes:
Lenguaje

de programacin. Mquina Virtual Java API Java Es un lenguaje de programacin orientada a objetos puro diseado para su uso en Internet. Se parece mucho a C++, pero adopta algunas ideas de Smalltalk. Los programas se ejecutan por medio de un intrprete que ha sido incorporado a los navegadores de Internet ms usuales. A finales del siglo XX, Java lleg a ser el lenguaje de mayor acogida para programas de servidor. Utilizando una tecnologa llamada JSP (basada en ASP de Microsoft), se hiz muy fcil escribir pginas dinmicas para sitios de Internet. Sumado a esto, la tecnologa de JavaBeans, al incorporarse con JSP, permita utilizar el patrn MVC (Modelo-Vista-Controlador) que ya tanto se haba aplicado a interfaces grficas. Java lleg a ser extremadamente popular cuando Sun Microsystems introdujo el J2EE (Java 2 Enterprise Edition) en la que inclua la tecnologa de Enterprise Java Beans (EJB) que es una tecnologa de objetos distribudos, logrando por fin el sueo de muchas empresas como Microsoft e IBM de crear una plataforma de objetos distribudos con un monitor de transacciones. Con este nuevo estndar, empresas como BEA, IBM, Sun Microsystems, Oracle y otros crearon nuevos "servidores de aplicaciones" que tuvieron gran acogida en el mercado. Adems de programas del servidor, Java permite escribir programas de interfaz grfica o textual. Adems se pueden correr programas de manera incorporada a los navegadores de Internet, aunque esto nunca lleg a popularizarse como se esperaba. Programas en Java generalmente son compilados y luego interpretados por una mquina virtual. Esta ltima sirve como una plataforma de abstraccin entre la mquina y el lenguaje permitiendo que se pueda "escribir el programa una vez, y correrlo en cualquier lado". Tambin existen compiladores nativos de Java, tanto

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
comercial como libre. El compilador GCC de GNU compila Java con algunas limitaciones (ao 2002). 4.2 Caractersticas de Java Microsystems, lder en servidores para Internet, uno de cuyos lemas desde hace mucho tiempo es "the network is the computer" (lo que quiere dar a entender que el verdadero ordenador es la red en su conjunto y no cada mquina individual). Es quien ha desarrollado el lenguaje Java, en un intento de resolver simultneamente todos los problemas que se le plantean a los desarrolladores de software por la proliferacin de arquitecturas incompatibles, tanto entre las diferentes mquinas como entre los diversos sistemas operativos y sistemas de ventanas que funcionaban sobre una misma mquina, aadiendo la dificultad de crear aplicaciones distribuidas en una red como Internet. Hace algunos aos, Sun Microsystems decidi intentar introducirse en el mercado de la electrnica de consumo y desarrollar programas para pequeos dispositivos electrnicos. Tras unos comienzos dudosos, Se decidi crear una filial, denominada FirstPerson Inc, para dar una margen de maniobra al equipo responsable del proyecto. El mercado inicialmente previsto para los programas de FirstPerson eran los equipos domsticos: microondas, tostadoras y, fundamentalmente, televisin interactiva. Este mercado, dada la falta de pericia de los usuarios para el manejo de estos dispositivos, requera unas interfaces mucho ms cmodos e intuitivos que los sistemas de ventanas que proliferaban en el momento. Otros requisitos importantes a tener en cuenta eran la fiabilidad del cdigo y la facilidad de desarrollo. James Gosling, el miembro del equipo con ms experiencia en lenguajes de programacin, decidi que las ventajas aportadas por la eficiencia de C++ no compensaban el gran coste de pruebas y depuracin. Gosling haba estado trabajando en su tiempo libre en un lenguaje de programacin que l haba llamado Oak, el cual, an partiendo de la sintaxis de C++, intentaba remediar las deficiencias que iba observando. Los lenguajes al uso, como C o C++, deben ser compilados para un chip, y si se cambia el chip, todo el software debe compilarse de nuevo. Esto encarece mucho los desarrollos y el problema es especialmente acusado en el campo de la electrnica de consumo. La aparicin de un chip ms barato y, generalmente, ms eficiente, conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus cadenas de produccin, por pequea que sea la diferencia en precio ya que, multiplicada por la

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
tirada masiva de los aparatos, supone un ahorro considerable. Por tanto, Gosling decidi mejorar las caractersticas de Oak y utilizarlo. El primer proyecto en que se aplic este lenguaje recibi el nombre de proyecto Green y consista en un sistema de control completo de los aparatos electrnicos y el entorno de un hogar. Para ello se construy un ordenador experimental denominado *7 (Star Seven). El sistema presentaba una interfaz basada en la representacin de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema apareca Duke, la actual mascota de Java. Posteriormente se aplic a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como interfaz para la televisin interactiva. Ninguno de estos proyectos se convirti nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo y fueron como su bautismo de fuego. Una vez que en Sun se dieron cuenta de que a corto plazo la televisin interactiva no iba a ser un gran xito, urgieron a FirstPerson a desarrollar con rapidez nuevas estrategias que produjeran beneficios. No lo consiguieron y FirstPerson cerr en la primavera de 1994. Lo mejor ser hacer caso omiso de las historias que pretenden dar carta de naturaleza a la clarividencia industrial de sus protagonistas; porque la cuestin es si independientemente de su origen y entorno comercial, Java ofrece soluciones a nuestras expectativas. Porque tampoco vamos a desechar la penicilina aunque haya sido su origen fruto de la casualidad. Se puede decir que Java es: Simple: Basado en el lenguaje C++ pero donde se eliminan muchas de las caractersticas POO que se utilizan espordicamente y que creaban frecuentes problemas a los programadores. Esta eliminacin de causas de error y problemas de mantenimiento facilita y reduce el costo del desarrollo de software. Java no da soporte a struct, union y pointer Java no ofrece typedef ni #define No permite la sobrecarga de operadores. No ofrece herencia mltiple. Maneja los comandos en lnea de diferente manera que C++ Java tienen una clase String, que permite un mejor manejo que los arrays de terminacin nula del C y C++.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Java tiene un sistema automtico de asignacin y liberacin de memoria (recolector de basura) que mejora mucho los sistemas del C++. Orientado al objeto: Java da buen soporte a las tcnicas de desarrollo POO y en resumen a la reutilizacin de componentes de software. Distribuido: Java se ha diseado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilizacin del protocolo TCP/IP, incluyendo HTTP y FTP. El cdigo Java se puede manipular a travs de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos). Interpretado: El compilador Java traduce cada fichero fuente de clases a cdigo de bytes (Bytecode), que puede ser interpretado por todas las mquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es especifico de una mquina determinada, por lo que no se compila y enlaza como en el ciclo clsico, sino que se interpreta. Slido: El cdigo Java no se quiebra fcilmente ante errores de programacin. As el relaje que existe en la declaracin y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversin forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. As en Java no es posible escribir en reas arbitrarias de memoria ni realizar operaciones que corrompan el cdigo. En resumen se eliminan muchas de las posibilidades de "trucos" que ofreca el C y C++. Seguro: Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas caractersticas antes descritas que evitan la corrupcin de cdigo evitan su manipulacin. Actualmente se esta trabajando en encriptar el cdigo. Arquitectura Neutral: El compilador crea cdigos de byte (Bytecode) que se enva al visualizador solicitado y se interpreta en la mquina que posee un interprete de Java o dispone de un visualizador que funciona con Java. Portable: Al ser de arquitectura neutral es altamente portable, pero esta caracterstica puede verse de otra manera: Los tipos estndares (int., float...) estn igualmente implementados en todas las mquinas por lo que las operaciones aritmticas funcionaran igual en todas las mquinas. Alto desempeo: Al ser cdigo interpretado, la ejecucin no es tan rpida como el cdigo compilado para una plataforma particular. El compilador Java suele ofrecer la

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
posibilidad de compilar Bytecode en cdigo mquina de determinadas plataformas, y segn Sun este cdigo resultar de una eficacia similar a compilaciones de C y C++. Multihilos: Java puede aplicarse a la realizacin de aplicaciones en las que ocurra ms de una cosa a la vez. Java, apoyndose en un sistema de gestin de eventos basado en el paradigma de condicin y monitores C.A.R. permite apoyar la conducta en tiempo real e interactivo en programas. Dinmico: Al contrario que C++ que exige se compile de nuevo la aplicacin al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos mtodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes. 4.2.1 Diferencias Con C++ En Java no es posible crear variables globales. Solo las variables estticas y publicas de algunas clases pueden considerarse como tales, pero esto generalmente, y como en el caso de las variables globales en C++ son sntoma de un mal diseo. Java no dispone de sentencia goto lo cual permite crear un cdigo ms robusto y seguro as como ms optimizado. Para cubrir esta falta Java proporciona un tratamiento muy optimizado de excepciones, poderoso y bien definido. Los punteros son una caracterstica poderosa y peligrosa del C++, en si evitan que ninguna variable sea privada de verdad, ya que es fcil acceder a la mis a travs de punteros, los cuales son fuente inacabable de problemas y malfuncionamiento. Java no dispone de tratamiento de punteros. Los vectores o arrays lo son de modo cierto, lo cual evita sobrepasar el mismo o salirse de sus limites. El manejo de memoria en C se realiza de forma peligrosa a travs de punteros obtenidos con la funcin malloc (), y que se libera explcitamente con free(), esto puede causar errores si el programador no controla perfectamente los pasos en que estas operaciones se realizan. Otro error es el olvido frecuente de liberar memoria, lo cual termina consumiendo los recursos del sistema. Java no dispone de punteros y todos lo objetos se crean con el operador new, el cual asigna espacio en el montculo de memoria a cada objeto. Lo que se obtiene con new es un descriptor del objeto (no una direccin) la direccin real es manejada por el sistema el cual la puede mover o recolocar segn necesidad, pero el programador no ha de preocuparse por ello. Lo importante es que el objeto tiene memoria asignada mientras le interese al programa, quedando esta memoria disponible en cuanto este

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
inters cese. No se har falta llamar a free o delete ya que el recolector de basura realizara esta labor. Este recolector o reciclador de basura se ejecutara cuando el sistema este libre o una asignacin no encuentren lugar disponible. C y C++ disponen de tipos de datos frgiles cuyos lmites y caractersticas dependen de la implementacin y maquina del compilador. Java implementa lmites y tamaos sensatos y validos para todo tipo de mquinas y entornos (independientes del Hardware) por lo que es totalmente reproducible en cualquier plataforma. En C es posible la realizacin de casting o conversin de tipos en tiempo de ejecucin. En C++ esta operacin es peligrosa ya que los objetos son referencias a zonas de memoria y no es posible tener informacin sobre s la conversin en posible. En Java los descriptores de los objetos contienen informacin completa acerca de la clase a la que pertenece el objeto, por lo que pueden realizarse comprobaciones en tiempo de ejecucin sobre la compatibilidad de tipos y emitir la excepcin correspondiente si no es aplicable la conversin. En Java no se dispone de archivos de cabecera con los prototipos de las clases. Esto, en principio es una desventaja, hasta que se comprueba que esta habilidad del C++ ha llevado a entornos de compilacin prcticamente inmanejables, ya que cada compilacin puede tratar estos archivos de formas un tanto complejas. Java no dispone de esta habilidad de archivos de cabecera, el tipo y la visibilidad de la clase se compila en el propio archivo de la clase, siendo tarea del intrprete de Java realizar el acceso. Java no tiene struct ni unin, ambos sistemas de encasulamiento y polimorfismo un tanto crpticos e inseguros del C++, unificando todo en un solo concepto de class. La programacin de entornos reales de C y C++ implica un buen conocimiento del manejo del procesador y sus trucos, lo cual no es una manera limpia de controlar lo que se compila. Java no dispone de este sistema, pero tienen medios (como la declaracin final para constantes) que permiten igual potencia. 4.3 Estructura de un programa en Java /**mi primera aplicacin Java @autor jmrr @version 1.1.0.*/ Class AplicacionEsencial {

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Public static void main (String args[]) { System.out.println("Hola Mundo"); } } Lo anterior representa el cdigo de un programa Java que se compilara y ejecutara de la siguiente forma: El cdigo anterior se guarda en un fichero texto cuya extensin es .java (Aplicacin Escencial. java). Este se compila llamando a javac. El resultado de esta compilacin es un fichero con el nombre de la clase contenida y la extensin .class (AplicacionEsencial.class). El nombre del fichero fuente (.java podr ser cualquiera pero dado que el resultado de la compilacin adquiere el nombre de la clase contenida en el mismo, es buena practica el llamar al fichero fuente con el mismo nombre. El fichero obtenido puede ser llamado como argumento del interprete para su ejecucin: $ javac AplicacionEsencial.java $ java AplicacionEsencial.class Hola Mundo $ Las partes del programa anterior son: _ Comentarios: desde "/*" hasta que aparece "*/", son ignorados por el compilador. _ La palabra clave class que seguida del nombre de la clase a definir y de la llave de apertura "{" da comienzo a la definicin de la misma. _ Cuerpo de la clase que contendr mtodos, operaciones y datos de la clase. En nuestro caso solo contienen un mtodo, el que todas las aplicaciones han de tener: main. _ La lnea: "Public static void main (String args[]) {" da comienzo al mtodo main, las palabras clave que anteceden al nombre indican formas especificas para este y su explicacin se har a posteriori.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
_ Despus de main se declara los parmetros de este mtodo (String args[]) que en este caso consta de un array de cadenas de caracteres cuyo nombre es args. Esta aplicacin no hace uso de estos parmetros, pero todos los mtodos main han de declarar tal lista, ya que representa la terica lnea de comandos que podra acompaar a la llamada a la clase: _ $java Aplicacin esencial alpha beta _ Entre las llaves de apertura y cierre se encuentra en cuerpo del mtodo o lista de sentencias que le implementan, en nuestro caso una nica llamada al mtodo println. 4.3.1 Creacin de un primer programa /* Este es un primer programa de prueba. Este archivo de llama ejemplo.java /* class ejemplo { // El programa comienza con una llamada a main (). Public static void main (String args[ ]) { System.out.println(Este es un programa sencillo en java.); } } Para compilar el programa ejemplo, ejecutamos el compilador javac, dando el nombre del archivo fuente en lnea de rdenes de la siguiente forma C:\>javac ejemplo.java 4.3.1.1 Mtodos de definicin Los mtodos en java le dan mucho poder y flexibilidad debido a su gran utilidad. Los mtodos son conjuntos de instrucciones agrupadas bajo un mismo nombre y existen 5 tipos de parmetros que son: METODO El incluyen parmetros por valor DESCRIPCIN Este mtodo recibe en la variable x un valor entero lo mismo que la variable b y retorna un dato de tipo entero que corresponde a la suma de los valores recibidos ejemplo: int f(int x, int b){ Return x+b }

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

El que incluye parmetros por referencia Los que devuelven un dato

Se caracteriza porque sus parmetros son matrices, arreglos u objetos

Veamos el siguiente ejemplo donde recibe un entero y devuelve un # de dgitos que componen dicho entero, ,entonces: Int p (int a){ If (a<0) a = -a; int f = 0; While (a>0){ F = f+1; a = a/10; } Return f; } Los que no devuelven ningn Estas rutinas se utilizan para cambiar algn valor dato fuera de la funcin Los que no reciben parmetros Esta rutina no recibe parmetros pero pueden generar un valor o cambiar un dato de un variable global.

La forma general de un mtodo es la siguiente: tipo nombre _ de_ mtodo(lista de parmetros) { // cuerpo del mtodo } 4.3.1.2 Palabras clave Las palabras claves son aquellos identificadores reservados por Java para un objetivo determinado y se usan slo de la forma limitada y especfica. Java tiene un conjunto de palabras clave ms rico que C o que C++, por lo que s est aprendiendo Java con conocimientos de C o C++, asegrese de que presta atencin a las palabras clave de Java. Las siguientes palabras son palabras reservadas de Java: abstact case const else float boolean cast continue extends for break catch default false future byte char do final generic byvalue class double finally goto

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
if int null protected static throw var implements interface operator public super throws void mport long outer rest switch transient volatile inner native package return syncroniced true while instanceof new private short this try

Tabla 2: Palabras reservadas Java 4.3.2 Tipos de datos y declaraciones A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un tipo de dato especfico. Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecucin del programa y a lo largo de toda la vida til del propio programa. 4.3.2.1 Tipos de datos simples Es uno de los conceptos fundamentales de cualquier lenguaje de programacin. Estos definen los mtodos de almacenamiento disponibles para representar informacin, junto con la manera en que dicha informacin ha de ser interpretada. Para crear una variable (de un tipo simple) en memoria debe declararse indicando su tipo de variable y su identificador que la identificar de forma nica. La sintaxis de declaracin de variables es la siguiente: TipoSimple Identificador1, Identificador2; Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple TipoSimple con nombres Identificador1 e Identificador2. Los tipos de datos en Java pueden dividirse en dos categoras: simples y compuestos. Los simples son tipos nucleares que no se derivan de otros tipos, como los enteros, de coma flotante, booleanos y de carcter. Los tipos compuestos se basan en los tipos simples, e incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general. Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados, para darles valor. En este apartado se explican los tipos de datos simples (o

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
primitivos) que presenta Java, as como los literales que soporta (sintaxis de los valores que se les puede asignar). Tipos de datos enteros Se usan para representar nmeros enteros con signo. Hay cuatro tipos: byte, short, int y long. Tipo byte short int long Tabla 5: Tipos de datos enteros Literales enteros Son bsicos en la programacin en Java y presentan tres formatos:
Decimal:

Tamao 1Byte (8 bits) 2 Bytes (16 bits) 4 Bytes (32 bits) 8 Bytes (64 bits)

Los literales decimales aparecen como nmeros ordinarios sin ninguna notacin especial. Hexadecimal: Los hexadecimales (base 16) aparecen con un 0x 0X inicial, notacin similar a la utilizada en C y C++. Octal: Los octales aparecen con un 0 inicial delante de los dgitos. Por ejemplo, un literal entero para el nmero decimal 12 se representa en Java como 12 en decimal, como 0xC en hexadecimal, y como 014 en octal. Los literales enteros se almacenan por defecto en el tipo int, (4 bytes con signo), o si se trabaja con nmeros muy grandes, con el tipo long, (8 bytes con signo), aadiendo una L l al final del nmero. La declaracin de variables enteras es muy sencilla. Un ejemplo de ello sera: long numeroLargo = 0xC; // Por defecto vale 12 Tipos de datos en coma flotante Se usan para representar nmeros con partes fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva almacenamiento para un nmerode

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
precisin simple de 4 bytes y el segundo lo hace para un numero de precisin doble de 8 bytes. Tipo float double Tamao 4 Byte (32 bits) 8 Bytes (64 bits)

Tabla 6: Tipos de datos numricos en coma flotante Literales en coma flotante Representan nmeros decimales con partes fraccionarias. Pueden representarse con notacin estndar (563,84) o cientfica (5.6384e2). De forma predeterminada son del tipo double (8 bytes). Existe la opcin de usar un tipo ms corto (el tipo float de 4 bytes), especificndolo con una F f al final del nmero. La declaracin de variables de coma flotante es muy similar a la de las variables enteras. Por ejemplo: double miPi = 314.16e-2 ; // Aproximadamente float temperatura = (float)36.6; // Paciente sin fiebre Se realiza un moldeado a temperatura, porque todos los literales con decimales por defecto se consideran double. Tipo de datos boolean Se usa para almacenar variables que presenten dos estados, que sern representados por los valores true y false. Representan valores bi-estado, provenientes del denominado lgebra de Boole. Literales Booleanos Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los que el valor de falso se representaba por un 0 numrico, y verdadero cualquier nmero que no fuese el 0. Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean: boolean reciboPagado = false; // Aun no nos han pagado?!

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Tipo de datos carcter Se usa para almacenar caracteres Unicode simples. Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits, el tipo de datos char se almacena en un entero sin signo de 16 bits. Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas. Literales carcter Representan un nico carcter (de la tabla de caracteres Unicode 1.1) y aparecen dentro de un par de comillas simples. De forma similar que en C/C++. Los caracteres especiales (de control y no imprimibles) se representan con una barra invertida ('\') seguida del cdigo carcter. Descripcin Caracter Unicode Numero octal Barra invertida Continuacin Retroceso Retorno de carro Alimentacin de formularios Tabulacin horizontal Lnea nueva Comillas simples Comillas dobles Nmeros arbigos ASCII Alfabeto ASCII en maysculas Alfabeto ASCII en minsculas Representacin \udddd \ddd \\ \ \b \r \f \t \n \ \" 0-9 A.-Z a.-z Valor Unicode

\u005C \ \u0008 \u000D \u000C \u0009 \u000A \u0027 \u0022 \u0030 a \u0039 \u0041 a \u005A \u0061 a \u007A

Tabla 7: Caracteres especiales Java Las variables de tipo char se declaran de la siguiente forma: char letraMayuscula = 'A'; // Observe la necesidad de las ' ' char letraV = '\u0056'; // Letra 'V'

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Conversin de tipos de datos En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. Este proceso se denomina "conversin", "moldeado" o "tipado". La conversin se lleva a cabo colocando el tipo destino entre parntesis, a la izquierda del valor que queremos convertir de la forma siguiente: char c = (char)System.in.read(); La funcin read devuelve un valor int, que se convierte en un char debido a la conversin (char), y el valor resultante se almacena en la variable de tipo carcter c. El tamao de los tipos que queremos convertir es muy importante. No todos los tipos se convertirn de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo que si contienen informacin til, esta se perder. Por ello se establece la norma de que "en las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente":

Tipo Origen byte short char int long float

Tipo Destino double, float, long, int, char, short double, float, long, int double, float, long, int double, float, long double, float double

Tabla 8: Conversiones sin prdidas de informacin 4.3.3 Operadores y expresiones Un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica o lgica, java reconoce los siguientes operadores. OPERADOR + * OPERACIN SUMA RESTA MULTIPLICACIN

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
/ % DIVISIN RESIDUO O MODULO

Es importante tener en cuenta lo siguiente: En problemas de divisin entre nmeros enteros, java trunca la parte residual, ejemplo: Dividir--_13/5---_el resultado es 2 Para resolver los problemas de potencias y races, se usan ciertas instrucciones especiales que proporcionan el lenguaje, llamadas funciones matemticas, en java existe toda una librera de instrucciones o funciones matemticas. Recordar que todas las funciones reciben uno o ms datos o valores y regresan siempre un resultado, una de estas funciones matemticas es: import java,lang.math : piblic stagic double pow(double a, double b) ; Esta funcin ocupa dos valores o datos (base y exp) ambos de tipo double, y regresa un resultado tambin de tipo double, ejemplo; Resolver el problema de calcular 53 import java,io.*; import java,lang.math : public class ejemplo1 { public static void man(String args[ ]) { double base=5; double exponente=3; double potencia = 0 ; potencia = Math.pow(base, exponente); System.out.println(potencia=+potencia); } // cerrar main } // cerrar clase

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Para resolver el problema de races, se aprovecha una de las ms elementales y conocida de las leyes de exponentes que dice:

Es decir una raz cualquiera se puede transformar a una potencia con un exponente fraccionario ejemplo: Problema y = 3 x esto es equivalente a y-3*x1/2 entonces //hay que usar la funcin pow() para trabajar correctamente y=3*Math.pow(x,0.5);// En este ejemplo no funcional se esta dando por supuesto que no interesa el tipo de dato que requiere la funcin pow () para trabajar correctamente. Para realizar operaciones con objetos numricos, es importante tener en cuenta que no se pueden hacer directamente operaciones con ellos ni tampoco pueden recibir resultados en ellos, lo que se debe hacer es usar una variable temporal de tipo apropiado, hacer operaciones con dicha variable y al final si se quiere convertir esta variable al objeto numrico apropiado ejemplo: integer alfa = new Integer(20); Double zeta = new Double(5); Double alfa1= 0, zeta1=0; Alfa1=alfa.doubleValue(); Zeta1=zeta.doubleValue(); Alfa1=alfa1 + zeta1; Desplegar alfa1; Como se observa se crearon dos objetos numricos, luego dos variables numricas normales, luego estas dos ltimas variables se cargan con los objetos numricos que emplean mtodos propios para convertirlos a datos normales. La librera matemtica completa incluye: Class Math Public final class java.lang.math extends java.Objet

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
{ // fields public final static double E public final static double PI; // Metodos public static double abs(double a); public static float abs(float a); public static int abs(int a); public static long abs(long a); public static double acos(double a); public static double asin(double a); public static double atan(double a); public static double atan2(double a, double b); public static double ceil(double a); public static double cos(double a); public static double exp(double a); public static double floor(double a); public static double IEEEremainder(double f1, double f2); public static double log(double a); public static double max(double a, double b); public static float max(float a, float b); public static int max(int a, int b); public static long max(long a, long b); public static double min(double a, double b); public static float min(float a, float b); public static int min(int a, int b); public static long min(long a, long b); public static double pow(double a, double b); public static double random(); public static double rint(double a); public static long round(double a); public static int round(float a); public static double sin(double a); public static double sqrt(double a); public static double tan(double a); } 4.3.4 E/S caracteres: Los programas en java realizan la E/S a travs de flujos(stream). Un flujo es una abstraccin que produce o consume informacin. Un flujo esta relacionado con un

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
dispositivo fsico a travs del sistema de E/S de java. Todos los flujos se comportan de la misma forma, incluso aunque estn relacionados con distintos dispositivos fsicos. Esto significa que un flujo de entrada puede abstraer distintos tipos de entrada, desde un archivo de disco o una conexin de red. Clases de flujos: java implementa los flujos dentro de una jerarqua de clases definida en el paquete java.io. En la parte superior hay dos clases abstractas que son: InputStream OutputStream Estas clases definen los mtodos read( ) y write( ) que respectivamente leen y escriben bytes de datos, hay que tener en encuenta que estos mtodos estn declarados como abstracto dentro de inputStream y OutputStream y son sobrescritos en las clases derivadas. Flujos predefinidos: java importa automticamente el paquete java.lang. Este paquete define una clase llamada system que encapsula algunos aspectos del entorno de ejecucin. System.out: salida estndar. Por defecto, es la consola System.in: hace referencia a la entrada estndar que es por defecto el teclado System. Err: hace referencia al flujo de error estndar que por defecto es la consola. Java no tiene un mtodo de entrada por consola generalizado que sea similar a la funcin scanf() de c o a lo operadores de entrada de C++. Ejemplo: // ejemplo del mtodo read(). Import java.io.*; Class Usuread { public static void main (string args[]) throws IOExceptoon { char c; system.out.println( introduzca caracteres, q para salir.); // lee caracteres do { c = (char) System. In.read(); } while(c = != q); } } Cuando ejecute el programa el resultado debe ser el siguiente:

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Introduzca caracteres, q para salir 123abcq 1 2 3 a b c q 4.3.5 Estructuras De Control Durante un programa existen acciones que se han de repetir un nmero determinado de veces. Por ejemplo, leer 3 caracteres de un flujo de entrada in se codificara: in.read(); in.read(); in.read(); Este cdigo adems de poco elegante sera inviable para una repeticin de 3000 lecturas. Por eso aparecen las estructuras de control, que facilitan que determinadas acciones se realicen varias veces, mientras que una condicin se cumpla, y en definitiva, tomar decisiones de qu hacer en funcin de las condiciones que se den en el programa en un momento dado de su ejecucin. As, nuestro ejemplo se podra indicar como: i nt i=0; for ( i=0 ; i <= 3 ; i++ ) in.read(); Donde bastara cambiar el 3 por cualquier otro nmero para que la lectura se repitiese ese nmero de veces. El lenguaje Java soporta las estructuras de control: Sentencia Toma de decisin Bucle Miscelneo Tabla 18: Estructuras de control Clave if-else, switch-case for, while, do-while break, continue, label:, return, goto

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Aunque goto es una palabra reservada, actualmente el lenguaje Java no soporta la sentencia goto. Se puede utilizar las sentencias de bifurcacin en su lugar. 4.3.5.1 Las sentencias condicionales: if y switch 4.3.5.1.1 La sentencia if else La sentencia if-else de Java dota a los programas de la habilidad de ejecutar distintos conjuntos de sentencias segn algn criterio. La sintaxis de la sentencia if-else es: If ( condicin ) Bloque de cdigo a ejecutar si la condicin es cierta else Bloque de cdigo a ejecutar si la condicin es falsa La parte del else es opcional, y un bloque de cdigo puede ser simplemente la sentencia vaca; para representar que en ese caso no se ha de ejecutar nada. Supongamos que un programa debe realizar diferentes acciones dependiendo de si el usuario oprime el botn aceptar o el botn cancelar en una ventana de dialogo. Nuestro programa puede realizar esto usando la sentencia if - else: // La respuesta es Aceptar o Cancelar If (respuesta == Aceptar) { // cdigo para realizar la accin Aceptar System.out.println( "Su peticion esta siendo atendida" ); } else { // cdigo para realizar la accin Cancelar System.out.println( "Cancelando accion" ); } Se pueden anidar expresiones if-else, para poder implementar aquellos casos con mltiples acciones. Esto es lo que se suele denominar como sentencias else if.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Por ejemplo, supongamos que se desea escribir un programa que clasifique segn el contenido de una variable valor, asigne una letra a una variable clasificacion: A para un valor del 100-91, B de 90-81, C para 80-71 y F si no es ninguno de los anteriores: int valor; char clasificacion; if (valor > 90) { clasificacion='A'; } else if (valor > 80) { clasificacion='B'; } else if (valor > 70) { clasificacion='C'; } else { clasificacion='F'; } Se pueden escribir los if en las mismas lneas que los else, pero se recomienda utilizar la tabulacin (como se ha podido ver en el ejemplo), pues es ms clara para el lector. 4.3.5.1.2. La sentencia switch Mediante la sentencia switch se puede seleccionar entre varias sentencias segn el valor de cierta expresin. Es una instruccin de decisin mltiple donde el compilador prueba o busca casos, o se usa una condicin compuesta muy grande. La forma general de switch es la siguiente: switch ( expresionMultivalor ) { case valor1 : conjuntoDeSentencias; break; case valor2 : conjuntoDeSentencias; break;

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
case valor3: conjuntoDeSentencias; break; default: conjuntoDeSentencias; break; } La sentencia switch evala la expresinMultivalor y ejecuta el conjuntoDeSentencias que aparece junto a la clusula case cuyo valor corresponda con el de la expresinMultivalor. Cada sentencia case debe ser nica y el valor que evala debe ser del mismo tipo que el devuelto por la expresinMultivalor de la sentencia switch. Las sentencias break que aparecen tras cada conjuntoDeSentencias provocan que el control salga del switch y contine con la siguiente instruccin al switch. Las sentencias break son necesarias porque sin ellas se ejecutaran secuencialmente las sentencias case siguientes. Existen ciertas situaciones en las que se desea ejecutar secuencialmente algunas o todas las sentencias case, para lo que habr que eliminar algunos break. Finalmente, se puede usar la sentencia default para manejar los valores que no son explcitamente contemplados por alguna de las sentencias case. Su uso es altamente recomendado. Por ejemplo, supongamos un programa con una variable entera meses cuyo valor indica el mes actual, y se desea imprimir el nombre del mes en que estemos. Se puede utilizar la sentencia switch para realizar esta operacin: int meses; switch ( meses ) { case 1: System.out.println( "Enero" ); break; case 2: System.out.println( "Febrero" ); break; case 3: System.out.println( "Marzo" ); break; //Demas meses // . . . case 12: System.out.println( "Diciembre" ); break; default: System.out.println( "Mes no valido" ); break; } Por supuesto, se puede implementar esta estructura como una sentencia if else if: int meses; if ( meses == 1 )

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
{ System.out.println( "Enero" ); } else if ( meses == 2 ) { System.out.println( "Febrero" ); } // Y as para los dems meses El decidir si usar la sentencia if o switch depende del criterio de cada caso. Se puede decidir cul usar basndonos en la legibilidad, aunque se recomienda utilizar switch para sentencias con ms de tres o cuatro posibilidades. 4.3.5.2. Sentencias de iteracin o bucles: for, do, while 4.3.5.2.1 Bucle while El bucle while es el bucle bsico de iteracin. Sirve para realizar una accin sucesivamente mientras se cumpla una determinada condicin. La forma general del bucle while es la siguiente: while ( expresinBooleana ) { sentencias; }; Las sentencias se ejecutan mientras la expresinBooleana tenga un valor de verdadero. Se utiliza, por ejemplo para estar en un bucle del que no hay que salir hasta que no se cumpla una determinada condicin. Por ejemplo, multiplicar un nmero por 2 hasta que sea mayor que 100: int i = 1; while ( i <= 100 ) { i = i * 2; }

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
Con l se podran eliminar los bucles do-while y for por ser extensiones de ste, pero que se incluyen en el lenguaje para facilitar la programacin. 4.3.5.2.2 Bucle do-while El bucle do-while es similar al bucle while, pero en el bucle while la expresin se evala al principio del bucle y en el bucle do-while la evaluacin se realiza al final. La forma general del bucle do-while es la siguiente: Do { sentencias; } while ( expresinBooleana ); La sentencia do-while es el constructor de bucles menos utilizado en la programacin, pero tiene sus usos, cuando el bucle deba ser ejecutado por lo menos una vez. Por ejemplo, cuando se lee informacin de un archivo, se sabe que siempre se debe leer por lo menos un carcter: Int c; do { c = System.in.read( ); // Sentencias para tratar el carcter c } while ( c != -1 ); // No se puede leer ms (Fin fichero) 4.3.5.2.3 Bucle for Mediante la sentencia for se resume un bucle do-while con una iniciacin previa. Es muy comn que en los bucles while y do-while se inicien las variables de control de nmero de pasadas por el bucle, inmediatamente antes de comenzar los bucles. Por eso el bucle for est tan extendido. Se utiliza para repetir una instruccin o un grupo de instrucciones un determinado nmero de veces. Su formato general es: For (inicializacin; condicin; incremento)

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
{ Instruccin(es); }; En su forma simple la inicializacin es una instruccin de asignacin que carga una variable de control de ciclo con un valor inicial. La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite el ciclo. Se deben separar esos tres argumentos con punto y coma. Ejemplo: Import java.io.* ; Import javax.servlet.* ; Import javax.servlet.http* ; Public class prog7 extends Http.*; { public void doGet(HttpServetRequest request,HttpSerletResponse response) throws ServletException,IOException { printWriter pagina=respionse.getWriter(); response.setContentType(text/html); pagina.println(<HTML>); int x; for(x=1;x<=10;x++) {pagina.printl(x=+x+<br>); pagina.println(</HTML>); pagina.close(); pagina.flusch(); }; public void destroy(){sper.destroy();}; } 4.3.5.3 Sentencias de salto: break, continue y return 4.3.5.3.1 Sentencia break

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas

La sentencia break provoca que el flujo de control salte a la sentencia inmediatamente posterior al bloque en curso. Ya se ha visto anteriormente la sentencia break dentro de la sentencia switch. El uso de la sentencia break con sentencias etiquetadas es una alternativa al uso de la sentencia goto, que no es soportada por el lenguaje Java. Se puede etiquetar una sentencia poniendo un identificador Java vlido seguido por dos puntos antes de la sentencia: nombreSentencia: sentenciaEtiquetada La sentencia break se utiliza para salir de una sentencia etiquetada, llevando el flujo del programa al final de la sentencia de programa que indique: break nombreSentencia2; Un ejemplo de esto sera el programa: void gotoBreak() { System.out.println("Ejemplo de break como 'goto' "); a: for( int i=1; i<10; i++ ) { System.out.print(" i="+i); for( int j=1; j<10; j++ ) { if ( j==5 ) break a; //Sale de los dos bucles!!! System.out.print(" j="+j); } System.out.print("No llega aqu"); } } Al interpretar break a, no solo se rompe la ejecucin del bucle interior (el de j), sino que se salta al final del bucle i, obtenindose: i=1 j=1 j=2 j=3 Nota: Se desaconseja esta forma de programacin, basada en goto, y con saltos de flujo no controlados.

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
4.3.5.3.2 Sentencia continue Del mismo modo que en un bucle se puede desear romper la iteracin, tambin se puede desear continuar con el bucle, pero dejando pasar una determinada iteracin. Se puede usar la sentencia continue dentro de los bucles para saltar a otra sentencia, aunque no puede ser llamada fuera de un bucle. Tras la invocacin a una sentencia continue se transfiere el control a la condicin de terminacin del bucle, que vuelve a ser evaluada en ese momento, y el bucle contina o no dependiendo del resultado de la evaluacin. En los bucles for adems en ese momento se ejecuta la clusula de incremento (antes de la evaluacin). Por ejemplo el siguiente fragmento de cdigo imprime los nmeros del 0 al 9 no divisibles por 3: for ( int i = 0 ; i < 10 ; i++ ) { if ( ( i % 3 ) == 0 ) continue; System.out.print( " " + i ); } Del mismo modo que break, en las sentencias continue se puede indicar una etiqueta de bloque al que hace referencia. Con ello podemos referirnos a un bloque superior, si estamos en bucles anidados. Si dicha etiqueta no es indicada, se presupone que nos referimos al bucle en el que la sentencia continue aparece. Por ejemplo, el siguiente fragmento de cdigo: void gotoContinue( ) { f for ( int i=1; i <5; i++ ) { for ( int j=1; j<5; j++ ) { if ( j>i ) { System.out.println(" "); continue f; } System.out.print( " " + (i*j) );

Universidad Nacional Abierta y a Distancia - UNAD Escuela de Ciencias Bsica Tecnologa e Ingeniera Programa de Ingeniera de Sistemas
} } } En este cdigo la sentencia continue termina el bucle de j y continua el flujo en la siguiente iteracin de i. Ese mtodo imprimira: 1 24 369 4 8 12 16 Nota: Se desaconseja esta forma de programacin, basada en goto, y con saltos de flujo no controlados. 4.3.5.3.3 Sentencia return La ltima de las sentencias de salto es la sentencia return, que puede usar para salir del mtodo en curso y retornar a la sentencia dentro de la cual se realiz la llamada. Para devolver un valor, simplemente se debe poner el valor (o una expresin que calcule el valor) a continuacin de la palabra return. El valor devuelto por return debe coincidir con el tipo declarado como valor de retorno del mtodo. Cuando un mtodo se declara como void se debe usar la forma de return sin indicarle ningn valor. Esto se hace para no ejecutar todo el cdigo del programa: int contador; boolean condicion; int devuelveContadorIncrementado() { return ++contador; } void metodoReturn() { //Sentencias if ( condicion == true ) return; //Ms sentencias a ejecutar si condicin no vale true }

S-ar putea să vă placă și