0% encontró este documento útil (0 votos)
79 vistas107 páginas

Curso Java Enero2016 Tema1

Cargado por

spamincomming
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas107 páginas

Curso Java Enero2016 Tema1

Cargado por

spamincomming
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 107

Programación

Orientada a Objetos
con Java
POO con Java

1. Introducción a Java
2. Programación Orientada a Objetos en Java
3. Manejo de excepciones
4. Entrada/Salida en Java
5. Estructuras de datos. Colecciones
6. Gestión de bases de datos
7. Servlets – JSP – EL – JSTL
1. Introducción a Java
Fundamentos del lenguaje Java
Java se creó como parte de un proyecto de investigación para el
desarrollo de software avanzado para una amplia variedad de
dispositivos de red y sistemas embebidos. La meta era diseñar una
plataforma operativa sencilla, segura, portable, distribuida y de
tiempo real.
1. Introducción a Java
 Java es un lenguaje desarrollado por Sun, apareciendo la primera
versión en 1991.

 Java nace como un lenguaje ideado en sus comienzos para


programar electrodomésticos!

 En sus primeras versiones, se llamó OAK (roble en inglés)

 Es un lenguaje orientado a objetos, siendo un OBJETO un


conjunto de variables y de métodos relacionados con esas
variables.
1. Introducción a Java
 Compilación. “Compilar” significa traducir el código escrito
en “Lenguaje entendible por humanos” (por ejemplo Java,
C, Pascal, Fortran), a un código en “Lenguaje Máquina”,
que entienden las máquinas, pero no entendible por
nosotros.
 La creación de programas en muchos lenguajes se basa en
el proceso: escribir código fuente --> compilar y obtener
programa ejecutable. El compilador se encarga de evitar
que se pueda traducir un programa con código fuente mal
escrito y de hacer otras verificaciones previas, de modo que
el código máquina tiene ciertas garantías de que cumple
cuando menos con los estándares de sintaxis obligatorios
de un lenguaje.
1. Introducción a Java
1. Introducción a Java
 Java incluye dos elementos:
 Compilador: traduce a un código intermedio denominado
bytecode que se almacena en un fichero (Lenguaje
Precompilado).
 Intérprete: utiliza las clases compiladas y las ejecuta. Es
lo que se conoce como Máquina Virtual (Lenguaje
interpretado).
1. Introducción a Java
 Una máquina virtual Java (en inglés Java Virtual
Machine, JVM) es una máquina virtual de proceso
nativo, es decir, ejecutable en una plataforma
específica, capaz de interpretar y ejecutar
instrucciones expresadas en un código binario especial
(el bytecode Java), el cual es generado por el
compilador del lenguaje Java.
1. Introducción a Java
 Lenguaje simple: resulta sencillo y rápido el aprendizaje desde el
principio.

 Orientado a objetos: agrupa información de forma estructurada.


Además incorpora mecanismos que facilitan la extensibilidad y
reutilización del código: herencia, polimorfismo, …

 Robusto: proporciona numerosas comprobaciones en


compilación y en tiempo de ejecución. Además la recolección de
basura elimina la necesidad de liberación explícita de memoria.
1. Introducción a Java
 Seguro: tanto el lenguaje como el sistema de ejecución en tiempo
real, no afectan al terminal sobre el que se ejecuta el código.

 Distribuido: proporciona una colección de clases para su uso en


aplicaciones de red, por ejemplo: RMI, CORBA.

 Interpretado: su código fuente se transforma en un código


llamado bytecodes
1. Introducción a Java
 Indiferente a la arquitectura: el compilador de Java genera
bytecodes: un formato intermedio indiferente a la
arquitectura, diseñado para transportar el código
eficientemente a múltiples plataformas hardware y software.

 Portable: la indiferencia a la arquitectura representa sólo


una parte de su portabilidad. Además, Java especifica los
tamaños de sus tipos de datos básicos y el comportamiento
de sus operadores aritméticos, de manera que los
programas son iguales en todas las plataformas.

* Estas dos últimas características se deben a la Máquina Virtual


Java (JVM).
1. Introducción a Java
 Multitarea: soporta sincronización de múltiples hilos de ejecución
a nivel de lenguaje, especialmente útiles en la creación de
aplicaciones de red distribuidas.

 Dinámico: el lenguaje Java y su sistema de ejecución en tiempo


real son dinámicos en la fase de enlazado, ya que las clases son
creadas a medida que son necesitadas.
1. Introducción a Java
¿Qué es una aplicación Java?

 Es un conjunto de clases que desempeñan una


