4914

Конструкторы и деструкторы

Лекция

Информатика, кибернетика и программирование

Конструкторы и деструкторы Специальные методы объекта, которые предназначены для выполнения настроечных действий в момент создания каждого экземпляра объекта. В концепции ООП конструктор должен активизироваться автоматически, т.е....

Русский

2012-11-29

17.73 KB

16 чел.

Конструкторы и деструкторы

Конструкторы

Специальные методы объекта, которые предназначены для выполнения настроечных действий в момент создания каждого экземпляра объекта. В концепции ООП  конструктор должен активизироваться автоматически, т.е. если экземпляр объекта объявляется как простые переменные , объектов должно происходить уже в момент объявления, однако , язык паскаль изначально не был рассчитан на создание объектов. Первые объекты были введены в паскаль, начиная с версии 5.5. Использование объектов было сильно ограничено (только базовые возможности). В частности активизация конструкторов должна производиться явно, то есть перед началом использования объекта первой командой должна быть команда вызова конструктора. Любой объект может иметь только 1 конструктор. Конструктор может быть без параметра, может быть с параметрами.

Деструкторы.

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

Описание конструкторов и деструкторов.

В языке СИ конструктор и деструктор имеют такое же имя что и сам объект. В паскале для определения конструктора и деструктора необходимо использовать ключевые слова : constructor, destructor. Обычно в паскале конструктору дают имя init, а деструктору- destroy.

Пример:

Type

MyObj=object

Public

Constructor init;

Destructor destroy;

И конструктор и деструктор вызываются из вне объекта, поэтому они должны быть всегда в разделе public.  Далее конструктор и деструктор необходимо описать так же как и все остальные методы объекта.

Constructor MyObj.Init;

Begin

End;

Destructor MyObj.destroy;

Begin

End;

Далее в основной части программы экземпляр такого объекта может быть объявлен обычным способом:  

x1: my.Obj;

Begin

 X1.Init;

 

 …

 X1.destroy;

 End.

Если конструктор предполагается с параметрами, то они определяются точно так же как у любой процедуры:

Constructor MyObj.Init (a,b:integer);

Begin

End;

Деструкторы параметров иметь не должны.

Перегрузка методов.

Одной из концепций ООП является полиморфизм, то есть многообразие. Полиморфизм может быть реализован различными способами: виртуальными методами, динамическими и статическими методами и т.д. В том числе одним из проявлений полиморфизма является перегрузка методов.

Пример:

Предположим, что нам требуется объект, в котором присутствует метод print. Этот метод выводит что-либо на экран- например приветствие пользователя – дополнительно в нашем объекте должен быть метод , который тоже называется print и получает 2 параметра- a и b, вычисляет сумму этих чисел и печатает результат на экране. Через некоторое время нам потребовалось добавить в объект ещё 1 метод и тоже с название print, который получает 3 параметра (a,b,c), находит среди них максимум и печатает его на экране. Таким образом мы получили объект, который содержит 3 метода, но все эти методы имеют имя print. Вопрос: Каким образом программа будет определять, какой из методов требуется использовать. Ответ: Все методы с одинаковым именем должны отличаться количеством параметров, либо типом параметров.

При вызове:  x1.print(2,8) будет загружен и выполнен 2ой метод. При x1.print(2,7,8) -будет выполнен 3й. Данный механизм называется перегрузкой методов объекта.

Очень важное замечание!!!

В языке СИ++ данный механизм подразумевается изначально. В языке pascal изначально такой механизм разработан не был. Даже в полной версии турбо паскаля попытка использования 2х методов с одинаковым именем выдаст ошибку двойного определения. Только начиная с delphy 4й версии и выше в паскаль добавили поддержку перегрузки методов. Но чтобы не переписывать весь компилятор было решено добавить ещё 1 ключевое слово- overload. Описание осуществляется следующим образом:

Myobj= object

Procedure print; overload;

Procedure print(a,b: integer); overload;

Procedure print(a,b,c: integer); overload;

1.Программа содержит объект, который  имеет метод, вычисляющий по 2м параметрам  площадь треугольника. Дополнительно имеет метод pause для задержки и снабжен конструктором, который обнуляет внутренние данные и деструктором, который ничего не делает, а только пишет на экране, что работает деструктор.

2.Программа содержит некоторый объект, все данные объекта недоступны извне, при этом внутри объекта происходит обработка массива данных, размер этого массива заранее неизвестен, поэтому память под этот массив выделяется динамически в момент создания экземпляра объекта.


 

А также другие работы, которые могут Вас заинтересовать

