Случайный афоризм
Пока автор жив, мы оцениваем его способности по худшим книгам; и только когда он умер - по лучшим. Сэмюэл Джонсон
 
новости
поиск по автору
поиск по тематике
поиск по ключевому слову
проба пера
энциклопедия авторов
словарь терминов
программы
начинающим авторам
ваша помощь
о проекте
Книжный магазин
Главная витрина
Книги компьютерные
Книги по психологии
Книги серии "Для чайников"
Книги по лингвистике
ЧАВо
Разные Статьи
Статьи по литературе

Форма пользователя
Логин:
Пароль:
регистрация
 детектив



 драмма



 животные



 история



 компьютерная документация



 медицина



 научно-популярная



 очередная история



 очерк



 повесть



 политика



 поэзия и лирика



 приключения



 психология



 религия



 студенту



 технические руководства



 фантастика



 философия и мистика



 художественная литература



 энциклопедии, словари



 эротика, любовные романы



в избранноеконтакты

Параметры текста
Шрифт:
Размер шрифта: Высота строки:
Цвет шрифта:
Цвет фона:

программы -  именно  в  этом  случае  имеет  значение  выбор  языка
программирования.
  В  большинстве   разработок  имеются   понятия,  которые   трудно
представить в  программе в  виде одного  из основных  типов или как
функцию без  ассоциированных с ней статических данных. Если имеется
подобное понятие,  опишите класс,  представляющий его  в программе.
Класс -  это тип;  это значит, что он задает поведение объектов его
класса: как  они создаются, как может осуществляться работа с ними,
и как  они уничтожаются.  Класс также  задает способ  представления
объектов; но на ранних стадиях разработки программы это не является
(не должно  являться) главной  заботой. Ключом  к написанию хорошей
программы является  разработка таких  классов, чтобы  каждый из них
представлял  одно   основное  понятие.  Обычно  это  означает,  что
программист  должен  сосредоточиться  на  вопросах:  Как  создаются
объекты этого  класса? Могут  ли  эти  объекты  копироваться  и/или
уничтожаться? Какие действия можно производить над этими объектами?
Если на такие вопросы нет удовлетворительных ответов, то во-первых,
скорее всего,   понятие  не было  "ясно", и  может быть неплохо еще
немного подумать  над задачей  и предлагаемым решением вместо того,
чтобы сразу начинать "программировать вокруг" сложностей.
  Проще  всего   иметь  дело  с  такими  понятиями,  которые  имеют
традиционную математическую  форму: числа  всех  видов,  множества,
геометрические фигуры  и т.п.  На самом  деле, следовало  бы  иметь
стандартные библиотеки  классов, представляющих такие понятия, но к
моменту написания  это  не  имело  места.  C++  еще  молод,  и  его
библиотеки не развились еще до той же степени, что и сам язык.
  Понятие не  существует в  пустоте, всегда  есть группы  связанных
между собой понятий. Организовать в программе взаимоотношения между
классами, то  есть определить  точную взаимосвязь  между различными
понятиями,  часто   труднее,  чем  сначала  спланировать  отдельные
классы. Лучше, чтобы  не получилось неразберихи, когда каждый класс
(понятие) зависит  от всех остальных. Рассмотрим два класса, A и B.
Взаимосвязи вроде  "A вызывает функции из B", "A создает объекты B"
и "A имеет члены B" редко вызывают большие сложности, а взаимосвязь
вроде "A  использует данные из B" обычно можно исключить (просто не
используйте  открытые   данные-члены).  Неприятными,  как  правило,
являются взаимосвязи,  которые по своей природе имеют вид "A есть B
и ...".
  Одним из  наиболее мощных  интеллектуальных средств,  позволяющих
справляться со  сложностью, является иерархическое упорядочение, то
есть  организация  связанных  между  собой  понятий  в  древовидную
структуру с  самым общим  понятием в  корне. В  C++ такие структуры
представляются  производными  классами.  Часто  можно  организавать
программу как  множество  деревьев  (лес?).  То  есть,  программист
задает  набор   базовых  классов,  каждый  из  которых  имеет  свое
собственное множество  производных классов.  Для определения набора
действий для  самой общей  интерпретации понятия  (базового класса)
часто   можно    использовать   виртуальные    функции    (#7.2.8).
Интерпретацию  этих   действий  можно,   в  случае   необходимости,

                             - стр 17 -

усовершенствовать для  отдельных специальных  классов  (производных
классов).
  Естественно,  такая   организация  имеет   свои  ограничения.   В
частности, множество  понятий  иногда  лучше  организуется  в  виде
ациклического  графа,   в  котором  понятие  может  непосредственно
зависеть от более чем одного другого понятия; например, "A есть B и
C и  ...". В  C++ нет непосредственной поддержки этого, но подобные
связи можно  представить, немного  потеряв в  элегантности и сделав

1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : 81 : 82 : 83 : 84 : 85 : 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : 94 : 95 : 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 : 146 : 147 : 148 : 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : 158 : 159 : 160 : 161 : 162 : 163 : 164 : 165 : 166 : 167 : 168 : 169 : 170 : 171 : 172 : 173 : 174 : 175 : 176 : 177 : 178 : 179 : 180 : 181 : 182 : 183 : 184 : 185 : 186 : 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : 195 : 196 : 197 : 198 : 199 : 200 : 201 : 202 : 203 : 204 : 205 : 206 : 207 : 208 : 209 : 210 : 211 : 212 : 213 : 214 : 215 : 216 : 217 : 218 : 219 : 220 : 221 : 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 : 230 : 231 : 232 : 233 : 234 : 235 : 236 : 237 : 238 : 239 : 240 : 241 : 242 : 243 : 244 : 245 : 246 : 247 : 248 : 249 :
главная наверх

(c) 2008 Большая Одесская Библиотека.