función específica.

 Los pasos para crear una aplicación Java son:


 Editar: se generan archivos .java
 Compilar: se generan archivos .class
 Ejecutar: se obtiene la salida de la aplicación.
1. Introducción a Java
 Entorno de Desarrollo Integrado (IDE) – Eclipse

 Última versión Eclipse Mars.1 (4.5.1)


1. Introducción a Java
 Entorno de Desarrollo Integrado (IDE) – NetBeans

 NetBeans: última versión NetBeans 8.1


2.Programación Orientada a
Objetos en Java
Junto con el paradigma de la orientación a procedimientos, son las dos
filosofías generales de diseño más importantes. A diferencia de la orientación
a procedimientos (OP), la orientación a objetos (OO) no concibe los
procesos como una secuencia de procedimientos con su entrada y salida
sino que se basa en un conjunto de objetos interactuando:
2.Programación Orientada a
Objetos en Java
Es importante distinguir entre los conceptos de clase y objeto:

 Clase: Es un modelo abstracto de un tipo de objeto. Define sus métodos y atributos.

 Objeto: Es una instancia de una clase, es decir, la implementación con valores de un modelo
abstracto.

Las clases no son entidades independientes sino que se agrupan jerárquicamente heredando
características y atributos. Cada instancia o implementación real de una clase constituirá un nuevo
objeto por lo que se pueden crear infinitos objetos distintos a partir de una sola clase.
2.Programación Orientada a
Objetos en Java
 Inicialización y finalización
 La iniciación de los atributos de la clase se realiza en Java
mediante el uso de constructores cuyo nombre coincide con el de
la clase.
2.Programación Orientada a
Objetos en Java
 Java permite la sobrecarga de operaciones, por tanto se pueden
definir varios constructores posible para una clase siempre que se
diferencien en la lista de argumentos
2.Programación Orientada a
Objetos en Java
 Si no se proporciona ningún constructor, Java
proporciona automáticamente un constructor por
defecto, que no recibe argumentos y realiza una
inicialización por defecto de los atributos

 Una vez implementado un constructor propio por parte


del programador, Java elimina dicho constructor,
aunque puede ser definido nuevamente de manera
explícita
2.Programación Orientada a
Objetos en Java
 Cuando finaliza el uso de un objeto, es frecuente la
realización de ciertas tareas antes de su destrucción,
principalmente la liberación de la memoria solicitada
durante su ejecución.

 En Java la liberación de memoria se realiza de manera


automática por parte del recolector de basura, por
tanto la necesidad de este tipo de operaciones no
existe en la mayor parte de los casos
2.Programación Orientada a
Objetos en Java
 Sin embargo sí puede ser necesario realizar alguna
tarea no relacionada con la liberación de memoria
antes de la destrucción del objeto, como por ejemplo
salvar el estado de la clase en un fichero o base de
datos

 Java permite introducir código para este fin


implementando una operación pública especial
denominada finalize. Esta operación es invocada
automáticamente antes de la destrucción del objeto por
parte del recolector de basura
2.Programación Orientada a
Objetos en Java
 Problema: no es posible saber con seguridad en qué
momento será invocada finalize, puesto que el
recolector de basura puede decidir su eliminación en
un momento indeterminado, e incluso no ser eliminado
hasta el final de la ejecución de la aplicación
 Una posible solución es ordenar al recolector de
basura que realice una limpieza de memoria inmediata,
para asegurar la finalización de los objetos. Esto se
realiza mediante Runtime.getRuntime().gc()
 Por motivos de eficiencia, lo anterior es poco
recomendable, sobre todo si se hace con frecuencia
2.Programación Orientada a
Objetos en Java
 Relaciones entre objetos
 Un conjunto de objetos aislados tiene escasa capacidad para
resolver un problema. En una aplicación real los objetos colaboran
e intercambian información, existiendo distintos tipos de
relaciones entre ellos

 A nivel de diseño, podemos distinguir entre 5 tipos de relaciones


básicas entre clases de objetos: dependencia, asociación,
agregación, composición y herencia
2.Programación Orientada a
Objetos en Java
 La dependencia es la relación menos importante. Simplemente
refleja que la implementación de una clase depende de otra

 Una dependencia puede indicar la utilización de un objeto de una


clase como argumento de una operación de otra o en su
implementación
2.Programación Orientada a
Objetos en Java
 En cambio, la asociación es la relación más importante y común.
