SlideShare una empresa de Scribd logo
1 de 33
Información general (I)
 Profesores:
 Miguel Ángel Corella, José María Fuentes y Francisco
Saíz.
 Índice del curso:
 Introducción.
 El lenguaje Java.
 Programación orientada a objetos en Java.
 Jerarquías de clases.
 Excepciones.
 Applets.
 Interfaces de usuario.
Miguel Ángel Corella
José María Fuentes
Francisco Saíz
Información general (y II)
 Bibliografía:
 Core Java 1.2, Volúmenes I – II. C.S. Horstmann, Gary
Cornell, Prentice Hall, 1999.
 Tutorial de Java en http://java.sun.com
El lenguaje Java
Características principales (I)
 Lenguaje interpretado.
 Fuertemente tipado.
 Sintaxis similar a C/C++.
 Sin punteros: Garbage collection.
 100% portable.
 Integra librearías estándar para:
 Interfaces de usuario.
 Objetos distribuidos.
 Threads.
Características principales (y II)
 Ejecutable desde navegadores web.
 Origen: Aumento de HTML para conseguir páginas
Web dinámicas.
 Versiones:
 1995 – JDK 1.0
 1997 – JDK 1.1
 …
 2004 – JDK 1.5
Desarrollo en Java Java Development Kit (JDK):
 Java Runtime Environment (JRE):
 Java Virtual Machine.
 Java API: lenguaje básico y librerías estándar.
 Compilador a bytecode.
 Otras herramientas:
 Debuggers.
 Applet viewer.
 Compiladores RMI
 …
Compilación e interpretación
class Ejemplo {
...
}
class Aux {
...
}
Ejemplo.java
Compilador
Java
Ejemplo.class Aux.class
Java Virtual Machine
JVM
Comparativa: Java vs. C++ (I)
 Interpretado
 Portable
 Todo memoria dinámica
 Garbage collection
 No existen punteros
 Todos los métodos virtuales
 No hay herencia múltiple
 Información sobre clases
en tiempo de ejecución.
 Tratamiento genérico
de tipos (wrappers).
Java C++• Compilado
• Aspectos no portables
• Memoria automática y dinámica
• Gestión del programador
• Existen punteros
• No todos los métodos virtuales
• Hay herencia múltiple
• Información muy escasa
(dynamic_cast).
• Punteros a void.
Comparativa: Java vs. C++ (y II)
 Soporte estándar para interfaces:
AWT, SWING
 Soporte estándar para concurrencia
 Soporte estándar para objetos
distribuidos
 Ejecutable en navegadores web
 Homogeneidad del lenguaje
 Lenguaje bien diseñado
Java C++
• No incluido en el lenguaje:
Microsoft MFC, Borland OWL…
• No incluido en el lenguaje
• No incluido en el lenguaje:
CORBA, ActiveX
• No ejecutable por navegadores
• Múltiples sintaxis
• Compatibilidad con C
Elementos del lenguaje
Aspectos léxicos Ignora múltiples espacios en blanco
 Sentencias separadas por “;”.
 Comentarios:
 /* … */  Múltiples líneas de comentario
 //  Una única línea de comentario
 Case – sensitive.
 Convenios de nomenclatura:
 Clases con mayúscula.
 Métodos y variables con minúscula.
 etc…
Valores y variables
 Tipos básicos:
 Variables y literales:
 Declaración y utilización de variables y literales similar a
C/C++.
byte 1 byte
char 2 bytes (sin signo, caracteres Unicode, incluyen los ASCII)
short 2 bytes
int 4 bytes
long 8 bytes
float 4 bytes
double 8 bytes
boolean 1 bit (true ó false, no compatible con tipos numéricos)
Compatibilidad entre tipos
Ensanchar: automático
f = c;
d = s;
f = l;
byte b = 42;
char c = 'a'; // también válido: c = 97;
short s = 1024;
int i = 50000;
long l = 120000;
float f = 5.67f;
double d = .1234;
double result = (f*b) + (i/c) - (d*s);
Estrechar: cast explícito
c = (char) i;
b = (byte) d;
f = (float) d;
char: cast explícito
s = (short) c;
c = (char) s;
c = (char) b;
Operadores
 En total hay 46 operadores.
 Numéricos:
