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


 

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

80489. УКРАЇНСЬКА НАЦІОНАЛЬНА ДЕРЖАВНІСТЬ (листопад 1917 — квітень 1921 рр.) 53.6 KB
  Слід звернути увагу й на заяву Ради міністрів Української держави від 10 травня: Гетьман не думає стати самодержцем. 15 жовтня було оприлюднено листа Скоропадського голові Ради Міністрів в якому він вказуючи на завершення першого періоду будування Української держави наголошував на тому що настав вже час приступити до вироблення закону який має завершити нашу планомірну працю по будуванню державності а саме до вироблення закону про вибори до Державного Сейму . На відміну від системи центральних органів Української держави формування...
80490. ДЕРЖАВА І ПРАВО УКРАЇНИ В УМОВАХ НОВОЇ ЕКОНОМІЧНОЇ ПОЛІТИКИ (1921 — початок 1929 рр.) 59.71 KB
  Формально правову основу організації та діяльності державного механізму республіки на початку 20х років визначала Конституція УСРР 1919 р. розпочалася робота з підготовки реформи адміністративнотериторіального устрою УСРР де все ще зберігалися волості повіти і губернії. закладалися правові основи адміністративнотериторіальної реформи УСРР.
80491. ДЕРЖАВА І ПРАВО УКРАЇНИ В ПЕРІОД ТОТАЛІТАРНО-РЕПРЕСИВНОГО РЕЖИМУ (1929-1941 рр.) 208 KB
  Правовий статус України її місце у складі союзної держави Союзу РСР були законодавчо закріплені як в Конституції СРСР 1924 р. Слід мати на увазі що Всеукраїнський з\'їзд керувався директивами Комуністичної партії та постановами Всесоюзних зїздів Рад і ЦВК СРСР. вона мала право: видавати декрети постанови і розпорядження ті з них які визначали загальні норми економічного та політичного життя або вносили докорінні зміни в практику діяльності установ республіки підлягали затвердженню сесією ВУЦВК; припиняти дію і відміняти постанови...
80492. ДЕРЖАВА ТА ПРАВО КИЇВСЬКОЇ РУСІ ( VI – початок XIII ст. ) 202 KB
  ВСТУП ДО КУРСУ ІСТОРІЯ ДЕРЖАВИ ТА ПРАВА УКРАЇНИ. План: Вступ до курсу історія держави та права України. ПРЕДМЕТ ІСТОРІЇ ДЕРЖАВИ І ПРАВА УКРАЇНИ Що ж являє собою історія держави і права України Це наукова дисципліна яка вивчає: еволюцію української державної традиції в цілому; розвиток механізмів державної влади в Україні; зародження та функціонування правової системи в цілому і окремих галузей права України. Історія держави і права України вивчає факти і виявляє закономірності історичного розвитку її перш за все цікавлять юридичні...
80495. ЛИТОВСЬКО-РУСЬКА ДЕРЖАВА ТА ПРАВО (друга пол. XIV - перша пол. XVI ст.) 67.08 KB
  Державною мовою тут була давньоруська близька до української та білоруської Руська правда стала основним джерелом права литовська знать хреститься руськими іменами приймає православну віру. Йому підлягали старости військо був вищою апеляційною інстанцією в судових справах мав виключне право надання в користування земельних володінь. Московські політики твердили про спадкові права московських князів про шапку Мономаха яка ніби то доводить їхні спадкові права на Візантію і на Київ. Придбання шляхтичем маєтку не позбавляло селян що...
80496. Господарство та економічна думка суспільства Європейської цивілізації в період Середньовіччя ( V – XV ст.) 63.5 KB
  Загальна характеристика господарства Європи в V XV ст. Особливості розвитку сільського господарства. Загальна характеристика господарства Європи в V XV ст. Господарство Середньовіччя характеризується такими загальними ознаками: панування приватної власності основою якої була земля у формі феода умовнослужбове спадкове надання що дало назву системі господарства; монополія феодалів на землю яка виявлялася в принципі Немає землі без сеньйора умовний характер ієрархічна структура земельної власності що ґрунтувалася на васальних...
80497. Формування передумов ринкової економіки в країнах Європейської цивілізації (XVI – перша половина XVII ст.) 54.5 KB
  Основні аспекти розвитку господарства країн Західної Європи. Особливості економічного розвитку країн Центральної ПівденноСхідної і Східної Європи. Основні аспекти розвитку господарства країн Західної Європи Протягом 1618 ст. В економічному розвитку Західної Європи велику роль відіграли географічні відкриття кінця ХV початку XVI ст.