Refleja una relación entre dos clases independientes que se
mantiene durante la vida de los objetos de dichas clases o al
menos durante un tiempo prolongado

 Una asociación se implementa en Java introduciendo referencias


a objetos una clase como atributos en la otra
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
 La agregación es un tipo especial de asociación donde se añade
el matiz semántico de que la clase de donde parte la relación
representa el “todo” y las clases relacionadas “las partes”

 Realmente Java y la mayoría de lenguajes orientados a objetos no


disponen de una implementación especial para este tipo de
relaciones. Básicamente se tratan como las asociaciones
ordinarias
2.Programación Orientada a
Objetos en Java
 La composición es un tipo de agregación que añade el matiz de
que la clase “todo” controla la existencia de las clases “parte”. Es
decir, normalmente la clase “todo” creará al principio las clases
“parte” y al final se encargará de su destrucción

 Supongamos que añadimos un registro de movimientos a la clase Cuenta, de


forma que quede constancia tras cada ingreso o reintegro
2.Programación Orientada a
Objetos en Java
 Las composiciones tienen una implementación similar
a las asociaciones, con la diferencia de que el objeto
principal realizará en algún momento la construcción
de los objetos compuestos
2.Programación Orientada a
Objetos en Java
 Clases anidadas e interiores
 Java y algunos otros lenguajes OOP permiten la definición de una
clase de objetos dentro de otra, con una doble utilidad:

 Organizar mejor el código. Empaquetar en una clase principal


otras que no tienen utilidad o sentido fuera del contexto de ésta

 Evitar colisiones de nombres. La clase principal define un


espacio de nombres al que pertenecen las anidadas
2.Programación Orientada a
Objetos en Java
 Al igual que cualquier otro miembro de una clase, una clase
anidada puede ser estática o no estática y utilizar los niveles de
protección public, private y protected

 El tipo de clase anidamiento más sencillo es aquel en que la clase


contenida se declara como estática

 Desde el punto de vista de la organización del código, tendría


mucho más sentido introducir la clase Movimiento en el interior de
Cuenta. Al ser declarada como privada, se impediría su utilización
desde el exterior
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
 Cuando la clase anidada no es estática, se denomina clase
interior y tiene características especiales:

 Pueden ser creadas únicamente dentro de la clase continente


 Tiene acceso completo y directo a todos los atributos y
operaciones del objeto que realiza su creación

 Los objetos de la clase interior quedan ligados permanentemente


al objeto concreto de la clase continente que realizó su creación

 No debe confundirse este elemento con la relación de


composición, aunque en muchos casos es posible utilizar clases
interiores para la implementación de este tipo de relaciones
2.Programación Orientada a
Objetos en Java
 Implementando la clase Movimiento como una clase interior es
posible copiar el valor del saldo actual de la cuenta que realiza el
movimiento de manera directa
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
 Aplicaciones orientadas a objetos
 En una aplicación orientada a objetos debe existir una clase que
represente la propia aplicación. Este sería el punto donde
comenzaría la ejecución de la misma
 La máquina virtual Java se encarga de instanciar esta clase y
llamar a una operación especial con nombre main. La existencia
de esta operación especial es lo que caracteriza a la clase de
aplicación
 La clase de aplicación debe ser pública y no tener ningún
constructor o un constructor por defecto
 Al menos debe implementar la operación main, con la siguiente
declaración: public static main(String[] args)
2.Programación Orientada a
Objetos en Java
Encapsulamiento
 Se define como el proceso de empaquetar juntos los métodos y los datos en un
objeto. El objeto se encarga de ocultar sus datos al resto de objetos.

 La encapsulación permite una seguridad mayor en el acceso a los datos ya que


este acceso depende directamente de cada objeto. Asimismo, permite abstraer
los detalles internos de funcionamiento del objeto.
2.Programación Orientada a
Objetos en Java
Intercambio de mensajes

Los objetos se comunican entre sí mediante mensajes de


invocación a métodos:
2.Programación Orientada a
Objetos en Java
Herencia
Es el concepto que define la adopción de todas las características
de una clase por parte de otra clase que es definida como
descendiente o heredera de la primera.
2.Programación Orientada a
Objetos en Java
 La herencia es un mecanismo de la OOP que permite construir
una clase incorporando de manera implícita todas las
características de una clase previamente existente. Las razones
que justifican su necesidad son variadas:
 Modelado de la realidad. Son frecuentes las relaciones de