+, -, *, /, %, +=, -=, *=, /=, %=, --, ++
 Lógicos:
&&, ||, !
 Operadores de bit:
&, |, ^, ~, >>, <<
 Relacionales:
>, <, >=, <=, ==, !=
 Condicional:
If-then-else: (condicion) ? acción1 : acción2
Precedencia de operadores
( ) [ ] .
++ -- ~ !
new
* / %
+ -
>> >>> <<
> >= < <= instanceof
== !=
&
^
|
&&
||
? :
= += *= -= /=
Ordendeejecucióndeoperadores
Igualdad de precedencia
Arrays
 Declaración:
int a[];
a = new int[3];
int b[] = {1, 2, 3, 4};
• Reserva de tamaño:
• Asignación de valores:
a[1] = 7;
b = a;
• Errores:
a[6] = 7; // Fuera del rango
a = {1, 2, 3}; // Sólo válido en la inicialización
int c[5]; // La dimensión sólo al hacer new
char str[] = “hola”; // Los Strings no son arrays en Java
Arrays multidimensionales
float a[][] = new float [4][3];
float m[][] = new float [4][];
m[0] = new float [2];
m[1] = new float [5];
m[2] = new float [m[1].length];
float x[] = {4.5, 8/3, m[2][1]};
m[3] = x; // O cualquier expresión que devuelva un float[]
a[0] = m[1]; // Las variables de array no son constantes
a[2, 1] = 7.3 // Error de sintaxis: a[2][1]
Expresiones condicionales Dos tipos de condicionales.
if (condición1) acción1 [else acción2] [else if (condición2)…
switch (expresión) {
case valor1:
…
break;
case valor2:
…
break;
default:
…
}
byte, char, short o int
Tienen que ser literales
Iteraciones Tres tipos de iteraciones.
while (condición1) {
…
}
do {
…
} while (condición1)
for (inicialización; condición; iteración) {
…
}
Clases y objetos
en Java
Clases Estructura de datos + funciones.
class CuentaBancaria {
long numero;
String titular;
long saldo;
void ingresar (long cantidad) {
saldo += cantidad;
}
void retirar (long cantidad) {
if (cantidad > saldo)
System.out.println ("Saldo insuficiente");
else saldo -= cantidad;
}
}
Variables
(datos)
Funciones
Variables de una clase
 Definen una estructura de datos (similar al struct de C)
• Pueden almacenar objetos de otras clases
• Por defecto, se inicializan a 0, false y/o null.
class CuentaBancaria {
long numero;
String titular;
long saldo;
}
struct CuentaBancaria {
long numero;
char *titular;
long saldo;
};
class CuentaBancaria {
long numero;
Cliente titular;
long saldo = 0;
}
class Cliente {
String nombre;
long dni;
}
Creación de objetos Una clase define un tipo de dato que se puede utilizar para declarar
variables.
 Declarar un objeto es declarar una referencia al objeto.
 Los objetos se crean mediante el operador new.
 Crear un objeto es reservar memoria para sus variables.
 El operador new reserva memoria y devuelve una referencia.
CuentaBancaria cuenta1, cuenta2;
cuenta1 = new CuentaBancaria();
CuentaBancaria
0
null
0
numero
titular
saldo
Acceso a variables
 El acceso a las variables de un objeto se lleva a cabo
mediante la notación “.”
CuentaBancaria cuenta1, cuenta2;
cuenta1 = new CuentaBancaria ();
cuenta2 = cuenta1;
Cliente cliente1 = new Cliente ();
cliente1.nombre = "Luis Gomez";
cliente1.dni = 25672046;
cuenta1.numero = 6831531;
cuenta1.titular = cliente1;
cuenta1.saldo = 100000;
cuenta2.saldo = 200000;
cuenta2.titular.nombre = "Pilar Garcia";
Métodos
 Los métodos son funciones definidas dentro de un clase.
 Son similares a un puntero a función dentro de un struct de
C.
 Los métodos de una clase pueden referenciar directamente
las variables de la misma.
 Los métodos se invocan sobre un objeto de la clase a la que
pertenecen mediante la notación “.”.
 Al ejecutar un método sobre un objeto de la clase X, las
variables de dicha clase X toman los valores que tiene el
objeto.
cuenta2.ingresar(1000);
Llamadas desde métodos
 Los métodos pueden invocar directamente otros métodos
de la misma clase (sin “.”).
 Al ejecutar un método invocado sobre un objeto de clase A,
las llamadas a otros métodos de la clase A se ejecutan sobre
el mismo objeto a menos que se invoquen sobre otro objeto
cuenta3 = new CuentaBancaria ();
cuenta2.transferencia (cuenta3, 1000);
class CuentaBancaria {
...
void transferencia (CuentaBancaria destino, long cantidad) {
if (cantidad <= saldo ) {
retirar (cantidad);
destino.ingresar (cantidad);
}
}
}
Acceso a objetos
class X { String nombre; }
class Y { int i; }
class Z { String nombre; }
class A {
int num;
X obj4;
void f (int n, Y obj3) {
Z obj2 = new Z ();
obj4.nombre = obj2.nombre
num = obj3.i + n;
}
}
2.
1. 3.
4.
1. Variable del objeto de la invocación
2. Objeto definido en variable local
3. Objeto pasado como argumento
4. Objeto almacenado en variable de
clase
Constructores
 Métodos ejecutados automáticamente al crear un objeto de
una clase (“new”).
 Se usan para llevar a cabo labores de inicialización.
 Simplifican la sintaxis y apoyan el encapsulamiento de los
datos.
 Los métodos constructores de una clase tienen que tener el
mismo nombre que la clase.
class Cliente {
// Constructor de la clase Cliente
Cliente (String str, long num) {
...;
}
}
Ejemplos de constructores
class Cliente {
String nombre;
long dni;
Cliente (String str, long num) {
nombre = str;
dni = num;
}
}
class CuentaBancaria {
long numero;
Cliente titular;
long saldo;
CuentaBancaria (long num, Cliente clt, long s) {
numero = num; titular = clt; saldo = s;
}
}
Ejemplos de invocación
 Automáticamente al crear objetos.
Cliente cliente1 = new Cliente ("Luis Gomez", 25672046);
CuentaBancaria cuenta1 =
new CuentaBancaria (6831531, cliente1, 100000);
CuentaBancaria cuenta2 =
new CuentaBancaria (8350284,
new Cliente ("Pilar Garcia", 15165442),
200000);
Constructor por defecto
 Si no se definen constructores, Java proporciona
uno por defecto.
 Sin parámetros: Llamadas del tipo new X();
 Sin funcionalidad: Variables inicializadas por defecto.
 Pero si se define un constructor (o más) el
constructor por defecto no es definido.
Java

Más contenido relacionado

La actualidad más candente

.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
oswchavez
 

La actualidad más candente (19)

1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
Poo 1
Poo 1Poo 1
Poo 1
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Aejemplosc
AejemploscAejemplosc
Aejemplosc
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Clase IX
Clase IXClase IX
Clase IX
 
Actividad dll
Actividad dllActividad dll
Actividad dll
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
 
Examen Unidad 1
Examen Unidad 1Examen Unidad 1
Examen Unidad 1
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos
 
Examen unidad 1 ortiz enciso antonio aldahir
Examen unidad 1 ortiz enciso antonio aldahirExamen unidad 1 ortiz enciso antonio aldahir
Examen unidad 1 ortiz enciso antonio aldahir
 

Destacado

Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
quesada_diego
 

Destacado (20)

Leccion 5 Java
Leccion 5 JavaLeccion 5 Java
Leccion 5 Java
 
Vectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a ObjetosVectores y Objetos Programacion Orientada a Objetos
Vectores y Objetos Programacion Orientada a Objetos
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Arreglos Unidimensionales
Arreglos UnidimensionalesArreglos Unidimensionales
Arreglos Unidimensionales
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeans
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetos
 
13 Curso de POO en java - métodos propios de clase
13 Curso de POO en java - métodos propios de clase13 Curso de POO en java - métodos propios de clase
13 Curso de POO en java - métodos propios de clase
 
14 Curso de POO en java - estructuras condicionales
14 Curso de POO en java - estructuras condicionales14 Curso de POO en java - estructuras condicionales
14 Curso de POO en java - estructuras condicionales
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Clase 2 Estructuras de Control
Clase 2 Estructuras de ControlClase 2 Estructuras de Control
Clase 2 Estructuras de Control
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
 
12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos
 
ENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVAENTRADA Y SALIDA DE DATOS EN JAVA
ENTRADA Y SALIDA DE DATOS EN JAVA
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas
 
18 Curso POO en java - contenedores
18 Curso POO en java - contenedores18 Curso POO en java - contenedores
18 Curso POO en java - contenedores
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 

Similar a Java

Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
adrianpro
 
Introduccion
IntroduccionIntroduccion
Introduccion
reivax
 
2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación
oviedospablo
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
Oscar V
 
IntroduccióN A Visual C
IntroduccióN A  Visual  CIntroduccióN A  Visual  C
IntroduccióN A Visual C
oswchavez
 

Similar a Java (20)

03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
POO5-Cpp-0910.pdf
POO5-Cpp-0910.pdfPOO5-Cpp-0910.pdf
POO5-Cpp-0910.pdf
 
C ++.ppt
C ++.pptC ++.ppt
C ++.ppt
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
C ++
C ++C ++
C ++
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programa
 
r124736.PPT
r124736.PPTr124736.PPT
r124736.PPT
 
2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación
 
iNTRODUCCION AL LENGUAJE JAVA
iNTRODUCCION AL LENGUAJE  JAVAiNTRODUCCION AL LENGUAJE  JAVA
iNTRODUCCION AL LENGUAJE JAVA
 
Curso Java Inicial 2 - Introducción y Sintaxis
Curso Java Inicial  2 - Introducción y SintaxisCurso Java Inicial  2 - Introducción y Sintaxis
Curso Java Inicial 2 - Introducción y Sintaxis
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
IntroduccióN A Visual C
IntroduccióN A  Visual  CIntroduccióN A  Visual  C
IntroduccióN A Visual C
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 

Último

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
Marc Liust
 

Último (18)

presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 

Java

  • 1.
  • 2. Información general (I)  Profesores:  Miguel Ángel Corella, José María Fuentes y Francisco Saíz.  Índice del curso:  Introducción.  El lenguaje Java.  Programación orientada a objetos en Java.  Jerarquías de clases.  Excepciones.  Applets.  Interfaces de usuario. Miguel Ángel Corella José María Fuentes Francisco Saíz
  • 3. Información general (y II)  Bibliografía:  Core Java 1.2, Volúmenes I – II. C.S. Horstmann, Gary Cornell, Prentice Hall, 1999.  Tutorial de Java en http://java.sun.com
  • 5. Características principales (I)  Lenguaje interpretado.  Fuertemente tipado.  Sintaxis similar a C/C++.  Sin punteros: Garbage collection.  100% portable.  Integra librearías estándar para:  Interfaces de usuario.  Objetos distribuidos.  Threads.
  • 6. Características principales (y II)  Ejecutable desde navegadores web.  Origen: Aumento de HTML para conseguir páginas Web dinámicas.  Versiones:  1995 – JDK 1.0  1997 – JDK 1.1  …  2004 – JDK 1.5
  • 7. Desarrollo en Java Java Development Kit (JDK):  Java Runtime Environment (JRE):  Java Virtual Machine.  Java API: lenguaje básico y librerías estándar.  Compilador a bytecode.  Otras herramientas:  Debuggers.  Applet viewer.  Compiladores RMI  …
  • 8. Compilación e interpretación class Ejemplo { ... } class Aux { ... } Ejemplo.java Compilador Java Ejemplo.class Aux.class Java Virtual Machine JVM
  • 9. Comparativa: Java vs. C++ (I)  Interpretado  Portable  Todo memoria dinámica  Garbage collection  No existen punteros  Todos los métodos virtuales  No hay herencia múltiple  Información sobre clases en tiempo de ejecución.  Tratamiento genérico de tipos (wrappers). Java C++• Compilado • Aspectos no portables • Memoria automática y dinámica • Gestión del programador • Existen punteros • No todos los métodos virtuales • Hay herencia múltiple • Información muy escasa (dynamic_cast). • Punteros a void.
  • 10. Comparativa: Java vs. C++ (y II)  Soporte estándar para interfaces: AWT, SWING  Soporte estándar para concurrencia  Soporte estándar para objetos distribuidos  Ejecutable en navegadores web  Homogeneidad del lenguaje  Lenguaje bien diseñado Java C++ • No incluido en el lenguaje: Microsoft MFC, Borland OWL… • No incluido en el lenguaje • No incluido en el lenguaje: CORBA, ActiveX • No ejecutable por navegadores • Múltiples sintaxis • Compatibilidad con C
  • 12. Aspectos léxicos Ignora múltiples espacios en blanco  Sentencias separadas por “;”.  Comentarios:  /* … */  Múltiples líneas de comentario  //  Una única línea de comentario  Case – sensitive.  Convenios de nomenclatura:  Clases con mayúscula.  Métodos y variables con minúscula.  etc…
  • 13. Valores y variables  Tipos básicos:  Variables y literales:  Declaración y utilización de variables y literales similar a C/C++. byte 1 byte char 2 bytes (sin signo, caracteres Unicode, incluyen los ASCII) short 2 bytes int 4 bytes long 8 bytes float 4 bytes double 8 bytes boolean 1 bit (true ó false, no compatible con tipos numéricos)
  • 14. Compatibilidad entre tipos Ensanchar: automático f = c; d = s; f = l; byte b = 42; char c = 'a'; // también válido: c = 97; short s = 1024; int i = 50000; long l = 120000; float f = 5.67f; double d = .1234; double result = (f*b) + (i/c) - (d*s); Estrechar: cast explícito c = (char) i; b = (byte) d; f = (float) d; char: cast explícito s = (short) c; c = (char) s; c = (char) b;
  • 15. Operadores  En total hay 46 operadores.  Numéricos: +, -, *, /, %, +=, -=, *=, /=, %=, --, ++  Lógicos: &&, ||, !  Operadores de bit: &, |, ^, ~, >>, <<  Relacionales: >, <, >=, <=, ==, !=  Condicional: If-then-else: (condicion) ? acción1 : acción2
  • 16. Precedencia de operadores ( ) [ ] . ++ -- ~ ! new * / % + - >> >>> << > >= < <= instanceof == != & ^ | && || ? : = += *= -= /= Ordendeejecucióndeoperadores Igualdad de precedencia
  • 17. Arrays  Declaración: int a[]; a = new int[3]; int b[] = {1, 2, 3, 4}; • Reserva de tamaño: • Asignación de valores: a[1] = 7; b = a; • Errores: a[6] = 7; // Fuera del rango a = {1, 2, 3}; // Sólo válido en la inicialización int c[5]; // La dimensión sólo al hacer new char str[] = “hola”; // Los Strings no son arrays en Java
  • 18. Arrays multidimensionales float a[][] = new float [4][3]; float m[][] = new float [4][]; m[0] = new float [2]; m[1] = new float [5]; m[2] = new float [m[1].length]; float x[] = {4.5, 8/3, m[2][1]}; m[3] = x; // O cualquier expresión que devuelva un float[] a[0] = m[1]; // Las variables de array no son constantes a[2, 1] = 7.3 // Error de sintaxis: a[2][1]
  • 19. Expresiones condicionales Dos tipos de condicionales. if (condición1) acción1 [else acción2] [else if (condición2)… switch (expresión) { case valor1: … break; case valor2: … break; default: … } byte, char, short o int Tienen que ser literales
  • 20. Iteraciones Tres tipos de iteraciones. while (condición1) { … } do { … } while (condición1) for (inicialización; condición; iteración) { … }
  • 22. Clases Estructura de datos + funciones. class CuentaBancaria { long numero; String titular; long saldo; void ingresar (long cantidad) { saldo += cantidad; } void retirar (long cantidad) { if (cantidad > saldo) System.out.println ("Saldo insuficiente"); else saldo -= cantidad; } } Variables (datos) Funciones
  • 23. Variables de una clase  Definen una estructura de datos (similar al struct de C) • Pueden almacenar objetos de otras clases • Por defecto, se inicializan a 0, false y/o null. class CuentaBancaria { long numero; String titular; long saldo; } struct CuentaBancaria { long numero; char *titular; long saldo; }; class CuentaBancaria { long numero; Cliente titular; long saldo = 0; } class Cliente { String nombre; long dni; }
  • 24. Creación de objetos Una clase define un tipo de dato que se puede utilizar para declarar variables.  Declarar un objeto es declarar una referencia al objeto.  Los objetos se crean mediante el operador new.  Crear un objeto es reservar memoria para sus variables.  El operador new reserva memoria y devuelve una referencia. CuentaBancaria cuenta1, cuenta2; cuenta1 = new CuentaBancaria(); CuentaBancaria 0 null 0 numero titular saldo
  • 25. Acceso a variables  El acceso a las variables de un objeto se lleva a cabo mediante la notación “.” CuentaBancaria cuenta1, cuenta2; cuenta1 = new CuentaBancaria (); cuenta2 = cuenta1; Cliente cliente1 = new Cliente (); cliente1.nombre = "Luis Gomez"; cliente1.dni = 25672046; cuenta1.numero = 6831531; cuenta1.titular = cliente1; cuenta1.saldo = 100000; cuenta2.saldo = 200000; cuenta2.titular.nombre = "Pilar Garcia";
  • 26. Métodos  Los métodos son funciones definidas dentro de un clase.  Son similares a un puntero a función dentro de un struct de C.  Los métodos de una clase pueden referenciar directamente las variables de la misma.  Los métodos se invocan sobre un objeto de la clase a la que pertenecen mediante la notación “.”.  Al ejecutar un método sobre un objeto de la clase X, las variables de dicha clase X toman los valores que tiene el objeto. cuenta2.ingresar(1000);
  • 27. Llamadas desde métodos  Los métodos pueden invocar directamente otros métodos de la misma clase (sin “.”).  Al ejecutar un método invocado sobre un objeto de clase A, las llamadas a otros métodos de la clase A se ejecutan sobre el mismo objeto a menos que se invoquen sobre otro objeto cuenta3 = new CuentaBancaria (); cuenta2.transferencia (cuenta3, 1000); class CuentaBancaria { ... void transferencia (CuentaBancaria destino, long cantidad) { if (cantidad <= saldo ) { retirar (cantidad); destino.ingresar (cantidad); } } }
  • 28. Acceso a objetos class X { String nombre; } class Y { int i; } class Z { String nombre; } class A { int num; X obj4; void f (int n, Y obj3) { Z obj2 = new Z (); obj4.nombre = obj2.nombre num = obj3.i + n; } } 2. 1. 3. 4. 1. Variable del objeto de la invocación 2. Objeto definido en variable local 3. Objeto pasado como argumento 4. Objeto almacenado en variable de clase
  • 29. Constructores  Métodos ejecutados automáticamente al crear un objeto de una clase (“new”).  Se usan para llevar a cabo labores de inicialización.  Simplifican la sintaxis y apoyan el encapsulamiento de los datos.  Los métodos constructores de una clase tienen que tener el mismo nombre que la clase. class Cliente { // Constructor de la clase Cliente Cliente (String str, long num) { ...; } }
  • 30. Ejemplos de constructores class Cliente { String nombre; long dni; Cliente (String str, long num) { nombre = str; dni = num; } } class CuentaBancaria { long numero; Cliente titular; long saldo; CuentaBancaria (long num, Cliente clt, long s) { numero = num; titular = clt; saldo = s; } }
  • 31. Ejemplos de invocación  Automáticamente al crear objetos. Cliente cliente1 = new Cliente ("Luis Gomez", 25672046); CuentaBancaria cuenta1 = new CuentaBancaria (6831531, cliente1, 100000); CuentaBancaria cuenta2 = new CuentaBancaria (8350284, new Cliente ("Pilar Garcia", 15165442), 200000);
  • 32. Constructor por defecto  Si no se definen constructores, Java proporciona uno por defecto.  Sin parámetros: Llamadas del tipo new X();  Sin funcionalidad: Variables inicializadas por defecto.  Pero si se define un constructor (o más) el constructor por defecto no es definido.