SlideShare una empresa de Scribd logo
1 de 25
República bolivariana de Venezuela
I.U.P. “Santiago Mariño”
Extensión Maturín
JAVA COMO PROGRAMACION ORIENTADA A OBJETOS
Tutor: Autor:
María Aguilera Ángel Laverde 25.503.860
Sección “GG” D/T Cesar Anteliz 19.781.585
Marzo de 2016
INTRODUCCION
Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que
fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera
posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una
vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run
anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que
ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de
programación más populares en uso, particularmente para aplicaciones de cliente-servidor de
web, con unos 10 millones de usuarios reportado.
¿Qué es la orientación a objetos?
La programación Orientada a Objetos es una metodología que basa la estructura de los programas
en torno a los objetos.
Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por
un programa. Más que describir cada objeto individualmente, estos lenguajes proveen una
construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades.
¿Qué es un objeto?
Es una entidad (tangible o intangible) que posee características y acciones que realiza por sí solo
o interactuando con otros objetos.
Un objeto es una entidad caracterizada por sus atributos propios y cuyo comportamiento está
determinado por las acciones o funciones que pueden modificarlo, así como también las acciones
que requiere de otros objetos. Un objeto tiene identidad e inteligencia y constituye una unidad
que oculta tanto datos como la descripción de su manipulación. Puede ser definido como una
encapsulación y una abstracción: una encapsulación de atributos y servicios, y una abstracción
del mundo real.
Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula
datos (atributos) y acciones o funciones que los manejan (métodos). También para el EOO un
objeto se define como una instancia o particularización de una clase.
Los objetos de interés durante el desarrollo de software no sólo son tomados de la vida real
(objetos visibles o tangibles), también pueden ser abstractos. En general son entidades que juegan
un rol bien definido en el dominio del problema. Un libro, una persona, un carro, un polígono,
son apenas algunos ejemplos de objeto.
Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos
que son sus clientes. Cada objeto puede ser a la vez proveedor y cliente. De allí que un programa
pueda ser visto como un conjunto de relaciones entre proveedores clientes. Los servicios
ofrecidos por los objetos son de dos tipos:
1.- Los datos, que llamamos atributos.
2.- Las acciones o funciones, que llamamos métodos.
Características Generales
Un objeto se identifica por un nombre o un identificador único que lo diferencia de los demás.
Ejemplo: el objeto Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros
número 25789. En este caso el identificador que los hace únicos es el número de la cuenta.
-)Un objeto posee estados:
El estado de un objeto está determinado por los valores que poseen sus atributos en un momento
dado.
-)Un objeto tiene un conjunto de métodos:
El comportamiento general de los objetos dentro de un sistema se describe o representa mediante
sus operaciones o métodos. Los métodos se utilizarán para obtener o cambiar el estado de los
objetos, así como para proporcionar un medio de comunicación entre objetos.
-)Un objeto tiene un conjunto de atributos:
Los atributos de un objeto contienen valores que determinan el estado del objeto durante su
tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los
campos de un registro).
-)Los objetos soportan encapsulamiento:
La estructura interna de un objeto normalmente está oculta a los usuarios del mismo. Los datos
del objeto están disponibles solo para ser manipulados por los propios métodos del objeto. El
único mecanismo que lo conecta con el mundo exterior es el paso de mensajes.
-)Un objeto tiene un tiempo de vida dentro del programa o sistema que lo crea y utiliza:
Para ser utilizado en un algoritmo el objeto debe ser creado con una instrucción particular (New
o Nuevo) y al finalizar su utilización es destruido con el uso de otra instrucción o de manera
automática.
¿Qué es una clase?
La clase es la unidad de modularidad en el EOO. La tendencia natural del individuo es la de
clasificar los objetos según sus características comunes (clase). Por ejemplo, las personas que
asisten a la universidad se pueden clasificar (haciendo abstracción) en estudiante, docente,
empleado e investigador.
La clase puede definirse como la agrupación o colección de objetos que comparten una estructura
común y un comportamiento común.
Es una plantilla que contiene la descripción general de una colección de objetos. Consta de
atributos y métodos que resumen las características y el comportamiento comunes de un conjunto
de objetos.
Todo objeto (también llamado instancia de una clase), pertenece a alguna clase. Mientras un
objeto es una entidad concreta que existe en el tiempo y en el espacio, una clase representa solo
una abstracción.
Todos aquellos objetos que pertenecen a la misma clase son descritos o comparten el mismo
conjunto de atributos y métodos.
Todos los objetos de una clase tienen el mismo formato y comportamiento, son diferentes
únicamente en los valores que contienen sus atributos. Todos ellos responden a los mismos
mensajes.
Su sintaxis algorítmica es: Clase <Nombre de la Clase>
...
FClase <Nombre de la Clase>;
Características Generales
-)Una clase es un nivel de abstracción alto:
La clase permite describir un conjunto de características comunes para los objetos que representa.
Ejemplo: La clase Avión se puede utilizar para definir los atributos (tipo de avión, distancia,
altura, velocidad de crucero, capacidad, país de origen, etc.) y los métodos (calcular posición en
el vuelo, calcular velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.)
de los objetos particulares Avión que representa.
-)Un objeto es una instancia de una clase:
Cada objeto concreto dentro de un sistema es miembro de una clase específica ytiene el conjunto
de atributos y métodos especificados en la misma.ƒ
-)Las clases se relacionan entre sí mediante una jerarquía:
Entre las clases se establecen diferentes tipos de relaciones de herencia, en las cuales la clase hija
(subclase) hereda los atributos y métodos de la clase padre (superclase), además de incorporar sus
propios atributos y métodos.
Ejemplos, Superclase: Clase Avión
Subclases de Avión: Clase Avión Comercial, Avión de Combate, Avión de Transporte
-)Los nombres o identificadores de las clases deben colocarse en singular (clase Animal, clase
Carro, clase Alumno).
Principios de la programación orientada a objetos:
Un lenguaje orientado a objetos tiene tres Principios básicos: debe estar basado en objetos,
basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de
estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear es usualmente la
herencia.
Características de la programación orientada a objetos:
Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las
características siguientes son las más importantes:
-)Abstracción:
Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada
objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo,
informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo"
se implementan estas características. Los procesos, las funciones o los métodos pueden también
ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una
abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de
un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el
mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que
mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el
problema que se quiere atacar.
-)Encapsulamiento:
Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad,
al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los
componentes del sistema. Algunos autores confunden este concepto con el principio de
ocultación, principalmente porque se suelen emplear conjuntamente.
-)Polimorfismo:
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre;
al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté
usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener
objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo
de ejecución", esta última característica se llama asignación tardía o asignación dinámica.
Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de
polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
-)Herencia:
Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de
clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las
que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento,
permitiendo a los objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a
implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en
árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de
una clase se dice que hay herencia múltiple; siendo de alta complejidad técnica por lo cual suele
recurrirse a la herencia virtual para evitar la duplicación de datos.
-)Modularidad:
Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más
pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea
posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por
separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes
soportan la modularidad de diversas formas.
-)Principio de ocultación:
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una
"interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El
aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga
derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su
estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de
manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una
manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un
agregado o rompecabezas de objetos.
-)Recolección de basura:
La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se
encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos
que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe
preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un
nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos
que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u
Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente.
Historia de Java:
Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box
en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El
equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó
durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.
El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de
Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial
registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java.
Es frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o
no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus diseñadores: James
Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo,
JustAnother Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza
tiene es la de que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí
que el icono de java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es
que los 4 primeros bytes (el número mágico) de los archivos.class que genera el compilador, son
en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer
de una lista aleatoria de palabras.3
Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura
y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de tres días
entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo
reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic,
propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la
televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más
tarde sería conocido como HotJava.
En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de Sun.
Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de
1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el
navegador Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun
Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por
parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sería soportado en
sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft
para que se encargase del desarrollo tecnológico. [1] Dos semanas más tarde la primera versión
de Java fue publicada.
La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo en
cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de
ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma que los binarios
(bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.
El entorno de ejecución era relativamente seguro y los principales navegadores web pronto
incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web.
Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un
enorme incremento en el número de clases y paquetes que componen la biblioteca estándar.4
En el 2005 se calcula en 4,5 millones el número de desarrolladores y 2.500 millones de
dispositivos habilitados con tecnología Java.
¿Qué es JDK?
Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación
de programas en Java. Puede instalarse en una computadora local o en una unidad de red.
En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y trabajar como
una sola aplicación.
Los programas más importantes que se incluyen son:
Javac: es el compilador de JAVA.
Java: es el intérprete de JAVA.
Javadoc: genera la documentación de las clases java de un programa.
Javah: que es un fichero de cabecera para escribir métodos nativos. Entre otro.
¿Qué es JRE?
Java RuntimeEnvironment o JRE es un conjunto de utilidades que permite la ejecución de
programas Java.
En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una
Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios
para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa como un
"intermediario" entre el sistema operativo y Java.
La JVM es el programa que ejecuta el código Java previamente compilado (bytecode) mientras
que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API
deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java,
mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de
desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros,
un compilador para Java.
El compilador de java:
Un compilador java, es un programa que transforma código fuente escrito en java a un código
neutral a la plataforma conocida como java bytecode (Aunque existen compiladores que
transforman el código fuente java a algún código nativo). El compilador más conocido es el
"javac" que es parte del JDK de Oracle.
La máquina virtual de java:
Una máquina virtual Java (en inglés Java Virtual Machine, JVM) es una máquina virtual de
proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar
instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por
el compilador del lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de
bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Como todas
las piezas del rompecabezas Java, fue desarrollado originalmente por Sun.
Anatomía de un programa en Java:
Toda aplicación de consola en Java contiene una clase principal con un método (o función) main,
al igual que en C++, la función main es lo primero que se ejecuta cuando se inicia la aplicación
desde la línea de comandos. De esta forma podemos deducir que cualquier llamado, declaración o
método que no sea llamado de manera directa o indirecta desde el método main nunca se
ejecutará. En Java el método main recibe como argumento un arreglo de String. Este arreglo
contiene los argumentos enviados por la línea de comandos para la invocación del programa.
La estructura básica de un programa desarrollado usando Java es la siguiente:
Línea 1: La primer línea de nuestro código ha declarado una clase llamada "nombre_clase", la
cual es pública (public), esto quiere decir que tendrás acceso a dicha clase, desde cualquier parte
del código sin ningún tipo de complicaciones, ahora, lógicamente tú le podrás poner el nombre
que te guste más, como veras por la margen que tiene el código, dentro de la clase
"nombre_clase" hay otras líneas, las líneas 2, 3, 4 y 5, esto simplemente le da un poco más de
orden a nuestro programa, nuestra línea 1, también tiene una llave abriendo "{", esto quiere decir
que todo lo que halla después de esta llave forma parte de la clase "nombre_clase" e indica el
comienzo de las líneas de sentencia de esta, en este caso, esta la declaración de la función main().
Línea 2: La línea numero dos contiene la declaración de la función (o método) main, el cual es
publica y además hay algo especial, es del tipo void (una función puede tomar varios valores,
entero, decimal, cadena de texto, entre otros) el poner void, estamos queriendo decir que la
función main no retornará nada al finalizar, si se le pusiera por ejemplo int (entero) entonces al
final de la función, esta debería retornar algún numero o variable de tipo entero. Nuestra línea
dos, también tiene un argumento para la función main, es lo que está dentro de los paréntesis
"Stringargs[]", esto quiere decir que la función main, debe recibir un argumento el cual es de tipo
String y es además un vector, luego hablare de los tipos de datos, no te preocupes mucho por
esto. Finalmente esta la llave abriendo "{".esto quiere decir que lo que halla después de esta llave
forma parte de las sentencias (lo que nuestro programa realizará durante su ejecución).
Línea 3: La línea tres contiene el bloque de sentencias, es decir, las líneas de código que nuestro
programa seguirá durante su ejecución, es de notar que cada sentencia termina con punto y coma
";" para dar un poco de claridad, se entiende como línea de sentencia, a las líneas de código que
en ellas contienen la declaración de alguna variable, o alguna operación,( suma, resta, división,
etc.) o cualquier acción, como modificar, asignar, o eliminar algo.
Línea 4: La línea número cuatro contiene una llave cerrando "}" eso nos indica que en esta línea
termina la ejecución de alguna función (para identificar esta función que se cierra, sigue la
identificación u seguramente sabrás cual es la que estamos cerrando) pues bien, habrás notado
que la función que esta llave está cerrando es la función main(), esto quiere decir que todo lo que
halla después de esta llave formará parte de la clase "nombre_clase" pero no será ejecutado ni
formará parte de la función main.
Línea 5: La línea cinco, nos indica al igual que la cuatro el final de una función o en este caso de
una clase, esta línea 5 entonces nos indica el final de la clase “nombre_clase”.
Tipos de programas que pueden hacerse en Java:
Actualmente cada vez más la tecnología invade más campos de nuestra vida, estando las personas
cada vez más familiarizados con términos informáticos, entre ellos, como, los lenguajes de
programación. Cualquier persona que ha usado alguna vez un ordenador o sistema le resulta
familiar alguno de estos términos relacionados a los tipos de lenguajes de programación: C,
Pascal, Cobol, Visual Basic, Java, Fortran, etc. En la actualidad existen varios tipos de lenguajes
de programación. Todos estos tipos de lenguaje pueden confundir o hacer dudar a cualquier
persona que comienza aprender un lenguaje, quien tras hallar varias posibilidades o posibles
alternativas no sabe cuál de ellos escoger. El motivo de esta gran variedad de lenguajes es que
cada uno ha sido creado para una determinada función, está especialmente diseñado para facilitar
la programación de un determinado tipo de problemas, para garantizar seguridad de las
aplicaciones, para obtener una mayor facilidad de programación, para conseguir un mayor
aprovechamiento de los recursos del ordenador y han sido creados o modificados por diferentes
personas o empresas.
En Java se pueden crear básicamente dos tipos de programas: applets y aplicaciones.
Los applets son programas Java que se transmiten por Internet y que se ejecutan incrustados en
una página Web. Para ejecutar un applet se requiere tener instalada una versión de la JVM. Aquí
se muestra un applet en ejecución. Note que un applet no tiene ventana.
Las aplicaciones son programas independientes de un navegador Web; pero que, para ser
ejecutados, también necesitan de una versión de la JVM. En la Figura 1.3 se muestra una
aplicación en ejecución. Note que la aplicación tiene su propia ventana.
Entornos de desarrollo integrado (IDE), para Java:
Un ambiente de desarrollo integrado o entorno de desarrollo interactivo, en inglés
IntegratedDevelopmentEnvironment (IDE), es una aplicación informática que proporciona
servicios integrales para facilitarle al desarrollador o programador el desarrollo de software.
Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción
automáticas y un depurador. La mayoría de los IDE tienen auto-completado inteligente de código
(IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como
NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus.
El límite entre un IDE y otras partes del entorno de desarrollo de software más amplio no está
bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de
usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias
herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador
de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software
orientado a objetos.
El kit de desarrollo (JDK) no incluye ningún editor con el que crear nuestros programas.
Podríamos instalar un "editor genérico", porque tenemos muchos gratuitos y de calidad, como
Notepad++. Aun así, si nuestro equipo es razonablemente moderno, puede ser preferible instalar
un entorno integrado.
Elementos de un programa Java:
-)Comentarios:En la programación de computadoras, un comentario es una construcción del lenguaje de
programación destinada a incrustar anotaciones legibles al programador en el código fuente de un
Programa informático. Estas anotaciones son potencialmente significativas para los programadores, pero
usualmente ignorados por los compiladores e intérpretes.Los comentarios son añadidos usualmente con el
propósito de hacer el código fuente más fácil de entender con vistas a su mantenimiento o reutilización. La
sintaxis y reglas para los comentarios varían y usualmente son definidas en la especificación del lenguaje
de programación.
En Java se pueden utilizar tres tipos de comentarios:
Comentario tradicional estilo C/C++:
Empieza con los caracteres /* y acaba con */.
Pueden ocupar más de una línea y pueden aparecer en cualquier lugar donde pueda aparear un
espacio en blanco. No pueden anidarse.
Ejemplos de comentarios estilo C/C++:
/* Programa Ecuación segundo gradoCalcula las soluciones de una ecuación de segundo grado */
Comentarios de una sola línea:
Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la línea.
No tienen carácter de terminación.
Ejemplos de comentarios de una sola línea:
// Programa Ecuación segundo grado
// Calcula las soluciones de una ecuación de segundo gradoint p; // precio del producto
Comentarios de documentación Javadoc:
Son comentarios especiales para generar documentación del programa.
Comienza con /** y termina con */
Ejemplo de comentario de documentación Javadoc:
/**
*
* @author Enrique
* @version 1.0
*
*/
- ) Variable:Las variables son una de las características fundamentales de los lenguajes de
programación, permiten acceder a la memoria para almacenar y recuperar los datos con los que
nuestros programas van a trabajar. Son por tanto el mecanismo que los lenguajes de
programación ponen a nuestra disposición para acceder a la memoria.
Se trata de un mecanismo de lo más sencillo, sólo tenemos que dar un nombre a nuestras
variables, a partir de ese momento el compilador traducirá de forma automática ese nombre en un
acceso a memoria. Por ejemplo:
//Almacenamos un dato en memoria referenciado por el nombre edad
edad = 5;
//Recuperamos el dato almacenado y lo modificamos
edad = edad + 1;
Java es un lenguaje tipado y nos obliga a declarar nuestras variables antes de poder hacer uso de
ellas, con esta declaración le indicamos al compilador el espacio en memoria que debe de
reservar para almacenar la información.
- ) Operadores: Los operadores son muy similares a los de C++, ya lo advertimos en su momento.
Operadores Aritméticos: Los habituales
 Suma + .
 Resta - .
 Multiplicación * .
 División / .
 Resto de la División % .
