Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Java PDF
Java PDF
lenguaje de programación
Java
Agenda
Qué es Java ?
Características generales del lenguaje
Variables
Tipos de Datos
Estructuras de control
Orientado a Objeto:
Clase, objeto, atributos, métodos, constructores
y mas….
Java
Genera byteCode
Implementación
de la Máquina
Virtual Java
Tecnología Java
Compile-time Environment Compile-time Environment
Class
Loader Java
Class
Bytecode Libraries
Java Verifier
Source
(.java)
Just in
Java Java
Time
Bytecodes Interpreter Java
Compiler
move locally Virtual
or through machine
Java network
Compiler
Runtime System
Estilo
Los programadores deben seguir ciertas convenciones en
cuanto a estilo
Los nombres de las clases deben empezar con mayúscula,
las siguientes palabras también inician en mayúscula
public class DanceFloor
Sintáxis vs Estilo
Comentarios
Un bloque de comentario puede ser
colocado entre las marcas /* y */
/* Exercise 5-2 for Java Methods
Author: Miss Brace
Date: 3/5/2010
Rev. 1.0 */
Comentarios
/** comentario */
Los caracteres entre /** y */son ignorados y se
incluyen en la generación automática de la
documentación.
Características del lenguaje
/**
* Returns total sales from all vendors;
* sets <code>totalSales</code> Se pueden usar tags
* to 0. HTML
*
* @return total amount of sales from all vendors
*/
Estilo
Ejemplo javadoc
/**
* Inserta un título en la clase descripción.
* Al ser el título obligatorio, si es nulo o vacío se lanzará
* una excepción.
*
* @param titulo El nuevo título de la descripción.
* @throws IllegalArgumentException Si titulo es null, está vacío o contiene solo
espacios.
*/
public void setTitulo (String titulo) throws IllegalArgumentException
{
if (titulo == null || titulo.trim().equals(""))
{
throw new Exception ("El título no puede ser nulo o vacío");
}
else
{
this.titulo = titulo;
}
}
Características del lenguaje
Estilo
Estilo
Palabras Reservadas
Palabras con un significado especial para el compilador
Ejemplos:
Nombres de tipos básicos: boolean, char, double, int, …
Indicadores de control: do, if, else, for, while, …
Class, interface, extends, implements
package, import
this, super
Modificadores de acceso: public, private, protected
Constantes: true, false, null
Características del lenguaje
danceFloor.update(this);
}
Variables
Variables
int count;
double x, y; Nombre(s)
Tipo JButton go;
Walker amy;
String firstName;
Variables
El operador de asignación permite cambiar el
valor de una variable
count = 5;
x = 0;
go = new JButton("Go");
firstName = args[0];
Alcance
Cada variable tiene un alcance –
el área en el código donde es
“visible”
{
Si usa una variable fuera de su int k = ...;
alcance, el compilador ...
reportará un error de sintáxis }
{
Variable local declarada
}
}
...
}
Variables
• int • byte
• double • short
• char • long
• boolean • float
Tipos de datos
Constantes literales
new line
tab
Operadores: +, -, /, * , %
La precedencia de los operadores y paréntesis es
la misma que en algebra
m % n es el resto cuando m es dividido por n (por
ejemplo, 17 % 5 is 2; 2 % 8 is 2)
% tiene el mismo rango que / y *
Operadores binarios con el mismo rango se
evaluan de izquierda a derecha
Operadores
Devuelve
un double
Convierte Km a Millas,
redondeado al entero
más cercano
Estructuras de Control
if else
if ( <condition> ) if ( <condition> )
{ {
< statements > < statements >
} }
else
{
< other statements > la cláusula else
} es opcional
Expresiones booleanas
Mayor
! -(unary) ++ -- (cast)
* / %
+ -
< <= > >= == !=
&&
||
Menor Más fácil de leer
if ("forward".equals(cmd))
{
if (slide >= numSlides)
beep.play();
else
slide++;
}
else
{
if (slide <= 1)
beep.play();
else
slide--;
}
If else if
if (drinkSize.equals(”Large")) if (drinkSize.equals(”Large"))
{ price += 1.39;
price += 1.39; else if (drinkSize.equals("Medium"))
} price += 1.19;
else if (drinkSize.equals("Medium")) else // if "Small" drink size
{ price += 0.99;
price += 1.19;
}
else // if "Small" drink size
{
price += 0.99;
}
Errores comunes
if (...) ; if (...)
{ sentencia1;
sentencia2;
sentencias;
...
... if (...)
} Es más seguro if (...)
usar { } en if- sentencia1;
else
else
sentencia2;
switch
condicion es cualquier
expresión lógica
while ( condicion )
{
statement1;
statement2; cuerpo del lazo
...
statementN;
}
do Se ejecuta al menos
{ una vez
statement1;
statement2;
...
statementN;
Si la condición es
} while ( condition );
falsa, no se ejecuta
la próxima iteración
Siempre use { } para
facilitar la lectura del
código
break y continue
int r, c;
Sintáxis
Class <NombreClase> {
// Declaracion de atributos
<tipo> <var>;
// Declaración de métodos
<tipo> <nombreMetodo> ( <argumentos> )
{ … }
}
Attribute
Creación de un objeto
Ejemplo:
Circulo miCirculo;
miCirculo = new Circulo();
Atributos
Atributos o Miembros
// Constructors:
public MyClass (...) { ... } Public interface:
... public constructors
// Public methods: and methods
public <sometype> myMethod (...) { ... }
...
// Private methods:
private <sometype> myMethod (...) { ... }
...
}
Constructores
Objeto objeto
f1 Fraction
f1 Fraction
num = 3 num = 3
f2 denom = 7 denom = 7
objeto
f2 Fraction
Referencia al
mismo objeto
num = 3
denom = 7
Métodos
double u = 3, v = -4;
...
Polynomial p = new Polynomial (1.0, -(u + v), u * v);
double y = p.getValue (2 * v - u);
...
Polynomial p = new Polynomial (1, -5, 6);
double y = p.getValue (3);
Una referencia a
este (this) objeto
ChessGame
sentencia return
return expresión;
double x = Math.random();
double y = Math.sqrt (x);
System.exit();
static métodos
vendor.addMoney(25);
die1.roll();
Superclase
(clase base)
Subclass extends
Superclass
Subclase
(clase derivada)
Biped
ToedInWalker CharlieChaplin
Herencia
Walker Hopper
Constructor Constructor
firstStep firstStep
nextStep nextStep
stop stop
distanceTraveled distanceTraveled
Jerarquía entre clases
Reduce la duplicación de código y
permite escribir métodos mas generales
class Empleado {
int calcularVacaciones() {...}
}
class Jefe extends Empleado {
int numSupervisados,
int calcularVacaciones() {...}
}
Ejemplo
class Persona {
// Atributos
private String nombre;
private String telefono;
private Persona padre;
private Persona madre;
// Constructores
public Persona(String nombre, String telefono) {
this(nombre,telefono,null,null);
}
public Persona(String nombre, String telefono, Persona
padre, Persona madre) {
this.nombre = nombre;
this.telefono = telefono;
this.padre = padre;
this.madre = madre;
....
.........
// Metodos, acceden a atributos privados
public String nombre() {return nombre;}
public String telefono() {return telefono;}
public Persona padre() {return padre;}
public Persona madre() {return madre;}
public boolean hayPadre() {return padre != null;}
public boolean hayMadre() {return madre != null;}
}
polimorfismo
class Veterinario
{
void vacunar ( Mascota m )
{...}
}
...
Veterinario doctor = new Veterinario();
Gato tom = new Gato();
Raton jerry = new Raton();
doctor.vacunar(tom);
doctor.vacunar(jerry);
...
clases abstractas
class Punto
{
int x;
int y;
int color;
}
Si está presente,
debe ser la primera
sentencia
Llamando a los constructores de
una superclase
Object
super( )
Biped
super(...)
Walker
LLamando métodos de la
superclase
Walker
DanceFloor Aerobics
Interface
DanceGroup Waltz
Band Cha-Cha-Cha
Dancer Salsa
Interface
interface Interfaz
{
<tipo> <método1>();
<tipo> <método2>();
...
<tipo> <métodoN>();
}
equivale a
if (k == 0) display (scores[k]);
1000 display (score0);
veces! else if (k == 1)
display (score1);
else
… // etc.
array
En Java, un arreglo es un objeto. Si el tipo de sus
elementos es anyType, entonces el tipo del
objeto arreglo es anyType[ ].
Declaración de arreglos anyType [ ] arrName;
d = Math.sqrt(d); O simplemente
board [ r ] [ c ] = 'x';
array
// 2-D array of char with 5 rows, 7 cols:
char[ ] [ ] letterGrid = new char [5][7];
m.length m.length
m[3].length m[0].length
array
int n = m.length;
String s1 = "Biology”;
String s2 = "C:\\jdk1.4\\docs";
String s3 = "Hello\n";
Inmutabilidad
s1 s1 "Sun"
"Sun"
s2 s2 "Sun"
OK Menos eficiente:
ocupa más memoria
Inmutabilidad
String s = "sun";
char ch = Character.toUpperCase(s.charAt (0));
s = ch + s.substring (1);
s "sun"
"Sun"
Strings vacíos
Retorna:
”Flower".length(); 6
”Wind".charAt (2); ’n'
Método — substring
result += s3;
concatena s3 a result
result += num;
convierte num a String y lo concatena a
result
Método — Find (indexOf)
0 8 11 15
retorna
date.indexOf ('J'); 0
date.indexOf ('2'); 8
date.indexOf ("2012"); 8
date.indexOf ('2', 9); 11 (empieza a buscar a partir
de la posición 9)
boolean b = s1.equals(s2);
retorna true si el string s1 es igual a s2
boolean b = s1.equalsIgnoreCase(s2);
retorna true si el string s1 matches s2, case-blind
return reversedCopy.equalsIgnoreCase(workingCopy);
}
return dest.toString();
}
protected static String reverse(String string) {
StringBuffer sb = new StringBuffer(string);
return sb.reverse().toString();
}
System.out.println();
System.out.println(
• "Testing whether the following " + "string is a palindrome:");
System.out.println(" " + string);
System.out.println();
if (isPalindrome(string)) {
System.out.println(“It IS a palindrome!");
} else {
System.out.println("It is NOT a palindrome!");
}
System.out.println();
}
}
De diagramas de clase (UML)
a Java
Transformación de clases para
una implementación OO
class autorización {
usuario miusuario;
estaciónt miestación;
autorización( ){ … }
}
Transformación de atributos de
enlace para una implementación OO
computadora
1..* 1
monitor teclado
class Monitor {
Monitor( ) { … }
} class Teclado {
Teclado( ) {…}
}
class Computadora {
Monitor[] mismonitores;
Teclado miteclado;
Computadora( ) {
}
}
Transformación de herencia simple
para una implementación OO
Lámpara
Fluorescente Incandescente
class Lámpara {
Lámpara( ) { … }
}
package empresa.finanzas;
public class Empleado
{
...
}
import empresa.finanzas.*;
public class Jefe extends Empleado
{
String departamento;
Empleado[] subordinados;
}
private Si No No No
protected Si Si* Si No
public Si Si Si Si
package Si No Si No
La clase Vector
La Clase Vector
Atributos:
int capacityIncrement: incremento en la capacidad del vector. Si vale
cero, duplica el tamaño actual del vector.
int elementCount: número de elementos válidos del vector
Object[] elementData: array de objetos donde se guardan los
elementos
Constructores:
Vector(): Crea un vector vacío (capacidad 10, incremento 0)
Vector(int initialCapacity): Crea un vector vacío con la capacidad
dada (incremento 0)
Vector(int initialCapacity, int initialIncrement): Crea un
vector vacío con la capacidad y el incremento dados
La Clase Vector
Métodos:
int capacity() devuelve la capacidad que tiene el vector
int size() devuelve el número de elementos en el vector
Métodos: