Clase IX

  • 205 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
205
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
13
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Lic. José Angel Quintanilla Rosales Un programa bien escrito es su propio cielo; un programa mal escrito es su propio infierno. [Geoffrey James, El Tao de la Programación]
  • 2.  Limpieza de objetos ¿Cuántas referencias hay a los objetos? ... Point point = new Point(2,4); Rectangle rectangle = new Rectangle(point, 20, 20); point = null; ... rectangle point Poin t Rectangle X Rectangle Poin t
  • 3.  Método public void finalize() Declarado en Object y heredado por todas las clases Cuerpo: liberar recursos No se garantiza Ni en el momento en que se ejecuta Ni que se ejecute Destructores Bicicleta
  • 4.  Tanto los atributos como los métodos tienen un calificador de acceso Public Pueden acceder todos los objetos Private Sólo puede acceder el código de la misma clase Seguridad en acceso
  • 5. Protected Sólo puede acceder el código de la misma clase, de subclases o de clases en el mismo paquete Package protected Sólo puede acceder el código de la misma clase o de clases en el mismo paquete Seguridad en acceso accesores
  • 6. Cambiar el tipo de un objeto No es necesario cuando es “hacia arriba” Obligatorio cuando es “hacia abajo” Se comprueba en tiempo de ejecución Casting
  • 7.  Casting Bicicleta a = new Bicicleta(); Tandem b = new Tandem(); a = b; // No es necesario, porque un tándem es una bicicleta b = (Tandem) a; // Es necesario porque a es una bicicleta, pero // el compilador no sabe que hay un tandem. // Sólo se sabe en tiempo de ejecución. Así // que le damos la pista al compilador. Si en // tiempo de ejecución no hay un Tándem en a, // habrá un error de tipos en tiempo de ejecución
  • 8. instanceof: nos informa si una variable es instancia de determinada clase a instanceof Clase Tiene en cuenta la transitividad Interesante para evitar errores de conversión (casting) instanceof
  • 9. Comparar objetos Mismo objeto (=) Mismo contenido (equals) Código hash (hashCode) Métodos definidos en Object y redefinibles en subclases = > equals > hashCode Operadores de comparación
  • 10. finalize equals, hashCode toString clone wait – notify getClass Clase Object
  • 11. Colección de elementos del mismo tipo <tipo> <nombre>[] int precios[]; Inicialización: <var> = new <tipo>[<num>] precios = new int[80] //array de 80 precios bicicletas = new Bicicletas[10]; Arrays
  • 12. Clase Vector En paquete java.util Implementa un contenedor de objetos Es dinámico Puedes obtener los objetos por posición Vectores Vectores
  • 13. Clase Iterator En paquete java.util Permite recorrer secuencialmente el contenido de un vector hasNext() next() Iteradores Vectores
  • 14. Java proporciona una clase String Los literales cadena: “Hola a todos” Se pueden asignar cadenas a variables directamente String hola = “Hola mundo”; Cadenas de caracteres
  • 15. El operador '+' concatena cadenas “hol” + “a Mundo”: “hola Mundo” String a = “Hola”; String b = “Mundo”; String c = a + ' ' + b; // “Hola Mundo” Algunos métodos de la clase String length() equals() Cadenas de caracteres
  • 16. El método toString() Definido en Object Da el nombre de la clase y la posición de memoria del objeto Se puede redefinir para que devuelva lo que queramos Cadenas de caracteres ToString
  • 17. Si los elementos del array son tipos primitivos, se crean y se inicializan a 0 Si los elementos del array son tipos referencia (Clases e Interfaces), sólo se reserva espacio para los punteros Deberemos crear los objetos uno a uno para el array (con el operador new) Arrays
  • 18. Obtener el valor: <nombre>[<posición>] int a = precios[8] Guardar valor: <nombre>[<posición>] = valor precios[6] = 50; Arrays
  • 19. <tipo> <nombre>[][]... int precios[][]; Inicialización: <var> = new <tipo>[<num>][<num>]... precios = new int[80][40] //array de 80x40 Arrays multidimensionales
  • 20. Obtener el valor: <nombre>[<posición>][<posición>] int a = precios[8][10] Guardar valor: <nombre>[<pos>][<pos>] = valor precios[6][12] = 50; Arrays
  • 21. Los arrays no son dinámicos Tienen tantos elementos como se indique al crearlo y no pueden cambiar Los arrays van desde 0 hasta tam – 1 Para saber el tamaño: array.length Si te pasas de índice, excepción ArrayIndexOutOfBoundsException Arrays arrays
  • 22.  Arrays String[] ciudades = { "Madrid", "Barcelona", "Bilbo", "Donosti", "Gasteiz", "Iruña" }; ¿Cúal es el índice de Bilbo? ¿Cómo es la expresión para acceder a Bilbo? ¿Cuál es el resultado de ciudades.length? ¿Cuál es el índice del último elemento? ¿Cuál es el valor de la expresión ciudades[3]? 2 ciudades[2] 6 5 Donosti
  • 23.  Arrays public class WhatHappens { public static void main(String[] args) { StringBuffer[] stringBuffers = new StringBuffer[10]; for (int i = 0; i < stringBuffers.length; i ++) { stringBuffers[i].append("StringBuffer at index " + i); } } } Se crea espacio para el array, pero no se crean los objetos StringBuffer del array, por lo que todos son nulos.
  • 24.  Excepciones Polimorfismo Abstracción CONCEPTOS AVANZADOS
  • 25. Sirven para informar que se ha producido una situación extraña y que debe tratarse Se rompe la ejecución y se salta a un manejador de excepciones Mejor que comprobar valores de retorno Excepciones
  • 26. Programa Formulario de Datos import java.awt.*; import java.lang.*; import javax.swing.*; import java.awt.event.*; class Interface1 extends JFrame { String [] SProvincias= {"San Miguel","San francisco Gotera","La Union","Usulutan"}; String [] Edades =new String [90];
  • 27. //Etiquetas JLabel Logo=new JLabel("TALLER DON ANGEL",JLabel.CENTER); JLabel Nombrel=new JLabel("Nombre",JLabel.LEFT); JLabel Direccionl=new JLabel("Direccion",JLabel.LEFT); JLabel Apellidosl=new JLabel("Apellidos",JLabel.LEFT); JLabel Edadl=new JLabel("Edad",JLabel.LEFT); JLabel Provincial=new JLabel("Provincia",JLabel.LEFT); JLabel Sexol=new JLabel("Sexo",JLabel.LEFT); JLabel Preferenciasl=new JLabel("Preferencias",JLabel.LEFT); JLabel Comentariosl=new JLabel("Comentarios",JLabel.LEFT); JLabel Pedidosl=new JLabel("Pedididos",JLabel.LEFT); JLabel SeparacionPref=new JLabel("",JLabel.LEFT);
  • 28. //Botones JButton Cancelar=new JButton("Cancelar"); JButton Enviar=new JButton("Enviar"); //Caja Validacin Redonda JRadioButton Hombre=new JRadioButton("Hombre"); JRadioButton Mujer=new JRadioButton("Mujer"); //Caja Validacin Cuadrada JCheckBox Tunning=new JCheckBox("Tunning"); JCheckBox Recambios=new JCheckBox("Recambios"); JCheckBox Reparaciones=new JCheckBox("Reparaciones"); JCheckBox Puesta=new JCheckBox("Puesta a punto"); JCheckBox Mantenimiento=new JCheckBox("Mantenimiento"); JCheckBox Competicion=new JCheckBox("Competicin"); JCheckBox Equipamiento=new JCheckBox("Equipamiento"); JCheckBox Ocasion=new JCheckBox("Vehiculos ocasin");
  • 29. //Listas Desplegables JComboBox Edad=new JComboBox(); JComboBox Provincias=new JComboBox(SProvincias); //Areas de Texto JTextArea Comentarios=new JTextArea(100,100); JTextArea Pedidos=new JTextArea(100,100); //Campos de Texto JTextField Nombre = new JTextField(); JTextField Apellidos= new JTextField(); JTextField Direccion= new JTextField(); //Grupos de radio ButtonGroup Sexo=new ButtonGroup();
  • 30. Interface1() { add(Logo,"North"); //JPanel de Abajo JPanel EnviarCancelar=new JPanel(); EnviarCancelar.add(Enviar); EnviarCancelar.add(Cancelar); add(EnviarCancelar,"South"); //Agregar JPanel al Sur //JPanel Principal ! JPanel Pprincipal=new JPanel(); add(Pprincipal,"Center"); //Situacin del JPanel en el centro Pprincipal.setLayout(new GridLayout(3,1));
  • 31. //Creacin JPaneles Secundarios JPanel Datos=new JPanel(); //Introducir Elementos Primer JPanel Datos.setLayout(new GridLayout(6,2)); //Divisin Datos.add(Nombrel); Datos.add(Nombre); Datos.add(Apellidosl); Datos.add(Apellidos); Datos.add(Direccionl); Datos.add(Direccion); Datos.add(Provincial); Datos.add(Provincias); Datos.add(Edadl);