En la clase Sistema, el método main hace un login distinto por tipo de Usuario, es decir, verifica qué tipo de Usuario es para proceder. Como los tipos de Usuario tienen una implementación similar, pero para nada general. Esto es una violación a Liskov Sustitution Principle, ya que Usuario debería tener un método general para el login y presentación de menús de cada tipo de Usuario, pero en este caso está dependiendo de los detalles de cada uno. Los tipos de Usuario no pueden ser sustituidos por la clase padre Usuario ya que no funcionarían igual. Con esto último, también es una violación a Dependency Inversion Principle.
public abstract class Usuario{
//atributos y métodos necesarios
public void mostrarMenu(){
//Lógica para mostrar el menú
}
}
public class Sistema{
public static Collections<Usuario> usuarios = new ArrayList();
public static boolean login(){
//Lógica para hacer el login de los usuarios
}
public static void main(String[] args){
//Lógica para mostrar el menú según los usuarios del Sistema
}
}
En la clase Sistema, el método main hace un login distinto por tipo de Usuario, es decir, verifica qué tipo de Usuario es para proceder. Como los tipos de Usuario tienen una implementación similar, pero para nada general. Esto es una violación a Liskov Sustitution Principle, ya que Usuario debería tener un método general para el login y presentación de menús de cada tipo de Usuario, pero en este caso está dependiendo de los detalles de cada uno. Los tipos de Usuario no pueden ser sustituidos por la clase padre Usuario ya que no funcionarían igual. Con esto último, también es una violación a Dependency Inversion Principle.