Operadores de Asignación: El principal es '=' pero hay más operadores de asignación con
distintas funciones que explicamos brevemente ahora.
 '+=' : op1 += op2 à op1 = op1 + op2
 '-=' : op1 -= op2 à op1 = op1 - op2
 '*=' : op1 *= op2 à op1 = op1 * op2
 '/=' : op1 /= op2 à op1 = op1 / op2
 '%=' : op1 %= op2 à op1 = op1 % op2
Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando.
Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.
 NombreObjetoinstanceofNombreClase
Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una
unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir,
si queremos que incremente o viceversa antes de utilizar o lo contrario.
 '++'
 '--'
Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o
relacción mayor/menor. Devuelven siempre un valor boolean.
 '>': Mayor que
 '<': Menor que
 '==': Iguales
 '¡=': Distintos
 '>=': Mayor o igual que
 '<=': Menor o igual que
Operadores Lógicos: Nos permiten construir expresiones lógicas.
 '&&' : devuelve true si ambos operandos son true.
 '||' : devuelve true si alguno de los operandos son true.
 '!' : Niega el operando que se le pasa.
 '&' : devuelve true si ambos operandos son true, evaluándolos ambos.
 '|' : devuelve true uno de los operandos es true, evaluándolos ambos.
Operador de concatenación con cadena de caracteres '+':
 Por Ejemplo: System.out.println("El total es"+ result +"unidades");
