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.Программа содержит некоторый объект, все данные объекта недоступны извне, при этом внутри объекта происходит обработка массива данных, размер этого массива заранее неизвестен, поэтому память под этот массив выделяется динамически в момент создания экземпляра объекта.


 

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

36643. Процесуальне право 1022 KB
  Цивільне процесуальне право як галузь права це сукупність правових норм що регулюють діяльність суду загальної юрисдикції осіб які беруть участь у справі та інших учасників цивільного процесу щодо здійснення правосуддя у цивільноправових спорах щодо справ наказного окремого провадження а також такі що виникають у звязку із цією діяльністю суспільні відносини щодо розгляду та вирішення зазначених категорій справ. Цивільний процес це сукупність процесуальних дій суду інших осіб які беруть участь у справі а також інших...
36644. Фінансовий аналіз, короткий конспект лекцій 469 KB
  Перехід до ринкової економіки юридичне визначення діяльності підприємства в умовах різних форм власності викликає необхідність високої компетенції в бізнесі. Для того щоб зберегти ринкові позиції в умовах жорсткої конкуренції будьякому виробникові можливо лише за умови прийняття адекватних ситуації ефективних управлінських рішень а для обґрунтованості цих рішень виробник має володіти обєктивною інформацією про фінансовий стан підприємства мати оцінку фінансових результатів його діяльності. Отже досягнення стабільного фінансового стану...
36645. Українська літературна мова 583 KB
  Функції мови. Функції мови. Лексичні норми сучасної української мови в професійному мовленні. Лексичне значення мови.
36646. Платіжні системи України 439 KB
  Основні визначення та правова основа діяльності платіжних систем Невідємним спеціалізованим елементом практично всіх економічних операцій що стосується передачі грошової вартості в обмін на товар послугу або фінансовий актив є платіжні системи. Платіжну систему можна представити у вигляді системи механізмів які служать для переказу грошових коштів між субєктами господарювання для розрахунку за платіжними зобовязаннями що виникають між ними. Такі системи можна класифікувати за різними характеристиками та ознаками. Виходячи з того яку...
36647. ЗАГАЛЬНІ ОСНОВИ КОМП’ЮТЕРНОГО ПРОЕКТУВАННЯ 320.5 KB
  команда POINT точка команда XLINE конструкційна пряма команда LINE відрізок команда ARC дуга команда PLINE полілінія команда MLINE млінія команда CIRCLE коло команда ELLIPS еліпс команда POLYGON багатокутник команда RECTANG прямокутник команда SPLINE сплайн команда ВHATCH штриховка замкненого контуру команда MTEXT мультитекст. команда _END OF кінцева крапка команда _MID OF середина команда _INT OF перетин команда _APPINT OF уявний перетин команда _CEN OF...
36648. Предмет конституційного права 303 KB
  Предметом правового регулювання конституційного права України є суспільні відносини які виникають і діють у процесі здійснення влади. Конституційні норми закріплюють устрій України як незалежної держави яка цілком самостійно вирішує всі справи як всередині країни так і за її межами. Таким чином конституційне право України є одним із найважливіших засобів забезпечення повновладдя народу України в політичній економічній і соціальнокультурній сферах його життєдіяльності.
36649. Національна економіка та економічна безпека 189.5 KB
  Сутність економічної безпеки національної економіки 2. Методологічні аспекти визначення рівня економічної безпеки 3. Механізм забезпечення економічної безпеки національної економіки 1. Сутність економічної безпеки національної економіки Економічна безпека визначається таким станом національної економіки за якого забезпечуються національні інтереси стійкість до внутрішніх та зовнішніх загроз здатність до розвитку та захищеність життєво важливих інтересів людей суспільства держави.
36651. Інституціональні форми інтеграції у світове господарство 92.54 KB
  Участь України у Європейських та Євразійські інтеграційних процесах 4. Розрізняють наступні ознаки відкритості економіки: частка зовнішнього торговельного обороту у загальному обсязі виробництва; частка експорту в загальному обсязі виробництва; частка імпорту в загальному обсязі споживання не більше 30; експортна квота відношення валового експорту до ВВП якщо більше 10 економіка відкрита; імпортна квота відношення валового імпорту до ВВП характеризує ступінь залежності країни від імпорту; інвестиційна квота питома вага...