Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Информатика и информационные технологии. Совместимость типов объектов (конспект лекций)

Конспекты лекций, шпаргалки

Справочник / Конспекты лекций, шпаргалки

Комментарии к статье Комментарии к статье

Оглавление (развернуть)

ЛЕКЦИЯ № 11. Объектный тип данных

1. Объектный тип в Pascal. Понятие объекта, его описание и использование

Исторически первым подходом в программировании являлось процедурное программирование, иначе называемое программированием снизу вверх. Вначале создавались общие библиотеки стандартных программ, используемые в различных областях применения ЭВМ. Затем на основе этих программ создавались более сложные программы для решения конкретных задач.

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

1) проектирование сверху вниз;

2) модульное программирование;

3) структурное кодирование.

Но начиная с середины 60-х г. XX в., стали формироваться новые понятия и подходы, которые легли в основу технологии объектно-ориентированного программирования. В данном подходе осуществляется моделирование и описание реального мира на уровне понятий конкретной предметной области, к которой относится решаемая задача.

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

1) Инкапсуляцией. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект;

2) Наследованием. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов;

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

Говоря об объекте, мы вводим в рассмотрение новый тип данных - объектный. Объектный тип является структурой, состоящей из фиксированного числа компонентов. Каждый компонент является либо полем, содержащим данные строго определенного типа, либо методом, выполняющим операции над объектом. По аналогии с описанием переменных описание поля указывает тип данных этого поля и идентификатор, именующий поле: по аналогии с описанием процедуры или функции описание метода указывает заголовок процедуры, функции, конструктора или деструктора.

Объектный тип может наследовать компоненты другого объектного типа. Если тип Т2 наследует от типа Т1, то тип Т2 является потомком типа Т1, а сам тип Т1 является родителем типа Т2. Наследование является транзитивным, т. е. если ТЗ наследует от Т2, а Т2 наследует от Т1, то ТЗ наследует от Т1. Область (домен) объектного типа состоит из него самого и из всех его наследников.

Следующий исходный код приводит пример описания объектного типа, type

type

Point = object

X, Y: integer;

end;

Rect = object

A, B: TPoint;

procedure Init(XA, YA, XB, YB: Integer);

procedure Copy(var R: TRectangle);

procedure Move(DX, DY: Integer);

procedure Grow(DX, DY: Integer);

procedure Intersect(var R: TRectangle);

procedure Union(var R: TRectangle);

function Contains(P: Point): Boolean;

end;

StringPtr = ^String;

FieldPtr = ^TField;

TField = object

X, Y, Len: Integer;

Name: StringPtr;

constructor Copy(var F: TField);

constructor Init(FX, FY, FLen: Integer; FName: String);

destructor Done; virtual;

procedure Display; virtual;

procedure Edit; virtual;

function GetStr: String; virtual;

function PutStr(S: String): Boolean; virtual;

end;

StrFieldPtr = ^TStrField;

StrField = object(TField)

Value: PString;

constructor Init(FX, FY, FLen: Integer; FName: String);

destructor Done; virtual;

function GetStr: String; virtual;

function PutStr(S: String): Boolean;

virtual;

function Get: string;

procedure Put(S: String);

end;

NumFieldPtr = ^TNumField;

TNumField = object(TField)

private

Value, Min, Max: Longint;

public

constructor Init(FX, FY, FLen: Integer; FName: String;

FMin, FMax: Longint);

function GetStr: String; virtual;

function PutStr(S: String): Boolean; virtual;

function Get: Longint;

function Put(N: Longint);

end;

ZipFieldPtr = ^TZipField;

ZipField = object(TNumField)

function GetStr: String; virtual;

function PutStr(S: String): Boolean;

virtual;

end.

В отличие от других типов объектные типы могут описываться только в разделе описаний типов, находящемся на самом внешнем уровне области действия программы или модуля. Таким образом, объектные типы не могут описываться в разделе описаний переменных или внутри блока процедуры, функции или метода.

Тип компоненты файлового типа не может иметь объектный тип или любой структурный тип, содержащий компоненты объектного типа.

2. Наследование

Процесс, с помощью которого один тип наследует характеристики другого типа, называется наследованием. Наследник называется порожденным (дочерним) типом, а тип, которому наследует дочерний тип, называется порождающим (родительским) типом.

Ранее известные типы записей Pascal не могут наследовать. Однако Borland Pascal расширяет язык Pascal для поддержки наследования. Одним из этих расширений является новая категория структуры данных, связанная с записями, но значительно более мощная. Типы данных в этой новой категории определяются с помощью нового зарезервированного слова "object". Тип объекта может быть определен как полный, самостоятельный тип в манере описания записей Pascal, но он может определяться и как потомок существующего типа объекта путем помещения порождающего (родительского) типа в скобки после зарезервированного слова "object".