especialización/generalización entre las entidades del mundo real, por tanto es
lógico que dispongamos de un mecanismo similar entre las clases de objetos

 Evitar redundancias. Toda la funcionalidad que aporta una clase de objetos es


adoptada de manera inmediata por la clase que hereda, por tanto evitamos la
repetición de código entre clases semejantes

 Facilitar la reutilización. Una clase no tiene por qué limitarse a recibir una serie
de características de otra clase por herencia de forma pasiva. También disponen
de cierto margen de adaptación de estas características

 Soporte al polimorfismo
2.Programación Orientada a
Objetos en Java
 Sea una clase A. Si una segunda clase B hereda de A entonces
decimos:

 A es un ascendiente o superclase de B. Si la herencia entre A y


B es directa decimos además que A es la clase padre de B

 B es un descendiente o subclase de A. Si la herencia entre A y B


es directa decimos además que B es una clase hija de A
2.Programación Orientada a
Objetos en Java
 Todas las clases heredan automáticamente de una superclase
universal. En Java esta superclase se denomina Object

 Existen diferentes situaciones en las que puede aplicarse


herencia:

 Especialización. Dado un concepto B y otro concepto A que


representa una especialización de A, entonces puede
establecerse una relación de herencia entre las clases de objetos
que representan a A y B. En estas situaciones, el enunciado “A es
un B” suele ser aplicable
2.Programación Orientada a
Objetos en Java
 Extensión. Una clase puede servir para extender la funcionalidad
de una superclase sin que represente necesariamente un
concepto más específico
2.Programación Orientada a
Objetos en Java
 Especificación. Una superclase puede servir para especificar la
funcionalidad mínima común de un conjunto de descendientes.
Existen mecanismos para obligara la implementación de una serie
de operaciones en estos descendientes
2.Programación Orientada a
Objetos en Java
 Construcción. Una clase puede construirse a partir de otra,
simplemente porque la hija puede aprovechar internamente parte
o toda la funcionalidad del padre, aunque representen entidades
sin conexión alguna
2.Programación Orientada a
Objetos en Java
 Ejemplos de Herencia
Distintos tipos de cuentas bancarias
2.Programación Orientada a
Objetos en Java
 Elementos de una interfaz de usuario
2.Programación Orientada a
Objetos en Java
 Hemos visto anteriormente como los distintos niveles de
protección limitan el acceso a los miembros de la clase desde el
exterior. ¿Pero como afectan estos niveles de protección a los
miembros heredados?

 Miembros públicos. Son accesibles desde los descendientes, y se


heredan como públicos

 Miembros privados. No son accesibles desde los descendientes

 Miembros con acceso a nivel de paquete. Son accesibles desde


los descendientes siempre y cuando pertenezcan al mismo
paquete que el ascendiente. Se heredan con el mismo nivel de
protección
2.Programación Orientada a
Objetos en Java
 Un nuevo nivel de protección es el de miembros protegidos
(protected). Un miembro protegido es accesible únicamente desde
los descendientes

 Además, un miembro protegido mantiene en las subclases el nivel


de acceso protegido

 El sentido del polimorfismo es realizar una generalización, olvidar


los detalles concretos de uno o varios objetos de distintas clases y
buscar un punto común a todos ellos en un ancestro
2.Programación Orientada a
Objetos en Java
 Polimorfismo
 Son dos mecanismos relacionados que otorgan a la OOP una
gran potencia frente a otros paradigmas de programación

 Únicamente tienen sentido por la existencia de la herencia

 El polimorfismo (o upcasting) consiste en la posibilidad de que una


referencia a objetos de una clase pueda conectarse también con
objetos de descendientes de ésta
2.Programación Orientada a
Objetos en Java
 Ligadura dinámica
 Entendemos por resolución de una llamada el proceso por el cual
se sustituye una llamada a una función por un salto a la dirección
que contiene el código de esta función

 Normalmente, la resolución de llamadas se realiza en en tiempo


de compilación, porque resulta más sencillo y sobre todo más
eficiente. Cuando la aplicación se está ejecutando, las llamadas
ya están “preparadas”. Este enfoque se denomina ligadura
estática
2.Programación Orientada a
Objetos en Java
 El problema aparece en OOP cuando realizamos una
conexión polimorfa y llamamos a una operación
redefinida
2.Programación Orientada a
Objetos en Java
 La solución consiste en esperar a resolver la llamada al tiempo de
