curso java

220
 1 MARZO AGOSTO 2012 DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA  PROGRAMACIÓN II José Luis Carrillo Medina  [email protected] .ec ESCUELA POLITÉCNICA DEL EJÉRCITO EXTENSIÓN LATACUNGA ESPE

Upload: joel-david-navas-pazmino

Post on 19-Jul-2015

159 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Curso Java

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

 [email protected]

ESCUELA POLITÉCNICA DEL EJÉRCITOEXTENSIÓN LATACUNGA

ESPE

Page 2: Curso Java

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

Page 3: Curso Java

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%

Page 4: Curso Java

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

Page 5: Curso Java

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

Page 6: Curso Java

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

Page 7: Curso Java

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:

 

Page 8: Curso Java

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:

 

Page 9: Curso Java

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:

 

Page 10: Curso Java

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:

 

Page 11: Curso Java

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:

 

Page 12: Curso Java

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:

 

Page 13: Curso Java

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:

 

Page 14: Curso Java

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:

 

Page 15: Curso Java

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:

 

Page 16: Curso Java

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:

 

Page 17: Curso Java

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:

 

Page 18: Curso Java

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:

 

Page 19: Curso Java

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:

 

Page 20: Curso Java

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? :

 

Page 21: Curso 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? :

 

Page 22: Curso 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? :

 

Page 23: Curso 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? :

 

Page 24: Curso 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? :

 

Page 25: Curso 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:

 

Page 26: Curso Java

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:

 

Page 27: Curso Java

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:

 

Page 28: Curso Java

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:

 

Page 29: Curso Java

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:

 

Page 30: Curso Java

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:

 

Page 31: Curso Java

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:

 

Page 32: Curso Java

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:

 

Page 33: Curso Java

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:

 

Page 34: Curso Java

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:

 

Page 35: Curso Java

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:

 

Page 36: Curso Java

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:

 

Page 37: Curso Java

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:

 

Page 38: Curso Java

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:

 

Page 39: Curso Java

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:

 

Page 40: Curso Java

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:

 

Page 41: Curso Java

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:

 

Page 42: Curso Java

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:

 

Page 43: Curso Java

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:

 

Page 44: Curso Java

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:

 

Page 45: Curso Java

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:

 

Page 46: Curso Java

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 

 

Page 47: Curso Java

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

 

Page 48: Curso Java

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)

 

Page 49: Curso Java

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

 

Page 50: Curso Java

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

 

Page 51: Curso 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) 

 

Page 52: Curso Java

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

 

Page 53: Curso Java

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

 

Page 54: Curso Java

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)

 

Page 55: Curso Java

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

 

Page 56: Curso 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

 

Page 57: Curso 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’ 

 

Page 58: Curso Java

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’ 

 

Page 59: Curso Java

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]

 

Page 60: Curso Java

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

 

Page 61: Curso Java

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

 

Page 62: Curso 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

 

Page 63: Curso Java

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

 

Page 64: Curso Java

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

 

Page 65: Curso Java

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

 

Page 66: Curso Java

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

 

Page 67: Curso Java

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

 

Page 68: Curso Java

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

 

Page 69: Curso Java

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

 

Page 70: Curso Java

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

 

Page 71: Curso Java

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

 

Page 72: Curso Java

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

 

Page 73: Curso Java

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

 

Page 74: Curso Java

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

Page 75: Curso Java

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

Page 76: Curso Java

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

Page 77: Curso Java

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

Page 78: Curso Java

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

Page 79: Curso Java

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

Page 80: Curso Java

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

Page 81: Curso 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

Page 82: Curso 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

Page 83: Curso 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

Page 84: Curso 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

Page 85: Curso 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

Page 86: Curso 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

Page 87: Curso 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

Page 88: Curso 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

Page 89: Curso 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

Page 90: Curso 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

Page 91: Curso 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

Page 92: Curso 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

Page 93: Curso 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

Page 94: Curso 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

