Beruflich Dokumente
Kultur Dokumente
Mayo 2015
1
1
AGENDA:
1. Introducción
a. Historia
b. Paradigma OO- diagramación
1. Encapsulamiento
2. Herencia
3. Polimorfismo
c. Paquetes
d. Identificadores
e. Configuración Ambiente Programación
2
AGENDA:
2. Conceptos Básicos
a. Variables
1. Tipos de Datos
2. Arreglos
3. Tipos Enum
b. Operadores
1. Asignación
2. Aritméticos
3. Relaciones y Condiciones
4. Desplazamiento
3
AGENDA:
c. Expresiones y Sentencias
d. Control de Flujo
1. Sentencia if-else
2. Sentencia switch
3. Sentencia for
4. Sentencia while – do while
5. Sentencia break, continue, return
e. Conversión de Datos (Casting)
4
AGENDA:
3. Conceptos Avanzados
a. Modificadores de Acceso
b. Clases e InnerClases
c. Interfaces y Clases Abstractas
d. Manejo de Excepciones
e. Lectura desde Teclado
f. Applets
5
AGENDA:
4. Colecciones
a. Interfaces
1. Collection
2. Set / Map / List / Queue
b. Implementaciones
1. Se / Map / List / Queue
c. Wrappers
6
Introducción
Java es un lenguaje de programación orientado a
Objetos desarrollado por Sun Microsystem S.A.
principios de los años 90. El lenguaje en sí mismo
toma mucha de su sintaxis de C y C++, pero tiene
un modelo de objetos más simple y elimina
herramientas de bajo nivel, que suelen inducir a
muchos errores, como la manipulación directa de
punteros o memoria.
7
Historia
La tecnología Java se creó como una herramienta de
programación para ser usada en un proyecto de set-
top-box en una pequeña operación denominada the
Green Project en Sun Microsystems en el año 1991.
8
Distribuciones
JDK 1.0 (January 23, 1996) Codename Oak. Initial
release.
J2SE 1.2 (December8, 1998) Codename Playground.
J2SE 1.3 (May 8, 2000) Codename Kestrel.
J2SE 1.4 (February 6, 2002) Codename Merlin.
J2SE 5.0 (September30, 2004) Codename Tiger.
Java SE 6 (December11, 2006) Codename Mustang.
Java SE 7 (July 28, 2011) Codename Dolphin.
Java SE 8 (March, 2014)
9
Características
El lenguaje Java se creó con 5 objetivos principales:
10
Industria Relacionada
Son innumerables las compañías que desarrollan
aplicaciones para Java y/o están volcadas con esta
tecnología:
La industria de la telefonía móvil está fuertemente
influenciada por la tecnología Java.
El entorno de desarrollo Eclipse ha tomado un lugar
importante entre la comunidad de desarrolladores Java.
La fundación Apache tiene también una presencia
importante en el desarrollo de bibliotecas y componentes
de servidor basados en Java.
IBM, BEA, IONA, Oracle, JBOSS ,... son empresas con
grandes intereses y productos creados en y para Java.
11
Términos y Acrónimos
El JRE (Java Runtime Environment, o
Entorno en Tiempo de Ejecución de Java) es el
software necesario para ejecutar cualquier aplicación
desarrollada para la plataforma Java.
12
Clase
Una clase es una plantilla para la creación de objetos
de datos según un modelo predefinido. Las clases se
utilizan para representar entidades o conceptos,
como los sustantivos en el lenguaje. Cada clase es un
modelo que define un conjunto de variables -el
estado- y métodos apropiados para operar con dichos
datos -el comportamiento. Cada objeto creado a
partir de la clase se denomina instancia de la clase.
13
Objeto
Es una unidad dentro de un programa que consta de un estado y de un
comportamiento, que a su vez constan respectivamente de datos
almacenados y de tareas realizables durante el tiempo de ejecución.
En POO, un objeto es el resultado de la instanciación de una clase.
Es aquello que puede ser observado, estudiado y aprendido, en
contraposición a la representación abstracta de ese objeto que se crea en
la mente a través del proceso de generalización.
Un objeto en POO representa alguna entidad de la vida real, es decir,
alguno de los objetos que pertenecen al negocio con que estamos
trabajando o al problema con el que nos estamos enfrentando, y con los
que podemos interactuar. A través del estudio de ellos se adquiere el
conocimiento necesario para, mediante la abstracción y la
generalización, agruparlos según sus características en conjuntos. Estos
conjuntos determinan las clases de objetos con las que estamos
trabajando.
14
Programación Orientada a Objetos
La programación orientada a objetos (POO) es una
forma especial de programar, más cercana a como
expresaríamos las cosas en la vida real que otros tipos
de programación.
La programación orientada a objetos es un paradigma
de programación que usa objetos y sus interacciones
para diseñar aplicaciones y programas de
computadora.
Está basado en varias técnicas, incluyendo herencia,
modularidad, polimorfismo y encapsulamiento.
15
Programación Orientada a Objetos
Los objetos son entidades que combinan estado,
comportamiento e identidad:
El estado está compuesto de datos, será uno o varios
atributos a los que se habrán asignado unos valores
concretos (datos).
El comportamiento está definido por los
procedimientos o métodos con que puede operar dicho
objeto, es decir, qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo
diferencia del resto, dicho con otras palabras, es su
identificador (concepto análogo al de identificador de una
variable o una constante).
16
Principios de la POO
Los principios básicos de la programación orientada
objetos son:
Abstracción
Encapsulamiento.
Herencia.
Polimorfismo.
17
Abstracción
Expresa las características esenciales de un objeto y su
comportamiento, las cuales distinguen al objeto de los
demás. Se refiere al énfasis en el "¿qué hace?" más que en el
"¿cómo lo hace?"
Se aísla toda aquella información que no resulta relevante a
un determinado nivel de conocimiento.
Ejm: La gerencia de un taller mecánico necesita un sistema
para controlar los vehículos que ingresan a sus instalaciones.
Las características esenciales de la clase vehículo son: Marca,
Modelo, Color, Falla detectada, Nombre del Propietario,
Dirección del Propietario, etc.
18
Encapsulamiento
Describe la vinculación de unas operaciones y
estado a un objeto particular.
La encapsulación está íntimamente relacionada con
la ocultación de la información, definiendo qué
partes de un objeto son visibles y qué partes están
ocultas. De manera que sólo se pueda cambiar
mediante las operaciones definidas para ese
objeto.
19
Herencia
La herencia es un mecanismo que permite la
definición de una clase a partir de la definición de
otra ya existente. La herencia permite el
refinamiento o especialización de una clase
existente. La herencia es la característica clave de
los sistemas orientados a objeto para propiciar la
reusabilidad:
20
Herencia
Object public class Animal{
…
public void dormir(){
toString/ equals System.out.println(“animal durmiendo…”);
hashCode … }
public void comer(){
System.out.println(“animal comiendo…”);
Animal }
}
dormir / comer
toString / equals /
hashCode
public void dormir(){
System.out.println(“animal durmiendo…”);
Perro }
public void comer(){
System.out.println(“animal comiendo…”);
ladrar / dormir
dormir /comer }
21 toString / equals /
hashCode
Polimorfismo
Se refiere a la capacidad de poder invocar una
misma funcionalidad pero que dependiendo del
contexto de la invocación la implementación tiene
comportamiento diferente.
Ejm:
int sumar (int num1, int num2);
Matriz sumar (Matriz a, Matriz b);
Complejo sumar (Complejocomp1, Complejocomp2);
22
Compilación
package ocjp.curso;
23
Compilación
package ocjp.curso;
24
Compilación
Compilar la clase desde el directorio OCJP_8Compilacion y guardar los .class
en el directorio classes:
D:\OCJP_8Compilacion> javac -d classes src/ocjp/curso/MiClase.java
javac –d classes
-d directorio para
guardar los .class
25
Ejecución
Compilar la clase desde el directorio curso
D:\OCJP_8Compilacion\classes\ocjp\curso>
java MiClase
26
Ejecución
Compilar la clase desde el directorio classes
D:\OCJP_8Compilacion\classes>
java ocjp.curso.MiClase
27
Ejecución
Compilar la clase desde el directorio
OCJP_8Compilacion
D:\OCJP_8Compilacion>
java classes.ocjp.curso.MiClase
java classes/ocjp.curso.MiClase
D:\OCJP_8Compilacion\classes>
29
Jar
Usar jar en classpath.
D:\OCJP_8Compilacion>
30
Banderas de Compilación y
Ejecución
BANDERA EJEMPLO EXPLICACIÓN
31
Paquetes
Un paquete implica una colección de clases, algo parecido
a una librería. En el uso, un paquete es un poco semejante
a un directorio. Si se pone una declaración de un paquete
en un archivo éste será sólo visible a otras clases en el
mismo paquete.
package ec.edu.epn.cec.curso.java.modulo1;
32
La sentencia import
Permite usar una clase directamente con su nombre en
lugar de especificarla totalmente incluyendo el nombre
completo del paquete al que pertenece.
33
Constructores
• Los constructores son métodos especiales que se
ejecutan cuando creamos un objeto, mediante la palabra
reservada new
• Los constructores tienen el mismo nombre de la clase.
• Los constructores NO tienen tipo de retorno. Ni si
quiera void, ya que void es un tipo de retorno
• Si no especificamos un constructor, la clase tiene por
defecto un constructor que no recibe parámetros
(constructor vacío).
34
Constructores
35
Constructores
36
Identificadores
Los identificadores nombran variables, métodos, clases y objetos;
cualquier cosa que el programador necesite identificar o usar.
En Java, un identificador comienza con una letra, un subrayado (_) o
un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o
dígitos. Se distinguen las mayúsculas de las minúsculas y no hay
longitud máxima.
37
Palabra Reservadas
Las siguientes son las palabras reservadas que están
definidas en Java y que no se pueden utilizar como
identificadores:
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
38
Comentarios en Java
En Java hay 3 tipos de comentarios. Los comentarios de documentación,
colocados inmediatamente antes de una declaración (de variable o función),
indican que ese comentario ha de ser colocado en la documentación que se
genera automáticamente cuando se utiliza la herramienta de Java, javadoc.
/* Comentarios de una
o más líneas */
39
Javadoc
Javadoc es una utilidad de Sun Microsystems para la
generación de documentaciónde APIs en formato HTML a
partir de código fuente Java.
Algunos Tags utilizados en javadoc son los siguientes:
Tag Descripción
@author Nombre del desarrollador.
Indica que el método o clase es antigua y que no se recomienda su
@deprecated
uso porque posiblemente desaparecerá en versiones posteriores.
Definición de un parámetro de un método, es requerido para
@param
todos los parámetros del método.
Informa de lo que devuelve el método, no se puede usar en
@return
constructores o métodos "void".
@see Asocia con otro método o clase.
@throws Excepción lanzada por el método
@version Versión del método o clase.
40
Configuración de Ambiente de
Programación
IDES de desarrollo:
Eclipse
Netbeans
JDeveloper
41
Variables
Una clase en Java puede contener variables y
métodos.
Las variables pueden ser tipos primitivos como
int, char, etc.
Los bloques de sentencias compuestas en Java se
delimitan con dos llaves.
Las variables de Java sólo son válidas desde el
punto donde están declaradas hasta el final de la
sentencia compuesta que la engloba.
42
Ámbito de las Variables
Variables de instancia. (Miembro o Atributo).
Variables de método. (locales).
43
Tipos de Datos
Podemos diferenciar los datos en Java en 2 categorías
de datos principales: los tipos primitivos y los tipos
referenciados.
Los tipos primitivos contienen un sólo valor e
incluyen los tipos como los enteros, coma flotante,
los caracteres, de tipo booleano etc.
Los tipos referenciados se llaman así porque el valor
de una variable de referencia es una referencia (un
puntero) hacia el valor real. En Java tenemos los
arrays, las clases, las interfaces, los tipos enum como
tipos de datos referenciados.
44
Tipos de Datos Primitivos en Java
45
Tipos de Datos: Enteros
46
Tipos de Datos: Reales
Ejm:
3.14
2e12
3.1 E12
47
Tipos de Datos: booleanos
boolean
true
false
48
Arreglos
Un arreglo es un tipo de objeto que contiene valores
llamados elementos.
49
Arreglos
Se pueden declarar en Java arrays de cualquier tipo:
char s[ ];
int iArray[ ];
int arreglo3 [ 3 ];
51
Arreglos
Formas de instanciar y declara
un arreglo:
int arreglo1 [ ] = { 4, 3, 2};
int arreglo4 [ ] ;
arreglo4 [ ] = {5,8};
int arreglo5 [ ];
arreglo5 = new int [ ] {4};
52
Tipos Enum
Los tipos de datos enumerados aparecieron desde Java
5 y lo que permiten es que una variable tenga solo un
valor dentro de un conjunto de valores predefinidos,
en otras palabras, valores dentro de una lista
enumerada. Los tipos enumerados sirven para
restringir la selección de valores a algunos previamente
definidos
Ejm:
public enum Day { SUNDAY, MONDAY, TUESDAY,
WEDNESDAY,THURSDAY, FRIDAY, SATURDAY }
53
Operadores
. [ ] ( ) ++ -- ! ~ instanceof
| && || ?: = op= ( *=
/= %= += -=) etc.
54
Operadores de Asignación
El operador = es un operador binario de asignación
de valores. El valor almacenado en la memoria y
representado por el operando situado a la derecha
del operador es copiado en la memoria indicada
por el operando de la izquierda.
55
Operadores Aritméticos
56
Operadores Relacionales
57
Operadores Condicionales
58
Operadores de Desplazamiento
59
La Clase Math
La clase Math representa la
librería matemática de Java.
Al importarla se tiene acceso
al conjunto de funciones
matemáticas estándar:
60
Control de Flujo
Las sentencias dentro del código fuente son ejecutados
generalmente de arriba hacia abajo dependiendo del
orden que aparecen. Las sentencias de control sin
embargo cambian el flujo de ejecución a través de
decisiones, bucles o ramas, permitiendo que el
programa ejecute de manera condicional particulares
bloques de código.
61
Sentencia if - else
62
Sentencia switch
63
Sentencia for
64
Sentencia for mejorado (enhanced
for)
La sentencia for también tiene otra forma de diseño
para iterar a nivel de colecciones y arreglos. Y
permite hacer los bucles mas compactos y fáciles de
leer:
65
Sentencia do while
66
Sentencia while
67
Conversión de Datos (Casting)
Casting significa decirle explícitamente a Java que haga
una conversión. La operación de cast puede ser de
ensanchamiento o estrechamiento.
Ejm:
68
Modificadores de Acceso
Los modificadores de acceso permiten al diseñador de
una clase determinar quien accede a los datos y
métodos miembros de una clase.
69
Modificadores de Acceso
private El atributo o método de la clase no puede ser accedido
desde ninguna otra clase.
70
Uso de los Modificadores
71
Modificadores
72
Clases e InnerClases
Una Inner Class es por definición una clase que es miembro de
otra clase. Se las usa para reflejar y reforzar la relación entre 2
clases. Debería definirse una clase dentro de otra cuando la nested
class tiene sentido únicamente en el contexto de la clase que la
contiene.
class EnclosingClass {
...
classANestedClass{
...
}
}
Como otros miembros, una nested class puede ser declarada static
( o no ).
Una nested class estática es llamada static nested class. Una nested
73
class no estática es llamada innerclass.
Clases Abstractas
Una clase abstracta es una clase de la que no se
puede crear objetos.
75
Interfaces
Una interfaz en Java es una colección de métodos sin sus
implementaciones con un nombre.
Una interface también puede declarar constantes, por
cuanto una interface es simplemente una lista de métodos
sin implementación, (métodos abstractos).
Las interfaces están asociadas a comportamiento.
76
Interfaces
79
Propiedades de las Interfaces
80
Manejo de Excepciones
Una excepción es un evento que ocurre durante la
ejecución de un programa que interrumpe el
normal flujo de la ejecución de las instrucciones del
programa.
81
Flujo de Excepciones
Envuelve un conjunto de sentencias que pueden
try arrojar una excepción.
82
Manejo de Excepciones
Captura de Excepciones:
try / cacth /finally
Lanzar Excepciones:
throw
Propagar Excepciones:
throws
83
Creación de Objetos en Memoria
p1 = new Persona();
p2.nombre = “Pepe”;
p1.nombre = “Juan”;
Persona
Memoria de la JVM
cedula Persona
nombre p1
estatura cedula null
p2
“Juan”
nombre null
estatura 0
Persona métodos ….
CLASE
cedula null
“Pepe”
nombre null
estatura 0
métodos ….
84
Creación de Objetos en Memoria
p1= p2 ;
Memoria de la JVM
Persona
Persona cedula null
cedula p1
nombre null
“Juan”
nombre p2
estatura 0
estatura
métodos ….
Persona
CLASE
cedula null
nombre null
“Pepe”
estatura 0
métodos ….
85
Creación de Objetos en Memoria
p1= p2 ;
p1.estatura=170;
System.out.println(p2.estatura);
Persona Memoria de la JVM
Persona
cedula
nombre cedula null
p1 “Juan”
estatura nombre null
p2
estatura 0
métodos ….
CLASE
Persona
cedula null
nombre null
“Pepe”
estatura 0 170
86 métodos ….
Manejo de Excepciones
La ÚNICA razón por la que puede darse un
NullPointerException, es que tengamos en nuestra línea de
código el siguiente patrón:
NullPointerException
null loQueSea
punto
estudiantes.insertar(new Estudiante());
Estudiante es=(Estudiante) tabla.getRowData();
88
Lectura desde Teclado
89
Lectura desde Teclado
Desde java 1.5 se tiene disponible la clase Scanner que
facilita la tarea de lectura desde teclado. Basta instanciar
esta clase pasándole el System.in y a partir de ahí se tienen
muchos métodos para obtener exactamente lo que se
necesita:
90
Lectura desde Teclado
Console c= System.console();
Métodos:
int x=10;
91
Applets
Un applet es un componente de una aplicación que se
ejecuta en el contexto de otro programa, Ejm un
navegador web.
93
Colecciones
Una colección es un objeto simple que agrupa múltiples
elementos en un sola unidad. Las colecciones son usadas
para almacenar, manipular y comunicar datos agregados.
94
Collections Interfaces
95
Collections Interfaces e
Implementaciones
I
Collection
I I I
Set List Map
C I C C C I C
HashSet SortedSet ArrayList Vector HashMap SortedMap HashTable
S S
C I C I
LinkedHashSet NavigableSet LinkedHashMap NavigableMap
C C
TreeSet TreeMap
96
Collection Interface
97
Map Interface
98
Collections Implementaciones
99
Collections Método Sort
Collections.sort(unaLista);
Collections.sort(lista);
System.out.println(lista);
104
Printf
public static void main(String[] args) {
int res = 10;
System.out.printf("el resultado es %d", res);
}
d dígitos
f Flotante ó Double
% s String
c character
b boolean
105
Printf
public static void main(String[] args) {
int a=12;
System.out.printf("a:% 5 d",a);
}
Se muestra en consola: a: 12
mínimo
106
Printf
public static void main(String[] args) {
float f=125f;
System.out.printf("f: % 2.2 f", f);
}
Número de
Se muestra en consola: f:125,00
cifras
entero
Número de
cifras parte
Si las cifras sobrepasan lo decimal
indicado, no existe error; se
muestra el valor completo
107
Printf
108
Printf
System.out.printf("c: %c",c);
}
109
Clase Date
La clase Date se utiliza para representar una fecha y una
hora.
110
Constructores de Date
111
Métodos de Date
112
Formateo de Fechas
The DateFormat Class
113
Ejemplo de Formateo
114
Clase BigDecimal
La clase java.math.BigDecimal es una clase de Java para representar
números con coma flotante, de manera precisa.
Para números con punto flotante (es decir, con parte decimal) la
forma recomendada de construir un objeto BigDecimal es a través de
un String.
115