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



Pdf көрінісі
бет98/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   94   95   96   97   98   99   100   101   ...   256
5. КЛАССЫ 
"Эти типы не абстрактные, они столь же реальны, как int и float" 
- Даг Макилрой 
В этой главе описываются возможности определения новых типов, для которых доступ к данным 
ограничен заданным множеством функций, осуществляющих его. Объясняется, как можно использовать 
члены структуры данных, как ее защищать, инициализировать и, наконец, уничтожать. В примерах 
приведены простые классы для управления таблицей имен, работы со стеком, множеством и реализации 
дискриминирующего (т.е. надежного) объединения. Следующие три главы завершают описание 
возможностей С++ для построения новых типов, и в них содержится больше интересных примеров. 
5.1 Введение и краткий обзор 
Понятие класса, которому посвящена эта и три следующих главы, служит в С++ для того, чтобы дать 
программисту инструмент построения новых типов. Ими пользоваться не менее удобно, чем 
встроенными. В идеале использование определенного пользователем типа не должно отличаться от 
использования встроенных типов. Различия возможны только в способе построения
Тип есть вполне конкретное представление некоторого понятия. Например, в С++ тип float с операциями 
+, -, * и т.д. является хотя и ограниченным, но конкретным представлением математического понятия 
вещественного числа. Новый тип создается для того, чтобы стать специальным и конкретным 
представлением понятия, которое не находит прямого и естественного отражения среди встроенных 
типов. Например, в программе из области телефонной связи можно ввести тип trunk_module (линия-
связи), в видеоигре - тип explosion (взрыв), а в программе, обрабатывающей текст, - тип 
list_of_paragraphs (список-параграфов). Обычно проще понимать и изменять программу, в которой типы 
хорошо представляют используемые в задаче понятия. Удачно подобранное множество 
пользовательских типов делает программу более ясной. Оно позволяет транслятору обнаруживать 
недопустимое использование объектов, которое в противном случае останется невыявленным до 
отладки программы. 
Главное в определении нового типа - это отделить несущественные детали реализации (например, 
расположение данных в объекте нового типа) от тех его характеристик, которые существенны для 
правильного его использования (например, полный список функций, имеющих доступ к данным). Такое 
разделение обеспечивается тем, что вся работа со структурой данных и внутрение, служебные 
операции над нею доступны только через специальный интерфейс (через "одно горло"). 

Достарыңызбен бөлісу:
1   ...   94   95   96   97   98   99   100   101   ...   256




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

    Басты бет