Programaci n orientada a objetos con java
This presentation is the property of its rightful owner.
Sponsored Links
1 / 239

Programaci ó n Orientada a Objetos (con Java) PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on
  • Presentation posted in: General

Programaci ó n Orientada a Objetos (con Java). Dra. Maria Lucia Barr ó n Estrada. Contenido. Arreglos unidimensionales y multidimensionales M é todos y mensajes. Constructor, destructor. Sobrecarga. Herencia. Polimorfismo y reutilizaci ó n Excepciones. Flujos y archivos.

Download Presentation

Programaci ó n Orientada a Objetos (con Java)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Programaci n orientada a objetos con java

Programación Orientada a Objetos(con Java)

Dra. Maria Lucia Barrón Estrada

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Contenido

Contenido

  • Arreglos unidimensionalesy multidimensionales

  • Métodos y mensajes.

  • Constructor, destructor.

  • Sobrecarga.

  • Herencia.

  • Polimorfismo y reutilización

  • Excepciones.

  • Flujos y archivos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


1 arreglos unidimensionales y multidimensionales

1. Arreglos unidimensionalesy multidimensionales

1.1 Arreglo Unidimensionales listas(vectores).

1.1.1 Conceptos básicos.

1.1.2 Operaciones.

1.1.3 Aplicaciones.

1.2 Arreglo bidimensional. (matrices)

1.2.1 Conceptos básicos.

1.2.2 Operaciones.

1.2.3 Aplicaciones.

1.3 Arreglo Multidimensional.

1.3.1 Conceptos básicos.

1.3.2 Operaciones.

1.3.3 Aplicaciones.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Conceptos

Conceptos

  • Un arreglo es una estructura que contiene una serie de elementos homogéneos (mismo tipo).

  • Un arreglo puede tener una o mas dimensiones.

  • Los elementos de un arreglo se localizan por medio de índices (un índice por cada dimensión)

  • En Java, los arreglos son referencias (la declaración NO reserva memoria para los elementos)

  • Java provee dos clases que contienen métodos para manipular arreglos (Arrays y Vector)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Arreglos de objetos vs arreglos de datos primitivos

Paul

5

0

1

2

3

4

0

1

2

3

4

3

Fernando

1

Maria

7

Pedro

2

Juan

Arreglos de objetos VSArreglos de datos primitivos

Arreglo de datos String

Arreglo de datos int

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


1 1 arreglo s unidimensionales listas vectores

1.1 Arreglos Unidimensionales listas(vectores).

  • Un arreglo unidimensional es una estructura que puede contener una serie de elementos del mismo tipo en un momento específico del tiempo. Cada elemento se localiza por medio de un índice.

  • En Java, los arreglos son objetos que almacenan un grupo de valores del mismo tipo. Cada elemento se almacena en una posición que va de 0 hasta numero de elementos -1

  • Un arreglo puede ser creado despues de definirlo con una lista de valores iniciales o usando la palabra new y el numero de elementos

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

0 1 2 3 4 5

arreglo

  • El tamaño del arreglo se define en su creación y NO puede cambiar durante la ejecución del programa.

  • Los elementos de un arreglo unidimensional se almacenan en posiciónes especificas, las cuales se identifican con un índice desde 0 hasta tamaño-1

    int [] arreglo = new int[6]; //no valores iniciales

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • declaración de arreglos unidimensionales.

    tipo [ ] identificador

    tipo identificador[ ]

  • creación de arreglos unidimensionales.

    new tipo[tamaño]

    { elemento0, elemento1, …, elementon}

  • Acceso de elementos

    identificador[posición]

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos

numeros

null

numeros

0 1 2 3 4 5 6 7 8 9

Ejemplos

// declara un arreglo de datos tipo int llamado numeros

int [] numeros;

// crea un arreglo con 10 elementos de tipo int

numeros = new int[10];

// declaración y creación

int [] numeros = new int[10];

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

arregloInt

4

2

5

7

1

8

0 1 2 3 4 5

  • inicialización del arreglo

  • int [] arregloInt = {4,2,5,7,1,8}; // creación e inicalizacion

// Forma alternativa

int [] arregloInt = new int[6];

arregloInt[0] = 4;

arregloInt[1] = 2;

arregloInt[2] = 5;

arregloInt[3] = 7;

arregloInt[4] = 1;

arregloInt[5] = 8;

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos1

nombres

null

Ejemplos

// declara un arreglo de datos tipo String llamado nombres

Strign [] nombres;

// crea un arreglo con 100 elementos de tipo String

nombres = new String[100];

nombres

. . .

0 1 2 . . . 99

// declaración y creación

String [] nombres= new String[100];

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Inicializaci n de arreglos

inicialización de arreglos

  • Por default los elementos de un arreglo se inicializan con los valores default de su tipo de dato correspondiente.

  • Formas de inicializar elementos de un arreglo:

    • Leer valores del teclado

    • Leer valores de un archivo

    • Usando valores random

    • Obtener valores de otros datos (objetos)

    • Etc

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Operaciones con arreglos

Operaciones con arreglos

  • Inicializar los elementos (todos/algunos) con un valor

  • Localizar un elemento específico

  • Ordenar los elementos del arreglo

  • Intercambiar dos elementos de posición

  • Procesar todos los elementos de un arreglo

  • Procesar solo algunos elementos

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos2

Ejemplos

Procesa datos de 30 empleados

final int NUMEMPLEADOS = 30;

int [] horas = new int[NUMEMPLEADOS];

// almacena las horas trabajadas de cada empleado

for (int i=0; i<NUMEMPLEADOS; i++) {

System.out.println(“Empleado”+ (i+1)+” : “);

horas[i]= Keyboard.readInt();

}

// obtiene el promedio de horas trabajadas

for (int i=0; i<NUMEMPLEADOS; i++)

sum = sum + horas[i];

double promedio = sum / NUMEMPLEADOS;

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

//Bernardo Enero-Junio 2005

public class DiasdelaSemana { public static void main(String[] args) {       int dia,respuesta;       System.out.println("Este programa le dira a que dia de la semana pertenece el numero escrito");       String dias[]= {"Domingo“, "Lunes“, "Martes“, "Miercoles“,"Jueves“,"Viernes“, "Sabado"};

