rpd000003160 (1012243), страница 6

Файл №1012243 rpd000003160 (161400 (24.05.05).С1 Прицельно-навигационные системы ЛА) 6 страницаrpd000003160 (1012243) страница 62017-06-17СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)


Основные концепции ООП.

ООП базируется на трех основных понятиях:

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

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

Все классы Object Pascal порождены от одного единственного класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы, обеспечивающие жизненный цикл любых объектов от создания до уничтожения, например, такие как выделение памяти при создании объекта и очистка памяти при уничтожении объекта.

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

Понятие класса. Синтаксис объявления класса. Поля и методы.

Класс в Object Pascal представляет собой новый структурный тип данных, определяемый программистом. Объявление класса осуществляется в секции объявления типом следующим образом:

type

TClassName = class (TParentName)//TParentName – имя родительского класса

end;

Поскольку, как говорилось ранее, все классы Object Pascal порождены от одного единственного класса TObject, следующие определения класса аналогичны:

type

TClassName = class

end;

type

TClassName = class (TObject)

end;

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

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

У класса TObject определены конструктор и деструктор. Они называются соответственно Create и Destroy. Традиционно принято называть конструктор и деструктор именно этими именами, хотя это и не обязательно.

Конструктор распределяет объект в динамической памяти и помещает адрес этой памяти в переменную Self, которая автоматически объявляется в классе. Иными словами любой класс содержит поле Self (Его не надо объявлять), и значением этого поля у конкретного объекта является адрес динамической памяти, с которого начинается размещение этого объекта в памяти. Обращение к конструктору должно предварять любое обращение к полям и методам объекта. Это является следствием того, что переменная-объект является указателем, поэтому, не обратившись сначала к конструктору, и не выделив память под объект, компилятор не может определить, к какому участку памяти следует обращаться при обращении к полям и методам объекта.

Деструктор удаляет объект из кучи. Обращение к деструктору будет ошибочным, если объект предварительно не создан конструктором. В базовом классе TObject определен метод Free, который сначала проверяет действительность адреса объекта и лишь затем вызывает деструктор Destroy. Поэтому предпочтительным способом уничтожения объекта является вызов для него метода free.

type

TClassName = class

//поля класса

aField1:Boolean;

aField2:integer;

aField3:Srting;

//методы класса

Constructor Create(a,b:real);

Procedure MethodName1(c,d:byte);

Function MethodName2(e,f: real):real;

end;

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

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

var

Obj1 : TClassName;

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

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

Obj1.aField1 := true;

Obj1.aField2 := 5;

Необходимо отметить, что в Turbo Pascal’е понятиям класса и объекта в Delphi соответствовали соответственно понятие объекта и экземпляра объекта.

Object Pascal (Delphi)

Turbo Pascal

Класс

Объект

Объект

Экземпляр объекта

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

Overload - перегруженный

Virtual - виртуальный

Dynamic - динамический

Override - переопределяемый

Message – обработка сообщения

Abstractабстрактный

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

Классовые методы – это особая категория процедур и функций, способных выполняться без создания экземпляра класса

Class procedure ProcedureName;

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

Операторы класса.

В Delphi предусмотрено 2 специализированных оператора, называемых операторами класса – is и as.

Оператор is предназначен для проверки принадлежности объекта к определенному классу.

If (Obj1 is TClassName) = true then

….

Ключевая особенность оператора is заключается в том, что он проверяет всю иерархическую цепочку наследования объекта в целом. И если класс является потомком некоторого другого хоть в десятом колене, то оператор is все равно вернет true.

Оператор as называется оператором приведения типа. Это достаточно мощный и опасный оператор, поэтому его применение должно быть максимально продуманным и внимательным.

With (Obj1 as TEdit) do

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

Безопасное использование приведения типов может быть реализовани следующим образом:

If Obj1 is TEdit then

With Obj1 as TEdit do Text := ‘некоторый текст’;

Это неявное приведение типа.

Явное приведение типа осуществляется с помощью конструкции

<Тип>(Объект)

TEdit(Obj1).Text := ‘некоторый текст’;

Версия: AAAAAARxf/E Код: 000003160

Характеристики

Тип файла
Документ
Размер
1019,5 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6480
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее