You are on page 1of 65

Clase 1: Iniciando con Java

Clase 2: Iniciando con Java


Despus de haber estudiado esta clase usted podr:

Identificar los componentes bsicos de los programas en Java. Escribir programas sencillos en Java Describir la diferencia entre declaracin de objeto y creacin de objeto. Describir el proceso de crear y ejecutar programas en Java Utilizar las clases standard Date, SimpleDateFormat, String, y JOptionPane

Desarrollar programas en Java, utilizando desarrollo incremental.

CS1101X Lecture #2

El Primer programa en Java

El concepto fundamental de la POO ilustrado por el programa: Un programa object-oriented utiliza objetos. Este programa muestra una ventana en la pantalla. El tamao de la ventana es puesto a 300 pixels de ancho y 200 pixels de alto. El ttulo ser Mi primer programa en Java
3

CS1101X Lecture #2

Bienvenido.java
// Autor: Elizabeth Vidal // Propsito: Pregunte por el nombre del usuario y muestre un mensaje de bienvenida.

import java.util.*; public class Bienvenido {

public static void main(String[] args)


{ Scanner scanner = new Scanner(System.in); System.out.print(Cual es su nombre? "); String name = scanner.next(); System.out.println("Hola " + nombre + "."); System.out.println(Bienvenido a MP!\n"); } }
CS1101X Lecture #2

Programas en el libro

Todos los programas en el libro pueden ser descargados del website del autor Thomas Wu.

CS1101X Lecture #2

Programa Ch2Sample1
import javax.swing.*;
Declara un nombre class Ch2Sample1 { public static void main(String[ ] args) {

JFrame

myWindow;

Crea un objeto

myWindow = new JFrame( ); myWindow.setSize(300, 200) myWindow.setTitle(My First Java Program); myWindow.setVisible(true); } }
CS1101X Lecture #2

Usa un objecto

Diagrama de Clases para Ch2Sample1


Ch2Sample1
setTitle(My First Java Program) myWindow : JFrame

CS1101X Lecture #2

Relacin de Dependencia
Ch2Sample1
myWindow : JFrame

En vez de dibujar todos los mensajes, lo resumimos mostrando solamente una relacion de dependencia. El diagrama muestra que Ch2Sample1 depende de los servicios brindados por myWindow.

CS1101X Lecture #2

Declaracin de Objetos
Nombre de Clase Esta clase debe estar definida antes de que se realice esta declaracin. Nombre de Objeto Aqui ha sido declarado un objeto.

JFrame

myWindow;

Mas ejemplos

Cliente Student Vehicle

cliente; jan, jim, jon; car1, car2;

CS1101X Lecture #2

Creacin de Objetos
Nombre de Objeto Aqui el nombre del objeto que estamos creando. Nombre de la Clase Una instanica de esta clase es creada. Argumento No se han utilizado argumentos aqui.

myWindow

= new JFrame (

);

Mas Ejemplos

Cliente jon car1

= new Cliente( ); = new Student(John Java); = new Vehicle( );

CS1101X Lecture #2

10

Convencin Standard para Nombres

Letras maysculas para la primera letra de los nombres de clases y palabras subsecuentes

Ejemplo: String, JFrame, SimpleDateFormat, Cliente.

Letras minsculas para la primera letra del nombre de los objetos. Letras mayusculas para la primera letra de palabras subsecuentes.

Ejemplo: ownerName, myWindow, customer.

Referir a Tabla 2.2 en la pgina 74.

Referirse al documento Estilo de Programacin, Diseo , y Guia de Evaluacion


11

CS1101X Lecture #2

Declaracin vs. Creacin


1
Customer customer; = new Customer( );

customer

customer

1. El identificador customer es declarado y un espacio es asignado en la memoria.

: Customer

2. Un objeto Customer es creado y el identificador customer es seteado para que se refiera a el.
12

CS1101X Lecture #2

Combinando Declaracin y Creacin


1
Customer customer;

customer

new

Customer( );

Pueden ser combinados en una sola sentencia


Customer customer = new Customer( );

CS1101X Lecture #2

13

State-of-Memory vs. Program


customer

customer : Customer

: Customer

