Introducción
Java y Servicios Web I
Master en Ingeniería Matemática
Manuel Montenegro
Dpto. Sistemas Informáticos y Computación
Desp. 467 (Mat)
[email protected]
Contenidos
● Acerca de la asignatura.
● Un poco de historia (I).
● Tipos abstractos de datos.
● Características de la programación orientada a
objetos.
● Un poco de historia (II).
● Primeros pasos en Java.
8/Mayo/2012
1. Introducción
2
Objetivos del curso
● Diseño orientado a objetos con Java.
● Utilización de librerías existentes en Java.
● Introducción a:
● Diseño de interfaces gráficas (Swing).
● Acceso a bases de datos (JDBC).
● Servicios web.
8/Mayo/2012
1. Introducción
3
Requisitos
● Conocimientos básicos de programación
estructurada.
● Pascal
● Python
● C
● Basic
● …
8/Mayo/2012
1. Introducción
4
Contenidos
● Módulo I: Java y POO
1.Introducción.
2.Java para programadores.
3.Clases y objetos.
4.Herencia.
5.Polimorfismo.
6.Excepciones y E/S
8/Mayo/2012
1. Introducción
5
Contenidos
● Módulo II: Librerías de Java
7.Librerías básicas de Java.
8.Interfaces gráficas con Swing.
9.Introducción a la programación concurrente.
10. Acceso a bases de datos.
11. Aplicaciones y servicios web.
8/Mayo/2012
1. Introducción
6
¿Por qué Java?
● Es un lenguaje de propósito general.
● Aplicaciones de escritorio.
● Aplicaciones móviles (Android).
● Aplicaciones web.
● Orientado a objetos.
● Multiplataforma.
8/Mayo/2012
1. Introducción
7
¿Por qué Java?
TIOBE Programming Community Index for January 2012
8/Mayo/2012
1. Introducción
8
¿Por qué Java?
TIOBE Programming Community Index for April 2012
8/Mayo/2012
1. Introducción
9
Aplicaciones
● Cálculo numérico.
● Simulación.
● Servicios web: obtención automática de datos
desde fuentes externas.
● Programación orientada a objetos:
● Desarrollo de sistemas de complejidad media-alta.
● Extendida en el ámbito empresarial.
8/Mayo/2012
1. Introducción
10
Evaluación
● 40% - Evaluación continuada.
● 30% - Ejercicios.
● 10% - Asistencia y participación.
● 60% - Práctica final.
8/Mayo/2012
1. Introducción
11
Tutorías
● Tutorías
● Jueves y Viernes 11h-13h (Desp. 467)
● PPH en la Facultad de Informática.
● Foro del Campus Virtual
● Correo-e:
[email protected]
8/Mayo/2012
1. Introducción
12
Bibliografía básica
● P. Deitel, H. Deitel
Java. How to Program (9th Edition)
● B. Eckel
Thinking in Java (3rd Edition)
Disponible en http://mindview.net
● Documentación de librerías de Java
http://docs.oracle.com/javase/6/docs/api/
8/Mayo/2012
1. Introducción
13
Contenidos
● Acerca de la asignatura.
● Un poco de historia (I).
● Tipos abstractos de datos.
● Características de la programación orientada a
objetos.
● Un poco de historia (II).
● Primeros pasos en Java.
8/Mayo/2012
1. Introducción
14
Un poco de historia: Años 50 y 60
● Inicialmente, los programadores introducían las
instrucciones de su programa mediante el sistema de
códigos del computador destino (código máquina).
● Directamente interpretable por la máquina.
● Específico de cada máquina.
● Hacia 1953, los programas eran cada vez más
complejos, y muy caros de programar.
● Programación automática: herramientas que generan
automáticamente programas a partir de notaciones
de más alto nivel.
● Su viabilidad era cuestionable en los inicios.
8/Mayo/2012
1. Introducción
15
Un poco de historia: Años 50 y 60
● Lenguajes de alto nivel (1954)
● FORTRAN (FORmula TRANslating system)
[Backus 1957]
● Vectores, matrices, variables con subíndices,
instrucción DO para construir iteraciones.
● Código eficiente, comparable al construido por un
programador.
● Primer lenguaje de alto nivel independientemente
de la máquina.
● Gran difusión.
8/Mayo/2012
1. Introducción
16
Un poco de historia: Años 50 y 60
● ALGOL 60 (ALGOrithmic Language)
[Bauer, Naur 1958]
● Gran influencia en lenguajes posteriores.
● Instrucciones estructuradas, tipos, recursividad.
● COBOL (COmmon Business-Oriented Language)
● Lenguaje adaptado a la programación de gestión.
● Énfasis en aspectos de descripción de datos, y manipulación de
ficheros.
● LISP (LISt Processing Language)
[McCarthy, 1956]
● Lenguaje funcional.
● Aplicaciones de inteligencia artificial.
8/Mayo/2012
1. Introducción
17
La crisis del software
● Años 60: Fase de burbuja, optimismo desmesurado.
● Se podían realizar programas más grandes con menos
esfuerzo.
● Programas cada vez más grandes.
● Sistemas operativos.
● Compiladores, editores de texto.
● Multiprogramación.
● Sonados fracasos:
● OS/360 del IBM 360 (1964)
● Sonda espacial Mariner I
8/Mayo/2012
1. Introducción
18
La crisis del software
● Búsqueda de un lenguaje que “sirviera para
todo”
● PL/I (IBM 360)
● Lenguaje con muchas características, no
ortogonales.
● ALGOL 68
● Lenguaje poco comprensible, y difícil de
implementar.
● Conclusión: no basta un lenguaje de
programación; hace falta una metodología.
8/Mayo/2012
1. Introducción
19
Años 70
● Programación estructurada.
● Utilizar lenguajes más modestos que los existentes
hasta el momento, pero sobre los que se pueda
razonar (evitar sentencia goto).
● Permite la verificación matemática de programas.
● Abstracción procedimental.
[6, 9, 1, 3, 4]
for i = 1..n
for j = 1..n-i
if a[j] > a[j+1]
extra a[j]
a[j] a[j+1]
a[j+1] extra
←
←
←
[1, 3, 4, 6, 9]
8/Mayo/2012
1. Introducción
20
Años 70
● Programación estructurada.
● Utilizar lenguajes más modestos que los existentes
hasta el momento, pero sobre los que se pueda
razonar (evitar sentencia goto).
● Permite la verificación matemática de programas.
● Abstracción procedimental.
[6, 9, 1, 3, 4]
ORDENAR
[1, 3, 4, 6, 9]
8/Mayo/2012
1. Introducción
21
Años 70
● PASCAL [Wirth, 1970]
● C [Ritchie, 1973]
● ADA [DoD EEUU, 1975-1983]
8/Mayo/2012
1. Introducción
22
Contenidos
● Acerca de la asignatura.
● Un poco de historia (I).
● Tipos abstractos de datos.
● Características de la programación orientada a
objetos.
● Un poco de historia (II).
● Primeros pasos en Java.
8/Mayo/2012
1. Introducción
23
Tipos abstractos de datos
type Fecha = record
dia, mes, año: integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
…
…
end;
8/Mayo/2012
1. Introducción
24
Tipos abstractos de datos
type Fecha = record
dia, mes, año: integer;
end;
var actual, f: fecha;
write(f.dia, '/', f.mes, '/', f.año)
if f.año < … then
diff := DiferenciaFechas(actual, f);
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
…
…
end;
case f.mes of
…
end;
8/Mayo/2012
1. Introducción
25
Tipos abstractos de datos
¿Puedes hacer la diferencia entre fechas
más eficiente?
Ok.
8/Mayo/2012
1. Introducción
26
Tipos abstractos de datos
type Fecha = record
// número de días transcurridos desde el
// 1 de enero de 1970
numeroDias:integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
return f2.numeroDias – f1.numeroDias;
end;
8/Mayo/2012
1. Introducción
27
Tipos abstractos de datos
type Fecha = record
// número de días transcurridos desde el
// 1 de enero de 1970
numeroDias:integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
return f2.numeroDias – f1.numeroDias;
end;
var actual, f: fecha;
write(f.dia, '/', f.mes, '/', f.año)
if f.año < … then
diff := DiferenciaFechas(actual, f);
end;
case f.mes of
…
end;
8/Mayo/2012
1. Introducción
28
Tipos abstractos de datos
● Un tipo abstracto de datos es aquel cuyas
operaciones relacionadas (interfaz) pueden
describirse independientemente de su
representación interna (implementación).
IMPLEMENTACIÓN
type Fecha = record
// número de días transcurridos desde el
// 1 de enero de 1970
numeroDias:integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
return f2.numeroDias – f1.numeroDias;
end;
function Dia(f:Fecha):integer;
begin
...
end;
function Mes(f:Fecha):integer;
begin
...
end;
INTERFAZ
tipo Fecha
Operaciones:
Dia(f:fecha);
Mes(f:fecha);
Año(f:fecha);
DiferenciaFechas(f1,f2:Fecha);
8/Mayo/2012
1. Introducción
29
Tipos abstractos de datos
type Fecha = record
// número de días transcurridos desde el
// 1 de enero de 1970
numeroDias:integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
return f2.numeroDias – f1.numeroDias;
end;
function Dia(f:Fecha):integer;
begin
...
end;
function Mes(f:Fecha):integer;
begin
...
end;
var actual, f: fecha;
write(Dia(f), '/', Mes(f), '/', Año(f)
if Año(f) < 1920 then
diff := DiferenciaFechas(actual, f);
end;
case Mes(f) of
…
end;
OK
tipo Fecha
Operaciones:
Dia(f:fecha);
Mes(f:fecha);
Año(f:fecha);
DiferenciaFechas(f1,f2:Fecha);
8/Mayo/2012
1. Introducción
30
Tipos abstractos de datos
type Fecha = record
dia, mes, año: integer;
end;
function DiferenciaFechas(f1, f2:Fecha):integer;
begin
...
end;
function Dia(f:Fecha):integer;
begin
return f.dia;
end;
function Mes(f:Fecha):integer;
begin
return f.mes;
end;
var actual, f: fecha;
write(Dia(f), '/', Mes(f), '/', Año(f)
if Año(f) < 1920 then
diff := DiferenciaFechas(actual, f);
end;
case Mes(f) of
…
end;
OK
tipo Fecha
Operaciones:
Dia(f:fecha);
Mes(f:fecha);
Año(f:fecha);
DiferenciaFechas(f1,f2:Fecha);
8/Mayo/2012
1. Introducción
31
Contenidos
● Acerca de la asignatura.
● Un poco de historia (I).
● Tipos abstractos de datos.
● Características de la programación orientada a
objetos.
● Un poco de historia (II).
● Primeros pasos en Java.
8/Mayo/2012
1. Introducción
32
Programación orientada a objetos
● Características de la POO:
● Encapsulación.
● Herencia.
● Polimorfismo.
8/Mayo/2012
1. Introducción
33
Encapsulación
● Ocultamiento del estado interno de un objeto,
de modo que sólo puede ser cambiado
mediante las operaciones definidas para ese
objeto.
type Fecha = record
// númer
Comentarios de: Java y Servicios Web I - Master en Ingeniería Matemática (0)
No hay comentarios