Практикум по объектно-ориентированному программированию на базе языка с++ Учебно-методическое пособие



Pdf көрінісі
бет13/44
Дата21.02.2024
өлшемі0.49 Mb.
#492719
түріПрактикум
1   ...   9   10   11   12   13   14   15   16   ...   44
ООП С

Контрольные вопросы 
 
1. Какие функции эффективно используются в качестве встроенных? 
2. Когда вызываются конструкторы, деструкторы класса для глобаль-
ных объектов? 
3. Что такое указатель this
4. Приведите примеры, когда понадобится явное использование указа-
теля this
 
 
26 
ЛАБОРАТОРНАЯ РАБОТА № 5. 
ДАТА В ОБЪЕКТНО-ОРИЕНТИРОВАННОМ 
ПРОГРАММИРОВАНИИ 
 
Ключевые слова: методы, системная дата, високосный год, функ-
ции сравнения сравнение объектов. 
 
Цель: Получить навыки разработки класса для хранения даты
и использования объектов этого класса. 
 
Методы класса – это функции, которые могут применяться к экзем-
плярам класса. Метод – это функция, объявленная внутри класса и предна-
значенная для работы с его объектами. 
Методы доступа. Поля класса в общем случае не должны быть 
доступны извне, поскольку такой доступ позволил бы произвольным обра-
зом менять внутреннее состояние объектов. Поэтому поля обычно объяв-
ляются скрытыми, а для доступа к находящимся в полях данным использу-
ются специальные методы, называемые методами доступа. Такие методы 
либо возвращают значение того или иного поля, либо производят запись
в это поле нового значения. При записи метод доступа может проконтро-
лировать допустимость записываемого значения и, при необходимости
произвести другие манипуляции с данными 
объекта, чтобы они остались 
корректными (внутренне согласованными). Методы доступа называют еще 
аксессорами (от англ. access – доступ), а по отдельности – геттерами (англ. 
get – чтение) и сеттерами (англ. set – запись). 
Имя метода-сеттера принято предварять строкой «set_», указыва-
ющей проектировщику на то, что этот метод предназначен для изменения 
значения соответствующего атрибута объекта (например, метод 
set_name() для атрибута name). Обычно такие методы не возвращают ни-
каких значений, или же возвращают значение кода, указывающее на 
успешность выполнения операции. 
// реализация метода, изменяющего имя персоны 
void person::set_name(char* value) 

// освобождаем память, содержащую имя: 
delete []name; 
// выделяем память под новую строку 
name = new char[strlen(value)+1];
// копируем эту строку в область памяти 
strcpy(name, value);



27 
Задача этих методов состоит в том, чтобы переложить логику
работы с атрибутами на класс. Именно класс должен обеспечивать выпол-
нение правил работы со своими атрибутами.
Так, приведенный выше код говорит о том, что изменение имени 
предполагает не побитовое копирование указателей на строку, а копирова-
ние самой строки, находящейся по соответствующему адресу. В случае же 
использования открытого атрибута любой клиент класса вправе делать
со значением атрибута все, что угодно. 
Имена методов-геттеров предваряют строкой «get_», обозначаю-
щей получение ими значений атрибутов объекта. Эти методы используют 
для возвращения значений скрытых атрибутов объекта и вычисления, 
связанных с ними показателей (см. пример выше). 
// реализация метода, возвращающего имя человека 
const char* person::get_name() const 

return name; 

Если метод не изменяет значения членов класса, то лучше объ-
явить его как константный метод. Для этого используется ключевое слово 
const после объявления списка аргументов. 
Если объект класса передается в качестве аргумента с атрибутом 


Достарыңызбен бөлісу:
1   ...   9   10   11   12   13   14   15   16   ...   44




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

    Басты бет