Operadores que actúan a nivel de bits: Son mucho menos utilizados por eso los explicamos mas
por encima.
 '>>': desplazamiento a la derecha de los bits del operando
 '<<': desplazamiento a la izquierda de los bits de operando
 '&': operador and a nivel de bit.
 '|': operador or a nivel de bit
Sentencias de Datos de Entrada y Salida en Java:
La entrada y salida en java se implementa en el paquete java.io y toto el código presentado en
este capítulo se importa, aunque no se incluya la correspondiente sentencia import.
La E/S en java se basa en el concepto de flujo, que es una secuencia ordenada de datos que tienen
una fuente (flujos de entrada) o un destino (flujos de salida). Las clases de E/S aislan a los
programadores de los detalles específicos del sistema de funcionamiento de la máquina, al tiempo
que posibilitan el acceso a recursos del sistema por medio de ficheros o archivos (files).
En este capítulo vamos a ocuparnos de las clases de E/S más sencillas, dejando las otras más
sofisticadas para cuando tengamos necesidad de utilizarlas.
- ) Entrada: La clase abstracta InputStream declara los métodos para leer datos desde una fuente
concreta y es la clasa base de la mayor parte de los flujos de entrada en java.io. Soporta los
métodos siguientes:
Intread() lee un sólo byte de datos y los devuelve en el rango [0..255]. Devuelve -1 cuando se
alcanza el final del flujo y no puede seguir leyendo bytes.
Intread(byte [] buf) lee un array de bytes hasta buf.length. Devuelve el número de bytes leidos o -
1 cuando se llega al final del flujo.
Intread(byte [] buf, int off, intlen) lee len bytes del flujo (o los que pueda) y los coloca a partir de
la posición off del array.
longskip(longcount) salta hasta count bytes de entrada o hasta el final del flujo de entrada,
devolviendo el número de bytes saltados.
Intavailable() devuelve el número de bytes que están disponibles para leerse.
Voidclose() cierra el flujo de entrada que abrió el constructor no-arg, liberando los recursos
asociados a ese flujo. No es necesario invocar este método ya que el flujo se cierra cuando se
destruye el objeto aunque es conveniente hacerlo ya que vuelca el buffer sobre el disco.
El siguiente ejemplo es un programa muy sencillo que hace el eco de la entrada estándar (el
teclado) leyendo los caracteres de 5 en 5 (el return también es un carácter).
- ) Salida: La clase abstracta OutputStream es análoga a InputStream sólo que proporciona
métodos para manejar el flujo de salida. Los métodos que incluye son:
Voidwrite(int b) escribe b como byte, que, aunque sea declarado como int es transformado a byte.
Esto es porque habitualmente es el resultado de una operación previa.
Voidwrite(byte [] buf) escribe un array de bytes.
Voidwrite(byte [] buf, int offset, intcount) escribe un arraybuf de bytes, empezando en la posición
offset y escribiendo count de ellos, deteniendose antes si encuentra el final del array.
Voidflush() vacia el flujo de modo que los bytes que quedaran por escribir son escritos.
Voidclose() cierra el flujo de salida liberando los recursos asociados a ese flujo.
A menos que se diga lo contrario estos métodos lanzan una excepción IOException si detectan
algún error en el flujo de salida.
Estructuras de control:
En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución
de las instrucciones de un programa.
Con las estructuras de control se puede:
De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se
puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que
permite que la programación se rija por los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo
que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje
tiene una sintaxis propia para expresar la estructura.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.
Las estructuras de control determinan la secuencia de ejecución de las sentencias de un
programa.
Las estructuras de control se dividen en tres categorías:
Secuencial
Condicional o Selectiva
Iterativa o Repetitiva.
El orden en que se ejecutan por defecto las sentencias de un programa es secuencial. Esto
significa que las sentencias se ejecutan en secuencia, una después de otra, en el orden en que
aparecen escritas dentro del programa.
La estructura secuencial está formada por una sucesión de instrucciones que se ejecutan en orden
una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter punto y coma (;).
Las instrucciones se suelen agrupar en bloques.
El bloque de sentencias se define por el carácter llave de apertura ({) para marcar el inicio del
mismo, y el carácter llave de cierre (}) para marcar el final.
Ejemplo:
{
instrucción 1;
instrucción 2;
instrucción 3;
}
En Java si el bloque de sentencias está constituido por una única sentencia no es obligatorio el
uso de las llaves de apertura y cierre ({ }), aunque sí recomendable.
Ejemplo de programa Java con estructura secuencial: Programa que lee dos números por teclado
y los muestra por pantalla.
/* Programa que lea dos números por teclado y los muestre por pantalla.
*/
importjava.util.*;
public class Main {
public static void main(String[] args){
//declaración de variables
int n1, n2;
Scanner sc = new Scanner(System.in);
//leer el primer número
System.out.println("Introduce un número entero: ");
n1 = sc.nextInt(); //lee un entero por teclado
//leer el segundo número
System.out.println("Introduce otro número entero: ");
n2 = sc.nextInt(); //lee un entero por teclado
//mostrar resultado
System.out.println("Ha introducido los números: " + n1 + " y " + n2);
}
}
CONCLUCION
El lenguaje Java es una opción conveniente a la hora de trabajar con programación gracias a su
flexibilidad y otros factores, soporta de forma nativa la programación concurrente gracias a la
clase Thread. Dispone de métodos de sincronización y señalización entre hebras gracias a los
cerrojos y a los métodos wait(...), notify() y notifyAll() definidos en la clase Object.
La máquina virtual es la que se encarga de todo esto, soportando la ejecución concurrente de
varios hilos diferentes. Sin embargo, la implementación de los métodos importantes para la
concurrencia no tienen una traducción directa a instrucciones de la máquina virtual, sino que se
implementan mediante métodos nativos que se relacionan directamente con la máquina virtual
para conseguir su objetivo, Dando un tipo de lenguaje orientado a objetos de los mas populares y
utilizados en la actualidad.

