Upload
joel-david-navas-pazmino
View
159
Download
0
Embed Size (px)
Citation preview
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 1/220
1
MARZO – AGOSTO
2012
DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
PROGRAMACIÓN IIJosé Luis Carrillo Medina
ESCUELA POLITÉCNICA DEL EJÉRCITOEXTENSIÓN LATACUNGA
ESPE
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 2/220
• Conocer los conceptos básicos de los programasorientados a objetos (POO).
• Conocer herramientas de desarrollo de POO: Java, jdk, Netbeans, Visual J++.
• Implementar programas para Windows en Java,utilizando jsdk, Netbeans.
Introducción
Objetivos
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 3/220
3
Introducción
Procedimiento de Evaluación
Como evaluación del curso se realizarán las siguientes actividades:
Seguimiento:Talleres en clase o trabajos para entregar
en la clase siguiente (La entrega de todoslos trabajos se hará en clases)
30%
Trabajo Final:Desarrollo de un Programa
30%
Prueba Final: 40%
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 4/220
4
Introducción Bibliografía
• Java2 – Iniciación y ReferenciaJesús Sánchez Allende. Editorial Osborne / McGraw-Hill 2001
• Manual de Java Patrick Naughton. Editorial Osborne / McGraw-Hill 2001
• Manuales y Tutoriales de Java en Internet
• Java –
How to program - Fourth EditionDeitel & Deitel, Prentice Hall 2001
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 5/220
5
Introducción
Contenido
• Java• Instalación de entornos de desarrollo
• Tipos Primitivos y variables en Java• Operadores en Java
• Estructuras de Control• Clases en Java• Polimorfismo
• Herencia
• Paquetes• Hilos de control
• Appelts
• Introducción a POO
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 6/220
• Probablemente este es el lugar más adecuado paraexplicar cómo se obtiene un archivo ejecutable a partir deun programa Java.
• Para empezar necesitamos un poco de vocabulario técnico. Veremos algunos conceptos que se manejanfrecuentemente en cualquier curso de programación ysobre todo en manuales de C, C++ y Java.
Introducción
Proceso para la obtención de un programa ejecutable
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 7/220
• Los programas C, C++ y Java se escriben con la ayuda deun editor de textos del mismo modo que cualquier textocorriente. Los archivos que contiene programas en C, C++o Java en forma de texto se conocen como archivofuente, y el texto del programa que contiene se conocecomo programa fuente. Nosotros siempre escribiremosprogramas fuente y los guardaremos en archivos fuente.
Introducción
Archivos fuente y programa o código fuente:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 8/220
• Los programas fuente no pueden ejecutarse. Son archivosde texto, pensados para que los comprendan los sereshumanos, pero incomprensibles para los ordenadores.
• Para conseguir un programa ejecutable hay que seguiralgunos pasos. El primero es compilar o traducir elprograma fuente a su código objeto equivalente. Este es eltrabajo que hacen los compiladores de C, C++ y Java.Consiste en obtener un archivo equivalente a nuestro
programa fuente
Introducción
Archivos objeto, código objeto y compiladores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 9/220
• comprensible para el ordenador, este archivo se conocecomo archivo objeto, y su contenido como código objeto.
• Los compiladores son programas que leen un archivo detexto que contiene el programa fuente y generan unarchivo que contiene el código objeto.
• El código objeto no tiene ningún significado para los sereshumanos, al menos no directamente. Además es diferentepara cada ordenador y para cada sistema operativo. Por lo
tanto existen diferentes compiladores para diferentessistemas operativos y para cada tipo de ordenador.
Introducción
Archivos objeto, código objeto y compiladores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 10/220
• Junto con los compiladores de C, C++ y Java, se incluyen oimportan ciertos archivos llamados librerías. Las libreríascontienen el código objeto de muchos programas quepermiten hacer cosas comunes, como leer el teclado,
escribir en la pantalla, manejar números, realizar funcionesmatemáticas, etc. Las librerías están clasificadas por el tipode trabajos que hacen, hay librerías de entrada y salida,matemáticas, de manejo de memoria, de manejo de textos,
etc.
Introducción
Librerías:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 11/220
• Hay un conjunto de librerías muy especiales, que seincluyen con todos los compiladores de C y de C++. Sonlas librerías ANSI o estándar. Pero también hay librerías noestándar, y dentro de estas las hay públicas y comerciales.
En este curso sólo usaremos librerías ANSI.
Archivos ejecutables y enlazadores:• Cuando obtenemos el archivo objeto, aún no hemos
terminado el proceso. El archivo objeto, a pesar de sercomprensible para el ordenador, no puede ser ejecutado.Hay varias razones para eso:
Introducción
Librerías:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 12/220
• 1. Nuestros programas usaran, en general, funciones queestarán incluidas en librerías externas, ya sean ANSI o no.Es necesario combinar nuestro archivo objeto con esaslibrerías para obtener un ejecutable.
• 2. Muy a menudo, nuestros programas estaráncompuestos por varios archivos fuente, y de cada uno deellos se obtendrá un archivo objeto. Es necesario unir
todos los archivos objeto, más las librerías en un únicoarchivo ejecutable.
Introducción
Archivos ejecutables y enlazadores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 13/220
• 3. Hay que dar ciertas instrucciones al ordenador paraque cargue en memoria el programa y los datos, y paraque organice la memoria de modo que se disponga deuna pila de tamaño adecuado, etc. La pila es una zona de
memoria que se usa para que el programa intercambiedatos con otros programas o con otras partes del propioprograma. Veremos esto con más detalle durante el curso.
• Existe un programa que hace todas estas cosas, se tratadel "link", o enlazador. El enlazador toma
Introducción
Archivos ejecutables y enlazadores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 14/220
• todos los archivos objeto que componen nuestroprograma, los combina con los archivos de librería que seanecesario y crea un archivo ejecutable.
• Una vez terminada la fase de enlazado, ya podremos
ejecutar nuestro programa.
Errores:• Por supuesto, somos humanos, y por lo tanto nos
equivocamos. Los errores de programación puedenclasificarse en varios tipos, dependiendo de la fase en quese presenten.
Introducción
Archivos ejecutables y enlazadores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 15/220
• Errores de sintaxis: son errores en el programa fuente.Pueden deberse a palabras reservadas mal escritas,expresiones erróneas o incompletas, variables que no
existen, etc. Los errores de sintaxis se detectan en la fasede compilación. El compilador, además de generar elcódigo objeto, nos dará una lista de errores de sintaxis.De hecho nos dará sólo una cosa o la otra, ya que si hay
errores no es posible generar un código objeto.
Introducción
Errores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 16/220
• Avisos: además de errores, el compilador puede dartambién avisos (warnings). Los avisos son errores, perono lo suficientemente graves como para impedir la
generación del código objeto. No obstante, es importantecorregir estos avisos, ya que el compilador tiene quedecidir entre varias opciones, y sus decisiones no tienenpor qué coincidir con lo que nosotros pretendemos, se
basan en las directivas que los creadores del compiladordecidieron durante su creación.
Introducción
Avisos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 17/220
• Errores de enlazado: el programa enlazador tambiénpuede encontrar errores. Normalmente se refieren afunciones que no están definidas en ninguno de losarchivos objetos ni en las librerías. Puede que hayamos
olvidado incluir alguna librería, o algún archivo objeto, opuede que hayamos olvidado definir alguna función ovariable, o lo hayamos hecho mal.
• Errores de ejecución: incluso después de obtener un
archivo ejecutable, es posible que se produzcan errores.
Introducción
Errores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 18/220
• En el caso de los errores de ejecución normalmente noobtendremos mensajes de error, sino que simplemente elprograma terminará bruscamente. Estos errores son más
difíciles de detectar y corregir. Existen programasauxiliares para buscar estos errores, son los llamadosdepuradores (debuggers). Estos programas permitendetener la ejecución de nuestros programas, inspeccionarvariables y ejecutar nuestro programa paso a paso. Esto
resulta útil para detectar excepciones, errores sutiles, yfallos que se presentan dependiendo de circunstanciasdistintas.
Introducción
Errores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 19/220
• Errores de diseño: finalmente los errores más difíciles decorregir y prevenir. Si nos hemos equivocado al diseñarnuestro algoritmo, no habrá ningún programa que nos
pueda ayudar a corregir los nuestros. Contra estos erroressólo cabe practicar y pensar.
Introducción
Errores:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 20/220
• La respuesta es muy sencilla: TODOS.
• Tanto C como C++ y Java son lenguajes de programaciónde propósito general. Todo puede programarse con ellos,desde sistemas operativos y compiladores hastaaplicaciones de bases de datos y procesadores de texto,pasando por juegos, aplicaciones a medida, etc.
Introducción
¿Qué clase de programas y aplicaciones se pueden crearusando C, C++ y Java? :
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 21/220
• Oirás y leerás mucho sobre este tema. Sobre tododiciendo que estos lenguajes son complicados y querequieren páginas y páginas de código para hacer cosas
que con otros lenguajes se hacen con pocas líneas. Estoes una verdad a medias. Es cierto que un listado completode un programa en C, C++ o Java para gestión de basesde datos (por poner un ejemplo) puede requerir varios
miles de líneas de código, y que su equivalente en VisualBasic sólo requiere unos pocos cientos. Pero detrás decada línea de estos compiladores de alto nivel hay
Introducción
¿Qué clase de programas y aplicaciones se pueden crearusando C, C++ y Java? :
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 22/220
cientos de líneas de código en C, la mayor parte de estoscompiladores están respaldados por enormes libreríasescritas en C. Nada te impide a ti, como programador,
usar librerías, e incluso crear las tuyas propias.• Una de las propiedades de C, C++ y Java es la
reutilización del código en forma de librerías de usuario.Después de un tiempo trabajando, todos los
programadores desarrollan sus propias librerías paraaquellas cosas que hacen frecuentemente. Y además,raramente piensan en ello, se limitan a usarlas.
Introducción
¿Qué clase de programas y aplicaciones se pueden crearusando C, C++ y Java? :
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 23/220
• Además, los programas escritos en C, C++ o Java tienenotras ventajas sobre el resto. Con la excepción delensamblador, generan los programas más compactos y
rápidos. El código es transportable, es decir, un programa ANSI en C o C++ o Java podrá ejecutarse en cualquiermáquina y bajo cualquier sistema operativo. Y si esnecesario, proporcionan un acceso a bajo nivel de
hardware sólo igualado por el ensamblador.
Introducción
¿Qué clase de programas y aplicaciones se pueden crearusando C, C++ y Java? :
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 24/220
Otra ventaja importante, C tiene más de 50 años de vida,C++ casi 40, y Java 20 y no parece que su uso se debilitedemasiado. No se trata de lenguajes de moda, y
probablemente les quede aún mucha vida por delante.
Por último, existen varios compiladores de C, C++ y Javagratuitos, o bajo la norma GNU, así como cientos de
librerías de todo propósito y miles de programadores entodo el mundo, muchos de ellos dispuestos a compartir suexperiencia y conocimientos.
Introducción
¿Qué clase de programas y aplicaciones se pueden crearusando C, C++ y Java? :
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 25/220
• La Programación Orientada a Objetos (POO) es una nuevaforma de programación que se utiliza para desarrollarprogramas más eficientes y con gran fiabilidad.
• Para ello quizá sea necesario dejar a un lado las ideas de la
programación tradicional, en la que los datos se tratanseparadamente de los procedimientos que actúan comouna “caja negra”, y adentrarse en aquellas orientadas aobjetos, en la que los programas se dividen en “entidades” independientes conocidas como objetos, que contienendatos y procedimientos que actúan sobre esos datos.Dichos objetos se comunican entre sí por medio de “métodos” a través de “mensajes” que son acciones quedebe ejecutar el objeto.
Introducción
Introducción a los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 26/220
• Objetos físicos (un automóvil, un avión), elementos deinterfaces gráficas de usuario (ventanas, botones, íconos),estructuras de datos (arrays, pilas, colas), tipos de datosdefinidos por el usuario (números complejos, puntos de un
plano), etc.
Introducción
Introducción a los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 27/220
Lenguaje ensamblador: en los primeros computadores laprogramación se realizaba con instrucciones de “lenguaje de máquina” en código binario; al aumentar la complejidadde los programas se creó un traductor llamado
“ensamblador” que convertía a lenguaje de máquina.
Lenguaje de alto nivel: con ellos se pudieron resolverproblemas un poco más complejos, pero con ellos se
dificulta la creación de programas más grandes yelaborados.
Introducción
Evolución de los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 28/220
Lenguaje de procedimientos: el modelo utilizado en estoslenguajes es la “caja negra”, donde cada parte de unprograma se cambia completamente por una caja negra oprocedimiento. Tales procedimientos tienen más
importancia que los datos; mientras que ciertos datos seintroducen, otros salen de él. Estos lenguajes se utilizanpara proyectos limitados, pero aparecen dificultades amedida que aumenta la complejidad en los programas.
Introducción
Evolución de los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 29/220
Lenguaje estructurado: estos lenguajes tienen lassiguientes características: fácil lectura, fácil modificación yfácil detección de errores; de esta manera se salvaron losprogramas de “lenguaje de procedimiento” para su empleo
en grandes proyectos. Sin embargo, en este tipo delenguaje, se necesita gran prudencia y planificación paraque un proyecto se ensamble correctamente, sin errores ysea fácil de mantener, pero esta técnica de programaciónno puede ser utilizada cuando un proyecto alcanza ciertotamaño y complejidad.
Introducción
Evolución de los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 30/220
Lenguaje orientado a objetos: estos lenguajes tienen unnuevo medio de organizar código y datos para realizar uncontrol creciente de la complejidad del proceso dedesarrollo del software, ya que las propiedades
fundamentales de la POO son: herencia, encapsulación ypolimorfismo, junto con los conceptos de: objetos, clases,métodos y mensajes.
Introducción
Evolución de los Lenguajes Orientados a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 31/220
Ventajas.• Un lenguaje de programación que soporta POO beneficia el
desarrollo de software de programas extensos ysofisticados, ya que ofrece una forma más natural de
desarrollo de modelos utilizando clases.• Un lenguaje con POO tiene menos líneas de código, menos
sentencias de bifurcación, y módulos que son máscomprensibles porque reflejan de una forma más clara la
relación existente entre cada concepto a desarrollar.
Introducción
Ventajas y Desventajas de los Lenguajes Orientados aObjetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 32/220
Ventajas.
• La herencia, que es una característica exclusiva de la POO,es una de las claves más importantes para la reutilizaciónde código, que a su vez reduce el código de programación,
y para la creación de programas extensibles.• En la POO no se necesita examinar todo el código fuente
para ver si un cambio local afecta a otras partes, porquese utiliza el concepto de “encapsulamiento” de los objetos.
Introducción
Ventajas y Desventajas de los Lenguajes Orientados aObjetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 33/220
Desventajas.
• Obliga a usuario a conocer una amplia librería de clasesantes de empezar a manipular un lenguaje orientado aobjetos.
• La ejecución de un programa orientado a objetos es máslenta, porque se aprovecha todos los recursos de laplataforma utilizada para el desarrollo de dicho programa.
Introducción
Ventajas y Desventajas de los Lenguajes Orientados aObjetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 34/220
• Los objetos son paquetes compactos que no se rompen alañadir otros objetos, por lo que si existen errores en elnuevo objeto estos serán aislados del resto del programa.
• Un lenguaje orientado a objetos soporta datos abstractos(clases), herencia y polimorfismo.
• Mediante la herencia los objetos pueden adquirir laspropiedades de otros objetos ya existentes y añadir suspropias características.
• La abstracción y ocultación de datos reduce ladependencia de los módulos.
Introducción
Característica de la Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 35/220
• Los datos internos que definen el estado actual del objetoy los métodos que definen su comportamiento estánencapsulados.
• Los objetos pueden comunicarse entre sí por medio de
mensajes a través de sus métodos.
Introducción
Característica de la Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 36/220
Los lenguajes de programación orientados a objetos sedividen en puros e híbridos.
• Los lenguajes de programación orientados a objetos purosson aquellos que tienen las orientadas a objetos como:Java, Smalltalk y Eiffel.
• Los lenguajes de programación orientados a objetoshíbridos son aquellos que añaden las propiedades de
orientación a objetos a las propiedades intrínsecas de tipoprocedimental como C++ y Objective C.
Introducción
Los Lenguajes de Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 37/220
• Siglas de Programación Orientada a Objetos ”POO". Eninglés se pone al revés "OOP". La idea básica de este tipode programación es agrupar los datos y losprocedimientos para manejarlos en una única entidad: el
objeto. Un programa es un objeto, que a su vez estáformado de objetos. La idea de la programaciónestructurada no ha desaparecido, de hecho se refuerza yresulta más evidente, como comprobarás cuando veamos
conceptos como la herencia.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 38/220
Objeto:
• Un objeto es una unidad que engloba en sí mismo datos yprocedimientos necesarios para el tratamiento de esosdatos. Hasta ahora habíamos hecho programas en los quelos datos y las funciones estaban perfectamenteseparadas, cuando se programa con objetos esto no esasí, cada objeto contiene datos y funciones. Y un
programa se construye como un conjunto de objetos, oincluso como un único objeto.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 39/220
Mensaje:
• El mensaje es el modo en que se comunican los objetosentre si. En C++ y en Java, un mensaje no es más queuna llamada a una función de un determinado objeto.Cuando llamemos a una función de un objeto, muy amenudo diremos que estamos enviando un mensaje a eseobjeto.
• En este sentido, mensaje es el término adecuado cuandohablamos de programación orientada a objetos engeneral.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 40/220
Método:
• Se trata de otro concepto de POO, los mensajes quelleguen a un objeto se procesarán ejecutando undeterminado método. En C++ y en Java un método no esotra cosa que una función o procedimiento pertenecientea un objeto.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 41/220
Clase:
• Una clase se puede considerar como un patrón paraconstruir objetos. En C++ y en Java, un objeto es sólo untipo de variable de una clase determinada. Es importantedistinguir entre objetos y clases, la clase es simplementeuna declaración, no tiene asociado ningún objeto, demodo que no puede recibir mensajes ni procesarlos, esto
únicamente lo hacen los objetos.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 42/220
Interfaz:
• Las clases y por lo tanto también los objetos, tienenpartes públicas y partes privadas. Algunas vecesllamaremos a la parte pública de un objeto su interfaz. Setrata de la única parte del objeto que es visible para elresto de los objetos, de modo que es lo único de lo que sedispone para comunicarse con ellos.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 43/220
Encapsulamiento:• Es tener todos los datos lo más privado posible, y
para poder acceder a ellos, sera necesario acceder alos metodos (funciones) que proporcione el modulo,limitando el acceso.
Abstraccion:
• Representar la realidad con los detalles necesarios,
sin los no necesarios para el dominio del problemaque hay que representar.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 44/220
Polimorfismo.
• (Polimorfismo significa “muchas formas”) Es unacaracterística de la programación orientada a objetos quepermite que un nombre pueda utilizarse en dos o masformas, para dos o mas propósitos relacionados entre si.Esto significa que el lenguaje C++ y/o Java puede admitiruna sobrecarga de funciones u operadores de una misma
función.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 45/220
Herencia:
• Veremos que es posible diseñar nuevas clases basándoseen clases ya existentes. En C++ y en Java esto se llamaderivación de clases, y en POO herencia. Cuando se derivauna clase de otra, normalmente se añadirán nuevosmétodos y datos. El conjunto de datos y métodos quesobreviven, es lo que se conoce como herencia. La
Herencia ayuda a la reutilización del código cuando seutiliza con el Polimorfismo y es útil para reutilizar diseñosdel programa y crear programas extensibles.
Introducción
Programación Orientada a Objetos:
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 46/220
46
Introducción
J AVA
• Se desarrolló en los comienzos de los años 1990• La intención era crear una herramienta para escribir
programas cortos y efectivos• Lenguaje sencillo y universal (electrodomésticos)
• Genera código sencillo de tamaño reducido
• Código neutro: Se ejecuta sobre una “máquina virtual”(JVM)
• Código propio de la máquina concreta
• Portabilidad del código neutro
• 1995: lenguaje de programación utilizable en Internet
(JVM en los navegadores)
• Java 1.1 aparece en 1997
• Java 1.2 aparece a finales de 1998. Java 2
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 47/220
47
Introducción
J AVA
Ventajas• Básico, fácil de entender• Portátil: el mismo código sirve para todos los sistemasoperativos• Soporta interfaz gráfica de usuario (GUI)
• Apropiado para programas en Internet
Desventajas• La ejecución es más lenta que algunos otros lenguajes
Posibilidad de crear:• Stand-alone Application• Applet• Servlet
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 48/220
48
• ¿Qué es el JDK? – Conjunto de herramientas (programas y librerías) para el
desarrollo en Java – JRE (Java Runtime Environment) – Distribución gratuita (Sun Microsystems Inc.)
• Java Development Kit (JDK), Standard Edition v1.6.0_30 (Windows 7),v1.7.0_03 (Windows XP).http://java.sun.com/javase/downloads/index.jsp
• Documentación – Informa sobre packages, clases e interfaces
– Descripción de las variables y métodos – Relaciones jerárquicas – En formato HTML. – Descarga gratuita desde la web de Sun
Introducción
J AVA
Java Development Kit (JDK)
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 49/220
49
Introducción
J AVA
Estructura general de un programa en Java
• Lenguaje de alto nivel y orientado a objetos• Archivo fuente (*.java)
– Puede tener varias clases pero sólo una public
– El nombre del archivo debe coincidir con el nombre de laclase public
– Java distingue entre mayúsculas y minúsculas• Una clase que contiene el método principal main()
• Un intérprete específico al sistema operativo interpreta el códigobyte para ejecutar el programa (JVM). • Por cada clase en un archivo fuente se crea un archivo *.class
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 50/220
50
• Un compilador traduce el código fuente en código de byte, ylo guarda en un archivo con extensión .class
• Una clase esta formada por datos y métodos propios• Un programa puede ser compuesto de varios archivos
(Workspace y/o Proyectos)• Permite construir las aplicaciones con gran modularidad e
independencia de clases
• La jerarquía de clases de Java (API)
Introducción
J AVA
Estructura general de un programa en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 51/220
51
• java.ioEntrada/Salida. Clases que definen distintos flujos de datos
• java.appletContiene las clases necesarias para crear applets que se ejecutanen la ventana del navegador
• java.awtContiene clases para crear una aplicación GUI independiente dela plataforma
• java.langContiene clases esenciales, se importa impícitamente sinnecesidad de una sentencia import.
• java.netSe usa en combinación con las clases del paquete java.io paraleer y escribir datos en la red.
• java.utilContiene otras clases útiles que ayudan al programador
Introducción
J AVA
La jerarquía de clases de Java (API)
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 52/220
52
La Máquina Virtual Java (JVM)
PROGRAMA FUENTE
COMPILADOR JAVA
PROGRAMA OBJETO
.java
.class
Programa bytecode para JVM
INTERPRETE (JVM)
para Windows XP, 7
INTERPRETE (JVM)
para Linux
INTERPRETE (JVM)
para Macintosh
WINDOWS XP, 7 LINUX MACINTOSH
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 53/220
53
Ejecución de un programa Java
HolaMundo.java
HolaMundo.class
javac HolaMundo.java
System.class
java HolaMundo
SISTEMA OPERATIVO
compilador Java
llamar a la JVM
crear el programa
en un editor
Enlazan
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 54/220
54
Errores de programación
Modificar o crear unarchivo .java
Editar paracorregir erroresCompilar
Ejecutar programaDepurar
(debugging)
errores de compilación (sintaxis)
no hay errores
errores de ejecución (semántica)
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 55/220
55
Elementos de Java
• Mi primer programa de Java• ¿Qué son datos?• ¿Qué son variables?• Variables en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 56/220
56
Elementos de Java
Mi primer Programa
• Vamos a escribir nuestro primer programa en Java• Recuerda que el código fuente siempre se encuentra
en un archivo con extensión .java
• En nuestro ejemplo, vamos a guardar el programa enun archivo llamado HolaMundo.java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 57/220
57
Elementos de Java
Mi primer Programa
Componentes de un programa
class HolaMundo {
// comentario, no hace parte del programa
public static void main(String[] args) {
// aquí se escriben las instrucciones
} // fin de ‘main’ } // fin de ‘HolaMundo’
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 58/220
58
Elementos de Java
Mi primer Programa
Componentes de un programa
class HolaMundo {
// comentario, no hace parte del programa
public static void main(String[] args) {
// aquí se escriben las instrucciones
System.out.println(“¡Hola Mundo!”);
} // fin de ‘main’ } // fin de ‘HolaMundo’
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 59/220
59
Elementos de Java
Datos y Variables
Datos
• Los datos representan información que queremos recordar,comparar, o manipular
• Pueden ser números, textos, imágenes o sonidos
• Un dato puede estar compuesto de otros datos• Ejemplo de un dato compuesto:
– Apellido: Jonsson – Teléfono: 935422312
– Foto: [imagen]
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 60/220
60
Variables en Java• En Java, se necesita una variable para cada dato que se
quiera guardar en la memoria
• El programador escoge el identificador de cada variable
• Java es “strongly typed” (basado en tipos): para cada variable,debe definirse el tipo del dato asociado: – número entero – texto – imagen
– etc.
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 61/220
61
• identificadores• Tipos de datos• Declaración• Inicialización y asignación• Conversión de tipos
Elementos de Java
Datos y Variables
Variables en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 62/220
62
Identificadores• No pueden utilizar palabras reservadas• Distinción entre mayúsculas y minúsculas• Secuencia de letras, dígitos, _ (subrayado) y $
• No se puede poner acentos• Siempre empiezan con una letra• Ejemplos:
• Correcto: apellido, aula219, dos_veces, cantidad$250• Incorrecto: class, número, re-100, 80s
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 63/220
63
Normas para identificadores• Los programadores de Java han acordado de normas para
identificadores• Ayuda leer un programa escrito por otra persona
• Normas adoptadas:1. Los archivos .java siempre empiezan con una mayúscula2. Los identificadores de variables siempre empiezan con una
minúscula3. Si el identificador está compuesto de más de una palabra,
cada palabra subsiguiente empieza con mayúscula (Ej:HolaMundo.java, unaVariableLarga)
4. Los identificadores deben describir de forma no ambigua eldato asociado
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 64/220
64
Palabras reservadasclass Empieza un programa en Javapublic Aparece en el método „main‟ static Aparece en el método „main‟
void Aparece en el método „main‟
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 65/220
65
Tipos de datos básicos
Enteros: int, byte, short, long
Reales: float, double
Caracteres: char
Boolean: boolean – valor true o false
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 66/220
66
Declaración• Antes de utilizar una variable, siempre hay que declararla• Cuando declaramos una variable, indicamos el tipo de su
dato asociado y su identificador• La declaración de una variable siempre sigue el modelo
<tipo> <identificador> ;• Se puede declarar varias variables a la vez:
<tipo> <identificador>, <identificador> […] ; • Ejemplos:
boolean estaEstudiando;int numeroDeAlumnos;
char myChar1, myChar2, myChar3;
int indice1, indice2;
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 67/220
67
• La asignación de una variable sigue el modelo<identificador> = <expresión> ;
• <expresión> puede ser reemplazado con
un valor básico (literal)otro variableel resultado de una operación más compleja
• ¡El resultado de <expresión> tiene que ser del mismo tipo
que la variable!• ¡El carácter „=‟ no significa igualdad!
Elementos de Java
Datos y Variables
Asignación
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 68/220
68
Asignación
• La asignación se puede combinar con la declaración:<tipo> <identificador> = <expresión> ;
• Ejemplos:
boolean estaEstudiando = true;int numeroDeAlumnos;
numeroDeAlumnos = 31;
int indice1 = 12;
int indice2 = indice1;
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 69/220
69
• ¿Cómo intercambiar los valores de 2 variables? – Entrada: valor1 es igual a 10 y valor2 a 20 – Salida: valor1 es igual a 20 y valor2 a 10
• Realice el programa en .java llamado Intercambio
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 70/220
70
Caracteres especiales
Códigos Significado
„\ n‟ Nueva línea „\ r‟ Retorno de carro „\ t‟ Tabulación „\ ‟‟ Comilla simple „\ ‟‟‟ Comilla doble „\\ ‟ Barra inclinada inversa
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 71/220
71
Boolean
• Variable con valor lógico• Acepta dos literales posibles: true y false
• Ejemplo: boolean ojosNegros = true;
• Almacenado en 1 bit de memoria
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 72/220
72
Cadenas de caracteres: String
• El tipo String ( string) no es básico
• String no es una palabra reservada• Declaración e inicialización:
String saludo = “Hola Jefe”;
• El literal saludo es un cadena de caracteres• Dentro de una cadena se puede utilizar caracteres especiales:
“‟ \‟Hola\nJefe‟ \‟”:
“Hola
Jefe”
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 73/220
73
Conversión de tipos
• Para enteros, se puede cambiar el tipo de un dato• La conversión de tipos se puede hacer solo en este sentido:
byte short int long
• No se pierde información1 byte 2 bytes 4 bytes 8 bytes
Elementos de Java
Datos y Variables
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 74/220
74
Conversión de tipos
// Inicializa una variable con un enteroint bInt = 79124;
// Convierte el entero al tipo „long‟ long bLong = bInt;
// ¡Si se convierte al tipo „short‟
// se pierde información!short mShort = bInt;
Elementos de Java
Datos y Variables
E
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 75/220
75
Palabras reservadas
class inicio de programapublic, static, void método „main‟ byte, short, int, long enterosfloat, double realeschar caracteresboolean tipo Booleantrue, false literales Boolean
Elementos de Java
Datos y Variables
E
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 76/220
76
Operadores
• Para manipular datos necesitamos operadores• Cada operador está asociado con uno o más datos, llamados
operandos
• Los operadores pertenecen a una de las siguientescategorías: – unario: asociado con 1 operando – binario: asociado con 2 operandos – ternario: asociado con 3 operandos
• Los operandos tienen que ser del tipo correcto
Elementos de Java
Operadores en Java
El d J
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 77/220
77
Clases de operadores
• Operadores aritméticos• Operadores relacionales• Operadores lógicos
• Operadores especiales
Elementos de Java
Operadores en Java
El t d J
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 78/220
78
Operadores aritméticos
Categoría Operandos Significado
+ unario, binario enteros, reales signo, adición
- unario, binario enteros, reales signo, sustracción
* binario enteros, reales multiplicación
/ binario enteros, reales división
% binario enteros, reales resto
Elementos de Java
Operadores en Java
El t d J
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 79/220
79
Operadores aritméticos• Ejemplos:
int positivo = +7;
double suma = 3.0 + 5.0;
double negativo = -3.5;double resta = valor - 2.0;
int producto = valor1 * valor2;
double cociente = valor / 12.0;
int resto = 12 % 5;
Elementos de Java
Operadores en Java
El t d J
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 80/220
80
Prioridad• Los operadores no se evalúan al mismo tiempo• Java tiene la siguiente prioridad de evaluación de los
operadores:
Prioridad Operadores Significado
1 +, - signo2 *, /, % multiplicación, división, resto
3 +, - adición, sustracción4 = asignación
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 81/220
81
Prioridad
• Ejemplo:final = -27 * 2 + 35 / 10;
final = -27 * 2 + 35 / 10;
final = -27 * 2 + 35 / 10;final = -54 + 3;
final = -54 + 3;
final = -51;
final = -51;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 82/220
82
Asociatividad
• Todavía podría existir ambigüedad:resta = 5 – 2 - 1;
(5 – 2) – 1 = 3 – 1 = 2
5 – (2 – 1) = 5 – 1 = 4 • Para resolver ambigüedad de operadores aritméticos, Java
utiliza asociatividad izquierda-derecha:resta = 5 – 2 – 1;
resta = 5 – 2 – 1;resta = 3 – 1;
resta = 2;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 83/220
83
Prioridad y asociatividad
• Se puede usar paréntesis para cambiar el orden usual deevaluación:
double numero1 = 2 * 27 / 9 + 3;
double numero2 = (2 * 27) / (9 + 3);
int numero3 = 7 * 10 - 5 % 3 * 4 + 9;
int numero4 = (7 * (10 - 5) % 3) * 4 + 9;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 84/220
84
Generalidad de los tipos
• ¿Qué pasa si los operandos no son del mismo tipo?• Se convierten automáticamente según el siguiente orden de
generalidad:
byte short int long float double
• El resultado de una expresión se convierte al tipo másgeneral
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 85/220
85
Conversión de tipos
• Ejemplos:double bDouble = 17.5 + 4;
int mInt = 5 – 3.0;
float bFloat = 491 + 5162631234L;
float mFloat = 16.2 / 7;
• ¡A veces el resultado no es lo que uno desea!double cociente = 15 / 4;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 86/220
86
Operaciones sobre enteros
• ¡Si ningún operando es un long, el resultado de unaoperación sobre enteros es siempre un int!
• Ejemplo:
short short1 = 10;short short2 = 20;
short mShort = short1 * short2;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 87/220
87
Casting
• Es posible volver a un tipo menos general mediante unaoperación llamada casting :short bShort = (short)(short1 * short2);
• ¡Casting tiene prioridad más alto que operadoresaritméticos!short mShort = (short)short1 * short2;
• Si un real se convierte a un entero se trunca la partedecimal:
int entero = (int)8.9; // entero = 8
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 88/220
88
Rango
• ¿Qué pasa si el resultado de una operación aritméticasobrepasa el máximo valor?
• No habrá errores de compilación
• No obstante, podrá generar resultados raros:byte valor = 127;
valor = valor + 1; // ¡valor = -128!
1271
-128
+
=
0 1 1 1 1 1 1 10 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 89/220
89
Operadores sobre caracteres
• Los caracteres se almacenan como números enteros• Se puede hacer operaciones aritméticas sobre caracteres:
char myChar = „a‟;
int resta = myChar – 32;
• El resultado es siempre un entero• Para volver a un carácter necesita usar casting:
char myChar = „a‟;
myChar = (char)(myChar – 32); // „A‟
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 90/220
90
Cadenas de caracteres: String
• Operador de concatenación:String saludo = “Hola” + “ Juan”;
System.out.println(saludo); // “Hola Juan”
• Operador de concatenación puede unir una cadena acualquier otro tipo o literal:double sueldo = 1003.87;
String mensaje = “su sueldo es ” + sueldo;
String deletrear = „S‟ + “ como semilla”; • ¡Uno de los operandos tiene que ser un String!
String mString = 13 + „S‟;
Elementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 91/220
91
Operadores abreviados
Categoría Abreviado No abreviado
+= binario a += b a = a + b
-= binario a -= b a = a – b
*= binario a *= b a = a * b
/= binario a /= b a = a / b
%= binario a %= b a = a % b
lementos de Java
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 92/220
92
Incremento y decremento
• Java ha heredado operadores de incremento y decrementode C y C++
• ¡Es la única forma de cambiar el valor de una variable sin
asignación!
Categoría Abreviado No abreviado
++ unario ++a, a++ a = a + 1
-- unario --a, a-- a = a - 1
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 93/220
93
Incremento y decremento
• Prefijo: el valor cambia antes de ser evaluado
int a = 10;
int b = ++a; // resultado: a = 11, b = 11
• Postfijo: el valor cambia después de ser evaluado
int a = 10;int b = a++; // resultado: a = 11, b = 10
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 94/220
94
Operadores relacionales
Categoría Operandos Significado
== binario enteros, reales igual
!= binario enteros, reales distinto
> binario enteros, reales mayor
>= binario enteros, reales mayor o igual
< binario enteros, reales menor
<= binario enteros, reales menor o igual
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 95/220
95
Operadores relacionales
• El resultado de evaluar una expresión con un operadorrelacional es siempre true o false (boolean):
boolean b = 3 < 7;boolean c = notaAsignatura > 9;
boolean d = 1 == 1;
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 96/220
96
Operadores relacionales
• La expresión se evalúa de izquierda a derecha:
boolean b = 3 < 4 < 5;boolean b = 3 < 4 < 5;
boolean b = true < 5; // ???
Operadores en Java
• ¿Cuál es el problema con la siguiente expresión?
boolean b = 3 < 4 < 5;
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 97/220
97
Operadores lógicos
• Operan sobre datos boolean y devuelven también unboolean
• Proposiciones lógicas:
Si has comido y bebido o estás enamorado y
no tienes deudas, entonces estás feliz.
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 98/220
98
Operadores lógicosCategoría Operandos Significado
&& binario boolean Y lógica
|| binario boolean O lógica
^ binario boolean O exclusiva
! unario boolean NO
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 99/220
99
Prioridad y asociatividad
• Determinan el orden de evaluación• Los operadores se evalúan en orden de prioridad• Si dos operadores tienen la misma prioridad, se evalúan
según asociatividad• Asociatividad izquierda-derecha significa que el operador a
la izquierda se evalúa primero• Siempre se puede utilizar paréntesis para cambiar el orden
de evaluación
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 100/220
100
Prioridad y asociatividad
1 () paréntesis
2 + - ++ -- ! (tipo) sgn/inc/dec/NO/casting der-izq
3 * / % mult/div/resto izq-der4 + - + ad/sust/concatenación izq-der
5 > >= < <= mayor/menor izq-der
6 == != igual/distinto izq-der
7 ^ O exclusiva izq-der8 && Y lógica izq-der
9 || O lógica izq-der
10 = += -= *= /= %= asignación der-izq
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 101/220
101
Concatenación
• Problema: añadir dos números e imprimir el resultado en lapantalla
int n1 = 7;int n2 = 5;
String s = “Resultado: ” + n1 + n2;
System.out.println(s);
• ¿Existe algún problema?
Operadores en Java
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 102/220
102
Entrada y Salida
• Interacción entre dos programas en Java• Manejo de Entrada y Salida de datos en Java
• Ejemplo
Elementos de Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 103/220
103
Leer Datos desde Teclado• En java para poder escribir se emplea el objeto System.out, pero para leer
del teclado es necesario emplear System.in. Este objeto pertenece a laclase InputStream, esto significa que para leer tenemos que emplear susmétodos, el más básico es read, que permite leer un carácter:
• char caracter = (char) System.in.read();• Pero como podemos apreciar es incómodo leer de letra en letra, por ello
para poder leer una línea completa emplearemos el siguiente código:• BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));• String línea = br.readLine();• En el cuál creamos un InputStreamReader a partir de System.in y pasamos
dicho InputStreamReader al constructor de BufferedReader, el resultado esque las lecturas que hagamos sobre br son en realidad realizadas sobreSystem.in, pero con la ventaja de que se permite leer una línea completa.
• Es necesario realizar un import de java.io para poder emplear esta lecturade líneas.
Entrada y Salida
Elementos de Java
d S l d
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 104/220
104
El programa TextIO.java
• Un programa para leer datos del teclado• También puede mostrar datos en la pantalla• Muy útil cuando quiere pedir información al usuario
• Cuando se usa TextIO.java, se abra una ventana nueva• El usuario escribe sus datos en esta ventana
Entrada y Salida
Elementos de Java
E t d S lid
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 105/220
105
Uso de TextIO.java
• Para usar TextIO.java, guardar el archivo TextIO.java en lamisma carpeta que sus otros programas
• Abrir TextIO.java en el editor de Java
• “Compilar” el programa, pero no “Ejecutarlo” • Ahora está listo para uso
Entrada y Salida
Elementos de Java
E t d S lid
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 106/220
106
Funcionalidad de TextIO.java
• Para leer datos del teclado:TextIO.getByte() leer un byteTextIO.getShort() leer un short
TextIO.getInt() leer un int TextIO.getLong() leer un long
TextIO.getFloat() leer un float TextIO.getDouble() leer un double
TextIO.getChar() leer un char TextIO.getWord() leer un String
TextIO.getBoolean() leer un boolean
Entrada y Salida
Elementos de Java
E t d S lid
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 107/220
107
Funcionalidad de TextIO.java
• Para mostrar datos en la pantalla:TextIO.put(<dato>) mostrar datoTextIO.putln(<dato>) mostrar y cambiar línea
Entrada y Salida
Elementos de Java
E t d S lid
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 108/220
108
Ejemplo
class Leer {
public static void main(String[] args) {
TextIO.put(“Entrar un entero: ”);
int num = TextIO.getInt();
TextIO.putln(“Ha ingresado ” + num);
TextIO.putln(“Cerrar la ventana”);
}
}
Entrada y Salida
Elementos de Java
E t d S lid
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 109/220
109
Ejemplo
Entrar un entero: 172Has entrado 172Cerrar la ventana
Entrada y Salida
Elementos de Java
Entrada y Salida
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 110/220
110
Ejemplo
Entrar un entero: 17286427523
***Error in input: Integer input outside of legal range
***Expecting: Integer in the range -2147483648 to 2147483647***Discarding Input: (end-of-line)
Please re-enter: 15
Has entrado 15Cerrar la ventana
Entrada y Salida
Elementos de Java
Entrada y Salida
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 111/220
111
Ejercicio
• Pedir al usuario el salario bruto por hora, las horastrabajadas y la tasa de impuestos
• Calcular el salario neto
• Mostrar el resultado en la pantalla
Entrada y Salida
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 112/220
112
• Flujo de un programa• Instrucciones Condicionales• Instrucción Switch• Instrucción ?
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 113/220
113
¿Qué es un flujo de un programa?
• En Java, existen dos estructuras que cambian el flujo decontrol: – Estructuras condicionales: un bloque sólo se ejecuta
bajo ciertas condiciones – Estructuras de repetición: un mismo bloque se ejecuta
repetidamente• Ejemplos:
– Escribir un mensaje de saludo si encuentras el nombre
de un amigo – Escribir “¡Hola Mundo!” 10 o 100 o 1000 veces
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 114/220
114
Instrucciones condicionales
• if
• if-else
• if-else-if
• switch
• El operador ?:
Flujos de Control
Ó
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 115/220
115
INSTRUCCIÓN IF
Sintaxis: if (<expresión-boolean>)
<bloque-o-sentencia>
expresión-boolean
bloque-o-sentencia
true false
Control de flujo
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 116/220
116
¿Qué es el flujo de un programa?
• Es el orden con el cual el ordenador ejecuta instrucciones• El orden común es en secuencia , instrucción por instrucción• El bloque es el que permite este orden secuencial
• Un bloque está marcado con llaves : {instruccion1;instruccion2;instruccion3;…
}
Flujos de Control
INSTRUCCIÓN IF ELSE
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 117/220
117
INSTRUCCIÓN IF-ELSE
Sintaxis: if (<expresión-boolean>) <bloque-o-sentencia1>
else
<bloque-o-sentencia2>
expresión-boolean
bloque-o-sentencia1
true false
bloque-o-sentencia2
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 118/220
118
Ejercicio
• Saber si un número es divisible por otro (el resultado de ladivisión es un entero)
• Si el primer número es divisible por el segundo, mostrar el
cociente en la pantalla• En caso contrario, escribir mensaje de error
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 119/220
119
Ejercicio
• Saber si un número entero está dentro del intervalo [-128,…, 127]
• Si es el caso, escribir que el número es un byte
• En caso contrario, mostrar mensaje de error
Flujos de Control
INSTRUCCIÓN
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 120/220
120
Sintaxis: if (<expresión-boolean1>)
<bloque-o-sentencia1>
else if (<expresión-boolean2>)
<bloque-o-sentencia2> ...
else if (<expresión-booleanN-1>)
<bloque-o-sentenciaN-1> else
<bloque-o-sentenciaN>
INSTRUCCIÓN IF-ELSE-IF
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 121/220
121
Ejercicio• Saber si un número es positivo, negativo, o cero• Saber si un carácter es un número, una letra mayúscula o una
letra minúscula
• ASCII: – número: 48 – 57 – letra mayúscula: 65 – 90 – letra minúscula: 97 – 122
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 122/220
122
Instrucción switch
• A menudo la expresión boolean de un if-else-if depende deuna sola variable de tipo primitivo
• tipos primitivos = palabras reservadas; por ejemplo byte,
int, double pero no String• En este caso se puede utilizar otra instrucción llamada
switch
• Más compacto que un if-else-if
Flujos de Control
I t ió
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 123/220
123
Instrucción switch
switch (<selector>) {
case <etiqueta1>: <sentencias1>;
break;
case <etiqueta2>: <sentencias2>;
break;
...case <etiquetan>: <sentenciasn>;
break;
default: <sentenciasd >; // opcional
}
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 124/220
124
Ejercicio
• Leer un número entero entre 1 y 10• Mostrar el número escrito en numerales romanos
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 125/220
125
¿Qué pasa si excluimos break ?
• ¡El programa pasa a la siguiente instrucción dentro del switch!• La función de break es la que permite cambiar el control de
flujo
Flujos de Control
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 126/220
126
El operador ?:
• Único operador ternario en Java (requiere tres operandos)• Sintaxis:
<operando1> ? <operando2> : <operando3>
• operando1 tiene que ser una expresión boolean• operando2 y operando3 pueden ser expresiones decualquier tipo siempre que sean ambos del mismo tipo
• El resultado de la expresión esoperando2 si operando1 es trueoperando3 si operando1 es false
j
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 127/220
127
• Como siempre, si queremos guardar el resultado de laexpresión, la variable tiene que ser del mismo tipo queoperando2 y operando3
• Prioridad: ?: se evalúa antes de asignación (=) perodespués de los demás operadores• Ejemplos:
int a = n == 0 ? 10 : 20;
char c = n > 0 && a > 15 ? „a‟ : „b‟;
String s = a < 15 ? “pequeño” : “grande”;
El operador ?:
j
Elementos de Java
Flujos de Control
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 128/220
128
Palabras reservadasclass inicio de programapublic, static, void método „main‟ byte, short, int, long enteros
float, double realeschar caracteresboolean tipo Booleantrue, false literales Booleanif, else, switch instrucción condicional
case, break, default parte de switch
j
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 129/220
129
Repetición
• A menudo queremos ejecutar una misma operación más queuna vez
• Ejemplos:
– Escribir ¡Hola Mundo! en la pantalla 10 o 100 o 1000veces – Escribir todas las letras del abecedario en la pantalla – Sumar los gastos anuales del Ayuntamiento de Barcelona
• En cada caso, podemos escribir las instruccionesindividualmente en secuencia (muy ineficaz)
• En cambio podemos usar bucles (estructuras de repetición)
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 130/220
130
Estructuras de repetición• while
• do-while
• for
BUCLE WHILE
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 131/220
131
Sintaxis: while (<expresión-boolean>)
<bloque-o-instrucción>
expresión-boolean
bloque-o-instrucción
true false
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 132/220
132
Condición de while
• La condición (expresión boolean) de un while sirve paradeterminar cuando el bucle se debe terminar
• ¡Si la condición siempre está true, el bucle while nunca
termina!• En consecuencia, algo en la condición tiene que cambiar• Cada bucle necesita una variable de bucle que aparece en la
condición y cuyo valor cambia• Hay que inicializar el valor de la variable de bucle y actualizar
su valor dentro del bucle
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 133/220
133
Ejemplo 1int contador = 1; // inicializaciónwhile (contador < 6) { // condición
System.out.println(contador);
contador++; // actualización}
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 134/220
134
Ejemplo 2int contador = 1; // inicializaciónwhile (contador < 0) { // condición
System.out.println(contador);
contador--; // actualización}
El bucle nunca se ejecuta porque la condición está false desdeel principio
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 135/220
135
Ejemplo 3int contador = 1; // inicializaciónwhile (contador != 10) { // condición
System.out.println(contador);
contador += 2; // actualización}
El bucle nunca termina porque la condición nunca llega a estarfalse
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 136/220
136
Ejemplo 4int contador = 1; // inicializaciónwhile (contador < 6) // condición
System.out.println(contador);
contador++; // actualización
El bucle nunca termina porque el valor de la variable de bucle nose actualiza dentro del bucle
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 137/220
137
Ejercicio 1• Escribir ¡Hola Mundo! en la pantalla 10 veces
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 138/220
138
Ejercicio 2• Escribir todas las letras del abecedario en la pantalla
BUCLE DO-WHILE
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 139/220
139
BUCLE DO-WHILE
Sintaxis: do <bloque-o-instrucción>
while (<expresión-boolean>);
expresión-boolean
true
false
bloque-o-instrucción
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 140/220
140
Bucle do-while
• La única diferencia entre un bucle while y un bucle do-while es que el do-while siempre se ejecuta por lo menos una vez
• La condición se prueba al final del bucle
• Siempre se puede convertir en un while, pero hay casoscuando el do-while es más compacto
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 141/220
141
Ejemploint a = 5;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0)
continue;a = a + i;
if (a > 20)
break;
}
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 142/220
142
Ejercicio 3• Pedir al usuario un número entero entre 0 y 10• Mientras que el número esté fuera del rango indicado, pedir
un número de nuevo
BUCLE FOR
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 143/220
143
BUCLE FOR • Sintaxis:
for (<inicialización>;<condición>;<actualización>)
<bloque-o-instrucción>
inicialización
condición
bloque-o-instrucción
actualización
truefalse
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 144/220
144
Bucle for
• Siempre equivalente a un bucle while• Como en el caso de do-while, muchas veces un bucle
for es más compacto que un while
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 145/220
145
Comparición entre while y for
int i = 0;
while (i < 10) {
System.out.println(“¡Hola Mundo!”);
i++;}
for (int i = 0; i < 10; i++)
System.out.println (“¡Hola Mundo!”);
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 146/220
146
Bucles encadenadas• Ejemplo: escribir las letras del abecedario 10 veces
for (int i = 0; i < 10; i++) {
for (char c = 97; c <= 122; c++)System.out.print(c);
System.out.println();
}
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 147/220
147
break y continue
• Dos instrucciones para cambiar el control de flujo dentro de unbucle
• break : terminar el bucle
• continue: continuar el bucle sin ejecutar las demásinstrucciones• Ambos se deben usar con cuidado
Elementos de Java
Bucles
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 148/220
148
Palabras reservadasclass inicio de programapublic, static, void método „main‟ byte, short, int, long enteros
float, double realeschar caracteresboolean, true, false tipo Booleanif, else, switch estructura condicional
case, default parte de switchwhile, do, for estructura de repeticiónbreak, continue cambiar control de flujo
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 149/220
149
Conceptos teóricos de la programación orientada a objetos:• Objeto,• Mensaje,• Método,
• Interfaz• Encapsulado,• Abstracción,• Clases• Polimorfismo,• y Herencia.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 150/220
150
Programación Orientada a Objetos:
• Las siglas de Programación Orientada a Objetos ”OOP". Laidea básica de este tipo de programación es agrupar los
datos y los procedimientos para manejarlos en una únicaentidad: el objeto. Un programa es un objeto, que a su vezestá formado de objetos. La idea de la programaciónestructurada no ha desaparecido, de hecho se refuerza yresulta más evidente, como comprobarás cuando veamos
conceptos como la herencia.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 151/220
151
Objeto:
• Un objeto es una unidad que engloba en sí mismo datos yprocedimientos necesarios para el tratamiento de esos datos.
Hasta ahora habíamos hecho programas en los que los datos ylas funciones estaban perfectamente separadas, cuando seprograma con objetos esto no es así, cada objeto contienedatos y funciones. Y un programa se construye como unconjunto de objetos, o incluso como un único objeto.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 152/220
152
Mensaje:
• El mensaje es el modo en que se comunican los objetos entresi. En Java, un mensaje no es más que una llamada a una
función de un determinado objeto. Cuando llamemos a unafunción de un objeto, muy a menudo diremos que estamosenviando un mensaje a ese objeto.
• En este sentido, mensaje es el término adecuado cuandohablamos de programación orientada a objetos en general.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 153/220
153
Método:
• Se trata de otro concepto de POO, los mensajes que lleguen aun objeto se procesarán ejecutando un determinado método.
En C++ un método no es otra cosa que una función oprocedimiento perteneciente a un objeto.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 154/220
154
Interfaz:
• Las clases y por lo tanto también los objetos, tienen partespúblicas y partes privadas. Algunas veces llamaremos a la
parte pública de un objeto su interfaz. Se trata de la únicaparte del objeto que es visible para el resto de los objetos, demodo que es lo único de lo que se dispone para comunicarsecon ellos.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 155/220
155
Encapsulamiento: • Es tener todos los datos lo más privado posible, y para poder
acceder a ellos, sera necesario acceder a los metodos(funciones) que proporcione el modulo, limitando el acceso.
Abstraccion:
• Representar la realidad con los detalles necesarios, sin los nonecesarios para el dominio del problema que hay querepresentar.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 156/220
156
• El elemento básico de la programación orientada a objetosen Java es un clase.
• Una clase define la forma y el comportamiento de un
objeto.• Cualquier concepto que desee representar en su programaen Java está encapsulado en una clase.
• Las clases de Java típicas incluirán variables y métodos deinstancia.
• Los programas en Java completos constarán por lo generalde varias clases de Java de distintos archivos fuente.• Una clase define la estructura de un objeto y su interfaz
funcional, conocida como métodos.
Clases
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 157/220
157
• Cuando se ejecuta un programa en Java, el sistema utilizadefiniciones de clase para crear instancias de las clases,que son objetos reales.
• La forma general de una clase se muestra a continuación.
Clases
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 158/220
158
Polimorfismo.
• (Polimorfismo significa “muchas formas”) Es unacaracterística de la programación orientada a objetos que
permite que un nombre pueda utilizarse en dos o masformas, para dos o mas propósitos relacionados entre si.Esto significa que el lenguaje Java puede admitir unasobrecarga de funciones u operadores de una mismafunción.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 159/220
159
Herencia:
• Veremos que es posible diseñar nuevas clases basándose enclases ya existentes. En Java esto se llama extender clases, y
en POO herencia. Cuando se extiende una clase de otra,normalmente se añadirán nuevos métodos y datos. El conjuntode datos y métodos que sobreviven, es lo que se conoce comoherencia. La Herencia ayuda a la reutilización del códigocuando se utiliza con el Polimorfismo y es útil para reutilizar
diseños del programa y crear programas extensibles.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 160/220
160
Clases La primera palabra que aparece es lógicamente class que sirve paradeclarar una clase. Su uso es el mismo que en C++:
class nombre_de_clase [extends nombre_de_superclase] {tipo_dato variable1;tipo_dato variable2;
tipo_dato variableN;tipo_dato nombre_método1 (lista_de_parámetros) {
cuerpo_del_método;}tipo_dato nombre_método2 (lista_de_parámetros) {
cuerpo_del_método;}tipo_dato nombre_métodoN (lista_de_parámetros) {
cuerpo_del_método;}
}
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 161/220
161
Donde:
• nombre_de_clase y nombre_de_superclase son identificadores.
• La palabra clave extends se utiliza para indicar quenombre_de_clase será una subclase de nombre_de_superclase.Hay una clase incorporada, llamada Object (objeto), que está enla raíz de la jerarquía de clases de Java. Si se desea realizar unasubclase de Object directamente, se puede omitir la cláusula
extends.
Clases
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 162/220
162
El operador new • El operador new crea una única instancia de una clase y
devuelve una referencia a ese objeto.Hola h;
h = new Hola();
Aquí h es una referencia a una instancia del objeto HolaEl operador punto (.) • El operador punto se utiliza para acceder a las variables de
instancia y los métodos contenidos en un objeto. Esta es laforma general de acceder a las variables de instanciautilizando el operador punto.nombre_objeto.nombre_de_variable Aquí nombre_objeto es una referencia a un objeto ynombre_de_variable es el nombre de la variable de instanciacontenida en el objeto al que se desea acceder.
Clases
Elementos de Java
Métodos
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 163/220
163
Métodos – Declaración – Acceso – Tipos – Entrada – Salida – Llamar
Elementos de Java
Métodos
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 164/220
164
Métodos
• Métodos en Java son módulos de código que se pueden tratarindividualmente
• Un programa normalmente contiene uno o varios métodos
• Ventajas: – abstracción: el usuario de un método no necesita conocer elproceso, sólo la entrada y salida
– reutilización: un método de un programa se puede reutilizaren otro
– legibilidad: más fácil entender un programa separado enmódulos
– compactibilidad: no contiene varias copias del mismo código
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 165/220
165
Declaración de métodos
• Sintaxis:<acceso> <tipo> <identificador>(<entrada>) {
<bloque>
} • El acceso especifica quién tiene acceso al método• El tipo especifica cual va a ser el resultado del método• El identificador es el nombre del método• La entrada es una secuencia de variables separadas por coma
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 166/220
166
Acceso a métodos
• A veces uno quiere restringir el acceso a métodos• Es posible cambiar el acceso en la declaración de un método• Los miembros de una clase que son accesibles desde cualquier
parte de otro programa es publicopublic static o public
• Los miembros de una clase que sólo son accesibles por lospropios miembros de la clase y en general por objetos de lamisma clase, pero no desde funciones externas o desde
funciones de clases derivadas son métodos privadosprivate
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 167/220
167
Entrada de métodos
• Cada método tiene una entrada• La entrada es una secuencia de variables separadas por coma• La entrada puede ser vacía, es decir, una secuencia de 0
variables• Las variables especifican el tipo de información que el usuarionecesita proveer para aplicar el método
• Nunca se inicializan las variables de entrada
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 168/220
168
Tipos de métodos
• El tipo de un método especifica cual será el resultado delmétodo
• Por ejemplo, si el tipo de un método es int, el resultado delmétodo es un número entero
• Un método puede tener cualquier tipo entre los que conocemos• Además, el tipo de un método puede ser void, eso significa que
el método no devuelve ningún resultado
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 169/220
169
Ejemplo
• Ejemplo de un método que realiza multiplicación:
public static int mult(int a, int b) {
int resultado = a * b;return resultado;
}
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 170/220
170
Llamar a métodos
• Para llamar a un método hay que especificar los valores deentrada
• Sintaxis:
<identificador>(<valores>) • Los valores de entrada son separados por coma y sus tipostienen que corresponder a los tipos de las variables de entradaen el mismo orden
• Para guardar el resultado de un método, hay que utilizar una
variable del mismo tipo
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 171/220
171
Llamar a métodos
• Si el método se halla en un programa fuera del programaactual, necesita especificar el nombre del otro programa
• Sintaxis:
<programa>.<identificador>(<valores>)• Ejemplos:
TextIO.putln(“Entrar un número entero ”);
int numero = TextIO.getInt();
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 172/220
172
Ubicación de métodos
• Todos los métodos de un programa se hallan dentro de lasllaves del programa
• ¡Nunca un método se halla dentro de otro método!
• Consecuentemente, no se hallan dentro de main, quetambién es un método
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 173/220
173
Salida de métodos
• Si el tipo de un método no es otro que void, el método necesitauna salida
• La salida representa el resultado del método dado una entrada
• Para que un método devuelve un resultado se usa la palabrareturn
• El significado de return es “terminar el método y devolver elvalor adjunto”
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 174/220
174
Ejemplo
• Ejemplo de un método que realiza multiplicación:public static int mult(int a, int b) {
int resultado = a * b;
return resultado;}
public static void main(String[] args) {
int producto = mult(15, 17);
System.out.println(producto);
}
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 175/220
175
Variables de métodos
• Dentro de un método se puede usar variables• ¡No obstante, una variable declarada en un método sólo
existe dentro de este método!
• No se puede usar su identificador dentro de otros métodos• Cuando el método termine, la variable deja de existir• Si el método se llama de nuevo, vuelve a existir, pero
normalmente con un valor diferente
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 176/220
176
Ejemplo
• Ejemplo de un método que realiza multiplicación:
public static int mult(int a, int b) {
int resultado = a * b;
return resultado;
}
public static void main(String[] args) {
int producto = mult(15, 17);System.out.println(a * b);
}
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 177/220
177
La pila (stack)
• Un método puede llamar a otro método como subrutina• Consecuentemente, varios métodos pueden ejecutarse al
mismo tiempo
• Siempre hay sólo un método activo• Los otros métodos están esperando que el método activotermine y devuelve su resultado
• Java usa una pila (stack) para recordar los métodos queestán ejecutando
• El método activo está arriba de la pila
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 178/220
178
La pila (stack)
public static int mult(int a, int b) {
int resultado = a * b;
return resultado;
}
public static void main(String[] args) {
int producto = mult(15, 17);
System.out.println(producto);
} main
mult
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 179/220
179
Ejercicio
• Escribir un método que calcula el factorial de un númeroentero
• n! = 1*2*...*n
Elementos de Java
Estructuración y modularidad
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 180/220
180
Ejercicio
• Escribir un método que devuelve un mensaje de aceptación orechazo dada la decisión
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 181/220
181
• Los constructores son funciones miembro especiales quesirven para inicializar un objeto de una determinada clasecuando se declara.
• TODAS las clases de Java tienen AL MENOS un constructorsiempre.
• Si no ponemos ninguno, Java les pone automáticamenteuno de este estilo: Clase(){}
• Si ponemos aunque sólo sea uno (sea como sea), Java ya
no añadirá el suyo.
Constructores
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 182/220
182
• Un destructor es un método que es ejecutado cada vezque se destruye (se elimina de RAM) un objeto, el objetivode este método es el de eliminar toda la memoria queocupó un objeto. En JAVA no es necesaria la definición de
destructores (es más no existen), pues el mismo lenguajese encarga de la eliminación y liberación de la memoriaocupada por un objeto, esto se realiza cada vez que unobjeto pierde todas sus referencias.
Destructores
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 183/220
183
• A menudo, cuando se crea un objeto, es necesario odeseable inicializar varios elementos de datos con valoresespecíficos. El concepto de inicialización de objetos seamplia para permitir la inicialización de objetos específicos
utilizando valores definidos por el programador.
Constructores con Parámetros
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 184/220
184
• Una de las maneras que tiene Java de llegar alpolimorfismo es a través de la sobrecarga de funciones. EnJava, dos o más funciones pueden compartir un mismonombre siempre y cuando difieran en la declaración de sus
parámetros.• Las funciones que comparten el mismo nombre se dice que
están sobrecargadas.
Polimorfismo
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 185/220
185
• Otra manera de sobrecargar funciones se logra al reescribirel código de un método heredado en una subclase de susuperclase, con esto se tienen clases con el mismo métodopero con diferentes implementaciones. Hay que tener en
cuenta que un objeto instancia de una subclase también seconsidera como instancia de la superclase, ya que tiene losatributos y métodos de la superclase.
Polimorfismo
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 186/220
186
• Herencia es la definición de una clase en función de otra,esto es definir clases con características similares pero conalguna diferencia. La herencia permite que una clase tengainicialmente el mismo comportamiento que otra y luego
aumente o modifique este comportamiento segúncorresponda. La nueva clase (clase hija) que hereda losatributos y métodos de otra clase ya existente se conocecomo subclase y a la clase padre se le conoce comosuperclase; adicionalmente una subclase puede ser unasuperclase.
• Se ver a una subclase como la especialización de susuperclase, ya que esta tiene atributos y métodoscomunes, mas atributos y métodos adicionales , junto conun comportamiento diferente en la ejecución de algunosmétodos comunes.
Herencia
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 187/220
187
• Cada nueva subclase sólo describe los atributos y métodosadicionales así como la implementación de algunosmétodos cuya ejecución no se desea que sea igual a la desu superclase.
• Principalmente existen dos tipos de herencia: la simple quesignifica que una clase hereda las características de otra yla herencia múltiple significa que una clase hereda de dos omás clases; en java se soporta la herencia simple pero nola múltiple, aunque existe un mecanismo que permite tener
características de herencia múltiple.
Herencia
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 188/220
188
• Herencia simple indica que una clase hereda todos losmétodos y atributos de otra, para indicar esto es necesariousar la palabra reservada extends.
La palabra reservada extends Sintaxis de extends: class NombreDeClaseHija extends NombreDeClasePadre Ejemplo: • Realice un programa java, utilice herencia para
implementarlo en donde se han identificado las siguientesclases Vehí culo de Ruedas, Automóvil, Camión.
Herencia Simple
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 189/220
189
• Sean las clases "Base" y "Derivada".• TODAS las clases de Java tienen AL MENOS un constructor
Siempre.• Si no ponemos ninguno, Java les pone automáticamente uno de
este estilo: Base(){}• Si ponemos aunque sólo sea uno (sea como sea), Java ya noañadirá el suyo.
• La primera línea de un constructor es SIEMPRE una llamada alconstructor de la clase base.
• Si no ponemos ninguna llamada, Java pondrá automáticamente
una de este estilo: super().• Si ponemos una nuestra, Java ya no añadirá la suya.• En una clase derivada, se ejecuta antes el constructor de la clase
base que el suyo (recuérdese que la llamada a "super" es la primera instrucción del constructor).
Constructores y herencia en Java
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 190/220
190
• Es la capacidad que tienen los objetos de agrupar y deocultar toda o parte de la información que contiene así como las funciones y procedimientos que las procesan(métodos), con el fin de proteger los datos y ocultar los
procesos que se realizan para manejar la información quecontienen.
• Para tener un control de cual o cuales datos se deben deocultar o establecer el nivel de privacidad o seguridad delos métodos y atributos definidos en una clase, se han
definido las siguientes palabras reservadas :
Encapsulamiento
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 191/220
191
final Indica que el método no podrá ser modificado en las subclases de la clase en la cual se declare el método, esto se hace
para evitar problemas en errores de implementación
static
Indica que un atributo será global y único para toda la clase. Ejemplo: static int valor. También se puede aplicar a un método: static void imprimir( ). En cualquier caso para usar un atributo o un método estático, se tiene que poner primero el nombre de la clase a la quepertenecen y luego el nombre del atributo o el del método. Ejemplo: Color.blue; // atributo estático de la clase Color Double.valueOf (texto); // método estático
private Indica que un método o un atributo sólo puede ser cambiado o accedido desde la clase en la que está definido. Esto sirvepara definir métodos u atributos internos a los métodos y que son de uso interno (privado).
Protected Indica que un método o atributo puede ser accedido desde cualquiera de las subclases de la clase en la que se han
definido, su funcionamiento es similar al del modificador private, la diferencia que permite acceso a las subclases.
Public Indica que un atributo o un método puede ser accedido desde cualquier implementación de una clase.
Elementos de Java
Clases en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 192/220
192
• Hay ocasiones en que se desea ejecutar el método de lasuper clase (clase base) de una subclase y además demodificar la implementación del mismo método en lasubclase. Esto es usar el mismo código de la super clase
mas un código particular para la subclase.Ejemplo:
implemente el programa anterior llamando al constructorde la super clase utilice herencia para implementarlo endonde se han identificado las siguientes clases Vehículo de
Ruedas, Automóvil, Camión.
Ejecución de métodos de la super clase: super
Elementos de Java
Clases en Java
ó é
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 193/220
193
• Como se aprecia en el ejemplo, se puede usar la palabrareservada super para referirse a la superclase de unaclase y se trata como si fuera un objeto de esa clase, conla diferencia que invoca los métodos de la superclase.
Ejecución de métodos de la super clase: super
Elementos de Java
Clases en Java
Herencia múltiple : interfaces
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 194/220
194
• Como se ha mencionado antes, Java no soporta la herenciamúltiple directamente, sino que ha definido un términollamado interface, que representa un conjunto de métodosque van a ser comunes a un grupo de clases, aunque estasclases hereden de distinta clase base, lo que permite tener
clases diferentes pero con métodos que tienen el mismonombre y realizan operaciones distintas pero similaresconceptualmente.
• Sintaxis de la palabra reservada interface, que se usa paradefinir las interfaces:
p
Elementos de Java
Clases en Java
Herencia múltiple : interfaces
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 195/220
195
interface NombreInterface{
// Definición de métodos comunes, no se implementan.}
• Con esta interface definida, donde sólo se ponen losnombres (definición) de los métodos y no se implementan,hemos definido un par de métodos que serán comunes atodos los tipos de figuras que tengan curvas: voiddibujarTangente( ) y void aumentarRadio( int incremento ).
p
Elementos de Java
Clases en Java
Herencia múltiple : implements
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 196/220
196
• Una vez definida una interface, es necesario incluirla enuna clase y luego implementar todos los métodos definidosen la interface, para este propósito existe la palabrareservada implements, cuya sintaxis es la siguiente:class NombreClase extends ClaseBase, implements Interface1,
Interface2, … InterfaceN{
// Implementación de la clase}
• Como podemos ver en la sintaxis, una clase puede
implementar varias interfaces, lo que permite dar mayorfuncionalidad a un clase, pues esta compartiríacaracterísticas con otras clases que necesariamente notienen que heredar de una clase común.
Elementos de Java
Clases en Java
Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 197/220
197
• Los paquetes se utilizan en Java de forma similar a comose utilizan las librerías en C++, para agrupar funciones yclases, sólo que en Java agrupan diferentes clases y/ointerfaces. En ellos las clases son únicas, comparadas conlas de otros paquetes, y además proporcionan un método
de control de acceso. Los paquetes también proporcionanuna forma de ocultar clases, evitando que otros programaso paquetes accedan a clases que son de uso exclusivo deuna aplicación determinada.
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 198/220
198
• Los paquetes se declaran utilizando la palabra packageseguida del nombre del paquete. Esto debe estar alcomienzo del archivo fuente, en concreto, debe ser laprimera sentencia ejecutable del código Java, excluyendo,claro está, los comentarios y espacios en blanco.
Ejemplo:package mamiferos;class Ballena {
. . .}
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 199/220
199
• En este ejemplo, el nombre del paquete es mamiferos.
• La clase Ballena se considera como parte del paquete. Lainclusión de nuevas clases en el paquete es muy sencilla,
ya que basta con colocar la misma sentencia al comienzode los archivos que contengan la declaración de las clases.Como cada clase se debe colocar en un archivo separado,cada uno de los archivos que contengan clasespertenecientes a un mismo paquete, deben incluir la misma
sentencia package, y solamente puede haber una sentenciapackage por archivo.
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 200/220
200
• Se recuerda que el compilador Java solamente requiereque se coloquen en archivos separados las clases que sedeclaren públicas. Las clases no públicas se pueden colocaren el mismo archivo fuente, al igual que las clasesanidadas. Aunque es una buena norma de programaciónque todas las clases se encuentren en un único archivo, la
sentencia package colocada el comienzo de un archivofuente afectará a todas las clases que se declaren en esearchivo.
• Java también soporta el concepto de jeraquía de paquetes.
Esto es parecido a la jerarquía de directorios de la mayoríade los sitemas operativos. Se consigue especificandomúmtiples nombres en la sentencia package, separadospor puntos.
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 201/220
201
• Por ejemplo, en las sentencias siguientes, la clase Ballena pertenece al paquete mamiferos que cae dentro de la jerarquía del paquete animales.
package animales.mamiferos;
class Ballena {. . .}
Esto permite agrupar clases relacionadas en un solo
paquete, y agrupar paquetes relacionados en un paquetemás grande. Para referenciar a un miembro de otropaquete, se debe colocar el nombre del paquete antes delnombre de la clase.
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 202/220
202
• La siguiente sentencia es un ejemplo de llamada al métodoobtenerNombre() de la clase Ballena que pertenece alsubpaquete mamiferos del paquete animales:
animales.mamiferos.Ballena.obtenerNombre();
La analogía con la jerarquía de directorios se ve reforzadapor el intérprete Java, ya que éste requiere que losarchivos .class se encuentren físicamente localizados ensubdirectorios que coincidan con el nombre delsubpaquete. En el ejemplo anterior, si se encontrase en
una máquina Unix, la clase Ballena debería estar situadaen el camino siguiente:
animales/mamiferos/Ballena.class
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 203/220
203
Por supuesto, las convenciones en el nombre de losdirectorios serán diferentes para los distintos sistemasoperativos. El compilador Java colocará los archivos .class en el mismo directorio que se encuentren los archivosfuentes, por lo que puede ser necesario mover los archivos.class resultantes de la compilación al directorio adecuado,
en el caso de que no se encuentren los fuentes en el lugarcorrecto del árbol jerárquico. Aunque los archivos .class también se pueden colocar directamente en el directorioque se desee especificando la opción -d (directorio) a lahora de invocar al compilador. La siguiente línea decomando colocará el archivo resultante de la compilaciónen el subdirectorio animales/mamiferos/Ballena,independientemente de cual sea el directorio desde el cualse esté invocando al compilador.> javac -d animales/mamiferos/Ballena Ballena.java
Elementos de Java
Clases en Java
Declaración de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 204/220
204
Todas las clases quedan englobadas dentro de un mismopaquete, si no se especifica explícitamente lo contrario, esdecir, aunque no se indique nada, las clases pertenecen aun paquete; ya que, como es normal en Java, lo que no sedeclara explícitamente, toma valores por defecto. En este
caso, hay un paquete sin nombre que agrupa a todos losdemás paquetes. Si un paquete no tiene nombre, no esposible para los demás paquetes referenciar a ese paquete,por eso es conveniente colocar todas las clases no trivialesen paquetes, para que puedan ser referenciadas
posteriormente desde cualquier otro programa.
Elementos de Java
Clases en Java
Acceso a otros Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 205/220
205
• Se pueden referenciar paquetes precediendo con sunombre la clase que se quiere usar. También se puedeemplear la palabra clave import, si se van a colocarmúltiples referencias a un mismo paquete, o si el nombredel paquete es muy largo o complicado.
• La sentencia import se utiliza para incluir una lista depaquetes en los que buscar una clase determinada, y susintaxis es:
import nombre_paquete;Esta sentencia, o grupo de ellas, deben aparecer antes de
cualquier declaración de clase en el código fuente. Porejemplo:import animales.mamiferos.Ballena;
Elementos de Java
Clases en Java
Acceso a otros Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 206/220
206
• En este ejemplo, todos los miembros (variables, métodos)de la clase Ballena están accesibles especificandosimplemente su nombre, sin tener que precederlo delnombre completo del paquete.
• Esta forma de abreviar tienes sus ventajas y susdesventajas. La ventaja principal es que el código no sevuelve demasiado difícil de leer y además es más rápido deteclear. La desventaja fundamental es que resulta máscomplicado el saber exactamente a qué paquete pertenece
un determinado miembro; y esto es especialmentecomplicado cuando hay muchos paquetes importados.
Elementos de Java
Clases en Java
Acceso a otros Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 207/220
207
• En la sentencia import también se admite la presencia delcarácter *, asterisco. Cuando se emplea, se indica quetoda la jerarquía de clases localizada a partir del punto enque se encuentre, debe ser importada, en lugar de indicarsolamente una determinada clase.
Por ejemplo, la siguiente sentencia indicaría que todas laclases del subpaquete animales.mamiferos, deben serimportadas:
import animales.mamiferos.*;
Elementos de Java
Clases en Java
Acceso a otros Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 208/220
208
• Esta es una forma simple y sencilla de tener acceso a todaslas clases de un determinado paquete. Aunque el uso delasterisco debe hacerse con cautela, porque al ya de por sí lento compilador, si se pone un asterisco, se cargarántodos los paquetes, lo que hará todavía más lenta lacompilación. No obstante, el asterisco no tiene impacto
alguno a la hora de la ejecución, solamente en tiempo decompilación.
• La sentencia import se utiliza en casi todos los ejemplos,fundamentalmente para acceder a las distintas partes del
API de Java. Por defecto, el conjunto de clases bajo java.lang.* se importan siempre; las otras librerías debenser importadas explícitamente. Por ejemplo, las siguienteslíneas de código premiten el acceso a las clasescorrespondientes a las librerías de manipulacion de
Elementos de Java
Clases en Java
Acceso a otros Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 209/220
209
imágenes y gráficos:
import java.awt.Image;import java.awt.Graphics;
Elementos de Java
Clases en Java
Nomenclatura de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 210/220
210
• Los paquetes pueden nombrarse de cualquier forma quesiga el esquema de nomenclatura de Java. Por convenio,no obstante, los nombres de paquetes comienzan por unaletra minúscula para hacer más sencillo el reconocimientode paquetes y clases, cuando se tiene una referencia
explícita a una clase. Esto es porque los nombres de lasclases, también por convenio, empiezan con una letramayúscula. Por ejemplo, cuando se usa el convenio citado,es obvio que tanto animales como mamiferos sonpaquetes y que Ballena es una clase. Cuanquier cosa quesiga al nombre de la clase es un miembro de esa clase:
animales.mamiferos.Ballena.obtenerNombre();
Elementos de Java
Clases en Java
Nomenclatura de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 211/220
211
• Java sigue este convenio en todo el API. Por ejemplo, elmétodo System.out.println() que tanto se ha utilizado sigueesta nomenclatura. El nombre del paquete no se declaraexplícitamente porque java.lang.* siempre es importadoimplícitamente. System es el nombre de la claseperteneciente al paquete java.lang y está capitalizado. El
nombre completo del método es:
java.lang.System.out.println();
• Cada nombre de paquete ha de ser único, para que el uso
de paquetes sea realmente efectivo. Los conflictos denombres pueden causar problemas a la hora de laejecución en caso de duplicidad, ya que los archivos declases podrían saltar de uno a otro directorio.
Elementos de Java
Clases en Java
Nomenclatura de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 212/220
212
• En caso de proyectos pequeños no es difícil mantener unaunicidad de nombres, pero en caso de grandes proyectos;o se sigue una norma desde el comienzo del proyecto, oéste se convertirá en un auténtico caos.
• No hay ninguna organización en Internet que controle estanomenclatura, y muchas de las aplicaciones Java corrensobre Web. Hay que tener presente que muchos servidoresWeb incluyen applets de múltiples orígenes, con lo cualparece poco menos que imposible el evitar que alguien
duplique nombres.
Elementos de Java
Clases en Java
Nomenclatura de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 213/220
213
• Javasoft ha reconocido este problema ya en una faseavanzada de su desarrollo, así que han indicado unaconvención para asegurar que los nombres de los paquetessean únicos, basándose en los dominios, colocándolos alrevés. Es decir, un dominio del tipo miempresa.com ,debería colocar delante de todos sus paquetes el prefijo
com.miempresa. Esto resolvería el problema de lanomenclatura, ya que los desarrolladores podrían controlarsus propios paquetes y, además, se generaría unaestructura jerárquica de paquetes muy limpia. De hecho, elpaquete Swing en la versión beta 3 del JDK 1.2 se situóbajo el árbol java.awt, lo cual sugería que las clases Swing dependían del AWT, cuando es un paquete autosuficiente yque no tiene mucho que ver con el AWT, así que Javasoftdió marcha atrás en su nomenclatura y colocó el paqueteen su situación actual com.java.Swing.
Elementos de Java
Clases en Java
Nomenclatura de Paquetes
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 214/220
214
Como norma y resumen de todo lo dicho, a la hora decrear un paquete hay que tener presente una serie deideas:
• La palabra clave package debe ser la primera sentenciaque aparezca en el archivo, exceptuando, claro está, los
espacios en blanco y comentarios• Es aconsejable que todas las clases que vayan a ser
incluidas en el paquete se encuentren en el mismodirectorio.
• Ante todo, recordar que en un archivo únicamente puede
existir, como máximo, una clase con el especificador deacceso public, debiendo coincidir el nombre del archivo conel nombre de la clase
Elementos de Java
Clases en Java
Ejemplo
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 215/220
215
Cree dos directorios en la raíz curso y curso1Implemente una clase java llamada Uno, que maneje un datomiembro en el directorio curso. (con esta clase cree el paqueteuno)Implemente una clase java llamada Dos, importe el paquete unoy que llame a las funciones miembros de la clase Uno, realice esto
en el directorio curso1.curso Uno.java -- packagecurso1 Dos.java – import
Compile las dos clases Uno.java y Dos.java javac –classpath . –d . curso\Uno.java javac –classpath . –d . curso1\Dos.javaEjecute: el programa Dos javac –classpath . –d . curso1\Dos.java
Elementos de Java
Clases en Java
Paquetes en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 216/220
216
• El lenguaje Java proporciona una serie de paquetes queincluyen ventanas, utilidades, un sistema de entrada/salidageneral, herramientas y comunicaciones. En la versiónactual del JDK, algunos de los paquetes Java que seincluyen son los que se muestran a continuación, que no esuna lista exhaustiva, sino para que el lector pueda tener
una idea aproximada de lo que contienen los paquetes másimportantes que proporciona el JDK de Sun.Posteriormente, en el desarrollo de otros apartados delTutorial, se introducirán otros paquetes que tambiénforman parte del JDK y que, incorporan características aJava que hacen de él un lenguaje mucho más potente y
versátil, como son los paquetes Java2D o Swing , que hanentrado a formar parte oficial del JDK en la versión JDK 1.2.
Elementos de Java
Clases en Java
Paquetes en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 217/220
217
java.applet Este paquete contiene clases diseñadas para usar conapplets. Hay la clase Applet y tres interfaces:
AppletContext, AppletStub y AudioClip.
java.awt El paquete Abstract Windowing Toolkit (awt) contieneclases para generar widgets y componentes GUI (InterfazGráfico de Usuario), de manipulación de imágenes,impresión, fuentes de caracteres, cursores, etc.. Incluye las
clases Button, Checkbox, Choice, Component,Graphics, Menu, Panel, TextArea, TextField...
Elementos de Java
Clases en Java
Paquetes en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 218/220
218
java.io El paquete de entrada/salida contiene las clases de accesoa archivos, de filtrado de información, serialización deobjetos, etc.: FileInputStream, FileOutputStream,FileReader, FileWriter. También contiene los interfaces
que facilitan la utilización de las clases: DataInput,DataOutput, Externalizable, FileFilter,FilenameFilter, ObjectInput, ObjectOutput,Serializable...
java.lang
Este paquete incluye las clases del lenguaje Javapropiamente dicho: Object, Thread, Exception,System, Integer, Float, Math, String, Package,Process, Runtime, etc.
Elementos de Java
Clases en Java
Paquetes en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 219/220
219
java.net Este paquete da soporte a las conexiones del protocoloTCP/IP y, además, incluye las clases Socket, URL yURLConnection.
java.sql
Este paquete incluye todos los interfaces que dan acceso aBases de Datos a través de JDBC, Java DataBase Connectivity , como son: Array, Blob, Connection,Driver, Ref , ResultSet, SQLData, SQLInput,SQLOutput, Statement, Struct; y algunas clases
específicas: Date, DriveManager, Time, Types...
Elementos de Java
Clases en Java
Paquetes en Java
5/17/2018 Curso Java - slidepdf.com
http://slidepdf.com/reader/full/curso-java-55b07a97b6e2b 220/220
java.util Este paquete es una miscelánea de clases útiles paramuchas cosas en programación: estructuras de datos,fechas, horas, internacionalización,etc. Se incluyen, entreotras, Date (fecha), Dictionary (diccionario), List (lista),
Map (mapa), Random (números aleatorios) y Stack (pilaFIFO). Dentro de este paquete, hay tres paquetes muyinteresantes: java.util.jar, que proporciona clases paraleer y crear archivos JAR ; java.util.mime, queproporciona clases para manipular tipos MIME,