Page 95: Curso 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

Page 96: Curso 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

Page 97: Curso 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

Page 98: Curso 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

Page 99: Curso 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

Page 100: Curso 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

Page 101: Curso 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

Page 102: Curso 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

Page 103: Curso 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

Page 104: Curso Java

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

Page 105: Curso Java

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

Page 106: Curso Java

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

Page 107: Curso Java

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

Page 108: Curso Java

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

Page 109: Curso Java

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

Page 110: Curso Java

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

Page 111: Curso Java

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

Page 112: Curso Java

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

Page 113: Curso Java

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

Page 114: Curso Java

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

 

Ó

Page 115: Curso Java

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

Page 116: Curso Java

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

Page 117: Curso Java

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

Page 118: Curso Java

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

Page 119: Curso Java

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

Page 120: Curso Java

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

Page 121: Curso Java

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

Page 122: Curso Java

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ó

Page 123: Curso Java

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

Page 124: Curso Java

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

Page 125: Curso Java

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

Page 126: Curso Java

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

Page 127: Curso Java

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

Page 128: Curso Java

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

Page 129: Curso Java

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

Page 130: Curso Java

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

Page 131: Curso Java

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

Page 132: Curso Java

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

Page 133: Curso Java

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

Page 134: Curso Java

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

Page 135: Curso Java

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

Page 136: Curso Java

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

Page 137: Curso Java

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

Page 138: Curso Java

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

Page 139: Curso Java

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

Page 140: Curso Java

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

Page 141: Curso Java

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

Page 142: Curso Java

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

Page 143: Curso Java

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

Page 144: Curso Java

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

Page 145: Curso Java

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

Page 146: Curso Java

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

Page 147: Curso Java

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

Page 148: Curso Java

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

Page 149: Curso 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

Page 150: Curso 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

Page 151: Curso 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

Page 152: Curso 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

Page 153: Curso 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

Page 154: Curso 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

Page 155: Curso 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

Page 156: Curso 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

Page 157: Curso 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

Page 158: Curso 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

Page 159: Curso 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

Page 160: Curso 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

Page 161: Curso 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

Page 162: Curso 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

Page 163: Curso Java

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

Page 164: Curso Java

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

Page 165: Curso Java

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

Page 166: Curso Java

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

Page 167: Curso Java

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

Page 168: Curso Java

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

Page 169: Curso Java

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

Page 170: Curso Java

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

Page 171: Curso Java

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

Page 172: Curso Java

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

Page 173: Curso Java

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

Page 174: Curso Java

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

Page 175: Curso Java

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

Page 176: Curso Java

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

Page 177: Curso Java

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

Page 178: Curso Java

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

Page 179: Curso Java

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

Page 180: Curso Java

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

Page 181: Curso 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

Page 182: Curso 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

Page 183: Curso 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

Page 184: Curso 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

Page 185: Curso 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

Page 186: Curso 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

Page 187: Curso 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

Page 188: Curso 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

Page 189: Curso 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

Page 190: Curso 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

Page 191: Curso 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

Page 192: Curso 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

ó é

Page 193: Curso 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

Page 194: Curso Java

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

Page 195: Curso Java

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

Page 196: Curso Java

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

Page 197: Curso Java

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

Page 198: Curso Java

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

Page 199: Curso Java

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

Page 200: Curso Java

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

Page 201: Curso Java

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

Page 202: Curso Java

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

Page 203: Curso Java

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

Page 204: Curso Java

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

Page 205: Curso Java

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

Page 206: Curso Java

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

Page 207: Curso Java

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

Page 208: Curso Java

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

Page 209: Curso Java

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

Page 210: Curso Java

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

Page 211: Curso Java

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

Page 212: Curso Java

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

Page 213: Curso Java

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

Page 214: Curso Java

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

Page 215: Curso Java

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

Page 216: Curso 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

Page 217: Curso 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

Page 218: Curso 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

Page 219: Curso 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

Page 220: Curso 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,