На этом шаге мы рассмотрим модульность.
В традиционном структурном программировании модульность - это искусство раскладывать подпрограммы по кучкам так, чтобы в одну кучку попадали подпрограммы, использующие друг друга или изменяемые вместе. В объектно-ориентированном программировании желательно физически разделить классы и объекты (в данном случае это экземпляры классов), составляющие логическую структуру проекта.
Для небольших задач допустимо описание всех классов и объектов в одном модуле. Однако для большинства программ лучшим решением будет сгруппировать в отдельный модуль логически связанные классы и объекты, оставив открытыми те элементы, которые должны быть видны из других модулей. Следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.
На выбор разбиения на модули могут влиять некоторые внешние обстоятельства. При коллективной разработке программ распределение работы осуществляется, как правило, по модульному принципу, и правильное разделение проекта минимизирует связи между участниками.. Документирование проекта, как правило, также строится по модульному принципу - модуль служит единицей описания и администрирования.
Таким образом, принципы абстрагирования, инкапсуляции и модульности являются взаимодополняющими. Класс логически определяет границы определенной абстракции, а инкапсуляция и модульность физически определяет их.
На следующем шаге мы рассмотрим иерархию.