Cтраница 3
Поскольку параметр V объявлен со спецификатором const, значения каких-то полей записи V изменять нельзя. Таким образом, в методе SetProperty свойство - это или действительно свойство вашего класса, или просто некоторое поле данных класса с любым доступом: private или public. Может в качестве свойства выступать также какая-то переменная, объявленная в реализации вашего модуля. А если запись вашего класса содержит ссылку на какой-то объект, как рассматривалось в разд. [31]
Программирующие на C концентрируются на определении своих собственных пользовательских типов, называемых классами. Каждый класс содержит как данные, так и набор функций, манипулирующих этими данными. Данные класса, входящие в его состав, называются элементами данных класса. Функциональные компоненты класса называются его элементами-функциями. Если представитель встроенного типа, например, типа int, называется переменной, то представитель пользовательского типа ( т.е. класса) называется объектом. Внимание в языке C фокусируется на объектах, а не на функциях. Существительные в спецификации системы помогают программисту определить набор классов C, на основе которых будут созданы объекты, совместная работа которых обеспечит реализацию системы. [32]
Программисты на C сосредоточены на создании своих собственных определяемых пользователем типов, называемых классами. Каждый класс содержит данные и набор функций, которые манипулируют этими данными. Компоненты данные класса называются данными-элементами. Компоненты функции класса называются функциями-элементами. Точно так же, как экземпляр встроенного типа, такого как int, называется переменной, экземпляр определенного пользователем типа ( т.е. класса) называется объектом. Программист использует встроенные типы как блоки для конструирования определенных пользователем типов. В C внимание фокусируется скорее на объектах, чем на функциях. Имена существительные в описании системы помогают программисту на C при создании системы определить набор классов, из которых будут созданы объекты, которые, работая совместно, и обеспечивают функционирование системы. [33]
Программисты на C сосредоточены на создании своих собственных определяемых пользователем типов, называемых классами. Каждый класс содержит данные и набор функций, которые манипулируют этими данными. Компоненты данных класса называются данными-элементами. Компоненты функций класса называются функциями-элементами. [34]
Наследование - новый, или производный класс может быть определен на основе уже имеющегося, или базового. При этом новый класс сохраняет все свойства старого: данные объекта базового класса включаются в данные объекта производного, а методы базового класса могут быть вызваны для объекта производного класса, причем они будут выполняться над данными включенного в него объекта базового класса. Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки. [35]
ЗПО, для которых должны собираться данные класса SEEKS. Операнд используется, если необходимо ограничить затраты на получение и обработку информации, по сравнению со сбором данных класса SEEKS для всех ЗПО. DELete удаляет список устройств, обеспечивая сбор данных класса SEEKS для всех ЗПО. DISplay отображает содержимое списка устройств на АП. [36]
Программирующие на C концентрируются на определении своих собственных пользовательских типов, называемых классами. Каждый класс содержит как данные, так и набор функций, манипулирующих этими данными. Данные класса, входящие в его состав, называются элементами данных класса. Функциональные компоненты класса называются его элементами-функциями. Если представитель встроенного типа, например, типа int, называется переменной, то представитель пользовательского типа ( т.е. класса) называется объектом. Внимание в языке C фокусируется на объектах, а не на функциях. Существительные в спецификации системы помогают программисту определить набор классов C, на основе которых будут созданы объекты, совместная работа которых обеспечит реализацию системы. [37]
Перегруженная операция должна иметь в качестве левого операнда тип ostream & ( такой, как cout в выражении cout classObject), так что она должна быть функцией, не являющейся элементом класса. Аналогично операция должна иметь в качестве левого операнда тип istream & ( такой, как cin в выражении cin classObject) и не являться функцией-элементом. Кроме того, каждая из этих перегружающих операцию функций требует доступа к закрытым элементам данных класса объектов, который должен выводиться или вводиться. Так что эти перегружающие операцию функции делаются обычно дружественными функциями класса по причинам, связанным с эффективностью. [38]
Эти операции являются перегруженными ( в библиотеке классов, поставляемых с компиляторами C), и могут обрабатывать любой стандартный тип данных, включая строки и адреса памяти. Кроме того, операции передачи и извлечения из потока могут быть перегружены, чтобы выполнять ввод и вывод типов, определяемых пользователем. На рис. 18.3 показана перегрузка операций передачи и извлечения из потока, позволяющая им обрабатывать данные класса телефонного номера ( определенного пользователем) Phone-Number. В этой программе предполагается, что телефонный номер введен корректно. Проверку корректности ввода номера мы оставляем читателю в качестве упражнения. [39]
Чтобы использовать операцию с объектами класса, эта операция должна быть перегружена, но здесь есть два исключения. Операция присваивания () может использоваться с любым классом без перегрузки. Поведение по умолчанию операции присваивания ( в тех случаях, когда она не перегружена) обеспечивается поэлементным копированием элементов данных класса. Далее мы увидим, что такая поэлементная копия, создаваемая по умолчанию, представляет опасность для классов, элементы которых ссылаются на динамически выделяемые области памяти; для таких классов мы, как правило, будем перегружать операцию присваивания. Операция адреса ( &) также может использоваться с объектами любого класса без перегрузки; эта операция просто возвращает адрес объекта в памяти. [40]
![]() |
Определение класса Employee ( часть 1 из 5. [41] |
Определение класса Employee ( рис. 19.5, часть 1) состоит из двух закрытых элементов-данных типа char - firstName и lastName - и трех функций-элементов - конструктора, деструктора и функции print. Конструктор ( рис. 19.5, часть 2) получает две строки и выделяет динамически массивы символов для хранения строк. В противном случае программа завершается сообщением об ошибке, в котором указаны проверяемоеое условие, номер строки, где возникло условие, и файл, в котором производится проверка. Поскольку данные класса Employee закрытые, доступ к ним возможен только через функцию-элемент print, которая просто выводит на печать имя и фамилию служащих. Деструктор возвращает системе динамически выделенную область памяти. [42]