State-of-Memory Notation

Program Diagram Notation

CS1101X Lecture #2

14

Nombre vs. Objetos


Customer customer; = = new new Customer( ); Customer( );

customer
customer

customer

Memoria no utilizada que fue asignada ser reclamada por el Garbage Collection.

Creado con el primer new.

: Customer

: Customer

Creado con el segundo new. La referencia al primer objeto Customer se pierde.


15

CS1101X Lecture #2

Enviando un Mensaje
Nombre del Objeto Nombre del objeto al cual estamos enviando el mensaje. Nombre del Mtodo El nombre del mensaje que estamos enviando Argumento El argumento que estamos pasando con el mensaje.

myWindow

setVisible

true

) ;

Mas Ejemplos

account.deposit( 200.0 ); student.setName(john); car1.startEngine( );

Enviando un Mensaje = Llamando un Mtodo


CS1101X Lecture #2

16

Flujo de Ejecucin
Program Code Diagrama del Estado de Memoria
myWindow

JFrame myWindow

myWindow; = new JFrame( );


width
height title visible : JFrame

myWindow.setSize(300, 200);
myWindow.setTitle (My First Java Program); myWindow.setVisible(true);

300 200
Mi Primer Proga

true

CS1101X Lecture #2

17

Componentes de un Programa

Un programa Java esta compuesto de


comentarios, sentencias import, y declaraciones de clases

CS1101X Lecture #2

18

Componentes de Programa : Comentario


/* Capitulo 2 Ejemplo: Mostrando una Ventana Archivo: Ch2Sample2.java */ import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow;

Comentario

myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(My First Java Program); myWindow.setVisible(true);

}
}
CS1101X Lecture #2

19

Emparejando Simbolos de Comentario


/* Este es un comentario en una linea */ /* Comentario numero 1 */ /*

Commentario numero 2
*/ /* /* /* Este es un comentario */ */
CS1101X Lecture #2

Esto es parte del comentario.

Error: No hay un simbolo de inicio

20

Tres tipos de Comentarios


/* Este es un 1 comentario con tres lineas de texto. */ // Este es un comentario // Este es otro comentario // Este es un tercer comentario
Comentario linea simple Comentario Multilinea

/** * Esta clase provee fnciones basicas de reloj Ademas * de mostrar la fecha y hora actual,puede utilizar esta * clase como cronometro. */

Comentarios javadoc

CS1101X Lecture #2

21

Sentencia Import (1/3)


/* Capitulo 2 Ejemplo Programa: Mostrando una Ventana File: Ch2Sample2.java */

import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow;

Sentencia Import

myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(Mi Primer Programa Java); myWindow.setVisible(true); } }
CS1101X Lecture #2

22

Sentencia Import(2/3)

Java contiene un conjunto de librerias, llamadas Java Programming Interface (API). Las clases de Java API estan agrupadas en paquetes (packages.) Un package es un elemento de Java para agrupar clases relacionadas bajo un nombre comun
23

CS1101X Lecture #2

Algunos packages: java.applet: utilizado para desarrollar applets java.awt: utilizado para graficos java.io: para operaciones de input y output java.util: contiene una serie de clases de proposito general java.lang: contiene diferentes clases que soportan temas primarios del leguaje tales como funciones matematicas.

CS1101X Lecture #2

24

Sentencia Import(3/3)

import identifica los paquetes y clases que son utilizados en el programa.


import package.class o import package.*

Ejemplo:
import java.util.*;

el cual incluye import java.util.ArrayList; import java.util.Date; import java.util.Scanner; y otras clases en el paquete.
CS1101X Lecture #2

25

Import : Sintaxis y Semantica


Nombre Paquete Nombre del paquete que contiene las clases que queremos usar. Nombre de Clase El nombre de la clase que queremos importar. Use asterisco para importar todas las clases.

<package name> e.j. dorm

<class name> ; Resident;

Mas Ejemplos

import import import

javax.swing.JFrame; java.util.*; com.drcaffeine.simplegui.*;

CS1101X Lecture #2

26