3. Создание экземпляров объектов

Экземпляр объекта создается посредством описания переменной или константы объектного типа или путем применения стандартной процедуры New к переменной типа "указатель на объектный тип". Результирующий объект называется экземпляром объектного типа;

var

F: TField;

Z: TZipField;

FP: PField;

ZP: PZipField;

С учетом этих описаний переменных, F является экземпляром TField, a Z - экземпляром TZipField. Аналогично, после применения New к FP и ZP FP будет указывать на экземпляр TField, a ZP - на экземпляр TZipField.

Если объектный тип содержит виртуальные методы, то экземпляры этого объектного типа должны инициализироваться посредством вызова конструктора перед вызовом любого виртуального метода.

Ниже приведен пример:

var

S: StrField;

egin

S.Init (1, 1, 25, 'Первое имя');

S.Put ('Владимир');

S.Display;

...

S.Done;

end.

Если S.Init не вызывался, то вызов S.Display приведет к неудачному завершению данного примера.

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

Если экземпляр объекта не инициализируется и проверка диапазона включена (директивой {SR+}), то первый вызов виртуального метода экземпляра объекта дает ошибку этапа выполнения. Если проверка диапазона выключена (директивой {SR-}), то первый вызов виртуального метода неинициализированного объекта может привести к непредсказуемому поведению.

Правило обязательной инициализации применимо также к экземплярам, которые являются компонентами структурных типов. Например:

var

Comment: array [1..5] of TStrField;

I: integer;

begin

for I := 1 to 5 do

Comment [I].Init (1, I + 10, 40, 'первое_имя');

.

.

.

for I := 1 to 5 do Comment [I].Done;

end;

Для динамических экземпляров инициализация, как правило, связана с размещением, а очистка - с удалением, что достигается благодаря расширенному синтаксису стандартных процедур New и Dispose. Например:

var

SP: StrFieldPtr;

begin

