Curso de Programación Java
Curso de Programación Java
Cristian Mamani
@xjkwak
Verano 2018
Contenido (I)
➔ Bibliografía
➔ Introducción a Git
➔ Estados de Git
➔ Ramas en Git
➔ IntelliJ Idea
➔ Introducción a Java
➔ Características de Java
➔ Control de flujo
Contenido (II)
➔ Arreglos
➔ Excepciones
➔ Entrada / Salida
➔ Clases útiles
Bibliografía
➔ https://docs.oracle.com/javase/tutorial/index.html
➔ https://git-scm.com/docs
➔ https://www.jetbrains.com/idea
➔ https://www.jetbrains.com/help/idea/gui-designer-basics.html
➔ https://developer.android.com/training/index.html
datos.
➔ Crear un repositorio:
git init
git status
cambio”
Comandos básicos de Git (II)
git clone
https://github.com/xjkwak/CursoJavaUMSS2018
repositorio.
◆ Poca memoria.
◆ Distintas CPUs.
➔ Consecuencias:
y dinámico”
◆ ...
➔ Ejecución multitarea.
◆ Registros
◆ Pila
◆ Memoria
◆ …
específica.
Compilador e Intérprete de Java
programador.
◆ Se ejecuta automáticamente.
package abc.financedept;
import java.lang.*;
import java.awt.*;
public class Empleado {
...
}
Hola Mundo!
Archivo: HolaMundo.java
// Aplicacion ejemplo HolaMundo
Hola Mundo!
Seguridad del Código
código.
enteros a punteros)
➔ Sensible a mayúsculas/minúsculas.
➔ Soporta comentarios.
➔ Permite identificadores.
➔ Convenciones de nomenclatura.
/* Comentario de
Más de una línea */
total = a + b + c + d;
x1 = y * delta;
x2 = (y+1) * delta;
Identificadores
1
Palabras no usadas por el lenguaje, pero son reservadas
2
Realmente son constantes del lenguaje
Variables y Constantes
la ejecución.
Ejemplo: int x, y, z;
<variable> = <expresión>;
declararla.
Ejemplo: int i = 0;
Convenciones de Nomenclatura (I)
según el elemento:
palabra en mayúsculas.
el carácter “_”.
paréntesis ()
sentencia. Ejemplo:
if (<expresión booleana>) {
// hacer algo
}
else {
// hacer otra cosa
}
Tipos de Datos y Operadores
Tipos de Datos
◆ Tipos primitivos.
◆ Tipos referencia.
◆ Lógico: boolean
◆ Texto: char
int i; int i;
if (i) { if ( i != 0) {
. . . . . .
} }
‘\uOOBF’
Tipo de datos Entero
➔ Existen dos tipos de datos reales: float (32 bits) y double (64
bits)
➔ El valor por defecto se toma para las variables no inicializadas de los objetos.
Tipo Contiene Valor por defecto Tamaño Valor Min Valor Max
null.
Cadenas de Caracteres
tipo de la variable.
num8bits = (byte)num32bits;
Ejemplo: short a, b, c;
➔ Operadores unarios: +, -
i = 7, j = 6 i = 7, j = 7
Operadores Java (II)
< (menor que), >= (mayor igual que), <= (menor igual que)
➔ Operador condicional: ?
Multiplicativos * / %
Aditivos + -
Igualdad == !=
Precedencia de Operadores (II)
Tipo Operador
Igualdad == !=
OR exclusivo (bits) ^
OR inclusivo (bits) |
OR lógico ||
Condicional ? :
⇒ if (<exprBooleana>) ⇒ if (<exprBooleana>) {
<sentencia>; <grupoSentencias>;
}
⇒ if (<exprBooleana>) ⇒ if (<exprBooleana>) {
<sentencia>; <grupoSentencias1>;
else }
<sentencia>; else {
<grupoSentencias2>;
}
Sentencia switch
switch (<variable>) {
case literal1: [<grupoSentencias1>;]
[break;]
Opciones de un menú:
1. Abrir archivo.
2. Cerrar archivo.
3. Cerrar archivo e imprimir datos.
4. Imprimir datos.
5. Salir
switch (opcion) {
case 1: abrirArchivo(); break;
case 3: cerrarArchivo();
case 5:
default: terminarPrograma();
}
Otro ejemplo switch
switch (digito) {
return respuesta;
}
Sentencia for
mayor control:
intervienen en la expresión.
ciclo.
expresión booleana:
while (<exprBooleana>) {
<grupoSentencias>;
}
expresión booleana:
do {
<grupoSentencias>;
} while (<exprBooleana>);
iteración de un bucle.
➔ Miembros de la clase:
CLASE
Atributos
Métodos
Características de la Orientación a Objetos
cada clase.
comunes.
objetos.
➔ Archivo: MinProgOO.java
class Objeto {
public void saludar() {
System.out.println("Hola Mundo!");
}
}
Definición de Clase
➔ Sintaxis:
class <NombreClase> {
//Declaración de atributos
<tipo> <variable>;
//Declaración de métodos
<tipo> <nombreMétodo> (<argumentos>) {
. . .
}
}
definida en él ⇒ <NombreClase>.java
class Fecha {
//Atributos
int dia;
int mes;
int año;
//Métodos
void mostrarFecha() { . . . }
boolean esAñoBisiesto() { . . . }
}
Creación de un Objeto
<refObjeto>.<atributo> ó <refObjeto>.<método>()
Ejemplo:
reunion.dia = 31;
reunion.mes = 1;
reunion.año = 2018;
reunion.mostrarFechaCorta();
Métodos
clase.
return
ha declarado el método.
nada).
class Ejemplo {
int x; // atributos
void metodo(int y) { // parámetro
int z; // variable local
x = y + z;
}
}
Ámbito de las variables (II)
método.
class Ejemplo {
int x;
void metodo(int y) {
int z = 1;
int x = 2;
x = y + z;
}
}
Sobrecarga de Métodos
class Fecha {
. . .
public Fecha() { . . . }
public Fecha(int d, int m, int a) { . . . }
. . .
}
class <NombreClase> {
. . .
public <NombreClase>() { }
. . .
}
objetos:
restringido.
datos.
manera restringida:
. . . . . .
Fecha f = new Fecha(); Fecha f = new Fecha();
f.dia = 5; f.dia = 5; ⇒ ERROR
f.mes = 2; f.mes = 2; ⇒ ERROR
f.año = 2018; f.año = 2018; ⇒ ERROR
. . . . . .
int d;
d = f.dia; ⇒ ERROR
. . .
Ejemplo de Encapsulación (II)
class Fecha {
private int dia;
private int mes;
private int año;
public void setDia(int d) {
if ( d > 0 && d < 32) {
dia = d;
}
}
public int getDia() {
return dia;
}
}
. . .
Fecha f = new Fecha();
f.setDia(34); ⇒ El método setDia valida el valor asignado
int d = f.getDia();
. . .
Plain Old Java Object (POJO)
orientada a objetos.
posible.
Ejemplo de POJO
comunes. Vertebrados
Caninos Felinos
extends.
Herencia (III)
simple.
múltiple.
clases.
por separado.
tiene-un <Contenido>?
class Motor { class Chasis { class Coche {
. . . . . . Motor motor;
} } Chasis chasis;
}
lista de parámetros.
class Animal {
public void saludar() {
System.out.println("El animal saluda!");
}
}
class Gato extends Animal {
public void saludar() {
System.out.println("Miauuu");
}
}
Otras características de la Herencia
private SI NO NO NO
protected SI SI NO NO
public SI SI SI SI
default SI SI SI NO
Polimorfismo
➔ Una clase sólo tiene una forma, pero una variable que hace
b.ladrar(); ⇒ ERROR
((Perro)b).ladrar();
◆ Parámetros polimórficos.
◆ Colecciones heterogéneas.
Parámetros Polimórficos
class Mascota { . . . }
class Veterinario {
public void vacunar(Mascota m) {
. . .
}
}
. . .
Veterinario doctor = new Veterinario();
Gato tom = new Gato();
Raton jerry = new Raton();
doctor.vacunar(tom);
doctor.vacunar(jerry);
. . .
Arreglos
Arreglos
➔ Declaración de arrays:
la posición length-1
Equivale a:
primos[0] = 2;
primos[1] = 3;
primos[2] = 5;
Ejemplos de Arrays
class Animal {
public void saludar() { }
}
package <nombre.paquete>;
bo/edu/umss/
package bo.edu.umss;
class Estudiante {
. . .
}
bo.edu.umss.Estudiante
import <nombre.paquete>.<NombreClase>;
import <nombre.paquete>.*;
import java.lang.*;
import bo.edu.umss.*;
como bo.edu.umss.Estudiante.
por defecto.
}
Variables y Métodos Estáticos (I)
double tangente(double x) {
return Math.sin(x) / Math.cos(x);
}
Variables y Métodos Estáticos (II)
sobreescribir.
class Error {
int x;
public static int y;
class Mate {
public static final double PI = 3.1416;
objetos.
de una clase.
interface <NombreInterfaz> {
<tipo> <nombreMétodo1> (<params>);
<tipo> <nombreMétodo2> (<params>);
. . .
}
clases.
de la interfaz.
Equivalencia Interfaz - Clase Abstracta
método equals().
Operadores de Comparación de Objetos (II)
class Fecha {
private int dia;
private int mes;
private int año;
. . .
public boolean equals (Object obj) {
Fecha otra = (Fecha)obj;
return this.dia == otra.dia && this.mes == otra.mes
&& this.año == otra.año;
}
}
. . .
Fecha f1 = new Fecha(14,2,2018);
Fecha f2 = new Fecha(21,12,2018);
Fecha f3 = new Fecha(14,2,2018);
if (f1.equals(f2)) { ⇒ FALSE
. . .
}
if (f1.equals(f3)) { ⇒ TRUE
. . .
}
Excepciones
Introducción
try {
// Código protegido que puede provocar excepciones
}
finally {
// Código que se ejecuta siempre al final
}
try {
abrirManguera();
cargarCosbustible();
}catch (MangueraRotaException e){
darAlarma();
avisarEncargados();
}
finally {
cerrarManguera();
}
Java Swing
Java Swing
llamado JComponent.
➔ Swing es una capa más encima de AWT más que una sustitución
del mismo.
Característica Descripción
paquetes:
javax.accessibility javax.swing.plaf
javax.swing.text javax.swing
javax.swing.plaf.basic javax.swing.text.html
javax.swing.border javax.swing.plaf.metal
javax.swing.text.html.parser javax.swing.colorchooser
javax.swing.plaf.multi javax.swing.text.rtf
javax.swing.event javax.swing.plaf.synth
javax.swing.tree javax.swing.filechooser
javax.swing.table javax.swing.undo
String es una clase Thread-safe
➔ String es inmutable.
Swing no es Thread-safe
puede llamar a los métodos de esos componentes más que del hilo
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame ventana = new JFrame("My frame:)");
ventana.setSize(300,300);
ventana.setVisible(true);
}
});
Java FX
Introducción a JavaFX
aplicaciones de escritorio.
paquetes Java.
Builder.
Crear una aplicación JavaFX
delimitación.
actuase en consecuencia.
terceros.
por voz.
Historia de Android (III)
rendimiento.
video juegos.
➔ Android 4.1 (Jelly Bean) sale en Julio de 2012 con Google Now.
gestor de permisos.
➔ Sistema Operativo:
procesador Intel.
https://developer.android.com/studio/index.html#Requirements
SDK Android
➔ SDK Tools.
Arquitectura de Android
➔ Proyecto Android:
◆ Android Manifest.
◆ Librerías de código.
➔ Ejecutable APK
◆ Android Manifest.
Android Studio
➔ Instant run.
MVC.
datos de la aplicación.
View
https://developer.android.com/reference/android/view/View.html
LinearLayout
https://developer.android.com/guide/topics/ui/layout/linear.html