Объективное программирование — страница 9

  • Просмотров 9126
  • Скачиваний 351
  • Размер файла 45
    Кб

которой возможна только через элементы-функции. В отличие от структуры класс имеет "приватную" (личную) часть, элементы которой не могут быть доступны иначе как через другие элементыфункции, и "публичную" (общую) часть, элементы которой могут быть использованы непосредственно. Объектом называется определяемая в программе переменная, тип которой определен как класс (структура): Определение структуры Определение

класса ------------------------- -----------------------------------struct dat class dat { { // Приватная часть int day,month,year; int day,month,year; public: // Публичная часть void SetDat(int,int,int); void SetDat(int,int,int); void SetDat(char *); void SetDat(char *); } аа} void main() void main() { { // Опред-ние переменных a,b // Опред-ние объектов a,b класса dat dat a,b; dat a,b; a.day = 5; // Непосредственное использование a.month = 12; // приватной части объекта запрещено bAA.SetDat("12,12,1990"); b.Setdat("12,12,1990"); } } "Приватная" часть класса не обязательно должна

следовать в начале определения класса. Для ее обозначения в произвольном месте определения класса можно использовать служебное слово private. Tаким образом в первом приближении класс отличается от структуры четко определенным интерфейсом доступа к его элементам. Объекты класса обладают всеми свойствами переменных, в том числе такими, как область действия и класс памяти (время жизни). Последнее свойство наиболее интересно, так

как процессы создания и уничтожения объектов класса могут сопровождаться вызовом функций (конструктор и деструктор). Напомним, что по классам памяти (и времени жизни) в Си различаются переменные: - статические (внешние), создаваемые в статической памяти программы и существующие в течение всего времени работы программы; - автоматические, создаваемые в стеке в момент вызова функции и уничтожаемые при ее завершении; - динамические,

создаваемые и уничтожаемые в свободной памяти задачи в моменты вызова функций malloc() и free() или выполнения операторов new и delete. Соответственно в программе возможно определение статических, автоматических и динамических объектов одного класса: class dat { ....... } dat a,b; // Статические объекты dat *p; // Ссылка на объект void main() { dat c,d; // Автоматические объекты p = new dat; // Динамический объект ... delete p; // Уничтожение динамического объекта }

<---------------------// Уничтожение автоматических объектов 3.2. Создание и уничтожение объектов. Конструкторы и деструкторы ------------------------------------- Процесс создания и уничтожения объектов класса ассоциируется при объектном программировании с созданием и уничтожением соответствующих им физических объектов. Поэтому с этими действиями необходимо связывать определяемые программистом функции для установки начальных значений,