New (SP, Init (1, 1, 25, 'первое_имя');

SP^.Put ('Владимир');

SP^.Display;

.

.

.

Dispose (SP, Done);

end.

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

Например, указатель типа ZipFieldPtr может присваиваться указателям типа PZipField, PNumField и PField, а во время выполнения программы указатель типа PField может либо иметь значение nil, либо указывать на экземпляр TField, TNumField, или TZipField, или на любой экземпляр дочернего по отношению к TField типа.

Эти правила совместимости указателей по присваиванию применимы также к параметрам - переменным объектного типа. Например, методу TField.Сору могут быть переданы экземпляры типов TField, TStrField, TNumField, TZipField или любые другие экземпляры дочернего от TField типа.

4. Компоненты и область действия

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

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

В описании объектного типа заголовок метода может задавать параметры описываемого объектного типа, даже если описание еще неполное.

Автор: Цветкова А.В.

<< Назад: Объектный тип данных (Объектный тип в Pascal. Понятие объекта, его описание и использование. Наследование. Создание экземпляров объектов. Компоненты и область действия)

>> Вперед: Совместимость типов объектов (Инкапсуляция. Расширяющиеся объекты. Совместимость типов объектов)

Рекомендуем интересные статьи раздела Конспекты лекций, шпаргалки:

Антропология. Шпаргалка

Социология. Конспект лекций

Экономика. Конспект лекций

Смотрите другие статьи раздела Конспекты лекций, шпаргалки.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Тающие айсберги создают новые оазисы жизни на дне океана 30.06.2026

Глобальное потепление активно меняет облик нашей планеты, и одним из наиболее заметных его проявлений становится ускоренное таяние ледников в полярных регионах. Этот процесс не только приводит к подъему уровня Мирового океана, но и вызывает цепную реакцию в морских экосистемах, порой создавая неожиданные и парадоксальные последствия. Массовое высвобождение айсбергов из Гренландии - яркий пример того, как климатические изменения перестраивают жизнь в самых глубоких и удаленных уголках океана. Из-за повышения температуры количество айсбергов, откалывающихся от гренландских ледников, стремительно растет. Ученые проанализировали данные за последние 40 лет и установили, что с 2000 года поток ледяных глыб через пролив Фрама увеличился в четыре раза. Об этом сообщает Futurism со ссылкой на исследование специалистов из Технического университета Дании. Такое беспрецедентное нашествие айсбергов представляет серьезную опасность для международного судоходства. Одновременно оно радикально тра ...>>

Робот-тьютор Optio, помошник школьника 30.06.2026

Икусственный интеллект и робототехника все активнее помогают учителям и ученикам, делая обучение более персонализированным и увлекательным. Гуманоидные роботы, способные взаимодействовать с людьми естественным образом, открывают новые возможности для школ, особенно в условиях нехватки педагогических кадров и растущего интереса к технологиям. Одна из таких инновационных инициатив стартовала в американском штате Нью-Йорк. Компания Realbotix запустила своего помощника учителя на базе искусственного интеллекта под названием Optio в Центральном школьном округе Саламанки. Робот выступает в роли тьютора, предлагая персонализированное репетиторство, многоязычную помощь с домашними заданиями и круглосуточную академическую поддержку. По данным Interesting Engineering, проект направлен на повышение вовлеченности учащихся и внедрение передовых технологий в учебный процесс. В рамках пилотной программы школы округа планируют интегрировать человекоподобных роботов в классы. Изначально Optio буд ...>>

Биопрепараты повышают питательную ценность органической гречихи 29.06.2026

В органическом земледелии особое внимание уделяется не только урожайности, но и качественному составу продукции. Потребители все чаще выбирают продукты с высоким содержанием полезных веществ и без следов химических веществ. Исследования показывают, что применение биологических препаратов может существенно улучшить минеральный состав зерновых культур, делая их более ценными с точки зрения питания. В результате полевых экспериментов, проведенных в 2023-2025 годах, ученые установили, что использование биопрепаратов способствует активному накоплению макроэлементов, в частности фосфора и калия, в зерне органической гречихи. Об этом сообщила Леся Крупак из Белоцерковского национального аграрного университета в своей работе "Экологичность и производительность". Наиболее заметный эффект наблюдался при применении гумата калия. В этом случае содержание калия в зерне увеличивалось на 19-21 процент по сравнению с контрольными участками. Такой результат свидетельствует об улучшении работы тра ...>>

Случайная новость из Архива

Volkswagen Golf нового поколения 12.11.2016

Концерн Volkswagen представил автомобиль Golf нового поколения, прием заказов на который стартует уже в следующем месяце.

Отмечается, что машина сочетает современный дизайн и передовые технологии двигателестроения. Внешних отличий от предшественника не слишком много, а вот "начинка" автомобиля претерпела серьезные изменения.

Для "Гольфа" будет предлагаться новый экономичный двигатель 1,5 TSI Evo. Этот турбированный силовой агрегат с четырьмя цилиндрами способен выдавать мощность в 148 лошадиных сил и обеспечивать крутящий момент в 250 Нм. Благодаря самым современным технологиям и функции деактивации части цилиндров мотор, как утверждается, расходует всего 4,9 литра топлива на 100 км пути.

Четырехцилиндровый турбированный двигатель модификации Golf GTI теперь выдает 227 "лошадей" вместо прежних 217. А отдача модификации Performance достигает 241 л. с. Семейство также будет включать гибридную модель Golf GTE мощностью в 201 лошадиную силу.

Автомобили получат новую 7-ступенчатую коробку переключения передач DSG с двумя сцеплениями. Volkswagen предложит трех- и пятидверный хэтчбеки, а также пятидверный универсал.

Новинка оснащается медиацентром с сенсорным дисплеем, размер которого в зависимости от комплектации варьируется от 6,5 до 9,2 дюйма по диагонали. Производитель называет Golf первым в мире автомобилем компакт-класса c информационно-развлекательной системой Discover Pro, которая управляется с помощью жестов.

Кроме того, модель впервые оснащается (опционально) цифровой приборной панелью Active Info Display. Она выполнена на основе экрана с диагональю 12,3 дюйма.

Разумеется, присутствуют передовые системы оказания помощи водителю при движении. В частности, реализован полуавтоматический режим вождения - на скоростях до 60 км/ч.

Другие интересные новости:

▪ Влияние микробов на геологические процессы Земли

▪ Фитнес-трекер Moov NOW

▪ Электрический автобан eHighway

▪ Apple - самая дорогая компания в истории

▪ Высокопрочная сталь для зданий и бронетехники

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Стабилизаторы напряжения. Подборка статей

▪ статья Желтая опасность. Крылатое выражение

▪ статья Как определяется день празднования Пасхи? Подробный ответ

▪ статья Многократная восьмерка. Советы туристу

▪ статья Ток аккумуляторной батареи - индикатор. Энциклопедия радиоэлектроники и электротехники

▪ статья Усилитель мощности (ламповый). Энциклопедия радиоэлектроники и электротехники

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2026