Más contenido relacionado

La actualidad más candente

Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaJulio César Rojas Maza
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a ObjetosGabriel Mondragón
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos Marielena Lujano
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosAgapito26
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosalexmoncada21
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosalexis armas
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosronnyme21
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosAlexis Arguello
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetoswladimirclipper
 
diapositiva de base de datos
diapositiva de base de datos diapositiva de base de datos
diapositiva de base de datos thelegendary
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosjuliomancerotroya
 
Programacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaProgramacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaMarcos Acosta
 
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900johnny herrera
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetosguest160f88
 
Programación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosProgramación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosEdward Ropero
 

La actualidad más candente (20)

Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Asignacion2
Asignacion2Asignacion2
Asignacion2
 
Informacion
InformacionInformacion
Informacion
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Java
Java Java
Java
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
diapositiva de base de datos
diapositiva de base de datos diapositiva de base de datos
diapositiva de base de datos
 
Cap3.0
Cap3.0Cap3.0
Cap3.0
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos AcostaProgramacion orientada a objetos by Marcos Acosta
Programacion orientada a objetos by Marcos Acosta
 
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900
Introduccin a-programacin-orientada-a-objetos-oop-clases-y-objetos900
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
 
Programación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetosProgramación i 1. diseño orientado a objetos
Programación i 1. diseño orientado a objetos
 

Similar a Java

Unidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNUnidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNSergio Sanchez
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalJose Angel Rodriguez
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetosAngel Ordoñez
 
Programación estructurada a objetos.pptm
Programación  estructurada  a objetos.pptmProgramación  estructurada  a objetos.pptm
Programación estructurada a objetos.pptmelvis mendieta
 
presentacion-tema-i-unidad-ii.GFGFHFHGppt
presentacion-tema-i-unidad-ii.GFGFHFHGpptpresentacion-tema-i-unidad-ii.GFGFHFHGppt
presentacion-tema-i-unidad-ii.GFGFHFHGpptjorgealfarol
 
LABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN ILABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN ISILVA19_PAMELA
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetosalcrrsc
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetosguest160f88
 
Programación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezProgramación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezErnesto Miranda
 
fundamentos-de-poo.ppt 2.ppt
fundamentos-de-poo.ppt 2.pptfundamentos-de-poo.ppt 2.ppt
fundamentos-de-poo.ppt 2.pptjuan gonzalez
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a ObjetosLiliana Chacan
 
Orientado a objeto
Orientado a objetoOrientado a objeto
Orientado a objetoUnefa
 
Diseña y construye programas orientados a objetos
Diseña y construye programas orientados a objetosDiseña y construye programas orientados a objetos
Diseña y construye programas orientados a objetosJosue Sarabia
 
2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetosjohnny herrera
 

Similar a Java (20)

Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Unidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióNUnidad 1 Mad IntroduccióN
Unidad 1 Mad IntroduccióN
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos original
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Prog.orientada a objeto
Prog.orientada a objetoProg.orientada a objeto
Prog.orientada a objeto
 
Programación estructurada a objetos.pptm
Programación  estructurada  a objetos.pptmProgramación  estructurada  a objetos.pptm
Programación estructurada a objetos.pptm
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
presentacion-tema-i-unidad-ii.GFGFHFHGppt
presentacion-tema-i-unidad-ii.GFGFHFHGpptpresentacion-tema-i-unidad-ii.GFGFHFHGppt
presentacion-tema-i-unidad-ii.GFGFHFHGppt
 
LABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN ILABORATORIO DE PROGRAMACIÓN I
LABORATORIO DE PROGRAMACIÓN I
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Programacion Orientada A Objetos
Programacion Orientada A ObjetosProgramacion Orientada A Objetos
Programacion Orientada A Objetos
 
Programación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinezProgramación orientado a objetos miranda burgos, armas martinez
Programación orientado a objetos miranda burgos, armas martinez
 
fundamentos-de-poo.ppt 2.ppt
fundamentos-de-poo.ppt 2.pptfundamentos-de-poo.ppt 2.ppt
fundamentos-de-poo.ppt 2.ppt
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Curso de Java Intermedio
Curso de Java IntermedioCurso de Java Intermedio
Curso de Java Intermedio
 
Orientado a objeto
Orientado a objetoOrientado a objeto
Orientado a objeto
 
Diseña y construye programas orientados a objetos
Diseña y construye programas orientados a objetosDiseña y construye programas orientados a objetos
Diseña y construye programas orientados a objetos
 
2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos2983238 programacion-orientada-a-objetos
2983238 programacion-orientada-a-objetos
 