65444. МІЦНІСТЬ ЗАЛІЗОБЕТОННИХ ПЛИТ ПРИ ПРОДАВЛЮВАННІ ШТАМПАМИ РІЗНОЇ ГЕОМЕТРІЇ 7.21 MB
  У сучасному будівництві все більше поширення отримують монолітні залізобетонні будинки з безригельним безкапітельним каркасом коли плоскі плити перекриттів постійної товщини опираються безпосередньо на колони.
65445. ПРАВОВЕ РЕГУЛЮВАННЯ ПЕНСІЙНОГО ЗАБЕЗПЕЧЕННЯ СУДДІВ В УКРАЇНІ 163 KB
  Одним із перших змін у спеціальному пенсійному законодавстві зазнало пенсійне забезпечення суддів у зв’язку із прийняттям Закону України Про судоустрій і статус суддів. Законом України Про судоустрій і статус суддів закріплено...
65446. ГІГІЄНІЧНА ОЦІНКА ОСОБЛИВОСТЕЙ ХАРЧУВАННЯ МОЛОДШИХ ШКОЛЯРІВ У ЗАГАЛЬНООСВІТНІХ НАВЧАЛЬНИХ ЗАКЛАДАХ РІЗНОГО ТИПУ 368 KB
  У сучасних соціальноекономічних реаліях життя в Україні коли змінюються умови навчання дітей та виникають його нові форми і програми дослідження з вивчення харчового статусу дитячого населення України з метою його корекції є вкрай актуальним але недостатньо вивченим...
65447. ТЕРИТОРІАЛЬНА ОРГАНІЗАЦІЯ ВИЩОЇ ОСВІТИ УКРАЇНИ 352.5 KB
  Оцінка впливу чинників на сучасний стан вищої освіти; Дослідження регіональних особливостей вищої освіти; Визначення відповідності розвитку вищої освіти рівню розвитку регіону Аналіз територіальної структури вищої освіти тенденцій її розвитку Типізація регіонів України...
65448. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ІНВЕСТИЦІЙ В ІННОВАЦІЙНІ ПРОЕКТИ ПРОМИСЛОВИХ ПІДПРИЄМСТВ 413.5 KB
  Результативність інноваційної діяльності підприємств залежить від розміру інвестицій які вкладаються та повинні окуповуватися за відповідний період часу. Оцінка економічної ефективності інвестицій в інноваційні проекти один із головних елементів технікоекономічного аналізу.
65449. МОДЕЛІ ТА МЕТОДИ АВТОМАТИЗАЦІЇ ПРОЕКТУВАННЯ ТЕХНОЛОГІЧНОГО ОСНАЩЕННЯ ДЛЯ ВИРОБІВ ІЗ ПЛАСТМАС 11.09 MB
  У сучасних системах автоматизованого проектування САПР при проектуванні технологічного оснащення ТО для виготовлення виробів із пластмас недостатньо враховуються особливості пластмасового матеріалу виробу які пов'язані з нестабільністю технологічних...
65450. ПРОДУКТИВНІСТЬ ТА М’ЯСНІ ЯКОСТІ СВИНЕЙ ВІТЧИЗНЯНИХ І ІМПОРТНИХ ГЕНОТИПІВ ЗА РІЗНИХ МЕТОДІВ РОЗВЕДЕННЯ В УМОВАХ ПРОМИСЛОВОЇ ТЕХНОЛОГІЇ 620 KB
  Нині в Україні розводять 11 порід свиней серед яких 3 вітчизняні спеціалізовані м’ясні породи що створені на багатопородній кросбредній основі які використовуються як батьківська форма в системах гібридизації.
65451. ІНТЕГРАЛЬНІ МОДЕЛІ КОМПАРАТОРНОЇ ІДЕНТИФІКАЦІЇ ТА ЇХ ЗАСТОСУВАННЯ ДЛЯ РОЗПІЗНАВАННЯ ЗОРОВОЇ ІНФОРМАЦІЇ 805 KB
  Задача ідентифікації для сенсорних систем формулюється таким чином: за входом і виходом що спостерігаються невідомого об'єкта необхідно побудувати оптимальну в деякому сенсі модель та знайти її невідомі параметри.
65452. Феномен самоідентичності в філософії символічного інтеракціонізму 141 KB
  Однією із провідних соціальних теорій визначення особистості є Яконцепція символічного інтеракціонізму досліджуючи яку можна збагнути сутність та чинники які впливають на визначення особистістю власного Я€. Саме основоположник символічного інтеракціонізму Дж. Дані проблеми які є досить...