Объектно-ориентированное проектирование с примерами


         

Ключевые абстракции - часть 3


Умножьте на тысячу объектов и сотни классов, и вы поймете, как остра проблема.

Мы предлагаем следующие правила:

    Объекты следует называть существительными: theSensor или shape.

    Классы следует называть обобщенными существительными: Sensors, Shapes.

    Операции-модификаторы следует называть активными глаголами: Draw, moveLeft.

    У операций-селекторов в имя должен включаться запрос или форма глагола "to be": extentOf, isOpen.

    Подчеркивание и использование заглавных букв - на ваше усмотрение, постарайтесь лишь не противоречить сами себе.

    Идентификация механизмов

    Как найти механизмы? В предыдущем обсуждении мы называли механизмами структуры, посредством которых объекты взаимодействуют друг с другом и ведут себя так, как требуется. Так же как при разработке класса фактически определяется поведение отдельных объектов, так же и механизмы служат для задания поведения совокупности объектов. Таким образом, механизмы представляют шаблоны поведения.

    Рассмотрим требование, предъявляемое к автомобилю: нажатие на акселератор должно приводить к увеличению оборотов двигателя, а отпускание акселератора - к их уменьшению. Как это происходит, водителю совершенно безразлично. Может быть использован любой механизм, обеспечивающий нужное поведение, и его выбор - дело вкуса разработчика. Например, допустимо любое из предложенных ниже инженерных решений:

      Механическая связь между акселератором и карбюратором (обычное решение).

      Под педалью ставится датчик давления, который соединяется с компьютером, управляющим карбюратором (механизм управления по проводам).

      Карбюратора нет. Бак с горючим находится на крыше автомобиля и топливо свободно течет в двигатель. Поток топлива регулируется зажимом на трубке. Нажатие на педаль акселератора ослабляет зажим (очень дешево).

      Какую именно реализацию выберет разработчик, зависит от таких параметров, как стоимость, надежность, технологичность и т.д.

      Подобно тому, как было бы недопустимой невежливостью со стороны клиента нарушать правила пользования сервером, также и выход за пределы правил и ограничений поведения, заданных механизмом, социально неприемлем.


      Содержание  Назад  Вперед