ejecución, cuando se conoce realmente los objetos conectados a
r, y cuál es la versión de f() apropiada. Este enfoque de resolución
de llamadas se denomina ligadura dinámica y es mucho más lenta
y compleja que la estática

 La ligadura dinámica, por defecto en Java, garantiza siempre la


llamada a la versión correcta de cada función, con independencia
del uso de conexiones polimorfas o no
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
3.1. Comentarios

// Comentarios de una línea

/* Comentarios de una o
más líneas */
2.Programación Orientada a
Objetos en Java
3.2. Identificadores
 Son los nombres unívocos que se le dan a las clases, métodos y
variables.

 Hay que tener en cuenta que:


• Deben empezar por una letra, subrayado (_) o dólar ($)
• Después del primer carácter pueden usar números.
• Distinguen las mayúsculas y minúsculas.
• Nunca pueden coincidir con una „keyword‟ o palabra reservada
del lenguaje Java
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
 Estos identificadores serían válidos:
nombre_usuario
_sys_var2
$cambio
if2
nombreUsuario
Identificador
 Estos no:
2013Presupuestos
*CodigoCuenta
-numeroCliente
2.Programación Orientada a
Objetos en Java
3.3. Variables
 Una variable es un contenedor de datos identificado mediante un
nombre (identificador). Dicho identificador se utilizará para
referenciar el dato que contiene.

 Toda variable debe llevar asociado un tipo que describe el tipo


de dato que guarda. Por tanto, una variable tiene:
• Un tipo
• Un identificador
• Un dato (o valor)
2.Programación Orientada a
Objetos en Java
Declaración de variables
 Es la sentencia mediante la cual se define una variable,
asignándole un tipo y un identificador:
tipo identificador;
int cont;

 Adicionalmente se le puede asignar un valor inicial


mediante una asignación:
tipo identificador = valor;
int cont = 10;

 Si no se le asigna un valor, se inicializará con el valor por


defecto para ese tipo.
2.Programación Orientada a
Objetos en Java
3.4. Tipos de datos

 En Java existen dos tipos de datos genéricos:


Tipos primitivos.
Tipos complejos: clases.

 Existen ocho tipos de datos primitivos clasificados en


cuatro grupos diferentes:
Carácter: char
Lógico: boolean
Números enteros: byte, short, int y long
Números reales: double y float
2.Programación Orientada a
Objetos en Java
Tipo de dato lógico
 La „keyword‟ es: boolean
 Sus posibles valores son:
true
false

 Su valor por defecto es:


false

 Ejemplos:
boolean switch1 = true;
boolean switch2; // se inicializará con su valor por defecto (false)
2.Programación Orientada a
Objetos en Java
Tipo de dato carácter
 La „keyword‟ es: char
 Representa un carácter UNICODE.
 Su tamaño es: 16 bits (2 bytes).
 Sus posibles valores son:
Un carácter entre comillas simples: „a‟.
Un carácter especial con \ por delante: „\n‟, „\t‟, etc.
Un código UNICODE: „\uxxxx‟ (donde xxxx es un valor en
hexadecimal).
2.Programación Orientada a
Objetos en Java
Tipos de datos enteros
 Las „keywords‟ son: byte, short, int y long
 Sus tamaños son:
byte: 8 bits (1 byte), por tanto: -128 a 127.
short: 16 bits (2 bytes), por tanto: -32768 a 32767
int: 32 bits (4 bytes), por tanto: -2147483468 a 2147483467
long: 64 bits (8 bytes), por tanto: -enorme a enorme

 Sus posibles valores son:


Un valor decimal entero: 2 (por defecto int) o 2L (long).
Un valor octal: 077.
Un valor hexadecimal: 0xBAAC
2.Programación Orientada a
Objetos en Java
Tipos de datos reales

 Las „keywords‟ son: float y double


 Sus tamaños son:
float: 32 bits (4 bytes). Su precisión varía según plataforma.
double: 64 bits (8 bytes). Su precisión también varía.

 Sus posibles valores son:


Un valor decimal entero: 2 (por defecto int).
Un valor decimal real: 0.17 o 6.02E23 (por defecto double).
Un valor decimal real: 0.17F o 0.17D (redundante).
2.Programación Orientada a
Objetos en Java
Tipos de datos reales

 Su valor por defecto es: 0.0 (cero)


 Ejemplos:
float unFloat = 0.17F;
double unDouble;
double otroDouble = -12.01E30;
2.Programación Orientada a
Objetos en Java
Tipo de dato complejo
 La „keyword‟ es el nombre de la clase del objeto que va
