Download Chapter 2
Document related concepts
no text concepts found
Transcript
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, SimpleDateFormat, String y JOptionPane • Desarrollar programas java usando el método de desarrollo incremental ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 2 Ch2Sample1 Se declara una clase Ch2Sample1 que incluye un método llamado main. Este crea y usa un objeto myWindow de la clase estándar JFrame import javax.swing.*; Declara una clase class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow; myWindow = new JFrame( ); Crea un objeto myWindow.setSize(300, 200); myWindow.setTitle(“Mi primer programa Java”); myWindow.setVisible(true); } Usa un objeto } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 3 Diagrama de relación de dependencia entre clases Ch2Sample1 setTitle(“My First Java Program”) Clase cliente myWindow : JFrame Clase servidora Dependiente ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 4 Relación de Dependencia Ch2Sample1 myWindow : JFrame En vez de dibujar todos los mensajes, se resume dibujando sólo la relación de dependencia. Este diagrama muestra que Sh2Sample1 depende de un servicio provisto por myWindow ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 5 Declaración de Objetos Nombre de la clase Esta clase debe esta definida antes de esta declaración JFrame Más Ej ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Account Student Vehicle Nombre del Objecto Se declara un objeto aqui myWindow; customer; jan, jim, jon; car1, car2; 4th Ed Chapter 2 - 6 Creación del Objeto Nombre de la clase Se crea una instancia de esta clase Nombre del Objeto Nombre del Objeto que se esta creando aqui myWindow Más Ej ©The McGraw-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”); car1 = new Vehicle( ); 4th Ed Chapter 2 - 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 customer 1 2 : Customer ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 8 Estado de memoria vs. Programa customer customer : Customer : Customer Notación del estado de memoria ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Notación del diagrama de Programa 4th Ed Chapter 2 - 9 Nombre vs. Objeto Customer customer; customer = new Customer( ); customer = new Customer( ); customer Creado con el primer new ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. : Customer : Customer Creado con el segundo new. Se pierde la referencia al primer objeto Customer 4th Ed Chapter 2 - 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 Objeto Nombre del objeto al cual le estamos enviando un mensaje Nombre del Método Nombre del mensaje que estamos enviando myWindow Más Ej ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. . setVisible ( Argumento El argumento que le estamos pasando con el mensaje true ) ; account.deposit( 200.0 ); student.setName(“john”); car1.startEngine( ); 4th Ed Chapter 2 - 13 Componentes de un Programa • Un programa Java se compone de – commentarios, – sentencias import y – Declaraciones de clases ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 14 Componente de programa: comentario /* Chapter 2 Sample Program: Displaying a Window File: Ch2Sample2.java */ import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { Comentario JFrame myWindow; myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); myWindow.setVisible(true); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. */ Error: No tiene marca de inicio 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 17 Sentencia Import /* Chapter 2 Sample Program: Displaying a Window File: Ch2Sample2.java */ import javax.swing.*; Sentencia Import class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow; myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); myWindow.setVisible(true); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 18 Sentencia import sintaxis y semántica Nombre de la clase Nombre de la clase que deseamosimportar. Se usan * para importar todas las clases (del paquete) Nombre del paquete Nombre del paquete que contiene la clase que deseamos usar . <package name> e.g. Más Ej. ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. dorm import import import . <class name> ; Resident; javax.swing.JFrame; java.util.*; com.drcaffeine.simplegui.*; 4th Ed Chapter 2 - 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: Ch2Sample2.java de la clase */ import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow; myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); myWindow.setVisible(true); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 21 Declaración del Método /* Chapter 2 Sample Program: Displaying a Window File: Ch2Sample2.java */ Declaración del Método import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow; myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); myWindow.setVisible(true); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 22 Declaración del Método: Elementos Modifica dor public Modifica dor static Tipo de retorno void JFrame myWindow; Nombre del Método main( Parámetros String[ ] args ){ Cuerpo del Método myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); myWindow.setVisible(true); } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 23 Plantilla para programas simples en java /* Chapter 2 Sample Program: Displaying a Window Commentario File: Ch2Sample2.java */ Sentencias Import import javax.swing.*; class Ch2Sample1 { public static void main(String[ ] args) { JFrame myWindow; Nombre de la Clase myWindow = new JFrame( ); myWindow.setSize(300, 200); myWindow.setTitle(“My First Java Program”); Cuerpo del Método myWindow.setVisible(true); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 – – – – JOptionPane String Date SimpleDateFormat – La documentación completa de las clases estándar se puede consultar en el apéndice o en general en http://java.sun.com/j2se/1.5.0/docs/api/index.html ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 25 JOptionPane • Una forma simple de mostrar los resultados de un cálculo a un usuario es usando showMessageDialog de la clase JOptionPane JOptionPane.showMessageDialog(null, “I Love Java”); Aparecerá este cuadro de diálogo en el centro de la pantalla ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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. JOptionPane.showMessageDialog(null, “one\ntwo\nthree”); ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 27 String • Los textos que se pasan al método showMessageDialog 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 indexOf. • Tambien veremos la operación de string de concatenación ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 29 Indices de String La posición o índice del 1er caracter es 0 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 33 Ej: length String str1 = str2 = str3 = str4 = str1.length( ) str2.length( ) str1, str2, str3, str4; “Hello” ; “Java” ; “” ; //empty string “ “ ; //one space 5 4 str3.length( ) str4.length( ) 0 1 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 34 Definición: indexOf • str.indexOf( substr ) devuelve la 1ª posición en que substr está en str. • Si str es “programming” y substr es “gram” , entonces str.indexOf(substr ) devolverá 3 porque la primera posición del 1er 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 35 Ej: indexOf String str; str = “I Love Java and Java loves me.” ; 3 7 21 str.indexOf( “J” ) 7 str2.indexOf( “love” ) 21 str3. indexOf( “ove” ) 3 str4. indexOf( “Me” ) -1 -1 Indica que no hay coincidencia ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 36 Definición: concatenación • str1 + str2 devuelve un nuevo string que es la concatenacion de ambos strings • Si str1 es “pro” y str2 es “gram” , entonces str1 + str2 devolverá “program”. • Notar que éste es un operador y no un método de la clase String • Los strings str1 y str2 no cambian. ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 37 Ej: concatenación String str1, str2; str1 = “Jon” ; str2 = “Java” ; str1 + str2 str1 + “ “ + str2 str2 + “, “ + str1 “JonJava” “Jon Java” “Java, Jon” “Are you “ + str1 + “?” “Are you Jon?” ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 toString que convierte el formato interno a un string Date today; today = new Date( ); today.toString( ); “Fri Oct 31 10:05:18 PST 2003” ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 39 SimpleDateFormat • La clase SimpleDateFormat permite ver la fechas en diferentes formatos Date today = new Date( ); SimpleDateFormat sdf1, sdf2; sdf1 = new SimpleDateFormat( “MM/dd/yy” ); sdf2 = new SimpleDateFormat( “MMMM dd, yyyy” ); sdf1.format(today); “10/31/03” sdf2.format(today); “October 31, 2003” ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 40 JOptionPane para Ingreso (Input) • Usar el método showInputDialog de la clase JoptionPane es la manera más simple de ingresar un string. String name; name = JOptionPane.showInputDialog (null, “What is your name?”); Este cuadro de dialogo aparecerá en el centro de la pantalla listo para aceptar el ingreso. ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. Andrew Lloyd Weber ALW 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 1er paso • Podemos usar JoptionPane 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 45 Codigo paso 1 /* Chapter 2 Sample Program: Displays the Monogram File: Step1/Ch2Monogram.java */ import javax.swing.*; class Ch2Monogram { public static void main (String[ ] args) { String name; name = JOptionPane.showInputDialog(null, "Enter your full name (first, middle, last):“); JOptionPane.showMessageDialog(null, name); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 46 Paso 1 Prueba • Corremos el programa y verificamos que: – Se pueda ingresar un nombre – El nombre ingresado se muestre correctamente ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 47 Paso 2 Diseño • Vamos a asumir que: – El ingreso contiene 1er y 2do nombre y el apellido en ese orden separados por espacios en blanco • Ej John Quincy Adams John Kennedy Harrison, William Henry ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. (bien) (mal) (mal) 4th Ed Chapter 2 - 48 Paso 2 Diseño • Dado un ingreso válido, obtenemos el monograma – Separando el nombre ingresado en 1ro y 2do nombre y apellido – Extraer el 1er caracter – Concatenar los tres caracteres ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. “Aaron Ben Cosner” “Aaron” “Ben Cosner” “Ben” “Cosner” “ABC” 4th Ed Chapter 2 - 49 Paso 2 Code /* Chapter 2 Sample Program: Displays the Monogram File: Step 2/Ch2MonogramStep2.java */ import javax.swing.*; class Ch2Monogram { public static void main (String[ ] args) { String name, first, middle, last, space, monogram; space = " “; //Input the full name name = JOptionPane.showInputDialog(null, "Enter your full name (first, middle, last):“ ); ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 50 Step 2 Code (cont) //Extract first, middle, and last names first = name.substring(0, name.indexOf(space)); name = name.substring(name.indexOf(space)+1, middle = name.substring(0, name.indexOf(space)); last = name.substring(name.indexOf(space)+1, name.length()); name.length()); //Compute the monogram monogram = first.substring(0, 1) + middle.substring(0, 1) + last.substring(0,1); //Output the result JOptionPane.showMessageDialog(null, "Your monogram is " + monogram); } } ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 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 McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 52 Revisión del Programa • Una vez que el programa desarrollado corre correctamente se revisa si para ver si es posible mejorarlo • Sugerencia – Indicarle al usuario claramente en que formato tiene que ingresar su nombre ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4th Ed Chapter 2 - 53