estructuras programación. estructuras en java las estructuras en java se definen como clases. la...
TRANSCRIPT
![Page 1: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/1.jpg)
Estructuras
Programación
![Page 2: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/2.jpg)
Estructuras en Java
Las estructuras en Java se definen como clases.
La estructura permite almacenar datos de diferentes tipos en una sola entidad.
Es conveniente definir constructores para las estructuras, esto permite tener siempre datos bien definidos.
Se acostumbra definir métodos get y set para accesar a los miembros dato.
![Page 3: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/3.jpg)
Una estructura para fechas
class Fecha{public int dia,mes,anyo;public Fecha(){
dia = 1; mes = 1; anyo = 2000;}public Fecha(int d, int m, int a){
dia = d;mes = m;anyo = a;
}public String toString(){
return ""+dia+" de "+mes+" de "+anyo;}
}
Constructor sin parámetros
Constructor con parámetros
Miembros dato
Convierte fecha a cadena
![Page 4: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/4.jpg)
Ejemplo de fechas
public class TestEstructuras{ static public void main(String []args){ Fecha hoy,otroDia; hoy = new Fecha(13,11,2005);//crea una fecha (13 de nov 2005) otroDia = new Fecha();//crea otra fecha (1 de enero 2000) System.out.println("Hoy es:"+hoy.toString()); System.out.println("El primer dia fue:"+otroDia.toString()); }}
![Page 5: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/5.jpg)
La clase Empleado
class Empleado{ public String nombre; public String direccion; public String telefono; public Fecha diaNacimiento,ingreso; public float salario; public Empleado(String nom,String dir,String tel,Fecha dn,Fecha ingr,float s){ nombre = nom; direccion = dir; telefono = tel; diaNacimiento = dn; ingreso = ingr; salario = s; }}
nombre direccion telefono
diaNacimiento ingreso salariodia mes anyo dia mes anyo
NombreDirecciónTeléfonoDía de nacimientoCarreraSexo (utilice un booleano)Lugar de nacimientoEstado civil
![Page 6: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/6.jpg)
Ejemplo de empleadopublic class TestEstructuras{ static public void main(String []args){ Empleado e = new Empleado("Juan Perez", "Calle Olmo #23","555-33-22", new Fecha(5,4,1994),new Fecha(12,9,2004),30000); System.out.println("Nombre:"+e.nombre); System.out.println("Direccion:"+e.direccion); System.out.println("Telefono:"+e.telefono); System.out.println("Nació el "+ e.diaNacimiento.toString()); System.out.println("Ingresó el "+e.ingreso.toString()); System.out.println("Salario:"+e.salario); }}
Nombre:Juan PerezDireccion:Calle Olmo #23Telefono:555-33-22Nació el 5 de 4 de 1994Ingresó el 12 de 9 de 2004Salario:30000.0
Salida
![Page 7: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/7.jpg)
Números racionalesUn número racional es aquel que puede expresarse como el cociente de dos enteros.
Ejemplos: 1/2, 34/17, -5/4, 8 (8/1)
public class Racional{private int num, den;
}
.
.
Racional r1, r2;
![Page 8: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/8.jpg)
Constructor de racionales
public Racional(int a,int b){ num = a; den = b;}
Ejemplo
Racional r1, r2;
r1 = new Racional(5,7); // r1 = 5/7
r2 = new Racional(3,8); // r2 = 3/8
![Page 9: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/9.jpg)
Igualdad de racionales
Dos racionales son iguales si representan el mismo número real.
Ejemplo: 3/8 = 6/16, 5/15 = 1/3
Para comparar dos racionales hay que expresarlos en su forma reducida, es decir, de forma que el numerador y el denominador sean primos entre sí.
Para esto divida el numerador y el denominador entre su m.c.d.
![Page 10: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/10.jpg)
Reducción de un racionalprivate void simplifica(){ int a,b,res; if(num>den){ a = num; b = den; } else{ a = den; b = num; } while(b != 0){ res = a%b; a = b; b = res; } num = num/a; den = den/a;}
Reducción de un racional mediante el algoritmo de Euclides.
![Page 11: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/11.jpg)
Comparación de racionales
public static boolean igual(Racional a,Racional b){ a.simplifica(); b.simplifica(); return (a.num == b.num && a.den == b.den);}
Implementación de la comparación como método de clase.
Correcto Incorrecto
Racional a,b; Racional a,b,c;a = new Racional(3,4); a = new Racional(3,4);b = new Racional(5,6); b = new Racional(5,6);if(Racional.igual(a,b)) if(a.igual(b)) son iguales son igualeselse else NO son iguales NO son iguales
Indica que el método es de clase
![Page 12: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/12.jpg)
Operaciones con racionalesSuma
bdbcad
dc
ba 65
43135
65131136
51
Restabdbcad
dc
ba 65
17135
65131136
51
Multiplicaciónbdac
dc
ba 65
613561
136
51
Divisiónbcad
dc
ba 13
3013165
136
51
![Page 13: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/13.jpg)
Implementación de la suma
public static Racional suma(Racional a,Racional b){ int n,d; n = a.num*b.den+b.num*a.den; d = a.den*b.den; Racional c = new Racional(n,d); c.simplifica(); return c;}
Implementación de la suma como método de clase.
Correcto Incorrecto
Racional a,b,c; Racional a,b,c;a = new Racional(3,4); a = new Racional(3,4);b = new Racional(5,6); b = new Racional(5,6);c = Racional.suma(a,b); c = a.suma(b);
Indica que el método es de clase
![Page 14: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/14.jpg)
Ejemplo de evaluaciónSe desea calcular el valor de la siguiente expresión con racionales:
6
13
7
3
4
15
6
2
5
15
7
Racional a,b,c,d,e;a = Racional.multiplica(new Racional(5,2),new Racional(6,5));// a = (5/2)x(6/5)b = Racional.resta(new Racional(1,4),new Racional(3,7));// b = (1/4)-(3/7)c = Racional.divide(a,b); // c = a/bd = Racional.resta(new Racional(7,15),c); // d = 7/5 - ce = Racional.suma(d,new Racional(13,6)); // e = d + 13/6Syatem.out.println(e.toString())
5/2x 6/5= 3/11/4- 3/7= -5/28(3/1)/ -5/28= -84/57/15- -84/5= 259/15259/15+ 13/6= 583/30
![Page 15: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/15.jpg)
Resumen
El acceso a miembros de una clase se logra empleando el operador punto (.).
Las clases permiten al programador modelar objetos con atributos (datos) y comportamiento (métodos), se definen mediante la palabra class.
El cuerpo de la definición de clases se encierra en llaves ({}).
Cualquier variable de ejemplar (instancia) o método declarado public en una clase esta visible para cualquier método con acceso a un objeto de la clase.
Cualquier variable de ejemplar (instancia) o método declarado private solo esta solo esta visible para los demás miembros de la clase.
Un constructor es un método especial con el mismo nombre de la clase y que sirve para inicializar los miembros dato de un objeto de la clase. Los constructores se invocan cuando se ejemplarizan (crean) los objetos.
El conjunto de métodos public de una clase se conoce como la interfaz publica de la clase.
![Page 16: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/16.jpg)
Resumen (continuación)Dentro del alcance de una clase, podemos hacer referencia a los miembros de la clase simplemente con sus nombres. Fuera del alcance de la clase, hacemos referencia a los miembros de la clase mediante una referencia a un objeto.
Los constructores pueden sobrecargarse. Se pueden definir varios constructores siempre y cuando no coincidan en el número y tipo de los parámetros.
Los constructores no pueden regresar ningún valor.
Las clases pueden estar compuestas por objetos de otras clases.
Los miembros dato privados se pueden acceder por métodos get y set. Los métodos get obtienen el valor de un dato y los métodos set lo modifican.
Si una clase tiene un método toString(), este se utiliza automáticamente cuando se mezcla un objeto de la clase en una expresión de cadena. Es decir
System.out.print(“”+c.toString()); System.out.print(“”+c);
![Page 17: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/17.jpg)
Conjuntos (ejemplo)Un conjunto de enteros puede representarse utilizando un arreglo de enteros.
Si un elemento se encuentra en el conjunto, el elemento del arreglo con el índice igual al entero se hace 1.
Ejemplo: A = {3, 5, 7, 12, 14} B = {2, 3, 6, 7, 8, 12}
0 0 0 1 0 1 0 1 0 0 0 0 1 0 1a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12] a[13] a[14]
Representación de A
Representación de B 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12] a[13] a[14]
A B = {3, 7, 12}
0 0 1 1 0 1 1 1 1 0 0 0 1 0 1a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12] a[13] a[14]
A B = {2, 3, 5, 6, 7, 8, 12, 14}
0 0 0 1 0 0 0 1 0 0 0 0 1 0 0a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12] a[13] a[14]
![Page 18: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/18.jpg)
class ConjuntoEnteros{ private int a[]; public ConjuntoEnteros(){ a = new int[100]; for(int i=0; i<100 ; i++) a[i] = 0; } public void agregar(int n){ if(n>=0 && n<100) a[n] = 1; } public static ConjuntoEnteros union( ConjuntoEnteros c1,ConjuntoEnteros c2){ ConjuntoEnteros c = new ConjuntoEnteros(); for(int i=0; i<100 ; i++) if(c1.a[i]==1 || c2.a[i]==1) c.a[i] = 1; return c; }
Miembro dato privado
Constructor
Agrega un elemento
Calcula la uniónDe dos conjuntos(Método de clase)
![Page 19: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/19.jpg)
public void imprime(){ int j = 0; System.out.print("{"); for(int i=0; i<a.length ; i++) if(a[i]==1){ System.out.print(" "+i); j++; if(j==50) System.out.println(""); } System.out.println("}"); }}
![Page 20: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/20.jpg)
Uso de la clase ConjuntoEnteros
ConjuntoEnteros a = new ConjuntoEnteros();ConjuntoEnteros b = new ConjuntoEnteros();a.agregar(3);a.agregar(5);a.agregar(7);a.agregar(12);a.agregar(14);b.agregar(2);b.agregar(3);b.agregar(6);b.agregar(7);b.agregar(8);b.agregar(12);a.imprime();b.imprime();ConjuntoEnteros c = ConjuntoEnteros.union(a,b);c.imprime();
Crea 2 conjuntos vacíos
c = a b
A = {3, 5, 7, 12, 14}
B = {2, 3, 6, 7, 8, 12}
![Page 21: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/21.jpg)
La clase ComplejoClass Complejo{ double re, im; public Complejo(){ re = 0; im =0; } public Complejo(double r){ re = r; im =0; } public Complejo(double r,double c){ re = r; im =c; }}
Ejemplos:Complejo a = new Complejo();// 0+0iComplejo b = new Complejo(5);//5+0iComplejo c = new Complejo(3,4);//3+4i
![Page 22: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/22.jpg)
Suma de complejos
public static Complejo suma(Complejo a,Complejo b){ double c,d; c = a.re+b.re; d = a.im+b.im; Complejo t = new Complejo(c,d); return(t);}
(a + bi) + (c + di) = (a + c) + (b + d)i
Calcula la sumade dos complejos(Método de clase)
![Page 23: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/23.jpg)
public static Complejo resta(Complejo a,Complejo b){double c,d;c = a.re-b.re;d = a.im-b.im;Complejo t = new Complejo(c,d);return(t);
}public static Complejo multiplica(Complejo a,Complejo b){
double c,d;c = a.re*b.re-a.im*b.im;d = a.im*b.re+a.re*b.im;Complejo t = new Complejo(c,d);return(t);
}public static Complejo divide(Complejo a,Complejo b){
double c,d,den;den = b.re*b.re+b.im*b.im;c = (a.re*b.re+a.im*b.im)/den;d = (a.re*b.im-a.im*b.re)/den;Complejo t = new Complejo(c,d);return(t);
}public String toString(){
return(""+re+" + i("+im+")");}
Otros métodos
22
2222 baai
baaiba
![Page 24: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/24.jpg)
Actividad
1. Amplíe la clase Complejo para agregar un métodos para extraer la raíz cuadrada de un complejo con la fórmula.
22
2222 baai
baaiba
![Page 25: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/25.jpg)
La clase Matriz
class Matriz{ double m[][]; public Matriz(int n){ m = new double[n][n]; cero(); } public Matriz(double m1[][]){ int n = m1.length; m = new double[n][n]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) m[i][j] = m1[i][j]; }
Construye una matrizde nxn rellena de ceros
Construye una matriz
copiando un arreglo
Arreglo de
double
![Page 26: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/26.jpg)
métodos
public void cero(){ for(int i=0;i<m.length;i++) for(int j=0;j<m.length;j++) m[i][j] = 0;}public void unidad(){ for(int i=0;i<m.length;i++) for(int j=0;j<m.length;j++) if(i==j) m[i][j] = 1; else m[i][j] = 0;}
static public Matriz suma(Matriz a,Matriz b){ Matriz m1 = new Matriz(a.m.length); for(int i=0;i<m1.m.length;i++) for(int j=0;j<m1.m.length;j++) m1.m[i][j] = a.m[i][j] + b.m[i][j]; return m1;}public void imprime(){ for(int i=0;i<m.length;i++){ for(int j=0;j<m.length;j++) System.out.print(" "+m[i][j]); System.out.println(""); } System.out.println("");}
![Page 27: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/27.jpg)
Ejemplo de matrices
class TestMatriz{static public void main(String[] args){
double d[][] = {{1,2,3},{4,5,6},{7,8,9}};Matriz a = new Matriz(d);Matriz b = new Matriz(d);Matriz c = Matriz.suma(a,b);a.imprime();b.imprime();c.imprime();
}}
![Page 28: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/28.jpg)
La clase Fecha/*archivo Fecha.java, Deitel & Deitel*/public class Fecha{ private int mes; // 1-12 private int dia; // 1-31 private int anyo;//cualquiera //constructor: Confirma valor correcto para mes. //llama al método checaDia para checar el día. public Fecha(int m, int d, int a){ if(m>0 && m<=12)//valida el mes mes = m; else{ mes = 1; System.out.println("mes "+m+" no válido. Se usará 1."); } anyo = a; dia = checaDia(d); System.out.println( "Constructor de objeto Fecha para la fecha "+toString()); }
![Page 29: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/29.jpg)
private int checaDia(int d){ int diaPorMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(d>0 && d<=diaPorMes[mes]) return d; if(mes == 2 && //Febrero: determinar si año bisiesto d == 29 && (anyo % 400 == 0 || (anyo % 4 == 0 && anyo % 100 != 0))) return d; System.out.println("Día "+d+" no válido. Usar dia 1."); return 1; //dejar objeto en estado consistente } public String toString(){ return dia+"/"+mes+"/"+anyo; }}
![Page 30: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/30.jpg)
Ejemplo
import java.util.*;public class testFecha{ static public void main(String []args){ GregorianCalendar d = new GregorianCalendar(); Fecha hoy = new Fecha(d.get(Calendar.MONTH),
d.get(Calendar.DAY_OF_MONTH),d.get(Calendar.YEAR));
System.out.println(hoy.toString()); }}
![Page 31: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/31.jpg)
Juego del gato
Para el gato se requiere un arreglo de 3x3, en donde cada elemento puede ser 0 (vacío), 1 (X) o 2 (O).
Un contador de jugadas para determinar a quien le toca (X o O).
class ClaseGato{int tablero[][];int numJugada;
...
}
Tablero
Contador de jugadas, si es par le toca a X, sino a O.
![Page 32: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/32.jpg)
Inicio del juego
public ClaseGato(){ tablero = new int[3][3]; inicia();}public void inicia(){ int i,j; numJugada = 0; for(i=0; i<3 ; i++) for(j=0; j<3 ; j++) tablero[i][j] = BLANCO;//tablero vacío}
![Page 33: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/33.jpg)
Procesar una jugada
public void jugada(int r, int c){ if(tablero[r][c]==BLANCO){ numJugada++; if(numJugada%2==0) tablero[r][c]=X; else tablero[r][c]=O; }}
Renglón de la jugada Columna de la jugada
Constantes con valores adecuados
![Page 34: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/34.jpg)
Dibujo del tablero
w1w2
g.fillRect(20+(w1+w2)*j,
20+(w1+w2)*i,w1,w1);
j = columna
i = renglón
g.fillRect(20,20,3*w1+2*w2,3*w1+2*w2);
![Page 35: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/35.jpg)
Detección de renglón y columna
public int renglonColumna(int y){ if(y>=20 && y<=20+w1) return 0; else if(y>=20+w1+w2 && y<=20+2*w1+w2) return 1; else if(y>=20+2*w1+2*w2 && y<=20+3*w1+2*w2) return 2; else return -1;}
Este método regresa el número de renglón que corresponde a una coordenada y. Si cae fuera del tablero regresa -1. La detección de columna es igual que la de renglón así que definimos una sola función.
![Page 36: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/36.jpg)
Applet para el gato
import java.applet.*;import java.awt.*;public class Gato extends Applet{ ClaseGato gato; Button b; public void init(){ gato = new ClaseGato(); b = new Button("Iniciar"); setLayout(null); b.setBounds(200,10,100,25); add(b); } public void paint(Graphics g){ gato.dibuja(g); }
![Page 37: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/37.jpg)
Lectura del mouse
public boolean mouseDown(Event e, int x, int y){ int r = gato.renglonColumna(y); int c = gato.renglonColumna(x); if(r>=0 && c>=0){ showStatus("renglon "+r+" columna "+c); gato.jugada(r,c); repaint(); } else showStatus("Fuera"); return true;}
Renglón y columna de la jugada
Ejecuta jugada
![Page 38: Estructuras Programación. Estructuras en Java Las estructuras en Java se definen como clases. La estructura permite almacenar datos de diferentes tipos](https://reader036.vdocumento.com/reader036/viewer/2022062315/5665b4911a28abb57c9243b1/html5/thumbnails/38.jpg)
Procesamiento del botón
public boolean action(Event e, Object o){ if(e.target == b){ gato.inicia(); repaint(); } return true;}