Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tomado de:
http://mmc.geofisica.unam.mx/cursos/mcst-2007-II/J
ava/Java%20desde%20Cero.pdf
¿Qué es java ?
java.util
clases útiles, como estructuras genéricas, manejo de
fecha, hora y strings, número aleatorios, etc.
java.net
clases para soportar redes: URL, TCP, UDP, IP, etc.
java.awt
clases para manejo de interface gráfica, ventanas, etc.
java.awt.image
clases para manejo de imágenes
java.awt.peer
clases que conectan la interface gráfica a implementaciones
dependientes de la plataforma (motif, Windows)
java.applet
clases para la creación de applets y recursos para
reproducción de audio. Para que se den una idea, los
números enteros, por ejemplo, son "instancias" de una clase
no redefinible, integer, que desciende de la clase Number.
Estructura de una
/Le damos un nombre "MiClase" a la clase
clase
public class MiClase
{
//Atributos de la clase
private String atributo1;
private int atributo 2;
private float atributo 3;
//Constructor con el mismo nombre de la clase
public MiClase(){}
//Métodos de la clase
public void metodo1()
{
//Método vacio
} public String metodo2()
{
return "metodo2";
}
}
EJEMPLO
package misClases; //Se le declara un paquete
public class Animal
{
private String raza;
private String nombre;
private int edad;
public Animal(String nuevoNombre)
{
nombre = nuevoNombre; //Se le da un nombre al animal
}
//Método para obtener la edad del animal
public int getEdad()
{
return edad;
}
//Método para establecer la edad del animal
public void setEdad(int nuevaEdad)
{
edad = nuevaEdad;
}
//Método para obtener el nombre del animal
public String getNombre()
{
return nombre;
}
Declaración de la clase
(public)
Definir una clase como pública (public) significa que
puede ser usada por cualquier clase en cualquier
paquete. Si no lo es, solamente puede ser utilizada por
clases del mismo paquete (más sobre paquetes luego;
básicamente, se trata de un grupo de clases e interfaces
relacionadas, como los paquetes de biblioteca incluidos
con Java).
Public, final o abstract
(final)
Una clase final (final) es aquella que no puede tener
clases que la hereden. Esto se utiliza básicamente por
razones de seguridad (para que una clase no pueda ser
reemplazada por otra que la herede), o por diseño de la
aplicación.
Public, final o abstract
(abstract)
Una clase abstracta (abstract) es una clase que puede
tener herederas, pero no puede ser instanciada. Es,
literalmente, abstracta (como la clase Number definida en
java.lang). ¿Para qué sirve? Para modelar conceptos. Por
ejemplo, la clase Number es una clase abstracta que
representa cualquier tipo de números (y sus métodos no
están implementados: son abstractos); las clases
descendientes de ésta, como Integer o Float, sí
implementan los métodos de la madre Number, y se
pueden instanciar.
1
Un método es el equivalente a una función en lenguajes como C que ayuda a
reutilizar el código. Un grupo de sentencias es un método y un método puede
ser invocado por cualquier otra sentencia. Cuando se llama a un método en
java, todas las sentencias dentro del método serán ejecutadas. Por ejemplo,
mira este método. "public static void methodExample() {}". No lleva código,
pero existe tres palabras clave antes del nombre del método. Estos
son: public, static, y void.
2
La palabra public antes del método significa que el método puede ser
llamado desde cualquier parte, lo que incluye otras clases, e inclusive,
diferentes archivos mientras la clase sea importada. Hay otras palabras que
pueden reemplazar public. Estas son, protected y private. Si un método
es protected, entonces solo podrá ser utilizado en su clase y subclases (o
sea, las clases que se creen a partir de esta). Si un método es private,
entonces solo puede ser utilizado dentro de la clase. La última palabra no
existe realmente y se pone por defecto cuando no utilizas ninguna de las
otras dos y evitará que el método sea llamado de otro lugar que no sea su
clase.
3
La segunda palabra clave es static que significa que el método
pertenece a una clase y no a un instancia de la clase(objeto). Los
métodos estáticos deben ser llamados utilizando el nombre de la clase:
"ExampleClass.methodExample()". Sin embargo, si la palabra static no
se encuentra allí, entonces el método solo puede ser invocado a través
de un objeto. Por ejemplo, si la clase tenía por
nombre ExampleObject y tenía un constructor(los que hacen objetos),
entonces podemos hacer un nuevo objeto escribiendo ExampleObject
obj = new ExampleObject();, y llamar al método
con"obj.methodExample();".
4
La última palabra en el método es void. La palabra void significa que el método no
devuelve nada(o sea que no devuelve nada cuando corre el método). Si quieres que un
método devuelva algo, reemplaza la palabra void con un tipo de información del objeto
que deseas que retorne. Luego, adiciona return más un objeto del tipo buscado al final
del código en el método.
5
Cuando llames a un método que retorna algo, puedes usar lo que devuelve. Por
ejemplo, si un método someMethod() retorna un entero, entonces puedes
asignar este valor a lo que retorna como en el siguiente ejemplo: "int a =
someMethod();"
6
Algunos métodos requieren un parámetro. El método que requiere un parámetro de tipo entero
se vería así: someMethod(int a) Cuando uses un método de esta manera, escribe el método y
se usa para indicar que ciertas partes del código, (habitualmente, una
función miembro) están sincronizadas, es decir, que solamente un
subproceso puede acceder a dicho método a la vez.
se utiliza para lanzar explícitamente una excepción. En primer lugar se debe obtener un
descriptor de un objeto Throwable, bien mediante un parámetro en una cláusula catch o, se
puede crear utilizando el operador new.
try
el bloque finalmente
siempre se ejecuta,
se produzca o no una
excepción en el
bloque try
Si la clase Complejo
está bien diseñada,
este programa debe
mostrar el siguiente
resultado por
pantalla
MI PRIMERA VENTANA
Para crear una ventana debemos EXTENDER (Propiedad de Herencia) o
HEREDAR métodos de la clase "JFRAME". Esta clase esta contenida en la
librería SWING que nos permite la creación y gestión de gráficos,
ventanas, botones, etc. Normalmente esta se ayuda de la librería AWT
para la gestión de las mismas. Todo lo que tenga que ver con este tipo
de librerías lo veremos en otro POST. Por ahora veremos un primer
programa para poder crear una venta, en este caso solo utilizaremos la
librería SWING.
¿Cómo crear ventanas para
netbeans y HTML?
NetBeans
Primero vamos a crear un nuevo proyecto al que vamos a colocarle ventana, como
ven sin crear principalmente el main class.
Como no tiene un paquete nuestro proyecto crearemos uno, dentro de source packages.
Crearemos nuestro paquete y lo llamaremos
Ventana.
Después crearemos una nueva clase, y a esta la llamaremos
ventana.
Así quedara nuestra clase pero para nosotros crear interfaces
graficas como ventanas o menús que interactúan con el usuario
deberemos invocar el Jframe, El Jframe es una clase
establecida por netbeans para la creación de ventanas pero
para ello deberemos importar la colección de rutinas de java o
biblioteca , javax.swing para renderizar los componentes de
interfaz de usuario usando rutinas de dibujado 2D.
Así crearemos nuestra clase tipo Jframe e Importaremos la biblioteca grafica
javax.swing. Como ven en nuestro código agregamos el import
javax.swing.Jframe; para invocar la biblioteca grafica porque sin ello no nos
dejaría utilizar la clase Jframe ya que esta clase viene de la biblioteca
Javax.swing, y utilizaremos la función extends para que nuestra clase
ventana tome como base otra clase ya existente que en este caso seria
Jframe.
Luego crearemos nuestro constructor de la clase Ventana para establecer el tamaño
de nuestra ventana para ello utilizaremos this.setsize(width,height); y dentro de
parámetros estaría como queremos declarar la anchura y la altura de nuestra
ventana. Para poder ejecutarlo necesitaremos el main, Crearemos una nueva clase
que llamaremos principal.
Dentro de nuestra nueva clase colocaremos el main para poder hacer que
se muestre nuestra venta necesitaremos crear un objeto de la
claseventana como ven en la imagen lo vamos a llamar v1 y así quedaría
la sintaxis: ventana v1= new Ventana(); . Por defecto nuestra ventana no
estará visible así que utilizaremos este comando para hacerla ver:
v1.setVisible(true); . Y ya tendríamos nuestra ventana
Y así se mostraría nuestra
ventana.
Menú a la Java
barraMenu.add(menuArchivo);
barraMenu.add(menuEdit);
setMenuBar(barraMenu);
menuArchivo.add(mArchivoAbrir);
menuArchivo.add(mArchivoGrabar);
menuArchivo.add(new MenuItem("-"));
menuArchivo.add(mArchivoSalir);
menuArchivo.add(new MenuItem("-"));
Finalmente, en nuestro manejador de eventos
simplemente necesitamos verificar si se eligió un
ítem probando si el evento ocurrió sobre el ítem
determinado:
if ((e.id==Event.WINDOW_DESTROY)||
(e.target==mArchivoSalir)) {
if (editado) System.out.println("Pedir
confirmación!\n");
if (enApplet) dispose();
else System.exit(0);
}
if (e.target==mArchivoAbrir) CargarArchivo();
................
if (e.target==mEditTodo) contenido.selectAll();
En resumen lo que hago es:
if ((e.id==Event.KEY_PRESS)&&(e.target==contenido))
editado=true;
Un par de aclaraciones:
If (editado) {
sino = new ConfirmarDlg(this,"Archivo modificado!");
if (sino.getResponse()==true) ....;
else ....;
}
add("North", label);
add("Center", zonaDib);
resize(300,250);
v.lastElement().x
Es necesario aclarar explícitamente que el elemento
en cuestión es un rectángulo, ya que el vector puede
contener objetos de cualquier tipo. Para eso usamos
el casting:
(Rectangle)v.lastElement().x
(Rectangle)v.lastElement().resize( x -
(Rectangle)v.lastElement().x, ......
Rectangle r = (Rectangle)v.lastElement();
r.resize( x - r.x, y - r.y );
Finalmente, en el método Paint() no podemos asignar el
elemento hasta no saber que existe. Así que un if nos
permite verificar que el tamaño del vector es mayor que
cero, y un for nos permite dibujarlos uno por uno. Se
puede acceder a todos los elementos, uno por uno,
mediante el método elementAt(x). El método size() nos
da la cantidad de elementos (el primero es el número 0,
y así):
if (v.size() > 0)
for (i=0; i<v.size(); i++) {
Rectangle box =
cortarRect( (Rectangle)v.elementAt( i ), d);
g.drawRect(box.x, box.y, box.width-1,
box.height-1);
}