Cтраница 2
Программист может указать, что новый класс наследует данные-элементы и функции-элементы ранее определенного базового класса. В этом случае новый класс называется производным классом. [16]
Создайте определенный пользователем класс Point, который содержит закрытые данные-элементы xCoordinate и yCoordinate и объявляет перегруженные функции-операции взять из потока и поместить в поток как дружественные функции класса. [17]
Создайте определенный пользователем класс Complex, который содержит закрытые данные-элементы real и imaginary и объявляет перегруженные функции-операции взять из потока и поместить в поток как дружественные функции класса. [18]
Каждая функция-элемент ( или дружественная функция), которая изменяет исходные данные-элементы, должна гарантировать, что данные остаются в не противоречащем друг другу согласованном состоянии. [19]
Выгоды целостности данных не вытекают просто автоматически из того, что данные-элементы объявляются закрытыми. Программист должен обеспечивать проверку их правильности. C предоставляет среду программирования, в которой программист может проектировать хорошие программы в удобной ему манере. [20]
![]() |
Определение класса Cylinder ( часть 1 из 3. [21] |
Этот пример наглядно демонстрирует открытое наследование, определения и ссылки на защищенные данные-элементы. Теперь читатель должен чувствовать себя уверенно в вопросах наследования. [22]
Доступ к закрытым данным посредством функций записи и чтения не только защищает данные-элементы от присваивания им неправильных значений, но и отделяет клиентов класса от внутреннего представления данных-элементов. Таким образом, если внутреннее представление этих данных по каким-либо причинам ( обычно из-за требований сокращения объема памяти или повышения производительности) изменяется, достаточно изменить только функции-элементы, а клиентам не требуется вносить никаких изменений, пока остается неизменным интерфейс функций-элементов. Однако, возможно, потребуется перекомпиляция клиентов данного класса. [23]
![]() |
Использование функций записи и чтения ( часть 4 из 4 Замечание по технике программирования. [24] |
Доступ к закрытым данным посредством функций записи и чтения не только защи щает данные-элементы от присваивания им неправильных значений, но и отделяет клиентов класса от внутреннего представления данных-элементов. Таким образом, если внутреннее представление этих данных по каким-либо причинам ( обычно из-за требований сокращения объема памяти или повышения производительности) изме няется, достаточно изменить только функции-элементы, а клиентам не требуется вносить никаких изменений, пока остается неизменным интерфейс функций-элемен тов. Однако, возможно, потребуется перекомпиляция клиентов данного класса. [25]
![]() |
Возвращение ссылки на закрытый элементу данных ( часть 3 из 3. [26] |
Замечание: побитовое копирование может вызвать серьезные проблемы, когда применяется к классу, чьи данные-элементы используют динамическое распределение памяти; в главе 8 Перегрузка операций мы обсудим эти проблемы и покажем, как их решать. [27]
Функции-элементы, которые записывают значения закрытых данных, должны проверять правильность предполагаемых новых значений; если они неправильные то эти функции должны установить закрытые данные-элементы в соответствующее им непротиворечивое состояние. [28]
Отметим, что данные-элементы класса не могут получать начальные значения в теле класса, где они объявляются. Эти данные-элементы должны получать начальные значения с помощью конструктора класса или им можно присваивать значения через функции. [29]
![]() |
Использование класса Time с константными объектами и константными функциями-элементами ( часть 3 из 3. [30] |