a contener la variable.
 Posibles valores:
Referencias a objetos (o instancias) en memoria.

 Su valor por defecto es: null


 Ejemplos:
String unString = new String(“Hola”);
String otroString;
2.Programación Orientada a
Objetos en Java
Ámbito de las variables

 El ámbito de una variable es la zona de código donde se


puede referenciar dicha variable a través de su identificador.

 El lugar de definición de una variable establece su ámbito.


 Ámbitos:
Atributos (o variables miembro).
Parámetros de método.
Variables locales: siempre hay que inicializarlas.
Variables de bloque: siempre hay que inicializarlas.
2.Programación Orientada a
Objetos en Java
2.Programación Orientada a
Objetos en Java
Conversiones entre tipos

 Se realizan de forma automática:


 las conversiones implícitas de un tipo a otro de más
precisión.
byte short int long float double
 conversiones a clases ascendentes en línea de herencia
Coche Vehículo
2.Programación Orientada a
Objetos en Java
 También se permiten conversiones explicitas a través
del Casting.

 Estas conversiones se comprueban en tiempo de


ejecución. Son conversiones inseguras, pueden lanzar
excepciones.
byte b = (byte)127
2.Programación Orientada a
Objetos en Java
Operadores

 Los operadores se pueden dividir en las siguientes


categorías:
 Aritméticos
 Relacionales
 Condicionales
 De desplazamiento
 Lógicos
 De asignación
 Otros
2.Programación Orientada a
Objetos en Java
Operadores aritméticos

 Tenemos los siguientes operadores aritméticos:


+: suma dos operandos (op1 + op2). Nota: en el caso de
Strings concatena.
- : resta dos operandos (op1 – op2).
*: multiplica dos operandos (op1 * op2).
/: divide dos operandos (op1 / op2).
%: calcula el resto de la división (op1 % op2).
2.Programación Orientada a
Objetos en Java
Operadores aritméticos

 También existen operadores aritméticos unarios:


+op: convierten a op en int en caso de que fuese byte, short o char.
-op: cambia el signo a op.
++op: incrementa op en 1 (evaluando op después de
incrementarse).
op++: incrementa op en 1 (evaluando op antes de
incrementarse)
--op: decrementa op en 1 (evaluando op después de
decrementarse).
op--: decrementa op en 1 (evaluando op antes de
decrementarse)
2.Programación Orientada a
Objetos en Java
 Ejemplo
2.Programación Orientada a
Objetos en Java
Operadores relacionales

 Tenemos los siguientes operadores relacionales:


>: compara si un operando es mayor que otro
(op1 > op2)
<: compara si un operando es menor que otro
(op1 < op2)
==: compara si un operando es igual que otro
(op1 == op2)
!=: compara si un operando es distinto que otro
(op1 != op2)
>=: compara si un operando es mayor o igual que otro
(op1 >= op2)
<=: compara si un operando es menor o igual que otro
(op1 <= op2)
2.Programación Orientada a
Objetos en Java
Operadores condicionales

Suelen combinarse con los relacionales para crear expresiones mas complejas.

Tenemos los siguientes operadores condicionales:

&&: AND lógico. Chequea si ambos operandos son verdaderos

(op1 && op2)

||: OR lógico. Chequea si uno de los dos operandos es verdadero

(op1 || op2)

!: NOT lógico. Niega al operador

(!op)
2.Programación Orientada a
Objetos en Java
Precedencia Operador Precedencia Operador
1 ++ , -- 5 instanceof
1 + , - unarios 6 ==, !=
1 ~ 7 &
1 ! 8 ^
1 (tipo) 9 |
2 *, /, % 10 &&
3 +, - 11 ||
3 + 12 ?:
4 << 13 =
4 >> 13 *=, /=, %=, +=, -=,
<<=, >>=, >>>=,
4 >>>
&=, ^=, |=
5 <, <=, >, >=
2.Programación Orientada a
Objetos en Java
 Ejercicio:
25>20&&13>5
10+4<15-3||2*5+1>14-2*2
4*2<=8||2*2<5&&4>3+1
10<=2*5&&3<4||(8>7)&&3*2<=4*2-1
2.Programación Orientada a
Objetos en Java
 Soluciones
25>20 && 13>5
true && 13>5
true

