You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
En la clase “CopaMundial” en el método “listaCopasMundiales” realiza varias tareas, como la lectura de archivos, el procesamiento de datos y la manipulación de excepciones. Sería mejor dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una nueva clase llamada Mundial y el método listaCopasMundiales pasa a la clase Mundial.
public class Mundial {
public static void main(String[] args) {
Equipo equipo = new Equipo();
Partido partido = new Partido();
Mundial mundial = new Mundial();
ArrayList<CopaMundial> copasMundiales = mundial.listaCopasMundiales("copasMundiales.txt");
}
public ArrayList<CopaMundial> listaCopasMundiales(String archivo) {
ArrayList<CopaMundial> copasMundiales = new ArrayList<>();
try (BufferedReader bf = new BufferedReader(new FileReader(archivo))) {
String linea;
while ((linea = bf.readLine()) != null) {
copasMundiales.add(CopaMundialMapper.crearCopaMundialDesdeLinea(linea));
}
} catch (IOException ioe) {
// Manejo de excepciones
}
return copasMundiales;
}
}
Clase copaMundial con atributos y metodos
class CopaMundial {
// Atributos y métodos de Copa Mundial
}
Creación de clase “CopaMundialMappeo” para manejar la lógica de mapeo desde una línea del archivo a un objeto “CopaMundial”.
class CopaMundialMapeo {
public static CopaMundial crearCopaMundialDesdeLinea(String linea) {
String[] datos = linea.split(",");
return new CopaMundial(Parámetros);
}
}
También se tiene la clase “Jugador” con el método “listaJugadores” realiza varias tareas, como la lectura de archivos, el procesamiento de datos y la manipulación de excepciones. Sería mejor dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una interfaz “JugadorReader” para abstraer el proceso de lectura de datos de los jugadores.
Además de la clase “Partido” el método “listaPartido” realiza múltiples tareas, como la lectura de archivos y la creación de objetos Partido. La solución para esto sería dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una interfaz “PartidoReader” para abstraer el proceso de lectura de datos de los partidos.
Se implementa la clase “PartidoFileReader” para manejar la lectura de datos desde un archivo.
class PartidoFileReader implements PartidoReader {
@Override
public List<Partido> readPartidos(String archivo) throws IOException {
List<Partido> listaPartidos = new ArrayList<>();
try (BufferedReader bf = new BufferedReader(new FileReader(archivo))) {
String linea;
while ((linea = bf.readLine()) != null) {
String[] datos = linea.split("\\|");
listaPartidos.add(PartidoMapper.crearPartidoDesdeDatos(datos));
}
}
listaPartidos.remove(0);
return listaPartidos;
}
}
Se crea la clase “PartidoMappeo” para encapsular la lógica de creación de objetos “Partido” desde datos.
class PartidoMappeo {
public static Partido crearPartidoDesdeDatos(String[] datos) {
// Lógica para crear un partido desde datos...
return new Partido(
datos[0].trim(), datos[1].trim(), datos[2].trim(), datos[3].trim(),
datos[4].trim(), datos[5].trim(), datos[6].trim(), datos[7].trim(),
datos[8].trim(), datos[9].trim(), datos[10].trim(), datos[11].trim(),
datos[12].trim(), datos[13].trim(), datos[14].trim(), datos[15].trim(),
datos[16].trim(), datos[17].trim(), datos[18].trim(), datos[19].trim()
);
}
}
O - Principio de Abierto/Cerrado (OCP - Open/Closed Principle)
La clase “CopaMundial” no tiene métodos o extensiones que permitan una fácil extensión sin modificar el código existente. Podría ser beneficioso agregar métodos o interfaces que permitan extensiones futuras sin modificar la clase actual.
import java.util.List;
// Interfaz para el gestor de la Copa Mundial
interface GestorCopaMundial {
void organizarCopaMundial(List<Partido> partidos);
// Métodos para gestionar la Copa Mundial
}
// Implementación específica del gestor de la Copa Mundial
class CopaMundial implements GestorCopaMundial {
private List<Partido> partidos;
// Constructor
public CopaMundial(List<Partido> partidos) {
this.partidos = partidos;
}
// Método para organizar la Copa Mundial
@Override
public void organizarCopaMundial(List<Partido> partidos) {
// Implementación para organizar la Copa Mundial
}
}
D - Principio de Inversión de Dependencia (DIP - Dependency Inversion Principle):
La clase “CopaMundial”, “Jugador” y “Partido” depende directamente de las clases FileReader, BufferedReader, y ArrayList. Podría considerarse la inversión de estas dependencias mediante la introducción de interfaces o abstracciones.
DIP clase CopaMundial
import java.util.List;
// Interfaz para el gestor de la Copa Mundial
interface GestorCopaMundial {
void organizarCopaMundial(List<Partido> partidos);
// Métodos adicionales para gestionar la Copa Mundial
}
// Implementación del gestor de la Copa Mundial
class CopaMundial implements GestorCopaMundial {
private List<Partido> partidos;
public CopaMundial(List<Partido> partidos) {
this.partidos = partidos;
}
// Método para organizar la Copa Mundial
@Override
public void organizarCopaMundial(List<Partido> partidos) {
// Implementación para organizar la Copa Mundial
}
}
DIP clase Jugadores
// Interfaz para el servicio de jugadores
interface ServicioJugadores {
List<Jugador> listaJugadores(String archivo);
// Metodos de jugadores
}
// Implementación específica del servicio de jugadores
class JugadorService implements ServicioJugadores {
@Override
public List<Jugador> listaJugadores(String archivo) {
// Implementación para cargar jugadores desde un archivo
}
}
DIP clase Partido
// Interfaz para el servicio de partidos
interface ServicioPartidos {
List<Partido> listaPartidos(String archivo);
// Métodos de partidos
}
// Implementación del servicio de partidos
class PartidoService implements ServicioPartidos {
@Override
public List<Partido> listaPartidos(String archivo) {
// Implementación para cargar partidos desde un archivo
}
}
The text was updated successfully, but these errors were encountered:
Diagrama UML del proyecto:
S - Principio de responsabilidad única (SRP)
En la clase “CopaMundial” en el método “listaCopasMundiales” realiza varias tareas, como la lectura de archivos, el procesamiento de datos y la manipulación de excepciones. Sería mejor dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una nueva clase llamada Mundial y el método listaCopasMundiales pasa a la clase Mundial.
public class Mundial {
}
Clase copaMundial con atributos y metodos
class CopaMundial {
}
Creación de clase “CopaMundialMappeo” para manejar la lógica de mapeo desde una línea del archivo a un objeto “CopaMundial”.
class CopaMundialMapeo {
}
También se tiene la clase “Jugador” con el método “listaJugadores” realiza varias tareas, como la lectura de archivos, el procesamiento de datos y la manipulación de excepciones. Sería mejor dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una interfaz “JugadorReader” para abstraer el proceso de lectura de datos de los jugadores.
interface JugadorReader {
}
Se implementa la clase “JugadorFileReader” para manejar la lectura de datos desde un archivo.
class JugadorFileReader implements JugadorReader {
}
Y por último se crea la clase "JugadorMappeo” para encapsular la lógica de creación de objetos Jugador desde datos.
class JugadorMappeo {
}
public class Jugador {
}
Además de la clase “Partido” el método “listaPartido” realiza múltiples tareas, como la lectura de archivos y la creación de objetos Partido. La solución para esto sería dividir estas responsabilidades en métodos más pequeños y específicos.
Se crea una interfaz “PartidoReader” para abstraer el proceso de lectura de datos de los partidos.
interface PartidoReader {
}
Se implementa la clase “PartidoFileReader” para manejar la lectura de datos desde un archivo.
class PartidoFileReader implements PartidoReader {
}
Se crea la clase “PartidoMappeo” para encapsular la lógica de creación de objetos “Partido” desde datos.
class PartidoMappeo {
}
O - Principio de Abierto/Cerrado (OCP - Open/Closed Principle)
La clase “CopaMundial” no tiene métodos o extensiones que permitan una fácil extensión sin modificar el código existente. Podría ser beneficioso agregar métodos o interfaces que permitan extensiones futuras sin modificar la clase actual.
import java.util.List;
// Interfaz para el gestor de la Copa Mundial
interface GestorCopaMundial {
}
// Implementación específica del gestor de la Copa Mundial
class CopaMundial implements GestorCopaMundial {
}
D - Principio de Inversión de Dependencia (DIP - Dependency Inversion Principle):
La clase “CopaMundial”, “Jugador” y “Partido” depende directamente de las clases FileReader, BufferedReader, y ArrayList. Podría considerarse la inversión de estas dependencias mediante la introducción de interfaces o abstracciones.
DIP clase CopaMundial
import java.util.List;
// Interfaz para el gestor de la Copa Mundial
interface GestorCopaMundial {
}
// Implementación del gestor de la Copa Mundial
class CopaMundial implements GestorCopaMundial {
}
DIP clase Jugadores
// Interfaz para el servicio de jugadores
interface ServicioJugadores {
}
// Implementación específica del servicio de jugadores
class JugadorService implements ServicioJugadores {
}
DIP clase Partido
// Interfaz para el servicio de partidos
interface ServicioPartidos {
}
// Implementación del servicio de partidos
class PartidoService implements ServicioPartidos {
}
The text was updated successfully, but these errors were encountered: