@dezzcore

Как правильно выделить объект и класс в ООП?

Везде классы и объекты объясняются через простые примеры, но что если у меня стоит задача разработать для автопарка систему учета выхода автобусов на линии, где будет осуществлена запись в файл данных. Куда входят: дата выхода на линию, время выхода, марка автобуса, его городской номер, номер маршрута, ФИО водителя и т.д. На простых примерах все ясно и понятно, но как быть вот с этим, что здесь будет являться классом? Я предполагаю, что это будет просто объект под названием Info, который содержит в себе все эти данные(поля), но не совсем уверен в этом.
  • Вопрос задан
  • 458 просмотров
Решения вопроса 2
Decadal
@Decadal
В том, чтобы разбить большую задачу на классы, сильно помогает база данных. Проводя нормализацию таблиц, вы проектируете почти полностью подходящие для вас сущности.

Но если начать с проектирования кода, то смотрите: класс Info это слишком общее название. У вас всё - info.

Должен быть класс Driver который содержит информацию о водителе(если водитель не выделен в класс Person). Есть класс Bus, который знает про марку авто. Возможно, он будет содержать list of drivers - с инфой о том, кто обычно управляет этим авто, а может вам нужен driver - ссылка на один объект класса Driver, если нужно знать, кто управляет автобусом именно сейчас.
Направление понятно?
Ответ написан
@Ascar
Ваши доменные объекты будут примерно такими:

class Bus{
    public string Model {get;}
    public string Number {get;}    
    public Driver Driver {get;}   
    public Line Line{get;}
    public Bus(string model, string number, Driver driver, Line line){
        Model = model;
        Number = number;
        Driver=driver;
        Line=line;
    }
}

class Driver{
    public string Name {get;}    
    public Driver(string name){
        Name = name;        
    }
}

class Line{
    public DateTime GoTime {get;}
    public string Number {get;}    
    public Line(DateTime goTime, string number){
        GoTime = goTime;
        Number = number;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы