Programcion
* Esta clase representa un campeonato de f˙tbol
*/
public class Campeonato
{
//-----------------------------------------------------------------
// Constantes
//-----------------------------------------------------------------
/**
* Indica que el partido no se ha jugado
*/
public static final int SIN_JUGAR = -1;
/**
* Indica que elpartido no se puede jugar porque serÌa un equipo jugando contra Èl mismo
*/
public static final int INVALIDO = -2;
//-----------------------------------------------------------------
// Atributos
//-----------------------------------------------------------------
/**
* N˙mero de equipos en el campeonato
*/
private int maxEquipos;
/*** Es la tabla con los goles. En la posiciÛn (i,j) aparece el n˙mero de goles que el equipo i le hizo al equipo j
*/
private int[][] tablaGoles;
/**
* Es un arreglo con los equipos en el campeonato. En la posiciÛn i aparece la descripciÛn del equipo i
*/
private Equipo[] equipos;
//-----------------------------------------------------------------
//Constructores
//-----------------------------------------------------------------
/**
* Construye un nuevo campeonato de f˙tbol.
* @param arch Es el archivo que contiene la descripciÛn de los equipos del campeonato. arch != null.
* @throws Exception Se lanza esta excepciÛn si hay problemas cargando el archivo.
*/
public Campeonato( File arch ) throwsException
{
Properties datos = cargarInfoCampeonato( arch );
inicializarEquipos( datos );
inicializarTablaGoles( );
}
/**
* Carga la informaciÛn de los equipos del campeonato en un objeto de tipo Properties.
* @param arch Es el archivo que contiene la descripciÛn de los equipos del campeonato
* @return un objeto de la clase Properties con lainformaciÛn del archivo.
* @throws Exception Se lanza esta excepciÛn si el archivo no existe o si el formato del archivo no es v·lido y no puede ser leÌdo.
*/
private Properties cargarInfoCampeonato( File arch ) throws Exception
{
Properties datos = new Properties( );
FileInputStream in = new FileInputStream( arch );
try
{datos.load( in );
in.close( );
}
catch( Exception e )
{
throw new Exception( "Formato inv·lido" );
}
return datos;
}
/**
* Inicializa el arreglo de equipos con la informaciÛn que recibe en el par·metro de entrada.
* post: El arreglo de equipos fue inicializado con los nombres de los equipos que venÌan en elpar·metro de entrada.
* @param datos contiene la informaciÛn cargada del archivo para inicializar el campeonato. Esta informaciÛn es completa y v·lida.
*/
private void inicializarEquipos( Properties datos )
{
String strNumeroEquipos = datos.getProperty( "campeonato.equipos" );
maxEquipos = Integer.parseInt( strNumeroEquipos );
// Crea el arreglo deequipos, reservando el espacio definido en la propiedad "campeonato.equipos"
equipos = new Equipo[maxEquipos];
// Lee el nombre de cada equipo de la respectiva propiedad y crea el objeto que lo representa
for( int i = 0; i < maxEquipos; i++ )
{
String nombreEquipo = datos.getProperty( "campeonato.nombre" + i );
equipos[ i ] = newEquipo( nombreEquipo );
}
}
/**
* Crea la matriz que contiene la tabla de goles. Es una matriz cuadrada de maxEquipos filas y maxEquipos columnas
*/
private void inicializarTablaGoles( )
{
// Crea la matriz que contiene la tabla de goles
tablaGoles = new int[maxEquipos][maxEquipos];
// Inicializa todos los marcadores, dejando en la...
Regístrate para leer el documento completo.