Разработка снизу вверх: постройте прочный базис, затем применяйте его к специальным случаям.
Бесшовность: применяйте согласованные приемы и инструментарий на этапах анализа, проектирования, разработки и сопровождения.
Обратимость: извлекайте пользу из уроков реализации и корректируйте
Обобщение: из специализированных классов создавайте повторно используемые классы.
Системы создаются только из классов.
Стиль разработки - снизу вверх. Начинайте с того, чем вы располагаете.
Пытайтесь сделать классы с самого начала настолько общими, насколько это возможно.
Пытайтесь сделать классы с самого начала настолько автономными, насколько это возможно.
Два отношения между классами: клиент (с вариантами "ссылочный клиент" и "развернутый клиент"), наследование. Тесное соответствие с отношениями "has" и "is".
Используйте многослойную архитектуру для разделения абстрактного интерфейса и реализации для различных платформ:
Проектируйте с учетом изменений и повторного использования.
При улучшениях проекта вводите понятие устарелых (obsolete) компонентов и классов для облегчения перехода к новой версии.
Каждый класс должен соответствовать хорошо определенной абстракции данных.
Подход Списка Закупок: если компонент потенциально полезен и согласуется с абстракцией данных, добавьте его.
Классы, предоставляющие льготы: связанная группа полезных свойств (например множество констант).
Активные структуры данных (объекты как
Ключевым решением является задание статуса доступа компонентов: закрытых или экспортируемых.
Используйте выборочный экспорт для группы тесно связанных классов: LINKED_LIST, LINKABLE.
Обновление необъектного ПО: инкапсулируйте абстракции в классы (примером является библиотека Math ).
Помещайте в класс настолько много информации, насколько это возможно.
Задавайте заголовочные комментарии тщательно и согласованно; они являются частью официального интерфейса.
Проектирование компонентов интерфейса
Принцип Разделения Команд и Запросов: функция не должна иметь абстрактного побочного эффекта (конкретный побочный эффект допустим).
В качестве аргументов используйте только операнды.
Установите статус, затем выполняйте операцию.
Для каждой команды, устанавливающей статус, обеспечьте запрос, возвращающий статус.
Для запросов без аргументов внешне не должна быть видима разница в их реализации - атрибутом или функцией.
Допускайте у объектов изменение представления по умолчанию в зависимости от результата запрашиваемой операции (примером является класс комплексных чисел).
Структуры с курсором ( LIST, LINKED_LIST и многие другие).
Предусловие связывает клиента,
Делайте предусловие достаточно сильным, чтобы программа могла хорошо делать свою работу, - но не сильнее.
Два вида предложений инварианта: некоторые предложения идут от лежащей в основе абстракции данных, другие ( инвариант представления ) описывают согласованные свойства реализации. Используйте инвариант, чтобы выразить и улучшить ваше понимание отношений между различными составляющими класса, в частности атрибутами.
Для запросов без аргументов включайте
При повторном объявлении допустимо ослабление предусловий, позволяющее расширить область применения подпрограммы.
Для достижения эффекта усиления предусловия используйте абстрактные предусловия (основанные на булевых функциях) в оригинале.
Даже и без необходимости усиления абстрактные предусловия являются предпочтительными.
Любое предусловие должно обеспечиваться и проверяться клиентом перед вызовом компонента.
Не усердствуйте в усилении постусловий - оставьте возможность их усиления потомками (например, можно оставить одностороннюю
Априорная проверка: до выполнения операции проверяйте возможность ее применения.
Апостериорная проверка: выполните операцию, затем запросите атрибут для выяснения того, как она сработала.
Когда все рушится, используйте обработку исключений.
Организованный отказ: если в конце выполняется предложение rescue, не забудьте восстановить инвариант. Вызывающая программа получит также исключение.
Повторение выполнения: испробуйте другой алгоритм или (стратегия надежды) тот же повторно. Сохраните информацию в атрибутах или локальных сущностях, инициализируемых в момент вызова, но не при повторах retry.
Переопределяя подпрограмму, используйте специфические алгоритмы для повышения эффективности: perimeter в POLYGON, RECTANGLE, SQUARE.
Переопределяйте функцию как атрибут: balance в ACCOUNT.
Делайте эффективным отложенный компонент родителя.
Объединяйте два или более компонентов через эффективизацию (все, кроме одного, должны быть отложенными, эффективный побеждает). Если нужно, то не переопределяйте некоторые из эффективных компонентов.
Два или более эффективных компонентов можно переопределить совместно.
Доступ к родительской версии при переопределении обеспечивает precursor.
Повторные объявления сохраняют семантику (правила утверждений).
Отложенные классы описывают категории высокого уровня.
Отложенные классы служат средством анализа и проектирования, описывая абстракции без ссылок на реализацию.
Классы поведения: задают общее поведение. Эффективные подпрограммы вызывают отложенные. Класс является частично отложенным, частично реализованным (охватывает частичный выбор реализации АТД).
Полиморфные структуры данных: наследование и универсальность позволяют комбинировать в нужных пропорциях подобие и вариации.
Описатели: благодаря полиморфным атрибутам задают компонент изменяемого типа.
Динамическое связывание: позволяет избежать явного разбора случаев.
Динамическое связывание на полиморфных структурах данных: применяет к каждому элементу структуры операцию, соответствующую элементу.
В точке единственного выбора полезна предварительно вычисленная структура данных с одним объектом каждого возможного типа (как в образце с откатами).
Убедитесь, что все использования наследования принадлежат одной из категорий в таксономии.
Наследование подтипов.
Наследование, приводящее к расширению модуля.
Брак по расчету: реализация абстракции конкретной структурой.
Наследование с ограничением: добавление ограничения.
Наследование общецелевых механизмов благодаря классам, предоставляющим льготы.
Наследование функциональных вариаций: "организованное хакерство", принцип Открыт-Закрыт.
Наследование вариации типа: ковариантность.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.