Download Nombre de Objeto - Pedroatorrealba

Document related concepts
no text concepts found
Transcript
Fundamentos de Java
Ing. Pedro Torrealba
OBJETIVOS
• Identificar los componentes básicos de los programas Java.
• Distinguir dos tipos de programa Java: aplicaciones y
applets.
• Escribir aplicaciones Java sencillas y applets sencillos.
• Describir la diferencia entre la declaración y la creación de
objetos.
• Describir el proceso de crear y ejecutar programas Java.
• Usar las clases ventanaPrincipal y CuadroMensaje del
paquete javabook para escribir aplicaciones Java.
• Usar la clave Graphics del paquete estándar de Java.
Ing. Pedro Torrealba
La primera aplicación Java
Un programa orientado a objetos usa objetos.
/* Programa MiPrimeraAplicacion
Este programa muestra una ventana en la pantalla. La
ventana se sitúa en el centro de la pantalla, y el
tamaño de la ventana sera casi el de esta.
*/
import javabook.*;
class MiPrimeraAplicacion
{
public static void main (String[] args)
{
MainWindow ventanaPrincipal;
ventanaPrincipal = new MainWindow( );// Crea y
ventanaPrincipal.show() ;//muestra una ventana
}
Ing. Pedro Torrealba
El diagrama de objetos del
programa MiPrimeraAplicacion
MiPrimeraAplicacion
ventanaPrincipal
MainWindow
main
show
Ing. Pedro Torrealba
Uso de objetos
Para usar un objeto en un programa, se debe
declarar y crear el objeto primero y, después
enviarle mensajes.
Ing. Pedro Torrealba
Declaración de objetos
La declaración de un objeto se hace siguiendo la siguiente
sintaxis:
<nombre de la clase> <nombre del objeto>;
Nombre de clase
Debe ser definido en
alguna parte.
MainWindow
Nombre de Objeto
Aquí se declara un
objeto.
ventanaPrincipal;
Ing. Pedro Torrealba
Validez de identificadores
Un identificador es una secuencia de letras y dígitos cuyo
primer carácter es siempre una letra.
Se usa un identificador para dar nombre a una clase, un
objeto, un método u otros componentes.
Identificadores válidos:
Identificadores no válidos:
MiPrimeraAplicacion
Diversion
AreaCalculo
Mi Primera Aplicacion
Progarma Diversión
Area Calculo
Ing. Pedro Torrealba
Convención de nombrado
Se sigue la convención de nombres de, mayúscula para la
primera letra de los nombres de clase y una letra minúscula para
la primera letra de los nombres de objetos.
Es importante seguir la convención estándar de nombrado de
forma que otros puedan leer sus programas y distinguir
fácilmente el propósito de los identificadores.
Los programas que siguen la convención de nombrado estándar
son más fáciles de leer que aquellos que no la siguen.
Siga la convención de nombrado estándar cuando escriba sus
programas de Java para hacerlos
más fácilmente legibles.
Ing. Pedro Torrealba
Creación de objetos
Sintaxis de creación de objetos:
<nombre de objeto = new <nombre de clase> ( <argumentos>);
Nombre de Objeto
Nombre del objeto
que se está creando.
Nombre de Clase
Se crea una
instancia de esta clase.
ventanaPrincipal = new MainWindow (
Ing. Pedro Torrealba
Argumento
Aquí no se
usan argumentos.
);
Declaración y creación de un
objeto
A
Cuenta cuenta;
cuenta = new Cuenta( );
Estado de la memoria
después de ejecutar A
cuenta
Se declara el identificador cuenta y se asigna espacio en memoria.
Cuenta cuenta;
B
cuenta = new Cuenta( );
después de ejecutar B
cuenta
Cuenta
Se crea un objeto Cuenta yIng.sePedro
leTorrealba
asigna un identificador cuenta.
Envío de Mensajes
Después de que se ha creado el objeto, se puede comenzar a
enviarle mensajes.
La sintaxis para enviar un mensaje a un objeto es
<nombre de objeto>.<nombre de método>(<argumentos>);
donde <nombre de objeto> es un nombre de objeto, <nombre
de método> es un nombre de método del objeto y
<argumentos> es una secuencia de valores que se pasan al
método.
ventanaPrincipal.setVisible(true);
Nombre de Objeto
Nombre del objeto al que
se le envía el mensaje
Nombre de Método
Nombre del mensaje
Ing. Pedro
queTorrealba
se envía
Agumento
Argumernto que se
Pasa con el mensaje
Creación repetida de un objeto
Custumer cliente;
cliente = new Custumer();
cliente = new Custumer();
cliente
Costumer
Costumer
Creado por el
primer new
El primer objeto cliente se desasignará eventualmente
porque no hay ninguna referencia al mismo.
Ing. Pedro Torrealba
Creado por el
segundo new
Preguntas rápidas
1. ¿Cuáles de los siguientes identifícadores son inválidos?
a. Uno
e. Hola
b. mi Ventana
f. JAVA
c. 1234
g. hola, ahí
d. acctl22
h. DecafeLattePlease
2. ¿Qué está equivocado en el código siguiente?
VentanaPrincipal ventanaPrincipal( ) ;
ventanaPrincipal.show( ) ;
3. ¿Hay algo equivocado en las siguientes declaraciones?
ventanaPrincipal VentanaPrincipal;
Cuenta, Cliente cuenta, cliente;
4. ¿Cuál de las siguientes sentencias es válida?
a. ventanaPrincipal.setVisible( "true" );
b. ventanaPrincipal.setVisible( true );
Ing. Pedro Torrealba
Componentes de un programa
Un programa Java se compone de comentarios, sentencias y
declaraciones de clase.
Aunque no son necesarios para ejecutar el programa, los
comentarios son indispensables para escribir código fácil de
comprender.
Ing. Pedro Torrealba
Comentarios
/*
Esto es un comentario con
tres líneas de
texto.
*/
// Esto es un comentario
// Esto es otro comentario
// Esto es un tercer comentario
Ing. Pedro Torrealba
Comentarios javadoc
Es un comentario especializado que puede aparecer antes de la
declaración de clase y de cualquier otro elemento de programa.
Los comentarios javadoc comienzan con la marca /** y terminan con la
marca */.
Aquí hay un ejemplo de un comentario javadoc:
/**
* Esta clase proporciona funciones básicas de reloj.
* Ademas de para leer la hora actual y la fecha de hoy,
* se puede usar esta clase para funciones de
* cronometro.
*/
Ing. Pedro Torrealba
Más información de javadoc
Se puede encontrar más información sobre javadoc, y
páginas web de documentación de ejemplo generadas a
partir de javadoc, en
www.drCaffeine.com/supportinfo/javadoc.html.,
puede obtener una documentación completa de las clases
estándares de Java generadas a partir de comentarios
javadoc en
www.java.sun.com/j2ee/j2sdkee/techdocs/api/.
Ing. Pedro Torrealba
Ejemplo de javadoc
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
Programa:
EditorTexto
Autor:
C. Thomas Wu
[email protected]
Curso:
comp.. Sci. 101
Spring 2000
Programa asignado num. 7
JDK 1.2.
Windows 98
Compilador:
Plataforma:
Descripción:
Editor de texto sencillo. Permite al usuario salvar texto
a un archivo y leer de un archivo. Muestra el texto usando
únicamente fuentes Courier y no permite dar formato al texto
(por ejemplo, negrita, itálica, etc.). El editor proporciona
funciones de edición estándares como Cut, Copy y Paste, pero
no tiene Undo. Para mas detalles consulte, por favor, el
archivo TxEditReadme.
Ing. Pedro Torrealba
Utilidad de los comentarios
Las marcas de comentarios son útiles para desactivar una
porción de un programa.
Suponga que encuentra una porción de un programa que
puede estar causando un problema y hace que el programa
falle, se puede intentar eliminar el código que da lugar al
problema.
En lugar de reemplazar la parte problemática completa con un
código nuevo, se puede dejar el código cuestionable dentro del
programa convirtiéndolo en un "comentario" mediante el uso
de marcas de comentario.
Si necesita el código más tarde, sólo tiene que eliminar las
marcas de comentarlos. Ing. Pedro Torrealba
Sentencia Import
Para usar una clase de un paquete, se puede referir a la clase dentro de su
programa usando el siguiente formato:
<nombre de paquete>.<nombre de clase>
Por ejemplo, para usar la clase VentanaPrincipal del paquete javabook, se
indica como
javabook.VentanaPrincipal
que se debe leer como "javabook punto VentanaPrincipal". Esta notación es
la que se denomina notación puntuada o punto.
Un paquete puede incluir subpaquetes, definiendo una jerarquía de
paquetes.
Cuando hay que referirse a una clase dentro de un paquete profundamente
anidado, se usan múltiples puntos. Por ejemplo, se escribe
java.awt.image.ColorModel
para referirse a la clase ColorModel
dentro
del paquete java.awt.image.
Ing. Pedro
Torrealba
Nombres
completamente calificados
La notación puntuada con los nombres de todos los paquetes a
los que pertenece la clase se denomina el nombre completamente
calificado de la clase.
Una sentencia import al principio de su programa elimina la
necesidad de usar nombres completamente calificados.
import java.awt.image.ColorModel;
Se puede importar todas las clases usando la notación asterisco:
import <nombre de paquete>.*;
Ing. Pedro Torrealba
Declaración de clases
La sintaxis para declarar una clase es
class <nombre de clase>
{
<declaraciones de miembros de la clase>
}
donde <nombre de clase> es el nombre de la clase y
<declaraciones de miembros de la clase> es una secuencia
de declaraciones de miembros de la clase.
La palabra class es una palabra reservada que se usa para indicar el
principio de una declaración de clase.
Un miembro de clase puede ser o bien un valor de datos o un método.
Se puede usar cualquier identificador válido para dar nombre a la clase.
Ing. Pedro Torrealba
Declaración de métodos
La sintaxis para la declaración de método es
<modificadores> <tipo devuelto> <nombre de método>
(<parámetros>)
{
<cuerpo del método>
}
<modificadores> - secuencia de términos para designar distintos
tipos de métodos
<tipo devuelto> - tipo de valor de datos devuelto por un método
<nombre de método> - nombre de un método
<parámetros> - es una secuencia de valores que se pasan al método
<cuerpo del método> - es una secuencia de instrucciones.
Ing. Pedro Torrealba
/* Programa MiPrimeraAplicacion
Este programa muestra una ventana en la pantalla. La
ventana se sitúa en el centro de la pantalla, y el
tamaño de la ventana sera casi el de esta.
*/
Declaración de método
Esta declaración crea el
método main.
import javabook.*;
class MiPrimeraAplicacion
{
public static void main (String[] args)
{
MainWindow ventanaPrincipal;
ventanaPrincipal = new MainWindow( );// Crea y
ventanaPrincipal.show() ;//muestra una ventana
}
}
Ing. Pedro Torrealba
Modificador
public
Modificador
static
Tipo de vuelta
void
Nombre del
método
Parámetros
main (String[] args)
{
MainWindow ventanaPrincipal;
ventanaPrincipal = new MainWindow( );// Crea y
ventanaPrincipal.show() ;//muestra una ventana
}
Cuerpo del método
Formado por
una secuencia
de instrucciones
Ing. Pedro Torrealba
Preguntas rápidas
1. Denomine los tres componentes de un programa Java.
2. Localice los tres componentes del programa en el programa
Diversión del Capítulo 1.
3. Compare Diversión y MiPrimeraAplicacion y haga una lista
de las similitudes diferencias.
Ing. Pedro Torrealba
Plantilla para aplicaciones Java
sencillas
Comentario
Sentencia import
class
Nombre de Clase
public static void main(String[] args)
Cuerpo de método
Ing. Pedro Torrealba
Ciclo edición-compilaciónejecución
MiPrimeraAplicacion.java
MiPrimeraAplicacion.class
/* Programa MiPrimeraAplicacion
Este programa muestra una ventana
en la pantalla. La ventana se sitúa
en el centro de la pantalla, y el
tamaño de la ventana sera casi el de esta.
*/
Editor
import javabook.*;
class MiPrimeraAplicacion
{
public static void main (String[] args)
{
MainWindow ventanaPrincipal;
ventanaPrincipal = new MainWindow( );// Crea y
ventanaPrincipal.show() ;//muestra una ventana
Compilador
}
}
Paso 1
Paso 2
(archivo fuente)
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
Interprete
Paso 3
(archivo objeto)
Edit, Notepad, etc.
javac
java
Ing. Pedro Torrealba
Programa en ejecución
El paquete javabook
Para ser un buen programador de lenguajes orientados a
objetos, uno debe primero aprender cómo usar clases
predefinidas.
Las clases predefinidas de javabook tiene las siguientes
ventajas:
1. Le proporciona una pequeña muestra de cómo se
desarrollan los programas del mundo real.
2. Minimiza el impacto de la sintaxis y la semántica del
lenguaje de programación.
3. Le permite escribir programas prácticos sin aprender
demasiados detalles del lenguaje Java.
4. Sirve como un buen ejemplo de diseño de clases.
Ing. Pedro Torrealba
Ejemplo
Definición del problema
Los desarrollos empiezan con una definición del problema. La
definición del problema para nuestros programas de ejemplo
será corta, variando entre una sentencia y un párrafo, pero la
definición del problema para las aplicaciones avanzadas y
complejas puede contener muchas páginas.
Escriba una aplicación que muestre el mensaje Me Gusta Java.
Ing. Pedro Torrealba
Ejemplo
Diseño
En la etapa de diseño, se traduce la definición del problema
dado en un documento de diseño que se puede implementar.
Para los programas orientados a objetos, un documento de
diseño incluirá una lista de clases.
Las clases del documento de diseño son clases predefinidas
hechas por el usuario.
Para cada clase en la lista, se identifica su objetivo, los
métodos y valor de datos que serán definidos en ella, las
suposiciones hechas para su uso y algunas cosas más.
Ing. Pedro Torrealba
Diseño
Documento diseño: MostrarMensaje
Clase
Propósito
MostrarMensaje La clase principal del programa.
MainWindow
Marco de ventana principal del programa. El
título se define para MostrarMensaje. Esta
clase es de javabook.
MessageBox
Diálogo para mostrar el mensaje pedido. Clase
de javabook.
Ing. Pedro Torrealba
Diagrama de objetos
ventanaPrincipal
MostrarMensaje
MainWindow
show
main
cuadroMensaje
MessageBox
show
Ing. Pedro Torrealba
Codificación
/*
Programa MostrarMensaje
El programa muestra el texto "Me gusta Java". El programa
utiliza un objeto MessageBox del paquete javabook para mostrar
el texto.
*/
import javabook.*;
class MostrarMensaje
{
public static void main(String args[])
{
// se declaran dos objetos
MainWindow ventanaPrincipal;
MessageBox cuadroMensaje;
// se crean dos objetos
ventanaPrincipal = new MainWindow("Mostrar mensaje");
cuadroMensaje = new MessageBox(ventanaPrincipal);
// se hacen visibles los dos objetos:
// primero el marco (ventana principal)
// y después el dialogo con el mensaje
ventanaPrincipal.show();
cuadroMensaje.show("Me gusta Java");
}
Ing. Pedro Torrealba
}
Applets
Comentario
/* Programa MiPrimerApplet
Un applet que muestra el texto "Me gusta Java“
y un rectangulo rodeando al texto.
*/
import java.applet.*;
import java.awt.*;
Declaración
de clase
Sentencias
import
public class MiPrimerApplet extends Applet
{
public void paint(Graphics g)
{
g.drawString("Me gusta Java",70,70);
g.drawRect(50,50,130,30);
}
}
Ing. Pedro Torrealba
Diagrama de objetos del applet
AppletViewer
MiPrimerApplet
main
Graphics
paint
Ing. Pedro Torrealba
Subclase de applet
Una subclase de Applet se declara como:
public class <subclase de applet> extends applet
{
<declaraciones de miembros de la clase>
}
Applet
MiPrimerApplet
Ing. Pedro Torrealba
Pasos para ejecutar un applet
MiPrimerApplet.java
MiPrimerApplet.class
/* Programa MiPrimerApplet
Un applet que muestra el texto "Me gusta Java“
y un rectangulo rodeando al texto.
*/
import java.applet.*;
import java.awt.*;
Editor
public class MiPrimerApplet extends Applet
{
public void paint(Graphics g)
{
g.drawString("Me gusta Java",70,70);
g.drawRect(50,50,130,30);
}
}
Paso 1
Compilador
Paso 2
(archivo fuente)
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
9032 274874284294424982749794
(archivo objeto)
Paso 4
Edit, Notepad, etc.
javac
AppletViewer
Programa en ejecución
Ing. Pedro Torrealba
Edit, Notepad, etc.
Paso 3
<HTML>
<BODY>
<APPLET CODE="MiPrimerApplet.class" WIDTH=300
HEIGHT=190>
</APPLET>
</BODY>
</HTML>
(archivo html)
Archivos HTML
Se necesita un archivo HTML que haga referencia al archivo
con el código objeto de applet para ejecutar el applet.
<HTML>
<BODY>
<APPLET CODE="MiPrimerApplet.class" WIDTH=300 HEIGHT=190>
</APPLET>
</BODY>
</HTML>
Ing. Pedro Torrealba
Preguntas rápidas
1. ¿Por qué son un visor de applet y un navegador web
distintos?
2. ¿Qué clase es la clase principal de un applet?
3. ¿Qué método de la clase Graphics se usaría para dibujar un
rectángulo?
4. ¿Cuál es el objetivo de la etiqueta APPLET en un archivo
HTML?
Ing. Pedro Torrealba
Actividad
Escriba un programa en Java que envíe los siguientes letreros a la
pantalla y envie los mensajes que se indican a la ventana
principal. Localiza la ventana principal inicialmente en la
posición 150,150 y con dimensiones 100 x 100.
Letrero
“Bienvenidos”
“Como estan?”
“Yo soy...nombre”
“Eso es todo...”
“Fin...”
Mensaje
Poner ventana en la posición 100,100
Cambiar ancho a 400
Cambiar alto a 300
Poner ventana en la posición 200,400
Ing. Pedro Torrealba
Código básico de la actividad
/*
Programa Actividad
*/
import javabook.*;
class Actividad
{
public static void main(String args[])
{
// se declaran dos objetos
MainWindow ventanaPrincipal;
MessageBox cuadroMensaje;
// se crean dos objetos
ventanaPrincipal = new MainWindow("Mostrar mensaje");
cuadroMensaje = new MessageBox(ventanaPrincipal);
// se hacen visibles los dos objetos:
ventanaPrincipal.show();
cuadroMensaje.show(“Bienvenidos");
//AQUÍ VA EL CÓDIGO PEDIDO...
}
}
Ing. Pedro Torrealba
Algunos métodos disponibles
para dibujar gráficos
Método
Significado
drawLine(x1 ,y1 ,x2,y2)
Dibuja una línea entre (x1,y1) y (x2,y2)
drawRect(x,y,w,h)
Dibuja un rectángulo con anchura w y altura h
en (x,y)
drawRoundRect(x,y,w,h,aw,ah)Dibuja un rectángulo con esquinas redondeadas,
anchura w y altura h en (x, y) Los parámetros
aw y ah determinan el ángulo para redondear
las esquinas
draw0val(x,y,w,h)
Dibuja un óvalo con anchura w y altura h en la
posición (x, y)
drawString("texto",x,y)
Dibuja el string texto en (x,y)
Ing. Pedro Torrealba
Ejemplo gráfico
Dibujo de un Triángulo
import javabook.*;
import java.awt.*;
class Triangulo{
static public void main(String[] args){
MainWindow ventana = new MainWindow();
InputBox entrada = new InputBox(ventana);
ventana.show();
//mostrar ventana antes de iniciar gráficos
Graphics g = ventana.getGraphics();
g.setColor(Color.red);
g.drawLine(100,100,400,100);
g.drawLine(400,100,400,400);
g.drawLine(400,400,100,100);
}
}
Ing. Pedro Torrealba
Una carita
100,100
400
200,250 40
350,250 40
40
40
400
200,350
200
225°
100
90°
import javabook.*;
import java.awt.*;
class Carita{
static public void main(String[] args){
MainWindow ventana = new MainWindow();
InputBox entrada = new InputBox(ventana);
ventana.show();
//mostrar ventana antes de iniciar gráficos
Graphics g = ventana.getGraphics();
g.setColor(Color.red);
g.drawOval(100,100,400,400);
g.drawOval(200,250,40,40);
g.drawOval(350,250,40,40);
g.drawArc(200,350,200,100,225,90);
}
}
Ing. Pedro Torrealba