     respuesta=1;       while (respuesta==1){    System.out.println("Escriba por favor un numero de dia de la semana: (del 0 al 6"); dia=Leer.datoInt(); if (dia>=0 && dia<=6){  System.out.println(dias[dia]);    } else { System.out.println("Que el numero sea del 0 al 6");              } System.out.println("Desea continuar con la ejecución de este programa? (1=SI"); respuesta=Leer.datoInt();       }       System.out.println("Programa finalizado");    }

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

// Rafael Lopez enero-junio 2005

//Calcula los numeros primos segun el método de la criba de Eratostenes

public class Primos {

// el programa obtiene una lista de los numeros primos desde 0 hasta 99

public static void main (String args[]) {

boolean numero[]=new boolean[100];

for (int i=0; i<100; i++)

numero[i]=true;

for (int i=2; i<100; i++) // procesa a todos los numeros desde 2 hasta 99

if (numero[i])

for (int m=i+i;m<100;m+=i)

numero[m]=false;

//los elementos del vector que quedan con valor TRUE son primos

for(int i=1;i<100;i++)

if (numero[i])

System.out.println(" " + i + " ");

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

// Rafael Lopez

/* Este programa calcula e imprime el promedio de 12 valores almacenados en un vector. * Obtiene cuantos son mayores que el promedio y cuales son dichas calificaciones. */ public class Promedio{    public static void main(String[]args){       double prom=0,suma=0;  short i,lista=0; double calificaciones[]={50, 58, 65, 84, 42, 100, 99, 66, 65, 75, 02, 32}; for (i=0;i<calificaciones.length;i++)

 suma=calificaciones[i]+suma;          prom=suma/12; System.out.println("El promedio de las calificaciones es  "+prom); System.out.println("Las calificaciones mayores que el promedio son:"); for (i=0; i<calificaciones.length;i++) if(calificaciones[i]>prom){  lista++; System.out.println("         "+calificaciones[i]); }

System.out.println("El total de calificaciones mayor que el promedio es de "+lista);     } }

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Errores mas comunes

Errores mas comunes

  • Uso de un índice fuera de rango valido

  • Error de uno-menos. (el primer elemento se almacena en la posición 0 )

  • Confusion del índice de un elemento del arreglo con el elemento mismo

  • Usar = para COPIAR un arreglo

  • Usar == para COMPARAR dos arreglos

  • En arreglos de dos dimensiones, confundir los índices de renglones y columnas

  • Confundir la longitud de un arreglo length con un método length() de la clase String

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


La clase arrays

La clase Arrays

Esta clase contiene métodos para manipular arreglos (ordenamiento y busqueda) ademas de funciones que permiten ver a los arreglos como listas.

java.util Class Arrays

java.lang.Objectjava.util.Arrays

public class Arrays extends Object

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


M todos de la clase arrays

métodos de la clase Arrays

static intbinarySearch(byte[] a, byte key)

static intbinarySearch(char[] a, char key)

static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)

static booleandeepEquals(Object[] a1, Object[] a2)

static StringdeepToString(Object[] a)

static booleanequals(boolean[] a, boolean[] a2)

static voidfill(boolean[] a, boolean val)

static inthashCode(byte[] a)

static voidsort(char[] a)

static voidsort(Object[] a, int fromIndex, int toIndex)

static StringtoString(double[] a)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

// Ejemplo usando la clase Arrays

// Define un arreglo de enteros y los ordena de menor a mayor

import java.util.*;

public class Ordena{

public static void main (String[] args){

int [] arraynum = {2,4,6,4,6,3,9,5,1,7,0};

System.out.println ("Arreglo original"+ Arrays.toString(arraynum));

Arrays.sort(arraynum);

System.out.println ("Arreglo ordenado"+ Arrays.toString(arraynum));

int [] array2 = new int[11];

Arrays.fill(array2,0);

System.out.println ("Arreglo 2 " +Arrays.toString(array2));

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Aplicaciones

Aplicaciones

  • Escribe un programa que intente accesar en un arreglo un elemento que no existe (fuera del rango). Que sucede en la ejecución?

  • Escribe un programa que almacene en un arreglo la denominación de billetes y monedas (1000, 500, 200, 100, 50, 20, 10, 5, 2, 1) lee de teclado una cantidad y procesa numero de billetes y monedas de cada denominación para tal cantidad.

  • Define dos arreglos, alumnos y calificaciones, almacena datos en cada uno de ellos e imprime un listado de todos los alumnos que tienen calificación mayor que el promedio del grupo.

  • Define dos arreglos, empleados y horas. Almacena datos en cada uno de ellos. Obtén dos arreglos mas, uno para impuesto y otro para el sueldo de cada empleado. Cada hora de trabajo normal (40 horas) se paga a $15, cada hora extra (>40) se paga a $20. El impuesto es igual al 6%. Obtén el total de sueldos pagados y un listado de la siguiente forma:

    Nombre Horas Sueldo_Bruto Impuesto Sueldo_Neto

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


La clase vector

La clase Vector

java.util Class Vector<E>

java.lang.Object

java.util.AbstractCollection<E>

java.util.AbstractList<E>

java.util.Vector<E>

Interfaces implementadas:

Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess

Subclasses Directas:

Stack

public class Vector<E> extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, Serializable

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


La clase vector1

La clase Vector

  • La clase Vector implementa arreglos que pueden crecer en tiempo de ejecución.

  • Los componentes de un objeto tipo Vector pueden ser accesados con un índice.

  • El tamaño de un Vector puede crecer (adicionar elementos) o disminuir (remover elementos) durante la ejecución del programa.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Operaciones

Operaciones

  • Crear objetos de tipo Vector (Constructores)

  • Agregar objetos a un vector

    • Al final (addElement)

    • En una posición especifica (insertElementAt)

  • Accesar elementos del vector

    • En una posición

    • El primer elemento

    • El ultimo elemento

  • Verificar si hay elementos

    • Esta vacío

    • Tamaño

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo

Ejemplo

// autor Lucia Barron

// Ejemplo usando las clases Vector y Arrays

import java.util.*;

// Realiza operaciones con un vector

public class VectorP{

public static void main (String[] args){

Vector miVector = new Vector();

System.out.println ("Capacidad del Vector "+ miVector.capacity());

miVector.addElement("Lucia");

miVector.add(1,"Diana");

miVector.addElement("John");

miVector.addElement("Ana");

miVector.insertElementAt("Fay",2); //recorre los elementos de 2 en adelante

Vector x = (Vector) miVector.clone(); // clona al vector

System.out.println ("clon de miVector \n"+ x);

if (miVector.equals(x)) System.out.println ("Son iguales");

else System.out.println ("NO son iguales");

Object[] y = x.toArray();

Arrays.sort(y);

for (int i =0; i<y.length; i++)

System.out.println (miVector.elementAt(i)+ " esta en posición “+Arrays.binarySearch(y,miVector.get(i)));

miVector.clear(); // borra todos los elementos de miVector

System.out.println ("Mi Vector" + miVector);

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


1 2 arreglo s b idimensional es

1.2 ArreglosBidimensionales.

  • Un arreglo bidimensional tambien conocido como matriz o tabla, es una estructura de dos dimensiones con elementos homogeneos que se localizan por medio de dos índices.

  • Java soporta directamente solo arreglos de una dimension, por lo cual los arreglos de mas dimensiones deben crearse como arreglos de arreglos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


1 2 arreglo s b idimensional es1

matriz

null

0 1 2 3 4

matriz[1][2]

matriz[2][4]

0

1

2

matriz

1.2 ArreglosBidimensionales.

  • declaración de arreglos bidimensionales.

    // define un arreglo de dos dimensiones llamado matriz

    double [] [] matriz;

    // crea un arreglo de 3 filas y 5 columnas

    double[] [] matriz = new double[3][5];

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

0 1 2 3 4

1

2

3

4

5

0

1

2

4

5

6

7

8

matriz

7

8

9

0

1

  • inicialización del arreglo

    int [][] matriz = {{1,2,3,4,5},{4,5,6,7,8},{7,8,9,0,1}};

    // creación e inicalizacion del arreglo matriz con 3 filas y 5 columnas de datos tipo int

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Proceso del arreglo

    Los arreglos de dos dimensiones usan dos índices para accesar sus elementos. El primero se refiere a la fila y el segundo a la columna.

    Ejemplo:

    int[][] miArreglo = new int [3][4];

    for (int i=0; i<miArreglo.length; i++)

    for (int j=0; j<miArreglo[i].length; j++)

    miArreglo[i] [j] = Keyboard.readInt();

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

// Ejemplo usando matrices

// Realiza operaciones con una matriz de enteros y saca su promedio

public class Matriz{

public static void main (String[] args){

int [] [] matriz = new int[3][4];

for (int i =0; i<matriz.length; i++)

for (int j =0; j<matriz[i].length; j++)

matriz[i][j] = i+j;

float sum =0f;

for (int i =0; i<matriz.length; i++){

for (int j =0; j<matriz[i].length; j++){

sum +=matriz[i][j];

System.out.print (matriz[i][j]+ "\t");

}

System.out.println();

}

System.out.println("el promedio de los elementos es "+ (sum/12));

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

0 1 2 3

1

2

0

1

2

4

5

6

7

ragged

7

8

9

  • Los arreglos de dos dimensiones NO necesariamante tienen el mismo numero de elementos en cada fila.

  • Ejemplo

    int [ ] [ ] ragged = new int[3] [ ];

    ragged[0]= new int[2];

    ragged[1]= new int[4];

    ragged[2]= new int[3];

for (int i=0; i<ragged.length; i++)

System.out.println(“Fila ”+ i + “ Columnas ”+ragged[i].length);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Aplicaciones1

Aplicaciones

  • Define una matriz de 5 x 4 elementos, almacena numeros enteros generados en forma random (en el rango de 1 a 25).

    • Obten el total por columna y el total por fila.

    • Obten el promedio de cada columna.

    • Obten el numero de elementos que son pares.

    • Obten la posición (fila y columna) del elemento mayor

    • Busca un elemento y si se encuentra, despliega su posición.

    • Obten cuantas veces se repite un elemento

    • Coloca los elementos de la matriz en un arreglo de una dimension

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Aplicaciones2

Aplicaciones

  • Define dos matrices (lee el numero de filas y columnas de c/u) almacena numeros enteros generados en forma random.

    • Obten la suma de las dos matrices.

    • Obten la diferencia de las dos matrices.

    • Obten el producto de las dos matrices.

    • Obten la matriz transpuesta de cada una.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Aplicaciones3

Aplicaciones

  • Implementa el juego del GATO.

    El juego del Gato en dos dimensiones consiste de

    • Un tablero de 3 x 3

    • Dos fichas diferentes

    • Dos jugadores

      El juego consiste en que cada jugador tomara un turno alternado con el otro y colocara en cada turno una ficha en una posición del tablero que se encuentre en ese momento desocupada.

      El juego termina si:

    • No existen mas posiciónes vacias en el tablero del juego

    • Un jugador logro colocar una linea de fichas en forma vertical, horizontal o diagonal. (8 formas diferentes de ganar)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


1 3 arreglo multidimensional

1.3 Arreglo Multidimensional.

  • Un arreglo multidimensional es una estructura de elementos homogeneos que tiene tres o mas (n) dimensiones.

  • El limite en el numero de dimensiones de un arreglo depende del lenguaje de programacion que se usa.

  • Cada dimension se especifica con un par de [].

  • Un arreglo de n dimensiones requiere de n índices para localizar a sus elementos

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

ventas

null

  • declaración de arreglos multidimensionales.

    // define un arreglo de tres dimensiones llamado ventas

    int [] [] [] ventas;

    // crea un arreglo de 3 paginas, 5 filas y 4 columnas

    Int [] [] [] ventas = new int [3] [5] [4];

ventas[0][1][2]

Pagina 0 Pagina 1 Pagina 2

0 1 2 3

0 1 2 3

0 1 2 3

0

1

2

3

4

0

1

2

3

4

0

1

2

3

4

ventas[2][4][3]

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Aplicaciones4

Aplicaciones

  • Representar las ventas de una compañia usando cada departamento de cada tienda de cada ciudad.

  • Representar el inventario de productos de cada almacen de cada ciudad de cada estado.

  • Representar el numero de estudiantes de cada carrera de cada facultad de cada universidad de cada ciudad de cada estado.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 m todos y mensajes

2. Métodos y mensajes.

2.1 Atributos const y static.

2.2 Concepto de método.

2.3 Declaración de métodos.

2.4 Llamadas a métodos (mensajes).

2.5 Tipos de métodos.

2.5.1 Métodos const, static.

2.5.2 Métodos normales y volátiles.

2.6 Referencia this.

2.7 Forma de pasar argumentos.

2.8 Devolver un valor desde un método.

2.9 Estructura del código.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Clases

Clases

  • Una clase contiene el código para la manipulacíon de objetos de esa clase. Constructores para crear objetos, variables para almacenar el estado de la clase y sus objetos y métodos que implementan el comportamiento de la clase y sus objetos.

  • La clase tiene dos partes:

    • Encabezado

    • Cuerpo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Encabezado de la clase

Encabezado de la clase

Modificadoresclass Identificador ExtiendeImplementa

Modificadores

public

private

protected

static

final

native

synchronized

abstract

threadsafe

Extiende

extends IdentificadorDeClase

Implementa

implements ListaDeInterfaces

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos de java tutorial

Ejemplos [de Java Tutorial]

publicclass Stack

public class Stack implements Cloneable

public class BINGO

class RingMaster implements States

public class Player extends JPanel implements ActionListener, ItemListener, BallListener

publicclass Object

public finalclass MathextendsObject

public class Vector<E>extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, Serializable

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Cuerpo de una clase

Cuerpo de una Clase

  • El cuerpo de la clase esta delimitado por { }

  • declaraciónes de Miembros

    • Variables (declaración e inicialización)

      • Variables de instancia

      • Variables de clase

    • métodos (declaración implementacion)

      • métodos de instancia

      • métodos de clase

  • declaración e implementacion de Constructores

  • Bloque de inicialización

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo1

punto1

punto3

punto2

Punto

x=2

y=1

void setx(int _x)

String toString ()

x=5

y=5

void setx(int _x)

String toString ()

totalPuntos = 0

Miembros de instancia

Miembros de clase

métodos de instancia

Ejemplo

public class Punto {

private int x=0;

private int y=0;

public static int totalPuntos =0;

Punto (int _x, int _y){

x=_x;

y=_y;

totalPuntos++;

}

public void setx(int _x){

x= _x;

}

public String toString (){

return “(”+x+”,”+y+”)”;

}

}

public class UsaPunto {

public static void main(String[] args){

Punto punto1= new Punto(2,1);

Punto punto2 = new Punto(5,5);

Punto punto3 = punto1;

Punto[] puntos = {punto1,punto2};

System.out.println(Arrays.toString(puntos));

System.out.println(“Puntos creados “+ Punto.totalPuntos);

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class Fruta {

String nombre;

int gramos;

int caloriasPorGramo;

Fruta (String n ){

nombre=n;

}

public void setPeso (int g ){

gramos=g;

}

public int getPeso ( ){

return gramos;

}

public void setCalorias(int c){

caloriasPorGramo =c;

}

public int getCalorias(){

return caloriasPorGramo;

}

public String toString (){

return nombre+" peso "+gramos+" gramos.";

}

}

Cuantos miembros tiene la clase Fruta?

Que clase de miembros son?

de instancia o de clase?

Cuantos métodos existen?

Escribe un programa que use la clase Fruta para crear varios objetos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 1 atributos const y static

2.1 Atributos const y static.

  • Un miembro estático (static) pertenece a la clase, no a las instancias de la clase (objetos)

  • Los miembros anotados como static se crean cuando se carga la clase y permanencen ahi hasta que la clase es descargada.

  • Los miembros estáticos se comparten (solo existe uno) entre todos los objetos de esa clase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Static variables de clase

static (variables de clase)

  • Las variables estaticas mantienen un solo valor que es accesado por todos los objetos de la clase.

  • Las variables de clase se usan cuando solo se requiere una copia del dato el cual es compartido por todos los objetos de esa clase y sus clases derivadas.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

class AnIntegerNamedX {

int x;

public int x() {

return x;

}

public void setX(int newX) {

x = newX;

}

}

class AnIntegerNamedX {

static int x;

public int x() {

return x;

}

public void setX(int newX) {

x = newX;

}

}

AnIntegerNamedX myX = new AnIntegerNamedX();

AnIntegerNamedX anotherX = new AnIntegerNamedX();

myX.setX(1);

anotherX.setX(2);

System.out.println("myX.x = " + myX.x());

System.out.println("anotherX.x = " + anotherX.x());

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Static m todos de clase

static (métodos de clase)

  • Un método declarado estático es un método de clase.

  • Los métodos estáticos solo pueden operar sobre variables de clase y NO pueden accesar las variables de instancia.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

class AnIntegerNamedX {

int x;

public staticint x() {

return x;

}

public staticvoid setX(int newX) {

x = newX;

}

}

static int x;

// ERROR de compilacion

AnIntegerNamedX.java:4: Can't make a static reference to

nonstatic variable x in class AnIntegerNamedX.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 2 concepto de m todo

2.2 Concepto de método.

  • Un método es una parte de código que se encarga de implementar parte del comportamiento de un objeto.

  • Un método tiene dos partes:

    • Encabezado

    • Cuerpo

  • Un método se invoca usando un objeto.

    objeto.método(parámetros)

  • Dentro del cuerpo de un método se pueden declarar variables locales.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 3 declaraci n de m todos

2.3 Declaración de métodos.

Modificadoresvoid Identificador (parámetros) ;

Modificadoresvoid Identificador (parámetros) Cuerpo

Modificadores tipo Identificador (parámetros) ;

Modificadores tipo Identificador (parámetros) Cuerpo

Modificadores

public

private

protected

package

static

final

native

synchronized

abstract

parámetros

tipo identificador , …tipo identificador

Cuerpo

{ estatutos }

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos3

Ejemplos

abstract class GraphicObject {

int x, y;

void moveTo(int newX, int newY) {

x = newX;

y = newY;

}

abstract void draw();

}

public boolean isEmpty() {

if (items.size() == 0)

return true;

else

return false;

}

double calculaPago(double prestamo, double tasa, double valorFuturo, int periodos) {

double I, partial1, denominator, answer;

I = rate / 100.0;

partial1 = Math.pow((1 + I), (0.0 - numPeriods));

denominator = (1 - partial1) / I;

answer = ((-1 * loanAmt) / denominator) - ((futureValue * partial1) / denominator);

return answer;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class OStack {

private Object[] store= new Object[10];

private int size= 0;

public void push (Object elem){

if (size >= store.length) {

Object[] tmp = new Object[size*2];

System.arraycopy(store,0,tmp,0,store.length);

store= tmp;

}

store[size++] = elem;

}

public Object pop(){

return store[--size];

}

public static void main (String [] args){

OStack x = new OStack();

x.push(new Integer(17));

Integer y = (Integer) x.pop();

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 4 llamadas a m todos mensajes

2.4 Llamadas a métodos (mensajes).

  • Los objetos pueden realizar operaciones para:

    • Manipular o inspeccionar sus variables

    • Ejecutar sus métodos.

  • Los objetos se comunican con otros objetos a traves de mensajes.

  • Un mensaje es una señal que recibe un objeto para ejecutar alguno de sus métodos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class UsaPunto {

public static void main(String[] args){

Punto punto1= new Punto(2,1);

Punto punto2 = new Punto(5,5);

punto1.setx(1);

String s= punto1.toString() + punto2.toString();

}

}

objeto.método()

objeto.método(parámetros)

OStack x = new OStack();

x.push(new Integer(17));

AnIntegerNamedX myX = new AnIntegerNamedX();

AnIntegerNamedX anotherX = new AnIntegerNamedX();

myX.setX(1);

anotherX.setX(2);

System.out.println("myX.x = " + myX.x());

System.out.println("anotherX.x = " + anotherX.x());

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 5 tipos de m todos

2.5 Tipos de métodos.

  • Abstractos - no tienen implementacion

  • Finales – No se pueden redefinir en las clases derivadas

  • estáticos – solo hay un método para todos los objetos.

  • Sobrecargados – varios métodos con el mismo nombre y diferentes parámetros.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


M todos finales

Métodos finales

  • Un método final es aquel que no se puede redefinir en sus clases descendientes

  • Los métodos finales se utilizan cuando se desea que no cambie la implementacion en las clases derivadas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 6 referencia this

2.6 Referencia this.

  • this es una variable especial que tiene un significado predefinido en el lenguaje Java.

  • Se utiliza para referirse a los miembros específicos del objeto en ejecución (selección dinámica de métodos)

  • Se usa para eliminar la ambigüedad cuando hay dos identificadores iguales

  • Se puede usar para invocar a otros constructores que cumplan con los parámetros usados.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos4

Llama al constructor

Elimina ambiguedad

Ejemplos

public class Fruta {

String nombre;

int gramos;

Fruta () {

this(“sin nombre”,10);

}

Fruta (String n, int g ){

nombre=n;

gramos = g;

}

public void setPeso (int g ){

gramos=g;

}

public int getPeso ( ){

return gramos;

}

}

class AnIntegerNamedX {

int x;

public int x() {

return x;

}

public void setX(int x) {

this.x = x;

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 7 forma de pasar argumentos

2.7 Forma de pasar argumentos.

  • parámetros

    • Formales – definidos en la declaración del método

    • Actuales – valores usados en la llamada al método

public static void setX(int newX) {

x = newX;

}

myX.setX(1);

anotherX.setX(2);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Pase de par metros

Pase de parámetros

  • El pase de parámetros en Java es unicamente por valor.

  • Los métodos pueden enviar como argumento

    • Datos Primitivos – los datos de tipo primitivo pasan su valor a los parámetros formales (los parámetros actuales no cambian despues de la ejecución del método)

    • Datos Referencia – los datos de tipo referencia (objetos) envian su direccion a los parámetros formales (los cambios en los parámetros formales afectan a los parámetros actuales)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Pase de datos primitivos

Los valores de r, g y b se asignan a

las variables red, green y blue

Pase de datos primitivos

class Pen {

int redValue, greenValue, blueValue;

void getRGBColor(int red, int green, int blue) {

redValue = red;

greenValue = green;

blueValue = blue;

}

}

Las variables red, green y blue

Pueden cambiar de valor

int r = -1, g = -1, b = -1;

pen.getRGBColor(r, g, b);

System.out.println("red = " + r + ", green = " + g + ", blue = " + b);

Los valores de r, g y b no cambian despues de la ejecución

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Pase de referencias

Pase de referencias

class Pen {

int redValue, greenValue, blueValue;

void getRGBColor(RGBColor aColor) {

aColor.red = redValue;

aColor.green = greenValue;

aColor.blue = blueValue;

}

}

class RGBColor {

public int red, green, blue;

}

RGBColor penColor = new RGBColor();

pen.getRGBColor(penColor);

System.out.println("red = " + penColor.red +

", green = " + penColor.green +

", blue = " + penColor.blue);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 8 devolver un valor desde un m todo

2.8 Devolver un valor desde un método.

  • Los métodos pueden regresar valores

    • Como resultado del método

    • En los argumentos (parámetros referencia)

void getRGBColor(RGBColor aColor) {

aColor.red = redValue;

aColor.green = greenValue;

aColor.blue = blueValue;

}

public int x() {

return x;

}

public Object pop() {

return store[--size];

}

public boolean isEmpty() {

return(items.size() == 0);

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


2 9 estructura del c digo

paquete

interface

interface

clase

clase

métodos

métodos

atributos

atributos

métodos

métodos

Variables locales

Variables locales

2.9 Estructura del código.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 constructor destructor

3. Constructor, destructor.

3.1 Conceptos de constructor ydestructor.

3.2 Declaración de constructor ydestructor.

3.3 Aplicaciones de constructores ydestructores.

3.4 Tipos de constructores y destructores.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 1 conceptos de constructor y destructor

3.1 Conceptos de constructor ydestructor.

  • Los constructores son métodos especiales que se invocan para crear (inicializar) nuevos ejemplares de una clase, a este proceso se le conoce como instanciacion.

  • Los constructores usan el mismo nombre de la clase

  • Java soporta la sobrecarga de constructores. Pueden existir varios constructores para una clase, estos se distinguen por los parámetros que contienen.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo2

// usando la clase Punto para crear objetos

public static void main(String[] args){

Punto p1 = new Punto();

System.out.println(p1);

Punto p2 = new Punto(2,3);

System.out.println(p2);

Punto p3 = new Punto(p1);

System.out.println(p3);

}

public class Punto {

private int x=0;

private int y=0;

public static int totalPuntos =0;

Punto (){

totalPuntos++;

}

Punto (int _x, int _y){

x=_x;

y=_y;

totalPuntos++;

}

Punto (Punto p){

this.x = p.x;

this.y = p.y;

totalPuntos++;

}

public void setx(int _x){

x= _x;

}

public String toString (){

return “(”+x+”,”+y+”)”;

}

}

Ejemplo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • La clase Punto tiene los siguientes métodos constructores

    • Punto () – crea un objeto con los valores definidos en la declaración

    • Punto(x:int, y:int) - inicializa las coordenadas del punto con los valores x,y

    • Punto(Punto p) - inicializa las coordenadas del punto con los valores de las coordenadas del punto p

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • En el momento de crear un ejemplar, se puede usar cualquiera de los constructores disponibles

  • El entorno descubre cual es el que se desea llamar por medio del número y tipo de los argumentos

Punto p1 = new Punto(); //llamada sin parámetros

Punto p2 = new Punto(p1); //llamada con un parámetro de tipo Punto

Punto p3 = new Punto(2,5); //llamada con dos parámetros enteros

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo 2

Cuantos constructores tiene la clase Fruta?

Que hace el constructor que no tiene parámetros?

Como se pueden crear ejemplares de Fruta?

Ejemplo 2

public class Fruta {

String nombre;

int gramos;

Fruta () {

this(“sin nombre”,10);

}

Fruta (String n, int g ){

nombre=n;

gramos = g

}

public void setPeso (int g ){

gramos=g;

}

public int getPeso ( ){

return gramos;

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

DestructoresDisponibles en lenguajes o entornos en los que el responsable de devolver la memoria es el programador

  • Un destructor es un método que se invoca inmediatamente antes de que se libere la memoria donde se almacena un objeto

    • Los destructores realizan todas las tareas que se desean realizar sobre un objeto antes de destruirlo, pero no realizan esta destrucción

    • La destrucción se realiza por medio de funciones del sistema como dispose() en Pascal

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Recolecci n de basura

Recolección de basura

  • La basura son pedazos de memoria que ya no seran utilizados por el programa.

  • La recolección de basura es realizada por el sistema periódicamente

  • Esta es una operación de alto costo (consume tiempo de ejecución)

  • La utilización de funciones de devolución de memoria obliga a trabajar con cuidado para no intentar acceder posteriormente a zonas de memoria que ya no estan disponibles

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Recolecci n de basura1

Recolección de basura

  • Existen entornos o lenguajes de POO en los que el sistema se encarga de devolver la memoria que no está siendo utilizada (Java)

  • Este proceso se denomina recolección de basura (garbage collection), y consiste en

    • Recorrer todas las referencias del programa marcando todas las zonas de memoria que permanecen accesibles

    • Recorrer toda la memoria devolviendo al sistema aquellas zonas que no están marcadas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 2 declaraci n de constructor es

3.2 Declaración de constructores.

  • Constructor default. Java provee automaticamente un constructor cuando el programador no declara explcitamente al menos uno. Este constructor no contiene parámetros formales y cuando es invocado, las variables de instancia asumen los valores definidos en su declaración o sus valores default.

    • Campos numericos = 0 Campos boolean = false

    • Campos char = Unicode 0Campos referencia = null

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 2 declaraci n de constructor es1

3.2 Declaración de constructores.

  • Constructor explictamente declarado. Son constructores definidos por el programador para efectuar el proceso de inicialización de variables de instrancia en la creación de objetos.

  • Los constructores se definen con el mismo nombre de la clase

    ModificadoresNombreClase (parámetros) ClausulasThrows Cuerpo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Una clase puede contener diversos constructores.

  • Cuando un constructor invoca a otro usando this, esta llamada debe ser la primera instruccion del cuerpo del constructor.

  • Los constructres solo pueden invocarse para construir objetos.

  • Los constructores NO son considerados miembros de la clase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Creaci n de objetos con constructores

creación de objetos con constructores

  • Se obtiene espacio de memoria.

  • Se limpia la memoria (valores default)

  • Se puede llamara a otro constructor en la misma clase.

  • Se llama al constructor de la clase padre ya sea implicitamente o explicitamente usando super.

  • Los campos inicializados explicitamente con una asignacion se ejecutan.

  • Se ejecuta el resto de las instrucciones del cuerpo del constructor.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 3 aplicaciones de constructores

3.3 Aplicaciones de constructores.

  • Define los atributos y constructores para las clases de cada uno de los siguientes elementos:

    • Alumnos

    • Profesores

    • Tecnologicos

    • Rectangulos

    • Proveedores

    • Mascotas

    • Libros

Solo define el encabezado de los métodos, no su implementacion.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 4 tipos de constructores

3.4 Tipos de constructores.

  • Privados (private).

    • Ninguna otra clase puede crear instancias usando este constructor.

    • Algunos métodos de la clase, pueden usar el constructor para crear instancias de la clase y regresarlas como resultado. Estos métodos se les llama fabricas (factory method)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 4 tipos de constructores1

3.4 Tipos de constructores.

  • Protegidos (protected).

    • Solo clases derivadas y clases en el mismo pakete pueden crear instancias usando estos constructores.

  • Paquete (package o no especificado).

    • Solo las clases dentro del mismo paquete pueden crear instancias usando este constructor.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


3 4 tipos de constructores2

3.4 Tipos de constructores.

class AnimationThread extends Thread {

int framesPerSecond;

int numImages;

Image[] images;

AnimationThread(int fps, int num) {

super("AnimationThread"); // llama al constructor de la superclase

this.framesPerSecond = fps; // inicializa las var. de instancia

this.numImages = num;

this.images = new Image[numImages];

for (int i = 0; i <= numImages; i++) {

. . . // Load all the images. . . .

}

}

. . .

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


4 sobrecarga

4. Sobrecarga.

4.1 Conversión de tipos.

4.2 Sobrecarga de métodos.

4.3 Sobrecarga de operadores.

Ejemplos

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


4 1 conversi n de tipos

4.1 Conversión de tipos.

  • Existen dos formas de convertir tipos de datos a otros tipos.

    • Implícita.

    • Explícita.

  • A esta operación de conversión se le conoce como coerción.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Conversion de tipos

Conversion de tipos

  • Se pueden sumar un dato entero (int) y un real (float)?

    5 + 3.14

  • Se pueden concatenar datos String con enteros?

    “Resultado” + total

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Para realizar las operaciones es necesario hacer una conversion de datos a un solo tipo.

    • Implícita. La conversión implícita es realizada por el compilador automáticamente para efectuar algunas operaciones. Ej. La concatenación de elementos en un println.

    • Explícita. La conversión explícita es especificada por el programador para convertir un dato a otro tipo específico. Ej. Usando operaciones de cast.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Conversiones

Conversiones

  • Los datos primitivos pueden convertirse en dos formas:

    • Ampliando el dato (Widening) Es una operación segura porque no pierde información (una conversión de punto flotante puede perder precisión)

    • Reduciendo el dato (Narrowing) Es una operación insegura porque va de un tipo a otro que usa menos espacio de memoria para su representación.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Conversiones permitidas en java widening

Conversiones permitidas en Java (Widening)

De A

byte short, int, long, float, double

short int, long, float, double

char int, long, float, double

int long, float, double

long float, double

float double

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Conversiones permitidas en Java (Narrowing)

De A

byte char

short byte, char

char byte, short

int byte, short, char

long byte, short, char, int

float byte, short, char, int, long

double byte, short, char, int, long, float

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Cual es el tipo de dato primitivo que no aparece en las conversiones?

  • Los datos de tipo boolean NO se pueden convertir de ninguna forma.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Formas de realizar conversiones

Formas de realizar conversiones

  • En una asignacion.

    float dinero;

    int pesos;

    dinero = pesos; // ok! Se convierte automáticamente

    pesos = dinero; // ERROR!!

  • Una promoción aritmética

    perimetro = 5 * 3.14; // conversión antes de la multiplicación

  • Una operacion de cast

    pesos = (int) dinero; // ok! Se convierte antes de la asignación

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


4 2 sobrecarga de m todos

4.2 Sobrecarga de métodos.

  • El polimorfismo es una de las principales características de los Lenguajes de Programación Orientados a Objetos.

  • El polimorfismo se divide en:

    • Ad hoc

      • Sobrecarga

      • Coerción

    • Universal

      • Paramétrico

      • Inclusión (subtipos)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


4 2 sobrecarga de m todos1

4.2 Sobrecarga de métodos.

  • Sobrecarga significa usar un identificador para referirse a múltiples elementos en el mismo ámbito.

  • Java permite al programador sobrecargar métodos y constructores pero no variables u operadores.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo el m todo println

Ejemplo: el método println

println (String s)

println (int i)

println (double d)

println (char c)

println (boolean b)

println (String s)

System.out.println(“Numero total de estudiantes “);

System.out.println(totalEstudiantes);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class DataTypePrintTest {

public static void main(String[] args) {

Thread objectData = new Thread();

String stringData = "Java Mania";

char[] charArrayData = { 'a', 'b', 'c' };

int integerData = 4;

long longData = Long.MIN_VALUE;

float floatData = Float.MAX_VALUE;

double doubleData = Math.PI;

boolean booleanData = true;

System.out.println(objectData); System.out.println(stringData); System.out.println(charArrayData); System.out.println(integerData); System.out.println(longData); System.out.println(floatData); System.out.println(doubleData); System.out.println(booleanData);

}

}

Salida

Thread[Thread-4,5,main]

Java Mania

abc

4

-9223372036854775808

3.40282e+38

3.14159

true

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


4 3 sobrecarga de operadores

4.3 Sobrecarga de operadores.

  • Java provee implícitamente la sobrecarga de operadores pero NO permite que el programador defina explícitamente la sobrecarga de ellos.

  • Algunos otros lenguajes como C++ y Ada OO, permiten la sobrecarga de los operadores.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Operadores sobrecargados

Operator

Uso

Descripcion

+

op1 + op2

Sumaop1y op2; tambien se usa para concatenar Strings

-

op1 - op2

Resta op2 de op1

*

op1 * op2

Multiplicaop1y op2

/

op1 / op2

Divide op1y op2

Operadores sobrecargados

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Sobrecarga

Sobrecarga

  • Los métodos sobrecargados tienen firmas distintas.

  • Cuando existen métodos sobrecargados, las llamadas se resuelven en tiempo de compilación.

  • El compilador usa la firma del método para identificar el código que se ejecutará.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo usando cast

public class Point {

private int x = 0;

private int y = 0;

public static int totalPuntos = 0;

// a constructor

public Point (){

totalPuntos++;

}

public Point(int x, int y) {

this.x = x;

this.y = y;

totalPuntos++;

}

public Point(Point p) {

this.x = p.x;

this.y = p.y;

totalPuntos++;

}

public void setx(int _x){

x= _x;

}

public Point medio (Point p){

return new Point((p.x+x)/2, (p.y+y)/2);

}

public String toString (){

return "("+x+","+y+")";

}

}

import java.util.Vector;

public class UsaPoint {

public static void main(String[] args){

Vector puntos = new Vector();

Point origen = new Point(0,0);

Point p=null;;

for (int i =0; i<5; i++){

p= new Point(i,i+1);

puntos.addElement(p);

}

System.out.println("Punto1\t Punto2\t Punto medio");

for (int i=0; i<5; i++){

p=(Point)puntos.elementAt(i);

System.out.println(origen+"\t"+p+"\t"+p.medio(origen));

}

}

}

Ejemplo: Usando cast

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo usando par metro de tipo

public class Point {

private int x = 0;

private int y = 0;

public static int totalPuntos = 0;

// a constructor

public Point (){

totalPuntos++;

}

public Point(int x, int y) {

this.x = x;

this.y = y;

totalPuntos++;

}

public Point(Point p) {

this.x = p.x;

this.y = p.y;

totalPuntos++;

}

public void setx(int _x){

x= _x;

}

public Point medio (Point p){

return new Point((p.x+x)/2, (p.y+y)/2);

}

public String toString (){

return "("+x+","+y+")";

}

}

import java.util.Vector;

public class UsaPointParmetrizado {

public static void main(String[] args){

Vector<Point> puntos = new Vector<Point>();

Point origen = new Point(0,0);

Point p=null;;

for (int i =0; i<5; i++){

p= new Point(i,i+1);

puntos.addElement(p);

}

System.out.println("Punto1\t Punto2\t Punto medio");

for (int i=0; i<5; i++){

p=puntos.elementAt(i);

System.out.println(origen+"\t"+p+"\t"+p.medio(origen));

}

}

}

Ejemplo: Usando parámetro de tipo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejercicios

Ejercicios

  • Investigar en la clase Math cuales métodos están sobrecargados.

  • Describe dos situaciones distintas en las que una clase requiere de un método sobrecargado.

  • Agrega a la clase Point dos métodos llamados move

    • Parámetros (Point) movimiento absoluto

    • Parámetros (int, int) movimiento relativo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 herencia

5. Herencia.

5.1 Introducción a la herencia.

5.2 Herencia simple.

5.3 Herencia múltiple.

5.4 Clase base y clase derivada.

5.4.1 Definición.

5.4.2 Declaración.

5.5 Parte protegida.

5.5.1 Propósito de la parte protegida.

5.6 Redefinición de los miembros de lasclases derivadas.

5.7 Clases virtuales y visibilidad.

5.8 Constructores y destructores en clasesderivadas.

5.9 Aplicaciones.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Que es herencia

Que es herencia?

  • Herencia*. Derecho a heredar.

  • Heredar*. Recibir los bienes, derechos y acciones de una persona.

* Diccionario Pequeno Larousse Ilustrado, Ed. Larousse 2003.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 1 introducci n a la herencia

5.1 Introducción a la Herencia.

  • Herencia es el acto de derivar una nueva clase de una ya existente.

  • La herencia es una tecnica fundamental para organizar y crear clases.

  • Incrementa la reutilizacion de código al desarrollar nuevos programas.

  • Se pueden crear referencias polimorficas a partir de una jerarquia de clases definida con herencia.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Herencia

Reutilizacion de software

Organizacion jerarquica

Superclase (clase padre)

Subclase (clase derivada)

ejecución dinamica a traves de mensajes

Acceso protegido para especializadores

Sobreescritura (especializacion de comportamiento)

Herencia

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Tipos de herencia

Tipos de Herencia

  • Herencia Simple o Multiple

    Define el numero de clases/interfaces padre

    • Simple. Una sola clase/interface padre

    • Multiple. Mas de una clase/interface padre

  • Herencia de implementacion o de Interface

    • Implementacion. Hereda comportamiento

    • Interface. Hereda solo la estructura

  • Herencia Mixin

    Crea nuevas clases mezclando una clase con otra clase especial

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 2 herencia simple

Object

Point

D3Point

ColorPoint

5.2 Herencia simple.

  • Solo existe una clase padre.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 3 herencia m ltiple

Object

Point

Color

ColorPoint

5.3 Herencia múltiple.

  • Existen muchas clases padre.

La herencia Multiple de

Implementacion puede generar el

“Problema Diamante”

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo problema diamante

class link { … }

class task : public link {

virtual debug* get_d ();

}

class job : public link {

virtual debug* get_d ();

}

class myClass : public task, public job{ …. }

debug* d = s-> get_d(); // error! ambiguous method invocation

debug* e = s -> job::get_d(); // explicit delegation using class job

debug* f = s -> task::get_d();// explicit delegation using class task

Ejemplo Problema diamante

código en C++

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Herencia mixin

// mixin definition

mixin Undo {

inherited String getText( ); //must be in the class to be mixed

inherited void setText(String s); //must be in the class to be mixed

String lastText;

void setText(String s) {

lastText = getText( );

super.setText(s);

}

void undo( ) { setText(lastText); }

}

class Textbox extends Component { // a class with getText and setText

String text;

String getText( ) { … }

void setText(String s) { … }

}

class TextboxWithUndo = Undo extends Textbox { } // new class

Herencia Mixin

mixin

Clase 1

nueva class

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Herencia en java

Herencia en Java

La herencia ocurre cuando una clase adopta y/o adapta las estructuras y métodos de una clase base (clase padre) e implementa los métodos de una o mas interfaces.

  • Herencia Simple de Implementacion

    • Una clase solo puede tener una clase padre

  • Herencia Multiple de Interfaces

    • Una clase puede tener muchas interfaces padre

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Object es la clase mas general.

  • La clase Object definida en el paquete java.lang define e implementa el comportamiento que todas las clases requieren.

  • Las clases se derivan de Object o de otras clases lo que forma una jerarquia de clases.

  • Las clases de los niveles bajos de la jerarquia definen un comportamiento mas especializado.

  • Una subclase se deriva de otra clase.

  • La superclase es la clase que es el ancestro directo de otra clase.

  • Cada clase tiene solo una superclase inmediata.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 4 clase base y clase derivada

5.4 Clase base y clase derivada.

  • Clase base. Es aquella que se usa para definir una nueva clase (usando la parte extends del encabezado de definicion de clase).

  • Clase derivada. Es la clase que agrega y/o especializa elementos a una clase base.

    La clase derivada hereda a todos los miembros definidos en la clase base y puede usar directamente todos aquellos que tiene acceso public o protected. Los constructores NO son miembros, por lo tanto no se heredan.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo3

Ejemplo

package java.awt;

public class Window ….{

public Window(Frame owner) {

}

}

(superclase de WarningWindow)

Clase base

public class WarningWindow extends java.awt.Window{

}

Clase derivada

(subclase de Window)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo4

Ejemplo

Clase base

Clases derivadas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo5

Persona

Alumno

Profesor

Secretaria

Ejemplo

  • Usando la sintaxis de Java

  • Definir las clases:

    • Persona

    • Alumno

    • Profesor

    • Secretaria

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Cuantas diferentes jerarquias se pueden crear

Cuantas diferentes jerarquias se pueden crear?

Animal

Animal

Herbivoro

Carnivoro

Domestico

Salvaje

Corral

Animal

Reptil

Ave

Mamifero

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class Point {

private int x = 0;

private int y = 0;

public static int totalPuntos = 0;

// a constructor

public Point (){

totalPuntos++;

}

public Point(int x, int y) {

}

public Point(Point p) {

}

public void setx(int _x){

x= _x;

}

public Point medio (Point p){

return new Point((p.x+x)/2, (p.y+y)/2);

}

public String toString (){

return "("+x+","+y+")";

}

}

public class ColorPoint extends Point {

private String color = "rojo";

public void setColor (String c){

color = c;

}

public String getColor(){

return color;

}

public String toString(){

return super.toString()+","+color;

}

public static void main(String[] args){

ColorPoint c1 = new ColorPoint();

System.out.println(c1);

c1.setx(5); // heredado

c1.setColor("blanco");

System.out.println(c1);

Point p1 = new ColorPoint();

p1.move(2,3);

System.out.println(p1);

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class Persona {

String nombre;

Calendar fechaNacimiento;

public Persona(String n){

nombre = n;

}

public String toString(){

return nombre;

}

}

Agrega a la clase Alumno los elementos necesarios para su funcionamiento

public class Alumno extends Persona{

// atributos

// métodos nuevos

// métodos sobreescritos

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 5 parte protegida

5.5 Parte protegida.

  • Los miembros o constructores protegidos pueden ser accesados desde fuera del paquete en el cual se declararon solo por el código que es responsable de la implementacion del objeto que realiza el acceso.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo6

Ejemplo

http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html

package otroPaquete;

public class Hijo extends Padre {

public boolean equal(Hijo p){

return a == p.a; // Ok!

}

public int getIt(Padre p){

return p.a; // ERROR

// p debe ser Hijo o subclase de Hijo

}

}

package algunPaquete;

public class Padre {

protected int a;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo7

Ejemplo

http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#62587

package threePoint;

import points.Point;

public class Point3d extends Point {

protected int z;

public void delta(Point p) {

p.x += this.x; // compile-time error: cannot access p.x

p.y += this.y; // compile-time error: cannot access p.y

}

public void delta3d(Point3d q) {

q.x += this.x;

q.y += this.y;

q.z += this.z;

}

}

package points;

public class Point {

protected int x, y;

public void move(int dx, int dy) {

x += dx;

y += dy;

}

}

Cuando la clase Point3D se coloca en el mismo paquete que la clase Point no existen errores de compilacion

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 6 redefinici n de los miembros de las clases derivadas

5.6 Redefinición de los miembros de lasclases derivadas.

  • La redefinicion de un método se da cuando una subclase contiene un método con la misma firma(mismo nombre y numero, tipo y orden de los parámetros) que la clase base.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class MyClass {

private int anInt = 4;

//Overrides toString in Object class.

public String toString() {

return "Instance of MyClass. anInt = " + anInt;

}

//Overloads toString method name to provide

//additional functionality.

public String toString(String prefix) {

return prefix + ": " + toString();

}

}

public class MyClass {

private int anInt = 4;

//Overrides toString in Object class.

public String toString() {

return "Instance of MyClass. anInt = " + anInt;

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public class Animal {

public static void hide() {

System.out.println("The hide method in Animal.");

}

public void override() {

System.out.println("The override method in Animal.");

}

}

public class Cat extends Animal {

public static void hide() {

System.out.println("The hide method in Cat.");

}

public void override() {

System.out.println("The override method in Cat.");

}

public static void main(String[] args) {

Cat myCat = new Cat();

Animal myAnimal = (Animal)myCat;

myAnimal.hide();

myAnimal.override();

}

}

//The output from this program is as follows:

The hide method in Animal.

The override method in Cat.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 7 clases virtuales y visibilidad

5.7 Clases virtuales y visibilidad.

  • Java no contiene clases virtuales.

  • Visibilidad, se aplica solamente a las variables de instancia y determina si la variable puede utilizarse fuera de la clase en la cual es declarada. Se establece mediante un modificador de acceso.

  • Los modificadores de acceso son:

    • Public

    • Private

    • Protected

    • Package

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Especificadores de acceso

Especificadores de acceso

  • public: Cualquier clase en cualquier paquete, tiene acceso a los miembros públicos.

  • private: Un miembro privado es accesible solo en la clase donde fue definido.Usa este tipo de especificador para miembros que solo deben ser utilizados por la clase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo private

Ejemplo private:

class Alpha { private int iamprivate;

public int iampublic;}

class Beta { void accessMethod() { Alpha a = new Alpha(); a.iamprivate = 10; // illegal a.iampublic; // legal } }

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Especificadores de acceso1

Especificadores de acceso

  • protected: Los miembros protected solo pueden ser accesados por la clase, subclases y todas las clases del mismo paquete.

  • Usa los miembros protegidos cuando deseas que los miembros sean usados por subclases, pero no clases no relacionadas.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

package A;

public class Example{

public int i;

int j; //package

protected int k;

private int l;

package A;

public class Foo{

int x;

void bar()

{

Example e=new Example();

x=e.i;

x= e.j;

x=e.k;

x=e.l; }

}

X

Que pasa si cambiamos de paquete a la clase Example?

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Especificadores de acceso2

Especificadores de acceso

  • Si no se define ningún especificador de acceso, “package” es el que se establece.

  • En este nivel se permite a todas las clases del mismo paquete de la clase actual, acceder a sus miembros.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

package B;

import A.*;

public class Foo{

int x;

void bar()

{

Example e=new Example();

x=e.i;

x= e.j;

x=e.k;

x=e.l; }

}

package A;

public class Example{

public int i;

int j; //package

protected int k;

private int l;

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

package B;

import A.Example;

public class Foo extends A.Example{

int x;

void bar()

{

Example e=new Example();

x=e.i;

x= e.j;

x=e.k;

x=e.l; }

x=this.k; //ok

}

package A;

public class Example{

public int i;

int j; //package

protected int k;

private int l;

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Package y protected

Package y Protected

  • Podemos referenciar nuestra propia variable protected (variable k) que se heredo de la clase Example, es por eso que se permite: x=this.k;

  • Pero no se puede referenciar las variables “protected” del objeto padre de manera directa, solo se puede hacer esto a travez de la herencia.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Resumen de Modificadores de acceso

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 8 constructores y destructores en clases derivadas

5.8 Constructores y destructores en clasesderivadas.

  • Java no tiene destructores explícitos.

  • Los constructores deben tener el mismo nombre de la clase.

  • No es obligatorio definir un constructor para la clase. Si no se hace, el Java runtime system provee uno por “default”, el cual crea la instancia de la clase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Caracter sticas de los constructores

Características de los Constructores

  • No tienen valores de retorno

  • Una clase puede tener varios constructores sobrecargados, los cuales permiten a los objetos de esa misma clase inicializarse de distinta manera.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 8 constructores y destructores en clases derivadas1

5.8 Constructores y destructores en clasesderivadas.

  • Java no tiene destructores explicitos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


5 9 aplicaciones

5.9 Aplicaciones.

  • Definir una clase base

  • Definir una subclase

    • Constructores

      • Llame a super

      • No llame a super

    • Sobreescritura

    • Sobrecarga

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 polimorfismo y reutilizaci n

6. Polimorfismo y reutilización.

6.1 Concepto del polimorfismo.

6.2 Clases abstractas.

6.2.1 Definición.

6.2.2 Redefinición.

6.3 Definición de una interfaz.

6.4 Implementación de la definición deuna interfaz.

6.5 Reutilización de la definición de unainterfaz.

6.6 Definición y creación de paquetes /librería.

6.7 Reutilización de las clases de unpaquete / librería.

6.8 Clases genéricas (Plantillas).

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 1 concepto del polimorfismo

6.1 Concepto del polimorfismo.

  • Polimorfismo: propiedad de un cuerpo que puede cambiar su morfologia sin cambiar su naturaleza.*

  • El polimorfismo de subtipos es una caracteristica fundamental de los LPOO.

  • Categorias de polimorfismo:

    • Ad hoc (coercion y sobrecarga)

    • Universal (subtipos y parametrico)

* Diccionario Pequeno Larousse Ilustrado, Ed. Larousse 2003.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo de polimorfismo

public class OStack {

private int top=0;

private int size;

private Object[] store= new Object[size];

public OStack (){ this(10); }

public OStack (int s){ size = s; }

public void push (Object elem) {

if (top >= store.length) {

//size = store.length;

Object[] tmp = new Object[store.length+size];

System.arraycopy(store,0,tmp,0,store.length);

store= tmp;

}

store[top++] = elem;

}

public Object pop() {

return store[--size];

}

public String toString(){

String s = new String(" Resultado ");

for (int i=0; i<store.length; i++)

s = s + store[i];

return s;

}

public static void main (String [] args) {

OStack x = new OStack();

Object o = new OStack(15);

((OStack)o).push(new Integer(3));

x.push(new Integer(17));

x.push(new Integer(20));

System.out.println(o);

System.out.println(x);

}

}

Ejemplo de polimorfismo

// sobrecarga de constructores

// casting

// subtipo/inclusion

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Redefiniendo m todos sobrescritura

Redefiniendo métodos (sobrescritura)

  • Es la habilidad de una subclase de redefinir el método de una superclase cuyo comportamiento es “muy parecido”, pero diferente, en la subclase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo de redefinici n de m todo

Ejemplo de redefinición de método

  • public class Stack { private Vector items; // code for Stack's methods and constructor not shown// overrides Object's toString method public String toString() { int n = items.size(); StringBuffer result = new StringBuffer(); result.append("["); for (int i = 0; i < n; i++) { result.append(items.elementAt(i).toString()); if (i < n-1) result.append(","); } result.append("]"); return result.toString(); } }

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Propiedades a considerar al momento de la redefinici n

Propiedades a considerar al momento de la redefinición

  • El tipo de retorno, nombre del método, número, tipo y orden de los parámetros para el método redefinido debe ser igual que para el método original.

  • El método redefinido puede tener una claúsula throws igual que el original.

  • El método redefinido puede tener mayor acceso que el método redefiniendo, pero no menos. Ej.- Un método protected en la superclase puede hacerse public, pero no private.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Llamando al m todo redefinido de la superclase

Llamando al método redefinido de la superclase

  • super.overriddenMethodName();

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Qu m todos no se puede redefinir

¿Qué métodos no se puede redefinir?

  • Un método definido como final en la superclase, no se puede redefinir.

  • Tampoco se puede redefinir los métodos static (métodos de clase).

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Descendientes de la clase object

Descendientes de la clase Object

  • Como la clase Object es superclase de todas las clases. Ésta define el estado y comportamiento básico que todo objeto debería tener:

    • Habilidad para compararse.

    • Habilidad para convertirse en String.

    • Habilidad para regresar la clase del objeto.Entre otras …

  • Todas estas habilidades se implementan redefiniendo algunos métodos de la clase Object.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


M todos que se pueden o no redefinir

Métodos que se pueden o no redefinir

  • Se pueden redefinir:

    • clone

    • equals (usado para comparar objetos)

    • finalize (se invoca cuando el objeto se destruye, no se recomienda redefinir).

    • toString (representación como String del objeto).

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


El m todo equals

El método equals

  • Se utiliza para comparar dos objetos.

  • La clase debe sobreescribir este método para comparar los atributos de los objetos

  • Para realizar una comparacion se invoca al método:

    • unObjetos.equals(otroObjeto);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo equals

Ejemplo equals

public class Point {

private int x = 0;

private int y = 0;

public static int totalPuntos = 0;

// a constructor

public Point (){

totalPuntos++;

}

public Point(int x, int y) {… }

public Point(Point p) {… }

public void setx(int _x){

x= _x;

}

public boolean equals(Object o){

Point p = (Point) o;

return ((x==p.x) && (y==p.y));

}

public Point medio (Point p){

return new Point((p.x+x)/2, (p.y+y)/2);

}

public String toString (){

return "("+x+","+y+")";

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo equals1

Ejemplo equals

public class ColorPoint extends Point {

private String color = "rojo";

public void setColor (String c){

color = c;

}

public String getColor(){

return color;

}

public String toString(){

return super.toString()+","+color;

}

// redefinicion del método equals

}

// Resultado de

Point p0 = new Point();

ColorPoint cp = new ColorPoint();

p0.equals(p0);

p0.equals(cp);

cp.equals(p0);

cp.equals(cp);

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 2 clases abstractas

6.2 Clases abstractas.

  • Una clase abstracta es una definicion parcial (incompleta) de un grupo de elementos.

  • Una clase abstracta contiene métodos abstractos (no estan implementados).

  • Las clases abstractas se usan para definir jerarquias de clases (herencia) que contienen comportamiento y estructura.

  • La definicion de clases abstractas forza la redefinicion (sobreescritura) de métodos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Clases abstractas

Clases abstractas

  • La palabra reservada abstract aparece en el encabezado de la definicion de la clase cuando esta contiene cero o mas métodos abstractos.

  • Una clase abstracta se usa cuando:

    • Habra varias subclases

    • Se desea manejar a todas las diferentes subclases como instancias de la superclase

    • La superclase por si misma no tiene sentido como un objeto.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo8

Ejemplo

// con algunos identificadores cambiados

public abstract class Component {

public abstract void DrawMeOnScreen();

}

public class Button extends Component {

public void DrawMeOnScreen(){

// implementacion

}

}

public class ScrollBar extends Component {

public void DrawMeOnScreen(){

// implementacion

}

}

Es posible crear instancias de las clases Button o ScrollBar pero NO de Component.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Jerarqu a de clases

Empleado

Empleado

Asalariado

Empleado por

Comisión

Empleado por

Horas

Empleado Base Más Comisión

Jerarquía de clases

Observaciones:

¨Existe un método ingresos que se aplica genéricamente a todos los empleados.

¨El cálculo de los ingresos de cada empleado depende de su clase.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

public abstract class Employee

{

private String firstName;

private String lastName;

private String socialSecurityNumber;

  // constructores

// métodos comunes a todos los trabajadores

// método abstracto sobreescrito por las subclases

public abstract double ingresos(); // no hay implementacion aqui

}

public class SalariedEmployee extends Employee

{

private double weeklySalary;

// calcula ingresos; sobreescribe el método abstracto ingresosen Employee

public double ingresos()

{

return getWeeklySalary();

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 3 definici n de una interfa ce

6.3 Definición de una interface.*

  • Una interface es un dispositivo o sistema que dos entidades usan para interactuar entre ellas.

    interface

    Palabra clave del lenguaje Java(TM) usada para definir una coleccion de métodos y valores constantes. Esta puede ser implementada posteriormente por clases que usando la palabra clave implements.

* De Java Tutorial

http://java.sun.com/docs/books/tutorial/java/concepts/interface.html

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Una interface es una coleccion de constantes y métodos sin implementacion.

  • Una interface se usa para definir la estructura de un grupo de elementos.

  • Los identificadores de interfaces pueden usarse como tipos para referenciar variables.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Definici n de una interfa ce

Definición de una interface.

  • Una interface se define en dos partes:

    • Encabezado

    • Bloque

ModificadorAcceso interface Identificador Superinterfaces

extends ListaDeInterfaces

{

//constantes

//métodos

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Interfaces

Interfaces

  • Una interface establece una garantia de los servicios que un objeto proporciona.

  • Las interfaces permiten efectuar llamadas polimorficas donde el método que se invoca se selecciona del objeto actual que se encuentra en ejecución.

  • Las interfaces permiten que multiples clases compartan datos definidos en una localidad.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Interfaces1

Interfaces

  • Una interface se usa para definir un protocolo de comportamiento que puede ser implementado por culaquier clase de la jerarquia cuando:

    • Se requiere un identificador comun para un parámetro de un método.

    • Deseas compilar tu código sin tener una implementacion del objeto particular.

    • Se requiere especificar la firma exacta de los métodos que deben proveerse por todas las clases que implementen la interface.

    • Capturar similaridades entre clases no relacionadas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Interfaces y clases abstractas

Interfaces y Clases Abstractas

  • Las interfaces y las clases abstractas se usan como mecanismos para definir jerarquias (de clases) mas finas.

  • Una clase puede heredar la estructura de muchas interfaces.

  • Java cuenta con un conjunto de clases abstractas e interfaces dentro de sus APIs

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Interfaces y clases abstractas1

No contiene métodos implementados

No forma parte de la jerarquia de clases

Puede extender muchas interfaces

Los métodos definidos en una interface son implicitamente abstractos

Puede contener métodos implementados

Es parte de la jerarquia de clases

Puede extender solo una superclase

Los métodos abstractos deben ser explicitamente definidos

Interfaces y Clases Abstractas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 4 implementaci n de la definici n de una interfa ce

6.4 Implementación de la definición deuna interface.

public interface StockWatcher {

void valueChanged(TickerSymbol tickerSymbol, BigDecimal newValue);

}

public class StockApplet extends Applet implements StockWatcher {

public void valueChanged(TickerSymbol tickerSymbol, BigDecimal newValue) {

switch (tickerSymbol) {

case SUNW: ... break;

case ORCL: ... break;

case CSCO: ... break;

default: // handle unknown stocks ... break;

}

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Interfaces como tipos

Interfaces como tipos

El identificador de la interface define el tipo del parámetro.

Cualquier objeto de una clase que implemente StockWatcher puede ser usado como parámetro actual

public class StockMonitor {

public void watchStock(StockWatcher watcher,

TickerSymbol tickerSymbol, BigDecimal delta) {

...

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 5 reutilizaci n de la definici n de una interfa ce

6.5 Reutilización de la definición de unainterface

  • Las interfaces no pueden crecer (modificar la interface para agregarle mas métodos). Esto provocaria errores (inconsistencias) en las clases que actualmente implementan la interface.

  • Una interface puede extender a otra interface para agregarle nuevos métodos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

//NO actualizar la interface en esta forma!!

public interface StockWatcher {

void valueChanged(TickerSymbol tickerSymbol, BigDecimal newValue);

void currentValue(TickerSymbol tickerSymbol, BigDecimal newValue);

}

public interface StockTracker extends StockWatcher {

void currentValue(TickerSymbol tickerSymbol, BigDecimal newValue);

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Tarea de interfaces

Tarea de Interfaces

  • Investigar la interface Comparable del paquete java.lang

  • Investigar las interfaces Collection e Iterator del paquete java.util

  • Incluir un ejemplo del uso de dichas interfaces (30% del examen)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 6 definici n y creaci n de paquetes librer a

6.6 Definición y creación de paquetes /librería.

  • Un paquete (package) es una coleccion de archivos .class relacionados, los cuales se encuentran en un subdirectorio.

  • Un paquete es una biblioteca (library) de clases y a su vez es un subdirectorio.

Paquete = Directorio

(nombre del paquete debe ser igual al nombre del directorio)

Clase = Archivo

(nombre de la clase debe ser igual al nombre del archivo)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Definici n y creaci n de paquetes librer a

Definición y creación de paquetes /librería

  • Los paquetes se utilizan para agrupar diversas clases dandoles un nombre de grupo que pueda identificarlas.

  • Los paquetes permiten asignar a las clases nombres que incluyen la ruta donde estas se localizan. (Nombres completos)

package java.util.zip;

public class ZipFile {…}

Nombre completo de la clase

java.util.zip.ZipFile

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Definici n y creaci n de paquetes librer a1

interface

interface

clase

clase

clase

métodos

métodos

atributos

atributos

atributos

métodos

métodos

métodos

Variables locales

Variables locales

Variables locales

Definición y creación de paquetes /librería

Subpaquete

paquete

TAREA: Investigar como se selecciona el nombre de un paquete.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Los paquetes permiten definir un espacio de nombres (namespace)

  • Los paquetes NO tienen interfaces propias

  • Los paquetes NO permiten obtener diferentes vistas de sus elementos

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo9

Empleado

EmpleadoHora

EmpleadoBase

Nomina

ABCC

Recibos

Reportes

Condomino

ABCC

Servicios

EdoFinanciero

Gastos

Compras

etc

empleados

condominos

finanzas

sac

Ejemplo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Definici n y creaci n de paquetes librer a2

Definición y creación de paquetes /librería

  • Una unidad de compilacion (clase o interface) puede iniciar con un estatuto que defina a que paquete pertenece:

    package poo.proyecto1;

  • La ausencia de esta declaración, coloca la clase en un paquete anonimo en el mismo directorio donde se almacena el archivo.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Empleado

Empleado

Base

Empleado

Hora

Empleado

Comision

El archivo .class que se genera en la compilacion se almacenara en el directorio definido por la declaración del paquete.

package sac.empleados;

public abstract class Empleado{…}

package sac.empleados;

public class EmpleadoBase{…}

package sac.empleados;

public class EmpleadoComision{…}

package sac.empleados;

public class EmpleadoHora{…}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 7 reutilizaci n de las clases de un paquete librer a

6.7 Reutilización de las clases de unpaquete / librería.

  • Solo los miembros publicos de un paquete estan accesibles fuera del paquete.

  • Para usar un miembro se puede:

    • Usar su nombre completo ej. sac.empleados.EmpleadoBase

    • Importarlo del paquete individualmente

      import sac.empleados.EmpleadoBase

    • Importar a todos los miembros del paquete

      import sac.empleados.*

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplos5

Ejemplos

//uso del nombre completo de la clase (sin import)

sac.empleados.EmpleadoBaseempleadob = new sac.empleados.EmpleadoBase ();

//uso de la clase importandola individualmente

import sac.empleados.EmpleadoBase;

EmpleadoBaseempleadob = newEmpleadoBase ();

//uso de la clase importandola colectivamente

import sac.empleados.*;

EmpleadoBaseempleadob = newEmpleadoBase ();

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


6 8 clases gen ricas plantillas en c

6.8 Clases genéricas.(Plantillas en C++).

  • El código generico es una abstraccion sobre tipos de datos. Esto significa que el mismo proceso se puede utilizar independientemente del tipo de dato.

  • Ejemplos:

    • Ordenar un arreglo

    • Intercambiar variables

    • Procesar una lista de datos

    • Colecciones (Pilas, Colas, Arboles, etc.)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Java 1 5 incluye genericos

Java 1.5 incluye genericos

  • Las clases, interfaces, constructores, y métodos pueden ser genericos si se utilizan parámetros de tipos.

  • El código generico provee mayor legibilidad de los programas y mas seguridad en la ejecución.

  • Se compila solo una vez y para siempre.

  • Se realiza una traduccion homogenea.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo10

Ejemplo

interface List<A> {

void add(A x);

Iterator<A> iterator();

}

interface Iterator<A> {

A next();

boolean hasNext();

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Node

class LinkedList<A> implements List<A>{

protected class Node {

A elt; Node next;

Node(A e) { elt= e; next=null;}

}

protected Node h,t;

public LinkedList() {h = new Node(null); t = h;}

public void add(A elt){ t.next = new Node(elt); t = t.next;}

public Iterator<A> iterator(){

return new Iterator<A>(){

protected Node p = h.next;

public boolean hasNext() {return p != null;}

public A next(){A e = p.elt; p=p.next; return e;}

}

}

}

elt next

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Usando la clase con parámetro de tipo

List<Integer> xs = new LinkedList<Integer>();

xs.add(0); // boxing automatico

Integer x = xs.iterator().next(); // no cast

Usando la clase SIN parámetro de tipo

List xs = new LinkedList();

xs.add(new Integer(0)); // requiere wrapping

Integer x = (Integer)xs.iterator().next();

// requiere cast (puede fallar en ejecución)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

//Usando parámetros de tipo

List<String> ys = new LinkedList<String>();

ys.add(“zero”);

List<List<String>>yss = new LinkedList<List<String>>();

yss.add(ys);

String y=yss.iterator().next().iterator().next();

Integer z = ys.iterator().next(); // error en tiempo de compilacion

//Sin usar parámetros de tipo

List ys = new LinkedList();

ys.add(“zero”);

List yss = new LinkedList();

yss.add(ys);

String y = (String)((List)yss.iterator().next()).iterator().next();

Integer z = (Integer) ys.iterator().next(); // error en tiempo de ejecución

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Se pueden definir restriciones recursivamente

    OrderedList<T implements Orderable<T>>

  • Solo se pueden usar referencias como parámetros de tipo

  • El tiempo de ejecución es similar a la implementacion usando Object y cast

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 excepciones

7. Excepciones.

7.1 Definición.

7.1.1 Que son las excepciones.

7.1.2 Clases de excepciones.

7.1.3 Propagación.

7.2 Gestión de excepciones.

7.2.1 Manejo de excepciones.

7.2.2 Lanzamiento de excepciones.

7.3 Excepciones definidas por el usuarios.

7.3.1 Clase base de las excepciones.

7.3.2 Creación de un clase derivadadel tipo excepción.

7.3.3 Manejo de una excepcióndefinida por el usuario.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 1 definici n

7.1 Definición.

  • Regla de oro que siempre debe recordarse:

    “En los programas de software ocurren errores”

  • Que pasa despues de que ocurre un error?

  • Como se maneja el error?

  • Quien lo maneja?

  • Se puede recuperar de un error un programa?

  • Debe enviar un mensaje de error y terminar?

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 1 1 que son las excepciones

7.1.1 Que son las excepciones.

  • Una excepcion es un evento que “rompe” el flujo normal de instrucciones durante la ejecución de un programa.

  • Java posee un mecanismo para el manejo de excepciones que le permite ver que excepcion se ha presentado y como puede recuperarse de ella.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

método en ejecución

1

2

6

ERROR!!!

Encontro?

Termina la ejecución del programa

no

Exception object

3

si

RTS procesa el error

4

Pasa la excepcion al manejador

Busca un manejador

De excepciones

5

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 1 2 clases de excepciones

Object

Throwable

7.1.2 Clases de excepciones.

Error

Exception

ArithmeticException

RunTimeException

NullPointerException

VirtualMachineError

IndexOutOfBoundsE

IllegalAccessException

AWTError

Etc.

ClassNotFoundException

Etc.

Etc.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Clases de excepciones

Clases de Excepciones

  • Checked Exceptions. Son aquellas que deben ser capturadas por un método o deben ser listadas en la clausula throws de cualquier método que pueda lanzar la excepcion o propagarla.

  • Unchecked Exceptions. Son aquellas que no deben ser capturadas y no requieren estar en la clausula throws. Se derivan de RunTimeException.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 1 3 propagaci n

7.1.3 Propagación.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 1 3 propagaci n1

7.1.3 Propagación.

m3

método donde ocurre un error

Busca un manejadorapropiado para el error, siguiendo la secuencia de llamadas de métodos en orden inverso

m2

método sin manejador de excepcion

Llama m3

Llama m2

Llama m1

m1

método con manejador de excepcion

main

Stack de llamadas

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Definicion de excepciones

Definicion de excepciones

try {

// código que puede producir un error

}

catch (TipoDeExcepcion identificador) {

// código que se ejecuta en caso de error

}

// pueden definirse muchos catch

finally {

// código que siempre se ejecuta

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo11

Ejemplo

// Ejemplo de http://www.cica.es/formacion/JavaTut/Cap6/excep.html

// Capturando una excepción en un método

class Testcap {

static int slice0[] = { 0,1,2,3,4 };

static void uno() {

try {

slice0[-1] = 4; //linea #8

} catch( NullPointerException e ) {

System.out.println( "Captura una excepcion diferente" );

}

}

public static void main( String a[] ) {

try {

uno(); //linea # 16

} catch( Exception e ) {

System.out.println( "Captura de la excepcion en main()" );

e.printStackTrace();

}

}

}

Captura de la excepcion en main()

java.lang.ArrayIndexOutOfBoundsException: -1

at Testcap.uno(Testcap.java:8)

at Testcap.main(Testcap.java:16)

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo12

import cs1.Keyboard;

public class ProductCodes {

public static void main( String[] args ) {

String code;

char zone;

int district, valid=0, banned=0;

System.out.print("código de producto (XXX para salir)");

code = Keyboard.readString();

while (!code.equals("XXX")) {

try {

zone = code.charAt(9);

district = Integer.parseInt(code.substring(3,7));

valid++;

if (zone == 'R' && district > 2000) banned++;

}

catch (StringIndexOutOfBoundsException e){

System.out.println ("Longitud invalida"+code);

}

catch (NumberFormatException e){

System.out.println ("El distrito noes nuemrico"+code);

}

System.out.print("código de producto (XXX para salir)");

code = Keyboard.readString();

}

System.out.println( "Total de códigos validos "+valid );

System.out.println( "Total de códigos banned "+banned );

}

}

Ejemplo

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo13

Ejemplo

public void paint( Graphics g ) {

try {

g.drawString( Saludos[i],25,25 );

}

catch( ArrayIndexOutOfBoundsException e ) {

g.drawString( "Saludos desbordado",25,25 );

}

catch( Exception e ) {

// Cualquier otra excepción

System.out.println( e.toString() );

}

finally {

System.out.println( "Esto se imprime siempre!" );

}

i++;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 2 gestion de excepciones

7.2 Gestion de excepciones.

  • Las excepciones pueden generarse implicitamente cuando se produce un error y es detectado por el RTS o explicitamente cuando el programa detecta un error.

  • Los nombres de las excepciones identifican al error que se representa.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 2 gesti n de excepciones

7.2 Gestión de excepciones.

  • Clausulatry – contiene el bloque de instrucciones que pueden producir un error. Debe ser seguida por una clausula catch o finally.

  • Clausulacatch – contiene el código que se ejecuta cuando ocurre una excepcion del tipo especificado.

  • Clausulafinally – es el bloque de código que se ejecuta siempre, haya sucedido o no una excepcion.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Clausula throws – se define en el encabezado del método que lanzara esa excepcion.

    public static void main(String[] a) throws IOException {

    … }

  • Clausula throw – lanza una excepcion explicitamente.

    try {

    if( temp > 40 ) throw ( new demasiadoCalor() );

    }

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

class Limites extends Exception {}

class demasiadoCalor extends Limites {}

class demasiadoFrio extends Limites {}

class demasiadoRapido extends Limites {}

class demasiadoCansado extends Limites {}

try {

if( temp > 40 ) throw( new demasiadoCalor() );

if( dormir < 8 ) throw( new demasiado Cansado() );

}

catch( Limites lim ) {

if( lim instanceof demasiadoCalor ){

System.out.println( "Capturada excesivo calor!" );

return;

}

if( lim instanceof demasiadoCansado ) {

System.out.println( "Capturada excesivo cansancio!" );

return;

}

}

finally System.out.println( "En la clausula finally" );

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Excepciones predefinidas

Excepciones predefinidas

  • ArithmeticException. Se generan por una operacion de division por cero.

  • NullPointerException. Se genera cuando se intenta acceder a un variable que no existe (null).

  • ClassCastException. Se genera cuando se convierte (cast) un objeto a otra clase que no es válida.

  • ArrayIndexOutOfBoundsException. Se genera cuando se intenta acceder a un elemento que no existe.

  • NoClassDefFoundException. Se genera cuando se requiere de una clase y el sistema no puede localizarla.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Persona persona;

String p = persona.getNombre();

y = (Prueba)x;

int i = j / i;

a[i] = x;

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


7 3 excepciones definidas por el usuarios

7.3 Excepciones definidas por el usuarios.

  • Las excepciones en Java son clases derivadas de la clase base de las excepcionesException la cual a su vez se deriva de la clase Throwable.

  • La clase Exception contiene tres métodos heredados de la clase Throwable, que se utilizan para obtener informacion de la excepcion estos son:

    • toString()Convierte el objeto a String.

    • getMessage()Regresa un String con informacion de la excepcion.

    • printStackTrace()Despliega la jerarquia de llamadas de métodos que provoco la excepcion.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Creaci n de un clase derivada del tipo excepci n

Creación de un clase derivadadel tipo excepción.

  • Para crear una excepcion, se deriva una clase de la clase Exception.

  • Ejemplo. Define una clase para manejar una excepcion que valide un rango de valores.

public class RangoNumericoException extends Exception {

public RangoNumericoException (String mensaje){

super(mensaje);

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Manejo de una excepci n definida por el usuario

Manejo de una excepcióndefinida por el usuario.

  • Las excepciones definidas por el usuario se capturan (catch) y se lanzan (throw) en la misma forma que las excepciones predefinidas.

  • Una excepcion puede ser lanzada en un método y capturada en un método diferente (el que llamo a ejecución).

  • El compilador se asegura que existan manejadores de excepciones para todas las excepciones definidas en la clausula throws.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

try {

int respuesta = CalcRespuesta();

resp = String.valueOf(respuesta);

}

catch (RangoNumericoException e) {

resp =e.getMessage();

}

….

El método CalcRespuesta no atrapa la excepcion definida en su encabezado por lo tanto cualquier método que llame a CalcRespuesta debe atrapar a esa excepcion.

public int CalcRespuesta() throws RangoNumericoException {

….

try {

int1 = Integer.parseInt(str1);

int2 = Integer.parseInt(str2);

if ((int1 < 10) || (int1 > 20) || (int2 < 10) || (int2 > 20)) {

RangoNumericoException e = RangoNumericoException (“numero fuera de rango”);

throw e;

}

respuesta1 = int1 + int2;

}

catch (NumberFormatException e) {

resp =e.toString();

}

return respuesta1;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ventajas de las excepciones

Ventajas de las Excepciones

  • El código regular, se separa del código que maneja los errores. (parte try, parte catch)

// pseudocódigo

readFile {

open the file;

determine its size;

allocate that much memory;

read the file into memory;

close the file;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

errorCodeType readFile {

initialize errorCode = 0;

open the file;

if (theFileIsOpen) {

determine the length of the file;

if (gotTheFileLength) {

allocate that much memory;

if (gotEnoughMemory) {

read the file into memory;

if (readFailed) {

errorCode = -1;

}

} else {

errorCode = -2;

}

} else {

errorCode = -3;

}

close the file;

if (theFileDidntClose && errorCode == 0) {

errorCode = -4;

} else {

errorCode = errorCode and -4;

}

} else {

errorCode = -5;

}

return errorCode;

}

readFile {

try {

open the file;

determine its size;

allocate that much memory;

read the file into memory;

close the file;

} catch (FileOpenFailed) {

doSomething;

} catch (SizeDeterminationFailed) {

doSomething;

} catch (MemoryAllocationFailed) {

doSomething;

} catch (ReadFailed) {

doSomething;

} catch (FileCloseFailed) {

doSomething;

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ventajas de las excepciones1

Ventajas de las Excepciones

  • Los errores se pueden propagar usando el Stack (Pila) de llamadas.

Solo method1 esta interesado en procesar un error.

method1 {

call method2;

}

method2 {

call method3;

}

method3 {

call readFile;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

// SIN excepciones

method1 {

errorCodeType error;

error = call method2;

if (error)

doErrorProcessing;

else

proceed;

}

errorCodeType method2 {

errorCodeType error;

error = call method3;

if (error)

return error;

else

proceed;

}

errorCodeType method3 {

errorCodeType error;

error = call readFile;

if (error)

return error;

else

proceed;

}

// CON excepciones

method1 {

try {

call method2;

}

catch (exception e) {

doErrorProcessing;

}

}

method2 throws exception{

call method3;

}

method3 throws exception {

call readFile;

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ventajas de las excepciones2

Ventajas de las Excepciones

  • Los errores pueden ser agrupados y pueden diferenciarse de otros.

Manejador para un error específico

catch (FileNotFoundException e){

}

catch (IOException e){

}

Manejador para todos los errores relacionados con IO

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ventajas de las excepciones3

Ventajas de las Excepciones

  • El código es mas legible.

  • Facilita la depuracion de programas.

  • NO generan ‘overhead’ por lo tanto el tiempo de ejecución no se ve afectado.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


8 flujos y archivos

8. Flujos y archivos.

8.1 Definición de Archivos de texto yarchivos binarios.

8.2 Operaciones básicas en archivos texto

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Flujos de io

Flujos de IO

  • Un flujo (stream) es una secuencia ordenada de bytes que puede ser usada como fuente de una entrada o como destino de una salida.

  • Los archivos, la memoria o los sockets pueden proveer/recibir informacion abriendo un fujo de datos.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Los algoritmos para leer o escribir informacion siempre ejecutan una serie de pasos.

Leer

Abrir un stream

while (hay mas informacion)

leer information

Cerrar el stream

Escribir

Abrir un stream

while (hay mas informacion)

escribir information

Cerrar el stream

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Paquete java io

Streams de salida

Stream de

Caracteres

Streams de

Bytes

Streams de entrada

Streams

datos

Streams

procesamiento

Paquete java.io

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

  • Streams de datos. Representa un stream particular (fuente o destino), ejemplo un archivo.

  • Streams de procesamiento. Ejecuta cierta manipulacíon de los datos (filtrado).

  • Stream de Caracteres. Manipula caracteres de 16 bits (unicode).

  • Stream de Bytes. Manipula datos binarios de 8 bits.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Paquete java io1

Paquete java.io

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Stream de caracteres

Clases abstractas

Stream de datos

Stream de Caracteres

Stream de procesamiento

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Stream de bytes

Stream de datos

Stream de Bytes

Stream de procesamiento

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Lectura y escritura de archivos

Lectura y Escritura de Archivos

  • Un archivo se puede utilizar en un programa definiendo un stream para el.

  • Los archivos de entrada proveen informacion.

  • Los archivos de salida reciben informacion.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

import java.io.*;

// usa stream de caracteres

public class CopiaArchivo{

public static void main (String [] args) throws IOException{

// define los archivos fisicos

File archivoEntrada= new File("entrada.txt");

File archivoSalida = new File("salida.txt");

// Define los flujos de datos usando los archivos fisicos

FileReader in = new FileReader(archivoEntrada);

FileWriter out = new FileWriter(archivoSalida);

int c;

while ((c=in.read()) != -1)

out.write(c);

// cierra los archivos

in.close();

out.close();

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

import java.io.*;

// usa stream de bytes

public class CopiaBytes {

public static void main(String[] args) throws IOException {

// define los archivos fisicos

File inputFile = new File("entrada.txt");

File outputFile = new File("salida2.txt");

// abre los flujos de entrada y salida usando los archivos fisicos

FileInputStream in = new FileInputStream(inputFile);

FileOutputStream out = new FileOutputStream(outputFile);

int c;

// lee los datos del archivo de entrada y los escribe en el archivo de salida

while ((c = in.read()) != -1)

out.write(c);

// cierra los archivos

in.close();

out.close();

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejercicio

Ejercicio

  • Modifica el programa anterior para incluir un manejador de excepciones que detecte cuando el archivo de entrada no se encuentra.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Lectura de a rchivos de texto

Lectura de Archivos de texto.

  • Los archivos de texto definen a cada uno de los elementos que contienen como una linea completa.

  • La clase BufferedReader contiene un método llamado readLine() que permite leer una linea de caracteres en una sola operacion, regresando como resultado un String.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Lectura de archivos de texto

Lectura de archivos de texto

  • FileReader representa un archivo de entrada que contiene datos caracter.

  • La clase FileReader se deriva de la clase InputStreamReader y hereda el método read para leer datos.

  • BufferedReader no representa una fuente de datos, se usa para filtrar datos de un stream.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Ejemplo14

Ejemplo

  • Supongamos que tenemos un archivo llamado inventario.txt el cual contiene los siguientes datos en cada linea: descripcion, cantidad y precio.

Zapatos 2 150.00

Pantalon 3 224.99

Vestido 1 367.50

Collar 5 79.99

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

import java.io.*;import java.util.StringTokenizer;

public class Inventario {

public static void main(String[] args) {

Articulo [] inventario = new Articulo[100];

StringTokenizer tokenizer ;

String linea, desc, entrada = "inventario.txt";

int cant, contador =0;

float prec;

try{

FileReader file = new FileReader(entrada);

BufferedReader archivoEntrada = new BufferedReader(file);

linea = archivoEntrada.readLine();

while (linea != null){

tokenizer = new StringTokenizer(linea);

desc = tokenizer.nextToken();

try { cant = Integer.parseInt(tokenizer.nextToken());

prec = Float.parseFloat(tokenizer.nextToken());

inventario[contador++] = new Articulo(desc,cant,prec);

} catch(NumberFormatException formatoNumero){

System.out.println("Linea erronea, sera ignorada: \r "+linea); }

linea = archivoEntrada.readLine();

}

archivoEntrada.close();

for (int i=0; i<contador; i++) System.out.println(inventario[i]);

}

catch (FileNotFoundException excepcion){

System.out.println("el archivo "+entrada+" no fue encontrado");}

catch (IOException excepcion){System.out.println(excepcion);}

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

catch (NumberFormatException exception) {

System.out.println("ERROR en la linea " + line);

}

infile.close();

}

catch (FileNotFoundException exception) {

System.out.println("Archivo no encontrado");

}

catch (IOException exception) {

System.out.println(exception);

}

}

}

public class LeeArchivo {

public static void main (String [] args){

int maxi, maxj, dato;

StringTokenizer tokenizer;

String line, name, file = "datosMatriz.txt";

int i,j,gen,count = 0;

try {

FileReader fr = new FileReader(file);

BufferedReader infile = new BufferedReader(fr);

line = infile.readLine();

tokenizer = new StringTokenizer(line);

try {

maxi= Integer.parseInt(tokenizer.nextToken());

maxj= Integer.parseInt(tokenizer.nextToken());

System.out.println("Renglones = "+maxi+" Columnas = "+maxj);

line = infile.readLine();

tokenizer = new StringTokenizer(line);

gen = Integer.parseInt(tokenizer.nextToken());

System.out.println("Generaciones = "+gen);

line = infile.readLine();

while (line != null) {

tokenizer = new StringTokenizer(line);

i= Integer.parseInt(tokenizer.nextToken());

j= Integer.parseInt(tokenizer.nextToken());

System.out.println("i = "+i+" j = "+j);

line = infile.readLine();

}

}

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Escritura de archivos de texto

Escritura de archivos de texto

  • La clase FileWriter representa un archivo de texto de salida.

  • La clase PrintWriter contiene los métodos print y println.

  • La clase BufferedWriter puede usarse para proveer algunas capacidades extras.

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Programaci n orientada a objetos con java

import java.io.*;

import cs1.Keyboard;

public class CreaArchivoArticulos {

public static void main (String [] args) {

String archivo = "articulos.txt";

try {

FileWriter fw = new FileWriter(archivo);

PrintWriter file = new PrintWriter(fw);

String d;

int c;

float p;

for (int i=0; i<5; i++){

System.out.println("descripcion ");

d=Keyboard.readString();

System.out.println("cantidad ");

c= Keyboard.readInt();

System.out.println("Precio ");

p = Keyboard.readFloat();

file.println(d+" "+c+" "+p);

}

file.close();

System.out.println("El archivo "+archivo+" ha sido creado");

}

catch (IOException e){System.out.println(e); }

}

}

Articulos.txt

Zapatos 2 150.00

Pantalon 3 224.99

Vestido 1 367.50

Collar 5 79.99

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


Fin del curso

Fin del curso!

Buena suerte en el examen final!

Instituto Tecnológico de Culiacán

Ing. En Sistemas Computacionales


  • Login