Java

  • 1. República bolivariana de Venezuela I.U.P. “Santiago Mariño” Extensión Maturín JAVA COMO PROGRAMACION ORIENTADA A OBJETOS Tutor: Autor: María Aguilera Ángel Laverde 25.503.860 Sección “GG” D/T Cesar Anteliz 19.781.585 Marzo de 2016
  • 2. INTRODUCCION Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportado.
  • 3. ¿Qué es la orientación a objetos? La programación Orientada a Objetos es una metodología que basa la estructura de los programas en torno a los objetos. Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Más que describir cada objeto individualmente, estos lenguajes proveen una construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades. ¿Qué es un objeto? Es una entidad (tangible o intangible) que posee características y acciones que realiza por sí solo o interactuando con otros objetos. Un objeto es una entidad caracterizada por sus atributos propios y cuyo comportamiento está determinado por las acciones o funciones que pueden modificarlo, así como también las acciones que requiere de otros objetos. Un objeto tiene identidad e inteligencia y constituye una unidad que oculta tanto datos como la descripción de su manipulación. Puede ser definido como una encapsulación y una abstracción: una encapsulación de atributos y servicios, y una abstracción del mundo real. Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula datos (atributos) y acciones o funciones que los manejan (métodos). También para el EOO un objeto se define como una instancia o particularización de una clase. Los objetos de interés durante el desarrollo de software no sólo son tomados de la vida real (objetos visibles o tangibles), también pueden ser abstractos. En general son entidades que juegan un rol bien definido en el dominio del problema. Un libro, una persona, un carro, un polígono, son apenas algunos ejemplos de objeto. Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos que son sus clientes. Cada objeto puede ser a la vez proveedor y cliente. De allí que un programa pueda ser visto como un conjunto de relaciones entre proveedores clientes. Los servicios ofrecidos por los objetos son de dos tipos: 1.- Los datos, que llamamos atributos.
  • 4. 2.- Las acciones o funciones, que llamamos métodos. Características Generales Un objeto se identifica por un nombre o un identificador único que lo diferencia de los demás. Ejemplo: el objeto Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros número 25789. En este caso el identificador que los hace únicos es el número de la cuenta. -)Un objeto posee estados: El estado de un objeto está determinado por los valores que poseen sus atributos en un momento dado. -)Un objeto tiene un conjunto de métodos: El comportamiento general de los objetos dentro de un sistema se describe o representa mediante sus operaciones o métodos. Los métodos se utilizarán para obtener o cambiar el estado de los objetos, así como para proporcionar un medio de comunicación entre objetos. -)Un objeto tiene un conjunto de atributos: Los atributos de un objeto contienen valores que determinan el estado del objeto durante su tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los campos de un registro). -)Los objetos soportan encapsulamiento: La estructura interna de un objeto normalmente está oculta a los usuarios del mismo. Los datos del objeto están disponibles solo para ser manipulados por los propios métodos del objeto. El único mecanismo que lo conecta con el mundo exterior es el paso de mensajes. -)Un objeto tiene un tiempo de vida dentro del programa o sistema que lo crea y utiliza: Para ser utilizado en un algoritmo el objeto debe ser creado con una instrucción particular (New o Nuevo) y al finalizar su utilización es destruido con el uso de otra instrucción o de manera automática.
  • 5. ¿Qué es una clase? La clase es la unidad de modularidad en el EOO. La tendencia natural del individuo es la de clasificar los objetos según sus características comunes (clase). Por ejemplo, las personas que asisten a la universidad se pueden clasificar (haciendo abstracción) en estudiante, docente, empleado e investigador. La clase puede definirse como la agrupación o colección de objetos que comparten una estructura común y un comportamiento común. Es una plantilla que contiene la descripción general de una colección de objetos. Consta de atributos y métodos que resumen las características y el comportamiento comunes de un conjunto de objetos. Todo objeto (también llamado instancia de una clase), pertenece a alguna clase. Mientras un objeto es una entidad concreta que existe en el tiempo y en el espacio, una clase representa solo una abstracción. Todos aquellos objetos que pertenecen a la misma clase son descritos o comparten el mismo conjunto de atributos y métodos. Todos los objetos de una clase tienen el mismo formato y comportamiento, son diferentes únicamente en los valores que contienen sus atributos. Todos ellos responden a los mismos mensajes. Su sintaxis algorítmica es: Clase <Nombre de la Clase> ... FClase <Nombre de la Clase>;
  • 6. Características Generales -)Una clase es un nivel de abstracción alto: La clase permite describir un conjunto de características comunes para los objetos que representa. Ejemplo: La clase Avión se puede utilizar para definir los atributos (tipo de avión, distancia, altura, velocidad de crucero, capacidad, país de origen, etc.) y los métodos (calcular posición en el vuelo, calcular velocidad de vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos particulares Avión que representa. -)Un objeto es una instancia de una clase: Cada objeto concreto dentro de un sistema es miembro de una clase específica ytiene el conjunto de atributos y métodos especificados en la misma.ƒ -)Las clases se relacionan entre sí mediante una jerarquía: Entre las clases se establecen diferentes tipos de relaciones de herencia, en las cuales la clase hija (subclase) hereda los atributos y métodos de la clase padre (superclase), además de incorporar sus propios atributos y métodos. Ejemplos, Superclase: Clase Avión Subclases de Avión: Clase Avión Comercial, Avión de Combate, Avión de Transporte -)Los nombres o identificadores de las clases deben colocarse en singular (clase Animal, clase Carro, clase Alumno). Principios de la programación orientada a objetos: Un lenguaje orientado a objetos tiene tres Principios básicos: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear es usualmente la herencia.
  • 7. Características de la programación orientada a objetos: Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características siguientes son las más importantes: -)Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. -)Encapsulamiento: Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente. -)Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica.
  • 8. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. -)Herencia: Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; siendo de alta complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de datos. -)Modularidad: Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas. -)Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
  • 9. -)Recolección de basura: La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente. Historia de Java: Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo. El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java. Es frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus diseñadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, JustAnother Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es la de que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras.3 Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de tres días entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo
  • 10. reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más tarde sería conocido como HotJava. En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft para que se encargase del desarrollo tecnológico. [1] Dos semanas más tarde la primera versión de Java fue publicada. La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma. El entorno de ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web. Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar.4 En el 2005 se calcula en 4,5 millones el número de desarrolladores y 2.500 millones de dispositivos habilitados con tecnología Java. ¿Qué es JDK? Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en Java. Puede instalarse en una computadora local o en una unidad de red. En la unidad de red se pueden tener las herramientas distribuidas en varias computadoras y trabajar como una sola aplicación.
  • 11. Los programas más importantes que se incluyen son: Javac: es el compilador de JAVA. Java: es el intérprete de JAVA. Javadoc: genera la documentación de las clases java de un programa. Javah: que es un fichero de cabecera para escribir métodos nativos. Entre otro. ¿Qué es JRE? Java RuntimeEnvironment o JRE es un conjunto de utilidades que permite la ejecución de programas Java. En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa como un "intermediario" entre el sistema operativo y Java. La JVM es el programa que ejecuta el código Java previamente compilado (bytecode) mientras que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto. Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un compilador para Java. El compilador de java: Un compilador java, es un programa que transforma código fuente escrito en java a un código neutral a la plataforma conocida como java bytecode (Aunque existen compiladores que transforman el código fuente java a algún código nativo). El compilador más conocido es el "javac" que es parte del JDK de Oracle. La máquina virtual de java:
  • 12. Una máquina virtual Java (en inglés Java Virtual Machine, JVM) es una máquina virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por el compilador del lenguaje Java. El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por Sun. Anatomía de un programa en Java: Toda aplicación de consola en Java contiene una clase principal con un método (o función) main, al igual que en C++, la función main es lo primero que se ejecuta cuando se inicia la aplicación desde la línea de comandos. De esta forma podemos deducir que cualquier llamado, declaración o método que no sea llamado de manera directa o indirecta desde el método main nunca se ejecutará. En Java el método main recibe como argumento un arreglo de String. Este arreglo contiene los argumentos enviados por la línea de comandos para la invocación del programa. La estructura básica de un programa desarrollado usando Java es la siguiente: Línea 1: La primer línea de nuestro código ha declarado una clase llamada "nombre_clase", la cual es pública (public), esto quiere decir que tendrás acceso a dicha clase, desde cualquier parte del código sin ningún tipo de complicaciones, ahora, lógicamente tú le podrás poner el nombre que te guste más, como veras por la margen que tiene el código, dentro de la clase "nombre_clase" hay otras líneas, las líneas 2, 3, 4 y 5, esto simplemente le da un poco más de orden a nuestro programa, nuestra línea 1, también tiene una llave abriendo "{", esto quiere decir
  • 13. que todo lo que halla después de esta llave forma parte de la clase "nombre_clase" e indica el comienzo de las líneas de sentencia de esta, en este caso, esta la declaración de la función main(). Línea 2: La línea numero dos contiene la declaración de la función (o método) main, el cual es publica y además hay algo especial, es del tipo void (una función puede tomar varios valores, entero, decimal, cadena de texto, entre otros) el poner void, estamos queriendo decir que la función main no retornará nada al finalizar, si se le pusiera por ejemplo int (entero) entonces al final de la función, esta debería retornar algún numero o variable de tipo entero. Nuestra línea dos, también tiene un argumento para la función main, es lo que está dentro de los paréntesis "Stringargs[]", esto quiere decir que la función main, debe recibir un argumento el cual es de tipo String y es además un vector, luego hablare de los tipos de datos, no te preocupes mucho por esto. Finalmente esta la llave abriendo "{".esto quiere decir que lo que halla después de esta llave forma parte de las sentencias (lo que nuestro programa realizará durante su ejecución). Línea 3: La línea tres contiene el bloque de sentencias, es decir, las líneas de código que nuestro programa seguirá durante su ejecución, es de notar que cada sentencia termina con punto y coma ";" para dar un poco de claridad, se entiende como línea de sentencia, a las líneas de código que en ellas contienen la declaración de alguna variable, o alguna operación,( suma, resta, división, etc.) o cualquier acción, como modificar, asignar, o eliminar algo. Línea 4: La línea número cuatro contiene una llave cerrando "}" eso nos indica que en esta línea termina la ejecución de alguna función (para identificar esta función que se cierra, sigue la identificación u seguramente sabrás cual es la que estamos cerrando) pues bien, habrás notado que la función que esta llave está cerrando es la función main(), esto quiere decir que todo lo que halla después de esta llave formará parte de la clase "nombre_clase" pero no será ejecutado ni formará parte de la función main. Línea 5: La línea cinco, nos indica al igual que la cuatro el final de una función o en este caso de una clase, esta línea 5 entonces nos indica el final de la clase “nombre_clase”. Tipos de programas que pueden hacerse en Java: Actualmente cada vez más la tecnología invade más campos de nuestra vida, estando las personas cada vez más familiarizados con términos informáticos, entre ellos, como, los lenguajes de
  • 14. programación. Cualquier persona que ha usado alguna vez un ordenador o sistema le resulta familiar alguno de estos términos relacionados a los tipos de lenguajes de programación: C, Pascal, Cobol, Visual Basic, Java, Fortran, etc. En la actualidad existen varios tipos de lenguajes de programación. Todos estos tipos de lenguaje pueden confundir o hacer dudar a cualquier persona que comienza aprender un lenguaje, quien tras hallar varias posibilidades o posibles alternativas no sabe cuál de ellos escoger. El motivo de esta gran variedad de lenguajes es que cada uno ha sido creado para una determinada función, está especialmente diseñado para facilitar la programación de un determinado tipo de problemas, para garantizar seguridad de las aplicaciones, para obtener una mayor facilidad de programación, para conseguir un mayor aprovechamiento de los recursos del ordenador y han sido creados o modificados por diferentes personas o empresas. En Java se pueden crear básicamente dos tipos de programas: applets y aplicaciones. Los applets son programas Java que se transmiten por Internet y que se ejecutan incrustados en una página Web. Para ejecutar un applet se requiere tener instalada una versión de la JVM. Aquí se muestra un applet en ejecución. Note que un applet no tiene ventana.
  • 15. Las aplicaciones son programas independientes de un navegador Web; pero que, para ser ejecutados, también necesitan de una versión de la JVM. En la Figura 1.3 se muestra una aplicación en ejecución. Note que la aplicación tiene su propia ventana. Entornos de desarrollo integrado (IDE), para Java: Un ambiente de desarrollo integrado o entorno de desarrollo interactivo, en inglés IntegratedDevelopmentEnvironment (IDE), es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software. Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDE tienen auto-completado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un IDE y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos. El kit de desarrollo (JDK) no incluye ningún editor con el que crear nuestros programas. Podríamos instalar un "editor genérico", porque tenemos muchos gratuitos y de calidad, como Notepad++. Aun así, si nuestro equipo es razonablemente moderno, puede ser preferible instalar un entorno integrado.
  • 16. Elementos de un programa Java: -)Comentarios:En la programación de computadoras, un comentario es una construcción del lenguaje de programación destinada a incrustar anotaciones legibles al programador en el código fuente de un Programa informático. Estas anotaciones son potencialmente significativas para los programadores, pero usualmente ignorados por los compiladores e intérpretes.Los comentarios son añadidos usualmente con el propósito de hacer el código fuente más fácil de entender con vistas a su mantenimiento o reutilización. La sintaxis y reglas para los comentarios varían y usualmente son definidas en la especificación del lenguaje de programación. En Java se pueden utilizar tres tipos de comentarios: Comentario tradicional estilo C/C++: Empieza con los caracteres /* y acaba con */. Pueden ocupar más de una línea y pueden aparecer en cualquier lugar donde pueda aparear un espacio en blanco. No pueden anidarse. Ejemplos de comentarios estilo C/C++: /* Programa Ecuación segundo gradoCalcula las soluciones de una ecuación de segundo grado */ Comentarios de una sola línea: Comienzan con una doble barra ( // ) y se pueden extender hasta el final de la línea. No tienen carácter de terminación. Ejemplos de comentarios de una sola línea: // Programa Ecuación segundo grado // Calcula las soluciones de una ecuación de segundo gradoint p; // precio del producto Comentarios de documentación Javadoc:
  • 17. Son comentarios especiales para generar documentación del programa. Comienza con /** y termina con */ Ejemplo de comentario de documentación Javadoc: /** * * @author Enrique * @version 1.0 * */ - ) Variable:Las variables son una de las características fundamentales de los lenguajes de programación, permiten acceder a la memoria para almacenar y recuperar los datos con los que nuestros programas van a trabajar. Son por tanto el mecanismo que los lenguajes de programación ponen a nuestra disposición para acceder a la memoria. Se trata de un mecanismo de lo más sencillo, sólo tenemos que dar un nombre a nuestras variables, a partir de ese momento el compilador traducirá de forma automática ese nombre en un acceso a memoria. Por ejemplo: //Almacenamos un dato en memoria referenciado por el nombre edad edad = 5; //Recuperamos el dato almacenado y lo modificamos edad = edad + 1; Java es un lenguaje tipado y nos obliga a declarar nuestras variables antes de poder hacer uso de ellas, con esta declaración le indicamos al compilador el espacio en memoria que debe de reservar para almacenar la información.
  • 18. - ) Operadores: Los operadores son muy similares a los de C++, ya lo advertimos en su momento. Operadores Aritméticos: Los habituales  Suma + .  Resta - .  Multiplicación * .  División / .  Resto de la División % . Operadores de Asignación: El principal es '=' pero hay más operadores de asignación con distintas funciones que explicamos brevemente ahora.  '+=' : op1 += op2 à op1 = op1 + op2  '-=' : op1 -= op2 à op1 = op1 - op2  '*=' : op1 *= op2 à op1 = op1 * op2  '/=' : op1 /= op2 à op1 = op1 / op2  '%=' : op1 %= op2 à op1 = op1 % op2 Operadores Unarios: El mas (+) y el menos (-). Para cambiar el signo del operando. Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.  NombreObjetoinstanceofNombreClase Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.  '++'  '--' Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o relacción mayor/menor. Devuelven siempre un valor boolean.
  • 19.  '>': Mayor que  '<': Menor que  '==': Iguales  '¡=': Distintos  '>=': Mayor o igual que  '<=': Menor o igual que Operadores Lógicos: Nos permiten construir expresiones lógicas.  '&&' : devuelve true si ambos operandos son true.  '||' : devuelve true si alguno de los operandos son true.  '!' : Niega el operando que se le pasa.  '&' : devuelve true si ambos operandos son true, evaluándolos ambos.  '|' : devuelve true uno de los operandos es true, evaluándolos ambos. Operador de concatenación con cadena de caracteres '+':  Por Ejemplo: System.out.println("El total es"+ result +"unidades"); Operadores que actúan a nivel de bits: Son mucho menos utilizados por eso los explicamos mas por encima.  '>>': desplazamiento a la derecha de los bits del operando  '<<': desplazamiento a la izquierda de los bits de operando  '&': operador and a nivel de bit.  '|': operador or a nivel de bit Sentencias de Datos de Entrada y Salida en Java: La entrada y salida en java se implementa en el paquete java.io y toto el código presentado en este capítulo se importa, aunque no se incluya la correspondiente sentencia import. La E/S en java se basa en el concepto de flujo, que es una secuencia ordenada de datos que tienen una fuente (flujos de entrada) o un destino (flujos de salida). Las clases de E/S aislan a los
  • 20. programadores de los detalles específicos del sistema de funcionamiento de la máquina, al tiempo que posibilitan el acceso a recursos del sistema por medio de ficheros o archivos (files). En este capítulo vamos a ocuparnos de las clases de E/S más sencillas, dejando las otras más sofisticadas para cuando tengamos necesidad de utilizarlas. - ) Entrada: La clase abstracta InputStream declara los métodos para leer datos desde una fuente concreta y es la clasa base de la mayor parte de los flujos de entrada en java.io. Soporta los métodos siguientes: Intread() lee un sólo byte de datos y los devuelve en el rango [0..255]. Devuelve -1 cuando se alcanza el final del flujo y no puede seguir leyendo bytes. Intread(byte [] buf) lee un array de bytes hasta buf.length. Devuelve el número de bytes leidos o - 1 cuando se llega al final del flujo. Intread(byte [] buf, int off, intlen) lee len bytes del flujo (o los que pueda) y los coloca a partir de la posición off del array. longskip(longcount) salta hasta count bytes de entrada o hasta el final del flujo de entrada, devolviendo el número de bytes saltados. Intavailable() devuelve el número de bytes que están disponibles para leerse. Voidclose() cierra el flujo de entrada que abrió el constructor no-arg, liberando los recursos asociados a ese flujo. No es necesario invocar este método ya que el flujo se cierra cuando se destruye el objeto aunque es conveniente hacerlo ya que vuelca el buffer sobre el disco. El siguiente ejemplo es un programa muy sencillo que hace el eco de la entrada estándar (el teclado) leyendo los caracteres de 5 en 5 (el return también es un carácter).
  • 21. - ) Salida: La clase abstracta OutputStream es análoga a InputStream sólo que proporciona métodos para manejar el flujo de salida. Los métodos que incluye son: Voidwrite(int b) escribe b como byte, que, aunque sea declarado como int es transformado a byte. Esto es porque habitualmente es el resultado de una operación previa. Voidwrite(byte [] buf) escribe un array de bytes. Voidwrite(byte [] buf, int offset, intcount) escribe un arraybuf de bytes, empezando en la posición offset y escribiendo count de ellos, deteniendose antes si encuentra el final del array. Voidflush() vacia el flujo de modo que los bytes que quedaran por escribir son escritos. Voidclose() cierra el flujo de salida liberando los recursos asociados a ese flujo. A menos que se diga lo contrario estos métodos lanzan una excepción IOException si detectan algún error en el flujo de salida. Estructuras de control: En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else) De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case) Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
  • 22. Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until) Ejecutar un grupo de sentencias un número determinado de veces (For-Next) Todas las estructuras de control tienen un único punto de entrada. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación estructurada. Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura. Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados. Las estructuras de control determinan la secuencia de ejecución de las sentencias de un programa. Las estructuras de control se dividen en tres categorías: Secuencial Condicional o Selectiva Iterativa o Repetitiva. El orden en que se ejecutan por defecto las sentencias de un programa es secuencial. Esto significa que las sentencias se ejecutan en secuencia, una después de otra, en el orden en que aparecen escritas dentro del programa. La estructura secuencial está formada por una sucesión de instrucciones que se ejecutan en orden una a continuación de la otra. Cada una de las instrucciones están separadas por el carácter punto y coma (;). Las instrucciones se suelen agrupar en bloques. El bloque de sentencias se define por el carácter llave de apertura ({) para marcar el inicio del mismo, y el carácter llave de cierre (}) para marcar el final.
  • 23. Ejemplo: { instrucción 1; instrucción 2; instrucción 3; } En Java si el bloque de sentencias está constituido por una única sentencia no es obligatorio el uso de las llaves de apertura y cierre ({ }), aunque sí recomendable. Ejemplo de programa Java con estructura secuencial: Programa que lee dos números por teclado y los muestra por pantalla. /* Programa que lea dos números por teclado y los muestre por pantalla. */ importjava.util.*; public class Main { public static void main(String[] args){ //declaración de variables int n1, n2; Scanner sc = new Scanner(System.in); //leer el primer número System.out.println("Introduce un número entero: "); n1 = sc.nextInt(); //lee un entero por teclado
  • 24. //leer el segundo número System.out.println("Introduce otro número entero: "); n2 = sc.nextInt(); //lee un entero por teclado //mostrar resultado System.out.println("Ha introducido los números: " + n1 + " y " + n2); } }
  • 25. CONCLUCION El lenguaje Java es una opción conveniente a la hora de trabajar con programación gracias a su flexibilidad y otros factores, soporta de forma nativa la programación concurrente gracias a la clase Thread. Dispone de métodos de sincronización y señalización entre hebras gracias a los cerrojos y a los métodos wait(...), notify() y notifyAll() definidos en la clase Object. La máquina virtual es la que se encarga de todo esto, soportando la ejecución concurrente de varios hilos diferentes. Sin embargo, la implementación de los métodos importantes para la concurrencia no tienen una traducción directa a instrucciones de la máquina virtual, sino que se implementan mediante métodos nativos que se relacionan directamente con la máquina virtual para conseguir su objetivo, Dando un tipo de lenguaje orientado a objetos de los mas populares y utilizados en la actualidad.