3. Учебный пример: класс "карта" для карточной игры Рассмотрим, какие переменные для представления состояния и методы для реализации поведения необходимы в абстрактном классе "карта" CCard, который может использоваться в произвольной карточной игре.
На рис. 3.1 показана CRC-карточка, описывающая состояние и поведение игральной карты. Поскольку пока не уточняется структура конкретной программы, в которой используется класс CCard, нельзя указать сотрудничающие с классом компоненты. Обязанности класса CCard очень ограничены, он является менеджером данных, описывающих состояние игральной карты – масть, ранг, расположение на столе. Поведение класса состоит из методов, связанных с отображением карты на экране и изменением состояния.
Класс CCard
| Сотрудничающие компоненты
| Хранит масть и ранг карты
Возвращает цвет карты
Хранит состояние "картинка вверх" или "картинка вниз"
Рисует карту на экране
Удаляет карту с экрана
|
| Рис. 3.1. CRC-карточка класса CCard. CRC-карточки многократно уточняются и переписываются, постепенно эволюционируя от естественного языка к тексту программы. После определения обязанностей класса надо выбрать имена для его методов и указать для них список параметров. Описание может не поместиться на одну карточку, тогда придется скреплять скрепками несколько карточек (или заменить их на обычные листы бумаги).
На рис. 3.2 показана CRC-карточка класса CCard с записанными именами методов. Обратите внимание, что даже если обязанность состоит всего лишь в возврате значения (например, признака "картинка вверх"), все равно для этого определяется специальный метод. Более подробно необходимость введения посредников для доступа к атрибутам класса будет обоснована позже.
На оборотной стороне CRC-карточки можно записать имена и типы атрибутов данного класса. Затем надо переходить от СRC-карточки к описанию поведения и состояния на языке программирования.
Класс CCard (описание методов)
| Сотрудничающие компоненты
| Suit – возвращает масть карты
Rank – возвращает ранг карты
Color – возвращает цвет карты
Draw, Erase – рисует или удаляет образ карты с экрана
IsFaceUp, Flip – проверяет или изменяет состояние "картинка вверх"
|
| Рис. 3.2. Уточненная CRC-карточка класса CCard.
4. Две части описания класса: интерфейс и реализация ООП является развитием идей модульности и скрытия информации. Принципы Парнаса ("ничего лишнего") применимы к ООП в той же мере, что и к модульному подходу. Их можно записать в терминах объектов следующим образом:
объявление класса должно обеспечивать клиента информацией, минимально необходимой для использования класса.
методам класса должна быть доступна вся информация, минимально необходимая для выполнения обязанностей класса.
Принципы Парнаса делят класс на две части: интерфейс (interface) и реализацию (implementation). Интерфейсная часть видна пользователю объекта. Она описывает, как объект взаимодействует с внешним миром. Пользователю разрешен доступ только к тем атрибутам и методам класса, которые описаны в интерфейсной части. Реализация определяет, как именно достигается выполнение обязанностей, объявленных в интерфейсной части.
|
| И. П. Гиривенко к т. н., доцент, зав кафедрой информатики и вычислительной... ...
| | И. П. Гиривенко к т. н., доцент, зав кафедрой информатики и вычислительной... ...
|
| Протокол №5 От 12 января 2012 г Заседания кафедры электроники и вычислительной... Зав кафедрой Хакимова Г. Г. сообщила, что кафедра проводит 2-й Чемпионат по цифровой схемотехнике
| | Методические рекомендации по подготовке, оформлению, предзащите и... В. А. Усков, заместитель декана естественно-географического факультета по развитию, доцент кафедры физической географии и методики...
|
| Проблемы коммуникации М. Е. Евсевьева (зав кафедрой, доцент А. А. Ветошкин); С. А. Борисова, директор Института международных отношений Ульяновского государственного...
| | Программа по формированию навыков безопасного поведения на дорогах... Елена Святославовна Симакова, кандидат педагогических наук, доцент кафедры гуманитарных и естественнонаучных дисциплин Рязанского...
|
| Программа курса по выбору «Орнитология» предназначена для студентов... Автор программы: к б н., доцент, зав кафедрой биологии и химии Марина Николаевна Харламова
| | Российской Федерации Федеральное государственное образовательное... Петренко И. М., зав кафедрой экономической теории, д-р экон наук профессор Дулин М. П., зав кафедрой педагогики и психологии, д-р...
|
| Рахманкулова Людмила Кузьминична, кандидат филологических наук, доцент... Автор программы: С. А. Виноградова, кандидат филологических наук, доцент, зав кафедрой английского языка и английской филологии
| | Программа по формированию навыков безопасного поведения на дорогах... ...
|
| Лингвистические проблемы Московского государственного педагогического института иностранных языков им. М. Тореза (зав кафедрой доцент Ю. А. Денисенко); д-р...
| | Мгпу учебно-методический комплекс дисциплины А. В. Прялухина, кандидат психологических наук, доцент, зав кафедрой психологии Российского государственного социального университета...
|
| Рабочая программа по дисциплине «теория экономического анализа» Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического...
| | Рабочая программа по дисциплине «международный менеджмент» Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического...
|
| Методические рекомендации по написанию курсовых работ дисциплине Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического...
| | Учебное пособие Краснодар 2008 В. А. Оробец); кафедра паразитологии и ветсанэкспертизы Донского государственного аграрного университета (зав кафедрой, проф., к...
|