Comenzando con Java Objetivos Identificar los componentes bsicos
Comenzando con Java Objetivos • Identificar los componentes básicos de programas java • Escribir programas simples en java • Describir la diferencia entre declarar un objeto y crearlo • Describir los procesos de creación y corrida de programas java • Usar las clases estándar: Date, Simple. Date. Format, String y JOption. Pane • Desarrollar programas java usando el método de desarrollo incremental ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 1
Primer programa de Java • El concepto fundamental de OOP ilustrado en este programa es: Un programa orientado a objetos usa objetos • Este progrma muestra una ventana en la pantalla • El tamaño de la ventana es 300 pixeles de ancho y 200 de alto. Se pone como título “Mi primer programa de Java” ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 2
Ch 2 Sample 1 Se declara una clase Ch 2 Sample 1 que incluye un método llamado main. Este crea y usa un objeto my. Window de la clase estándar JFrame import javax. swing. *; Declara una clase class Ch 2 Sample 1 { public static void main(String[ ] args) { JFrame my. Window; my. Window = new JFrame( ); Crea un objeto my. Window. set. Size(300, 200); my. Window. set. Title(“Mi primer programa Java”); my. Window. set. Visible(true); } Usa un objeto } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 3
Diagrama de relación de dependencia entre clases Ch 2 Sample 1 set. Size(300, 200 ) set. Title(“My First Java Program”) set. Visible Clase cliente (true) my. Window : JFrame Clase servidora Dependiente ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 4
Relación de Dependencia Ch 2 Sample 1 my. Window : JFrame En vez de dibujar todos los mensajes, se resume dibujando sólo la relación de dependencia. Este diagrama muestra que Sh 2 Sample 1 depende de un servicio provisto por my. Window ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 5
Declaración de Objetos Nombre de la clase Esta clase debe esta definida antes de esta declaración JFrame Más Ej ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. Account Student Vehicle Nombre del Objecto Se declara un objeto aqui my. Window; customer; jan, jim, jon; car 1, car 2; 6
Creación del Objeto Nombre de la clase Se crea una instancia de esta clase Nombre del Objeto que se esta creando aqui my. Window Más Ej ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. = new JFrame ( Argumento No se usan argumento en este caso. ); customer = new Customer( ); jon = new Student(“John Java”); car 1 = new Vehicle( ); 7
Declaración vs. Creación 1 Customer customer; 2 customer = 1. Se declara el indentificador customer y se reserva espacio en memoria new Customer( ); 2. Se crea un objeto Customer y se pone el identificador customer para referirse al mismo. customer 1 2 : Customer ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 8
Estado de memoria vs. Programa customer : Customer Notación del estado de memoria ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. Notación del diagrama de Programa 9
Nombre vs. Objeto Customer customer; customer = new Customer( ); customer Creado con el primer new ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. : Customer Creado con el segundo new. Se pierde la referencia al primer objeto Customer 10
Destrucción de objetos -Se puede usar el mismo identificador para referirse a otro objeto de la misma clase. -Cuando se pierde la referencia a un objeto, este se borra y libera el espacio de mem. ocupado. -La devolución del espacio de mem al sistema (deallocation) se llama recolector de basura (garbage collection). - Se realiza automáticamente pero taa se puede invocar - En c++ no existe este mecanismo y se debe invocar a un destructor explícitamente.
Declaración y creación en una sentecia En vez de escribir dos sentencias una con la declaración del objeto y otra con la creación se suele hacer ambas en una: Estudiante juan = new Estudiante(); En vez de: Estudiante juan; juan = new Estudiante();
Envío de Mensajes Nombre del Método Nombre del mensaje que estamos enviando Nombre del Objeto Nombre del objeto al cual le estamos enviando un mensaje my. Window Más Ej ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. . set. Visible ( Argumento El argumento que le estamos pasando con el mensaje true ) ; account. deposit( 200. 0 ); student. set. Name(“john”); car 1. start. Engine( ); 13
Componentes de un Programa • Un programa Java se compone de – commentarios, – sentencias import y – Declaraciones de clases ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 14
Componente de programa: comentario /* Chapter 2 Sample Program: Displaying a Window File: Ch 2 Sample 2. java */ import javax. swing. *; class Ch 2 Sample 1 { public static void main(String[ ] args) { Comentario JFrame my. Window; my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); my. Window. set. Visible(true); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 15
Mapeo de marcas de comentario /* This is a comment on one line */ /* Comment number 1 */ /* Comment number 2 */ /* Esto es parte del comentario /* /* This is a comment */ ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. */ Error: No tiene marca de inicio 16
Los tres Tipos de Comentarios /* This is a comment with three lines of Varias Líneas text. */ // This is a comment // This is another comment Una sóla línea // This is a third comment /** * This class provides basic clock functions. In addition * to reading the current time and today’s date, you can Commentario javadoc * use this class for stopwatch functions. */ ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 17
Sentencia Import /* Chapter 2 Sample Program: Displaying a Window File: Ch 2 Sample 2. java */ import javax. swing. *; Sentencia Import class Ch 2 Sample 1 { public static void main(String[ ] args) { JFrame my. Window; my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); my. Window. set. Visible(true); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 18
Sentencia import sintaxis y semántica Nombre de la clase que deseamosimportar. Se usan * para importar todas las clases (del paquete) Nombre del paquete que contiene la clase que deseamos usar . <package name> e. g. Más Ej. ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. dorm import . <class name> ; Resident; javax. swing. JFrame; java. util. *; com. drcaffeine. simplegui. *; 19
Ventaja de usar import El uso de sentencias import permite escribir en forma abreviada. No se copian las clases en el programa. Usando al sentencia import se puede escribir JFrame para referirse a la clase en vez de escribir cada vez javax. swing. JFrame.
Clase Declaración /* Chapter 2 Sample Program: Displaying a Window Declaración File: Ch 2 Sample 2. java de la clase */ import javax. swing. *; class Ch 2 Sample 1 { public static void main(String[ ] args) { JFrame my. Window; my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); my. Window. set. Visible(true); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 21
Declaración del Método /* Chapter 2 Sample Program: Displaying a Window File: Ch 2 Sample 2. java */ Declaración del Método import javax. swing. *; class Ch 2 Sample 1 { public static void main(String[ ] args) { JFrame my. Window; my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); my. Window. set. Visible(true); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 22
Declaración del Método: Elementos Modifica dor public Modifica dor Tipo de retorno static void JFrame my. Window; Nombre del Método main( Parámetros String[ ] args ){ Cuerpo del Método my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); my. Window. set. Visible(true); } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 23
Plantilla para programas simples en java /* Chapter 2 Sample Program: Displaying a Window Commentario File: Ch 2 Sample 2. java */ Sentencias Import import javax. swing. *; class Ch 2 Sample 1 { public static void main(String[ ] args) { JFrame my. Window; Nombre de la Clase my. Window = new JFrame( ); my. Window. set. Size(300, 200); my. Window. set. Title(“My First Java Program”); Cuerpo del Método my. Window. set. Visible(true); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 24
Por qué usar clases estándar • Si existe un objeto que cubre las necesidades conviene usarlo • Aprender a usar las clases java estándar es el primer paso para dominar OOP. • Se introducirán 4 clases estándar – – JOption. Pane String Date Simple. Date. Format – La documentación completa de las clases estándar se puede consultar en el apéndice o en general en http: //java. sun. com/j 2 se/1. 5. 0/docs/api/index. html ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 25
JOption. Pane • Una forma simple de mostrar los resultados de un cálculo a un usuario es usando show. Message. Dialog de la clase JOption. Pane. show. Message. Dialog(null, “I Love Java”); Aparecerá este cuadro de diálogo en el centro de la pantalla ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 26
Mostrar varias líneas de Texto • Podemos mostrar varias líneas de texto separándolas con una marca de fin de línea n. JOption. Pane. show. Message. Dialog(null, “onentwonthree”); ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 27
String • Los textos que se pasan al método show. Message. Dialog son instancias de la clase String • Una secuencia de caracteres entre comillas dobles es una constante String • Hay cerca de 50 métodos definidos para la clase String. Vamos a ver 3 de ellos: substring, length y index. Of. • Tambien veremos la operación de string de concatenación ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 28
Un String es un Objecto 1 String name; 2 name new = String(“Jon Java”); 1. Se declara el indetificador name y se asigna el espacio en memoria. 1 name 2. Se crea un objeto String y el identificador name que se refiere a él. 2 name : String Jon Java ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 29
Indices de String La posición o índice del 1 er caracter es 0 ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 30
Definición: substring • Asumamos que str es un objeto String y que está defidamente inicializado a un string. • str. substring( i, j ) retornará un nuevo string extrayendo los caracteres de str desde la posición i a la j-1, donde 0 i longitud de str, 0 j longitud de str, and i j. • Si str is “programming” , entonces str. substring(3, 7) creará un nuevo string cuyo valor es “gram” porque g está en la posición 3 y m en la posicion 6 • El string original no de modifica ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 31
Ej: substring String text = “Espresso”; text. substring(6, 8) “so” text. substring(0, 8) “Espresso” text. substring(1, 5) “spre” text. substring(3, 3) “” text. substring(4, 2) error ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 32
Definición: length • Asumimos que str es un objeto debidamente inicializado a un string • str. length( ) devuelve el numero de caracteres de str. • Si str es “programming” , entonces str. length( ) devolverá 11 porque hay 11 caracteres en él. • El string str permace sin modificarse ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 33
Ej: length String str 1 = str 2 = str 3 = str 4 = str 1. length( ) str 2. length( ) str 1, str 2, str 3, str 4; “Hello” ; “Java” ; “” ; //empty string “ “ ; //one space 5 4 str 3. length( ) str 4. length( ) 0 1 ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 34
Definición: index. Of • str. index. Of( substr ) devuelve la 1ª posición en que substr está en str. • Si str es “programming” y substr es “gram” , entonces str. index. Of(substr ) devolverá 3 porque la primera posición del 1 er caracter de substr en str is 3. • Si no se encuentra substr en str, devuelve -1 • La búsqueda distingue entre mayúsculas y minúsculas, en inglés “case-sensitive” ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 35
Ej: index. Of String str; str = “I Love Java and Java loves me. ” ; 3 7 21 str. index. Of( “J” ) 7 str 2. index. Of( “love” ) 21 str 3. index. Of( “ove” ) 3 str 4. index. Of( “Me” ) -1 -1 Indica que no hay coincidencia ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 36
Definición: concatenación • str 1 + str 2 devuelve un nuevo string que es la concatenacion de ambos strings • Si str 1 es “pro” y str 2 es “gram” , entonces str 1 + str 2 devolverá “program”. • Notar que éste es un operador y no un método de la clase String • Los strings str 1 y str 2 no cambian. ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 37
Ej: concatenación String str 1, str 2; str 1 = “Jon” ; str 2 = “Java” ; str 1 + str 2 str 1 + “ “ + str 2 + “, “ + str 1 “Are you “ + str 1 + “? ” “Jon. Java” “Jon Java” “Java, Jon” “Are you Jon? ” ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 38
Fecha: Date • La clase Date del paquete java. util se usa para representar una fecha • Cuando se crea un objeto Date, se le pone el dia actual (la fecha de la computadora) • La clase tiene un método to. String que convierte el formato interno a un string Date today; today = new Date( ); today. to. String( ); “Fri Oct 31 10: 05: 18 PST 2003” ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 39
Simple. Date. Format • La clase Simple. Date. Format permite ver la fechas en diferentes formatos Date today = new Date( ); Simple. Date. Format sdf 1, sdf 2; sdf 1 = new Simple. Date. Format( “MM/dd/yy” ); sdf 2 = new Simple. Date. Format( “MMMM dd, yyyy” ); sdf 1. format(today); “ 10/31/03” sdf 2. format(today); “October 31, 2003” ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 40
JOption. Pane para Ingreso (Input) • Usar el método show. Input. Dialog de la clase Joption. Pane es la manera más simple de ingresar un string. String name; name = JOption. Pane. show. Input. Dialog (null, “What is your name? ”); Este cuadro de dialogo aparecerá en el centro de la pantalla listo para aceptar el ingreso. ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 41
Problema Enunciado • Problema: Escribir un programa que le pida al usuario nombres y apellido y le muestre el monograma, es decir las iniciales. Ej: ingreso: salida: ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. Andrew Lloyd Weber ALW 42
Plan General • Identificar las tareas principales que el programa tiene que realizar • Necesitamos saber que hay que desarrollar antes de comenzar a hacerlo! • Tareas: – Obtener los nombres y el apellido – Extraer las iniciales y crear el monograma – Mostrar el monograma ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 43
Pasos de Desarrollo • Desarrollaremos el programa en 2 pasos 1. Comenzamos con una plantilla del programa y le agregamos el código para obtener el ingreso de la información. 2. Agregamos el código para calcular y mostrar el monograma ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 44
Diseño paso 1 • La especificación del programa dice obtener el nombre del usuario pero no dice cómo • Consideraremos cómo en este 1 er paso • Podemos usar Joption. Pane para el ingreso • Caso 1: Ingreso del primer nombre, segundo nombre y apellido separados Caso 2: ingreso del nombre completo de una vez • Elegimos el segundo caso porque es más fácil y rápido para que el usuario ingrese información ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 45
Codigo paso 1 /* Chapter 2 Sample Program: Displays the Monogram File: Step 1/Ch 2 Monogram. java */ import javax. swing. *; class Ch 2 Monogram { public static void main (String[ ] args) { String name; name = JOption. Pane. show. Input. Dialog(null, "Enter your full name (first, middle, last): “); JOption. Pane. show. Message. Dialog(null, name); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 46
Paso 1 Prueba • Corremos el programa y verificamos que: – Se pueda ingresar un nombre – El nombre ingresado se muestre correctamente ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 47
Paso 2 Diseño • Vamos a asumir que: – El ingreso contiene 1 er y 2 do nombre y el apellido en ese orden separados por espacios en blanco • Ej John Quincy Adams (bien) John Kennedy (mal) Harrison, William Henry (mal) ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 48
Paso 2 Diseño • Dado un ingreso válido, obtenemos el monograma – Separando el nombre ingresado en 1 ro y 2 do nombre y apellido – Extraer el 1 er caracter – Concatenar los tres caracteres ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. “Aaron Ben Cosner” “Aaron” “Ben Cosner” “Ben” “Cosner” “ABC” 49
Paso 2 Code /* Chapter 2 Sample Program: Displays the Monogram File: Step 2/Ch 2 Monogram. Step 2. java */ import javax. swing. *; class Ch 2 Monogram { public static void main (String[ ] args) { String name, first, middle, last, space, monogram; space = " “; //Input the full name = JOption. Pane. show. Input. Dialog(null, "Enter your full name (first, middle, last): “ ); ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 50
Step 2 Code (cont) //Extract first, middle, and last names first = name. substring(0, name. index. Of(space)); name = name. substring(name. index. Of(space)+1, name. length()); middle = name. substring(0, name. index. Of(space)); last = name. substring(name. index. Of(space)+1, name. length()); //Compute the monogram = first. substring(0, 1) + middle. substring(0, 1) + last. substring(0, 1); //Output the result JOption. Pane. show. Message. Dialog(null, "Your monogram is " + monogram); } } ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 51
Paso 2 Prueba • Verificar que para valores válidos de ingreso se muestran el monograma correcto • Corremos el programa varias veces, intentando distintos tipos de ingresos válidos. ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 52
Revisión del Programa • Una vez que el programa desarrollado correctamente se revisa si para ver si es posible mejorarlo • Sugerencia – Indicarle al usuario claramente en que formato tiene que ingresar su nombre ©The Mc. Graw-Hill Companies, Inc. Permission required for reproduction or display. 53
- Slides: 53