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


 

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

26546. ВИТАМИНЫ МОЛОКА 10.22 KB
  ВИТАМИНЫ МОЛОКА. Витамины содержатся в молоке в различных количествах что обусловлено поступлением их в организм коровы с кормом интенсивностью синтеза микрофлорой рубца и степенью разрушения при обработке и хранении молока. Среднее содержание витаминов в 100 г молока составляет мг: жирорастворимых А 002 02 D 0002. ВИТАМИН А ретинол.
26547. ВЛИЯНИЕ РАЗЛИЧНЫХ ФАКТОРОВ НА ХИМ.СОСТАВ И СВОЙСТВА МОЛОКА 13.48 KB
  СОСТАВ И СВОЙСТВА МОЛОКА. Лактацию с точки зрения изменения состава и свойств молока можно разделить на 3 периода: молозевныйпериод выделения нормального молока и период выделения стародойного молока. Изменение физиологического состояния лактирующих животных в начале и в конце лактации сопровся существенным изменением органолептических физикохимических и технологических свойств молока. Изготовленные из молока с примесью молозива и стародойного молока продукты имеют неприятный вкус и подвергаются быстрой порче.
26548. ВЛИЯНИЕ РАЗЛИЧНЫХ ФАКТОРОВ НА КИСЛОТНОСТЬ МОЛОКА. ФАКТОРЫ, ПОВЫШАЮЩИЕ КИСЛОТНОСТЬ 946 Bytes
  ВЛИЯНИЕ РАЗЛИЧНЫХ ФАКТОРОВ НА КИСЛОТНОСТЬ МОЛОКА. ФАКТОРЫ ПОВЫШАЮЩИЕ КИСЛОТНОСТЬ: 1 использование в большом количестве силоса для кормления; 2 использование закисших забродивших кормов; 3 ЖКТ заболевание; 4 при выпосе в болотистой местности; 5в молозивный период повышается до 3840 градусов Тернера; 6 при сильном перегреве животных. ФАКТОРЫ СНИЖАЮЩИЕ КИСЛОТНОСТЬ: 1 состояние здоровья животного; 2 маститы снижают кислотность до 68 градусов Тернера.
26549. ВОЗМОЖНОСТИ ИСПОЛЬЗОВНИЯ МОЛОКА, СОДЕРЖАЩЕГО РАДИОАКТИВНЫЕ ВЕЩЕСТВА ДЛЯ ПИЩЕВЫХ ЦЕЛЕЙ 1.71 KB
  ВОЗМОЖНОСТИ ИСПОЛЬЗОВНИЯ МОЛОКА СОДЕРЖАЩЕГО РАДИОАКТИВНЫЕ ВЕЩЕСТВА ДЛЯ ПИЩЕВЫХ ЦЕЛЕЙ. При загрязнении молока этими изотопами его можно очистить с помощью ионообменных смол на 7590. Из загрязненного молока рекомендуется вырабатывать сливочное и топленое масло переход радиоактивных веществ молока в сливочное масло не превышает 4 а в топленое 1 или сыр и творог кислотным способом переход радиоизотопов в готовый продукт не превышает 20 активности молока.
26550. ВСЭ И ТОВАРНАЯ ОЦЕНКА ЯИЦ. ТОВАРОВЕДЧЕСКАЯ КЛАССИФИКАЦИЯ ЯИЦ 18.32 KB
  Яйца куриные пищевые ГОСТ Р 52121 2003 в зависимости от сроков хранения и качества подразделяют на диетические и столовые. К диетическим относят яйца срок хранения которых не превышает 7 суток со дня сортировки маркировки не считая дня снесения. В холодильнике яйца хранят при температуре 2 . Яйца принятые в торговую сеть как диетические но срок хранения которых установленный для яиц диетических в процессе реализации превысил 7 суток пере водят в категорию столовых.
26551. ВСЭ И САНИТАРНАЯ ОЦЕНКА МЯСА ВЫНУЖДЕННО УБИТЫХ ЖИВОТНЫХ ПРИ НЕЗАРАЗНЫХ БОЛЕЗНЯХ (ТИМПАНИЯ, ОЖОГИ, АСФИКСИЯ, ТРАВМЫ) 15.16 KB
  ВСЭ И САНИТАРНАЯ ОЦЕНКА МЯСА ВЫНУЖДЕННО УБИТЫХ ЖИВОТНЫХ ПРИ НЕЗАРАЗНЫХ БОЛЕЗНЯХ ТИМПАНИЯ ОЖОГИ АСФИКСИЯ ТРАВМЫ. ВСЭ и санитарная оценка мяса вынужденно убитых животных при незаразных болезней. ВОСПАЛЕНИЯ ВЕРХНИХ ДЫХАТЕЛЬНЫХ ПУТЕЙ а также бронхиты пневмонии плевриты бронхопневмонии и плевропневмонии незаразной этиологии регистрируют чаще у молодняка и реже у взрослых убойных животных. Наиболее частые причины болезней содержание животных в сырых холодных помещениях на сквозняках цементном полу; скармливание заплесневелых кормов...
26552. ВСЭ И САНИТАРНАЯ ОЦЕНКА МЯСА ПРИ АКТИНОМИКОЗЕ И НЕКРОБАКТЕРИОЗЕ. НЕКРОБАКТЕРИО3 11.61 KB
  Больные овцы хромают; при поражении обеих передних ног они ползают на путовых или карпальных суставах при поражении задних конечностей овцы подставляют их далеко под живот; при глубоком поражении тканей нередко спадает роговой башмак. При поражении нескольких органов удовлетворительной упитанности туши решение о возможности использования мяса и внутренних органов принимают после проведения бактериологического исследования на наличие патогенной кокковой микрофлоры и сальмонелл. При поражении костей на месте губчатого костного вещества...
26553. ВСЭ И САНИТАРНАЯ ОЦЕНКА МЯСА ПРИ БРУЦЕЛЛЕЗЕ 5.19 KB
  При ветеринарносанитарной оценке мяса от бруцеллезных животных учитывают клинические признаки заболевания патологоанатомические изменения и данные серологических исследований. Мясо полученное от убоя животных всех видов которые имели клинические или патологоанатомические признаки бруцеллеза выпускают после проварки. Голова печень сердце легкие почки желудки и другие внутренние органы полученные от убоя животных всех видов реагирующих на бруцеллез или имеющие клинические признаки бруцеллеза выпускать в сыром виде запрещается; их...
26554. ВСЭ ПРОДУКТОВ УБОЯ ДИКИХ ПРОМЫСЛОВЫХ ЖИВОТНЫХ 8.84 KB
  ВСЭ ПРОДУКТОВ УБОЯ ДИКИХ ПРОМЫСЛОВЫХ ЖИВОТНЫХ В зависимости от вида диких животных их мясо отличается по органолептическим признакам морфологическому и химическому составу вкусовым и кулинарным качествам. У одних животных его мало лось заяц и такое мясо относится к тощему у других бывают значительные отложения медведь северный олень кабан. У большинства диких животных сразу после снятия шкуры мясо красного цвета. МЯСО ЛОСЯ темнокрасного цвета мышцы на разрезе грубоволокнистые однородного цвета покрыты плотными хорошо...