I am going through training at my new job to use good object-oriented design with a 3-tier programming style. My supervisor says I have a design problem with my code:class Program{    public static void Main()    {        UserInputValidator Validater = new UserInputValidator();        int logSelected = -2;        Console.Write(\nFilepath: );        string filePath = Console.ReadLine();        while (logSelected != -1)        {            Console.WriteLine(\n + SELECT AN OPTION MENU);            Console.WriteLine(-----------------------);            Console.Write(\n +            /* Display option menu here with several options */            9 ) Exit\n\n);            Console.WriteLine(-----------------------);            logSelected = Convert.ToInt32(Console.ReadLine());            Validater.ValidateOptionsMenu(logSelected, filePath);        }    }    public void DisplayMessage(string message)    {        Console.WriteLine(message);    }}Validator.ValidateOptionsMenu() handles the logic for starting a process depending on the option that was selected.This is a 3-layer application with Presentation, Business, and Data Access layer. Program is in the Presentation layer, and other layers use code similar to the following to display a message:Program program = new Program();program.DisplayMessage(message);I need to understand why this is bad practice - my supervisor says the class Program only starts the application, like App class in WPF. It has to have only 1 responsibility. The interaction with user (my option menu) is delegated to another class. I am having a hard time understanding my supervisor, and I'm not sure how to fix it. Can anyone help me understand?
3-Tier Object-Oriented Design Flaw?
c#;object oriented;n tier