Declaracin de Clase
/* Captulo 2 Ejemplo Programa: Mostrando Ventana File: Ch2Sample2.java */ import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) {

Declaracin de Clase

JFrame

myWindow;

myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(Mi Primer Programa Java); myWindow.setVisible(true); } }

CS1101X Lecture #2

27

Declaracin de Mtodo
/*

Captulo 2 Ejemplo: Mostrando Ventana


File: Ch2Sample2.java */ import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow;

Declaracin de Mtodo

myWindow = new JFrame( );

myWindow.setSize(300, 200);
myWindow.setTitle(Mi Primer Programa Java); myWindow.setVisible(true); } }

CS1101X Lecture #2

28

Elementos Declaracin de Mtodo


Modificador Modificador

Tipo Retorno

Nombre Mtodo

Parmetero

public

static

void

main(

String[ ] args
Cuero del Mtodo

){

JFrame myWindow; myWindow = new JFrame( ); myWindow.setSize(300, 200);

myWindow.setTitle(Mi primer Programa Java); myWindow.setVisible(true); }


CS1101X Lecture #2

29

Mtodo main
Modificador Modificador Tipo Retorno

Nombre Mtodo

Parmetero

public

static

void

main(

String[ ] args

){

Estudiaremos los modificadores, tipo de retorno y los parmetros mas adelante.

CS1101X Lecture #2

30

Plantilla para Programas Java simples


/* Chapter 2 Sample Program: Displaying a Window

Comentarios
File: Ch2Sample2.java */

import javax.swing.*;
class Ch2Sample1 {

Sentencias Import

public static void main(String[ ] args) { JFrame myWindow;

Nombre de Clase

myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(My First Java Program); myWindow.setVisible(true); } }
CS1101X Lecture #2

Cuerpo Metodo

31

Por que utilizar Clases Standard

No reinvente la rueda. Cuando hay objetos que satisfagan nuestras necesidades, utilcelo. Aprender como utilizar clases standard Java es el primer paso para dominar POO. Antes de aprender como definir nuestras propias clases, necesitamos aprender como utilizar clases existentes.

CS1101X Lecture #2

32

Trabajermos con cuatro clases standard:


JOptionPane

(package: javax.swing) String (package: java.lang) Date (package: java.util) SimpleDateFormat (package: java.text)

CS1101X Lecture #2

33

JOptionPane
Utilizando showMessageDialog de la clase JOptionPane es una forma simple de mostrar el resultado de una computacin del usuario.
JOptionPane.showMessageDialog(null, I Love Java);

Este dilogo aparecera en el centro de la pantalla.

CS1101X Lecture #2

34

Mostrando Multiple Lneas de Texto


Podemos mostrar multiples lneas de texto separando las lneas con el marcador de nueva linea \n.
JOptionPane.showMessageDialog(null, one\ntwo\nthree);

CS1101X Lecture #2

35

Secuencias de Escape (1/2)

Java ofrece caracteres de escape para representar caracteres especiales \b backspace \n newline \t tab \r carriage return \\ backslash \" double quote \' single quote
36

CS1101X Lecture #2

Secuencias de Escape (2/2)

Cual es la salida de la siguiente sentencia?

System.out.println("Nombre\tEdad\tPassword"); System.out.println("========================"); System.out.println("Keith\t19\tapple\"2"); System.out.println("Guang\t22\ttea\\eat"); System.out.println(("Melvin\t20\t123abc");

Output:

Nombre Edad Password ======================== Keith 19 apple"2 Guang 22 tea\eat Melvin 20 123abc
CS1101X Lecture #2

37

String

Los valores de texto pasados al mtodo showMessageDialog son instancias de la clase String. Una secuencia de caracteres separadas por comillas dobles es una constante String Existen cerca de 50 mtodos definidos en la clase String. Aqui utilizaremos tres de ellos: substring, length, e indexOf. Tambin presentaremos una operacin sobre string llamada concatenacin.
38

CS1101X Lecture #2

Creando un Objeto String


1
String name = name; new String(Jon Java);

name

1
: String

1. El identificador name es declarado y un espacio es asignado en memoria.

2
Jon Java

2. Un objeto String es creado y el identificador name es configurado para referirse a el.


39

CS1101X Lecture #2

Indices de String

La posicin, o ndice, del primer caracter es 0.


CS1101X Lecture #2

40

Definicin: substring

Asuma que str es un objeto String y est propiamente inicalizado a un string. str.substring( i, j ) devolver un nuevo string mediante la extraccion de caracteres de str desde la posicion i hasta j-1 donde 0 i longitud de str, 0 j longitud de str, y i j. Si str es programming , entonces str.substring(3, 7) creara un nuevo string cuyo valor es gram porque g est en la posicin 3 y m est en la posicin 6. El string original str permanece igual.
41

CS1101X Lecture #2

Ejemplos: substring
String text = Espresso;

text.substring(6,8) text.substring(0,8) text.substring(1,5) text.substring(3,3) text.substring(4,2)


CS1101X Lecture #2

so Espresso spre error


42

Definicin: length

Asuma str es un objeto String y est propiamente inicializado con un string. str.length( ) retornar el nmero de caracteres en str. Si str es programming , entonces str.length( ) retornar 11.

El string original str permanece igual.

CS1101X Lecture #2

43

Ejemplos: length
String str1 = str2 = str3 = str4 = str1, str2, str3, str4; Hello ; Java ; ; //empty string ; //one space

str1.length( ) str2.length( ) str3.length( ) str4.length( )

5
4 0 1
44

CS1101X Lecture #2

Definicin: indexOf

Asuma str es un objeto String y est propiamente inicializado con un string. str.indexOf( substr ) retornara la primera posicion en la que substr ocurra en str. Si str es programming y substr es gram , entonces str.indexOf(substr ) retornara 3.

Si substr no se ecuentra en str, entonces retornar 1. La busqueda es case-sensitive. CS1101X Lecture #2

45

Examples: indexOf
String str; str = I Love Java and Java loves me. ;

21

str.indexOf( J ) str.indexOf( love ) str.indexOf( ove ) str.indexOf( Me )

7 21
3 -1
46

CS1101X Lecture #2

Definicin: concatenacin

Asuma que str1 y str2 son objetos String y estn propiamente inicializados. str1 + str2 retornara un nuevo string que es la concatenacin de los dos string. Si str1 es pro y str2 es gram , entonces str1 + str2 retornara program.

Note que este es un operador y no un mtodo de la clase String. Los string str1 y str2 47 CS1101X Lecture #2 permanecen igual.

Examples: concatenation
String str1, str2; str1 = Jon ; str2 = Java ;

str1 + str2 str1 + + str2 str2 + , + str1 Are you + str1 + ?

JonJava
Jon Java Java, Jon Are you Jon?

CS1101X Lecture #2

48

Date

La clase Date del paquete java.util es utilizada para representar fechas. Cuando un objeto Date es creado, este es puesto a la fecha de hoy (de acuerdo al sistema de la computadora) La clase tiene el metodo toString que convierte el formato interno a un string.

Date today; today = new Date( ); today.toString( );

Fri Oct 31 10:05:18 PST 2003


49

CS1101X Lecture #2

SimpleDateFormat

La clase SimpleDateFormat permite que la informacin de Date sea mostrada en varios formatos.
Tabla 2.1 pag 68 muestra las opciones de formato.
Date today = new Date( ); SimpleDateFormat sdf1, sdf2; sdf1 = new SimpleDateFormat( MM/dd/yy ); sdf2 = new SimpleDateFormat( MMMM dd, yyyy ); sdf1.format(today); sdf2.format(today);

10/31/03 October 31, 2003


50

CS1101X Lecture #2

JOptionPane para Input


Utilizar showInputDialog de la clase JOptionPane es una forma sencilla de ingresar string.
String name; name = JOptionPane.showInputDialog (null, What is your name?);

Este dialogo aparecen en el centro de la pantalla

CS1101X Lecture #2

51

Definicin del Problema


Escriba un programa que permita ingresar su nombre completo y nos devuelva su Monograma

Ejemplo: input: output: Andrew Lloyd Weber ALW

CS1101X Lecture #2

52

Plan General

Identificar las tareas principales Necesitamos saber QUE desarrollar antes de desarrollar Tareas: Obtener el nombre y apellidos de la persona Extraer las iniciales para obtener el monograma Mostrar el monograma
53

CS1101X Lecture #2

Pasos de Desarrollo

Desarrollaremos este programa en dos pasos:


1.

Iniciamos con la plantilla y aadimos cdigo para el input Aadir codigo para calcular y mostrar el monograma

2.

CS1101X Lecture #2

54

Paso 1: Diseo
La especificacin del programa nos dice obtenga el nombre, primer apellido, y segundo apellido del usuario, pero no nos dice como. Consideraremos el como en el Paso 1. Utilizaremos la clase JOptionPane para el ingreso.

oEstilo de Ingreso: Opcin 1


Ingresar nombre, primer apellido y segundo apellido de forma separada oEstilo de Ingreso: Opcin 2 Ingresar el nombre completa de una sola vez. Escogemos la opcin 2 por simplicidad
CS1101X Lecture #2

55

Paso 1: Code
/* Capitulo 2 Sample Program: Displays the Monogram File: Step1/Ch2Monogram.java

*/ import javax.swing.*;
class Ch2Monogram { public static void main (String[ ] args) { String nombre; nombre = JOptionPane.showInputDialog(null, Ingrese su nombre completo(nombre, apellido materno, apellido paterno):"); JOptionPane.showMessageDialog(null, nombre); } }
CS1101X Lecture #2

56

CS1101X Lecture #2

57

Paso 1: Prueba
En la fase de pruebas o testing, ejecutamos el programa para verificar que Podemos ingresar el nombre completo El nombre se muestra correctamente

CS1101X Lecture #2

58

Paso 2: Diseo
Nuestras habilidades de programacin aun son limitadas, as que asumiremos lo siguiente: El string que ingresemos contiene nombre, primer apellido y segundo apellido

El nombre, primer apellido y segundo apellido estn separados por espacios en blanco. Ejemplo:
John Quincy Adams John Kennedy Harrison, William Henry (ok) (not ok) (not ok)

CS1101X Lecture #2

59

Paso 2: Diseo (contd)


Dado un ingreso valido, podemos realizar el calculo de las iniciales mediante: Rompiendo el String de ingreso en: nombre, primer apellido y segundo apellido. Extrayendo el primer carcter de cada uno de ellos Concatenando estos tres primeros caracteres

Aaron Ben Cosner


Aaron

Ben Cosner
Ben ABC

Cosner

CS1101X Lecture #2

60

Paso 2: Cdigo
/* Chapter 2 Sample Program: Displays the Monogram File: Step 2/Ch2MonogramStep2.java

*/ import javax.swing.*;
class Ch2Monogram { public static void main (String[ ] args) { String nombreCompleto, nombre, apellidoMaterno,apellidoPaterno, espacio, monograma; espacio = " ";

//Ingreso del nombre complet nombreCompleto = JOptionPane.showInputDialog(null, Ingrese Nombre Completo (nombre, apellidoPaterno, apellidoMaterno):" );
CS1101X Lecture #2

61

Paso 2: Codigo (cont)


//Extrae nombre, apellido materno y apellido materno nombre = nombreCompleto.substring(0, nombreCompleto.indexOf(espacio)); nombreCompleto = nombreCompleto.substring(nombreCompleto.indexOf(space)+1,name.length()); apellidoPaterno = nombreCompleto.substring(0, name.indexOf(space)); apellidoPaterno = nombreCompleto.substring(name.indexOf(space)+1, name.length()); //Realiza el Monograma monogram = apellidoPaterno.substring(0, 1) + apellidoPaterno.substring(0, 1) + last.substring(0,1); //Muestra el resultado JOptionPane.showMessageDialog(null, Su monograma es " + monogram); } }

CS1101X Lecture #2

62

Paso 2: Prueba
En la fase de pruebas, ejecutamos el programa y verificamos que, para todos los ingresos validos, obtenemos las iniciales correctas Debemos ejecutar el programa varias veces. Verificar solamente UNA respuesta correcta NO es suficiente. Debemos intentar varios ejemplos de ingresos validos

CS1101X Lecture #2

63

End of Lecture #2

CS1101X Lecture #2

64

Fin Clase 1

CS1101X Lecture #2

65

You might also like