10+4<15-3 || 2*5+1>14-2*2
10+4 < 15-3 || 2*5+1 > 14-2*2
14 < 12 || 11 > 10
false || true
true
2.Programación Orientada a
Objetos en Java
 Soluciones
4*2<=8||2*2<5&&4>3+1
4*2<=8||2*2<5 && 4>3+1
4*2<=8 || 2*2<5 && 4>3+1
8<=8 || 2*2<5 && 4>3+1
true || 2*2<5 && 4>3+1
true
2.Programación Orientada a
Objetos en Java
 Soluciones
10<=2*5&&3<4||(8>7)&&3*2<=4*2-1

10<=2*5&&3<4 || (8>7)&&3*2<=4*2-1

10<=2*5 && 3<4 || (8>7) && 3*2<=4*2-1

true && 3<4 || (8>7) && 3*2<=4*2-1

true && true || (8>7) && 3*2<=4*2-1

true || (8>7) && 3*2<=4*2-1

true
2.Programación Orientada a
Objetos en Java
Operadores de desplazamiento

 Tenemos los siguientes operadores:


>>: desplaza los bits del primer operando hacia la derecha tantas
veces como indique el segundo operando
(op1 >> op2)
<<: desplaza los bits del primer operando hacia la izquierda tantas
veces como indique el segundo operando
(op1 << op2)
>>>: desplaza los bits del primer operando hacia la derecha tantas
veces como indique el segundo operando pero sin signo
(op1 >>> op2)
2.Programación Orientada a
Objetos en Java
Operadores lógicos

Tenemos los siguientes operadores lógicos:


&: AND lógico a nivel de bit (op1 & op2).
2.Programación Orientada a
Objetos en Java
 Operadores lógicos
|: OR lógico a nivel de bit (op1 | op2).
2.Programación Orientada a
Objetos en Java
Operadores lógicos
^: XOR lógico a nivel de bit (op1 ^ op2).

~: complemento a nivel de bit (~op1).


2.Programación Orientada a
Objetos en Java
Operadores de asignación
Tenemos los siguientes operadores de asignación:
= : guarda el valor del segundo operando en el primero
(op1 = op2)
+= : guarda la suma de los dos operandos en el primero
(op1 += op2)
-= : guarda la resta de los dos operandos en el primero
(op1 -= op2)
*= : guarda la multiplicación resta de los dos operandos en el
primero
(op1 *= op2)

/=, %=, &=, |=, ^=, <<=, >>=, >>>=


2.Programación Orientada a
Objetos en Java
Otros operadores

Existen otros operadores en Java como:


?: : se trata de una abreviatura de la estructura if-then-else
(op1?op2:op3).
[] : utilizado para declarar, crear y acceder a arrays.
. : utilizado para acceder a atributos y métodos de objetos.
(parámetros) : utilizado para pasar parámetros a un método.
(tipo) : utilizado para realizar castings (conversiones).
new : utilizado para crear objetos nuevos.
instanceof : chequea si el primer operando es una instancia del
segundo operando.
2.Programación Orientada a
Objetos en Java
Estructuras de control

 Sin las estructuras de control de flujo, el código java se


ejecutaría linealmente desde la primera línea hasta la
última.

 Tipos:
Bucles: while, do-while y for
Bifurcaciones: if-then-else y switch-case
Gestión de excepciones: try-catch
De ruptura: break, continue y return
2.Programación Orientada a
Objetos en Java
Sentencias while y do-while
La sentencia while se utiliza para ejecutar continuamente un bloque de
código mientras que la condición del while sea true.
while(expresión){
sentencias;
}

La sentencia do-while es parecida a la sentencia while pero asegura que


como mínimo el bloque de código se ejecuta una vez.
do{
sentencias;
} while(expresión);
2.Programación Orientada a
Objetos en Java
Sentencia for

La sentencia for facilita la ejecución de un bloque de


código un número determinado de veces.

for(inicialización; terminación; incremento){


sentencias;
}

Nota: las variables definidas en la sentencia de inicialización son locales al bloque. Por
tanto dejan de existir una vez se haya terminado el bucle.
2.Programación Orientada a
Objetos en Java
 Ejemplo
2.Programación Orientada a
Objetos en Java
Sentencia if-then-else
La sentencia if-then-else permite elegir qué bloque de código
ejecutar entre dos posibilidades.
if(expresión) { if(expresión) { if(expresión) {
sentencias; sentencias; sentencias;
} }else { } else if (expresion) {
sentencias; sentencias;
} } else {
sentencias;
}
2.Programación Orientada a
Objetos en Java
Ejemplo de uso de sentencias condicionales
2.Programación Orientada a
Objetos en Java
Sentencias de ruptura
break: sirve para detener la ejecución tanto de los bucles
como de la sentencia switch. Y por tanto saltar a la siguiente
línea de código después del bucle o switch.

