Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет212/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   208   209   210   211   212   213   214   215   ...   256
11.3.3.5 Перестройка иерархии классов 
Шаги 1 и 3 требуют исследования классов и их иерархии, чтобы убедиться, что они адекватно отвечают 
нашим требованиям. Обычно это не так, и приходится проводить перестройку для улучшения 
структуры, проекта или реализации. 
Самая типичная перестройка иерархии классов состоит в выделении общей части двух классов в новый 
класс или в разбиении класса на два новых. В обоих случаях в результате получится три класса: 
базовый класс и два производных. Когда следует проводить такую перестройку? Каковы общие 
показания, что такая перестройка будет полезной? 
К сожалению нет простого и универсального ответа на эти вопросы. Это и не удивительно, поскольку 
то, что предлагается, не является мелочью при реализации, а изменяет основные понятия системы. 
Важной и нетривиальной задачей является поиск общности среди классов и выделение общей части.
Нет точного определения общности, но следует обращать внимание на общность для понятий системы, 
а не просто для удобства реализации. Указаниями, что два класса имеют нечто общее, что возможно 
выделить в общий базовый класс, служат схожие способы использования, сходство наборов операций, 
сходство реализаций и просто тот факт, что часто в процессе обсуждения проекта оба класса
появляются одновременно. С другой стороны, если есть несколько наборов операций класса с 
различными способами использования, если эти наборы обеспечивают доступ к раздельным 
подмножествам объектов реализации, и, если класс возникает в процессе обсуждения несвязанных 
тем, то этот класс является явным кандидатом для разбиения на части.
В силу тесной связи между понятиями и классами проблемы перестройки иерархии классов 
высвечиваются на поверхности проблем именования классов и использования имен классов в процессе 
обсуждения проекта. Если имена классов и их упорядоченность, задаваемая иерархией классов, 
кажутся неудобными при обсуждении проекта, значит, по всей видимости, есть возможность улучшения 
иерархии. Заметим, что подразумевается, что анализ иерархии классов лучше проводить не в одиночку. 
Если вы оказались в таком положении, когда не с кем обсудить проект, хорошим выходом будет 
попытаться составить учебное описание системы, используя имена классов. 


Достарыңызбен бөлісу:
1   ...   208   209   210   211   212   213   214   215   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет