Your SlideShare is downloading. ×
Clase IX
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Clase IX

208
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
208
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
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);