continue: sirve para detener la ejecución del bloque de


código de un bucle y volver a evaluar la condición de este.

return: sirve para finalizar la ejecución de un método.


2.Programación Orientada a
Objetos en Java
Ejercicio
Identificar si este código compila bien. Si no compila solucionarlo. Si compila
decir cuál sería la salida.

public class Temp{


public static void main(String[] args){
int x=1;
while(x<10){
if(x>3){
System.out.println("Hola");
}
}
}
}
2.Programación Orientada a
Objetos en Java
Ejercicio (solución)
El código compila bien. Pero entra en un bucle infinito. Habría que modificarlo
con la línea azul y saldría la palabra “Hola” siete veces por pantalla.

public class Temp{


public static void main(String[] args){
int x=1;
while(x<10){
x = x + 1;
if(x>3){
System.out.println("Hola");
}
}
}
}
2.Programación Orientada a
Objetos en Java
Ejercicio
Identificar si este código compila bien. Si no compila solucionarlo. Si compila
decir cuál sería la salida.
public class Temp{
public static void main(String[] args){
int x=5;
while(x>1){
x = x - 1;
if(x<3){
System.out.println("Hola");
}
}
}
}
2.Programación Orientada a
Objetos en Java
Ejercicio (solución)
El código compila y saldría la palabra “Hola” dos veces por pantalla.
2.Programación Orientada a
Objetos en Java
Sentencia switch – case
Se utiliza para realizar sentencias condicionalmente basadas en alguna
expresión.
switch(expresion) {
case valor1:
instrucciones();
break;
case valor2:
instrucciones();
break;
.
.
.
case valorN:
instrucciones();
break;
default:
instrucciones();
}
2.Programación Orientada a
Objetos en Java
Ejemplo
int mes;


switch (mes) {
case 1: System.out.println("Enero"); break;
case 2: System.out.println("Febrero"); break;
case 3: System.out.println("Marzo"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("May0"); break;
case 6: System.out.println("Junio"); break;
case 7: System.out.println("Julio"); break;
case 8: System.out.println("Agosto"); break;
case 9: System.out.println("Septiembre"); break;
case 10: System.out.println("Octubre"); break;
case 11: System.out.println("Noviembre"); break;
case 12: System.out.println("Diciembre"); break;
default: ;
}
2.Programación Orientada a
Objetos en Java
Ejercicio

Implementar una clase que proporcione la siguiente salida por pantalla:

0,
0,1,
0,1,2,
0,1,2,3,
0,1,2,3,4,
0,1,2,3,4,5,
0,1,2,3,4,5,6,
0,1,2,3,4,5,6,7,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,9,
2.Programación Orientada a
Objetos en Java
Ejercicio

Implementar una clase que proporcione la siguiente salida por pantalla:

0,1,2,3,4,5,6,7,8,9,
1,2,3,4,5,6,7,8,9,
2,3,4,5,6,7,8,9,
3,4,5,6,7,8,9,
4,5,6,7,8,9,
5,6,7,8,9,
6,7,8,9,
7,8,9,
8,9,
9,
2.Programación Orientada a
Objetos en Java
Ejercicio

Implementar una clase que proporcione la siguiente salida por pantalla:

1,
2,2,
3,3,3,
4,4,4,4,
5,5,5,5,5,
6,6,6,6,6,6,
7,7,7,7,7,7,7,
8,8,8,8,8,8,8,8,
9,9,9,9,9,9,9,9,9,
2.Programación Orientada a
Objetos en Java
Ejercicio

Implementar una clase que nos diga cuántos días tiene cada mes del año,
utilizando sentencias switch – case.

Ejemplo de salida por pantalla:


Enero tiene 31 días
Febrero tiene 28 ó 29 días
Marzo tiene 31 días
Abril tiene 30 días
Mayo tiene 31 días
.
.
.

Diciembre tiene 31 días


2.Programación Orientada a
Objetos en Java
Ejercicio

Implementar una clase que muestre por pantalla los números que son primos
del 1 al 100 y el número total que hay hasta 100.
1 es primo
2 es primo
3 es primo
5 es primo

En total hay xx números primos

También podría gustarte