Давайте вернемся к определению

Название книги: 
ПРОГРАММИРОВАНИЕ на С++
Автор: 
УОЛТЕР САВИЧ

Давайте вернемся к определению класса DayOfYear (см. листинг 6.2). Тип DayOfYear предназначен для хранения значений, представляющих
собой даты, скажем праздников или дней рождения. Эти даты задаются двумя целыми
числами, определяющими день и месяц. Позднее мы могли бы для представления
месяца вместо одной переменной типа int применять три переменные типа char, в которых будут храниться три буквы сокращенного
названия месяца (например, 'Jt, ' а' и ' η' для января — January). Однако программисту, который пользуется в своих
программах классом DayOfYear, нет необходимости знать способ
представления месяца. Конечно, в случае изменения такового в классе DayOfYear придется менять и реализацию функции output, но не более того. Остальные части программы, в которых
используется данный класс, модифицировать не нужно. К сожалению, программа в
листинге 6.2
не
соответствует этому идеалу. Так, если заменить в классе DayOfYear одну переменную-член month тремя переменными типа char, придется модифицировать те части программы, где
имеются обращения к этой переменной, а именно: блок ввода-вывода и оператор if...else.

Идеальное
определение класса должно быть таким, чтобы изменение деталей реализации такого
класса не требовало модификации программ, в которых он используется. Для этого
класс должен содержать больше функций-членов, чем в нашем первом примере, чтобы
программа никогда не обращалась к переменным-членам класса непосредственно, а
оперировала данными объектов только через их функции-члены. Тогда при изменении
набора переменных-членов достаточно будет модифицировать определения
функций-членов, а не программу, в которой используется класс. Именно таким
образом переопределен класс DayOfYear в программе из листинга 6.3. Внимательно
просмотрев ее, вы увидите, что имена переменных- членов month и day используются
только в определениях функций-членов класса.

Страница: 
300

УОЛТЕР САВИЧ: ПРОГРАММИРОВАНИЕ на С++. Часть 2.