Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / inf-ka_shpory.doc
Скачиваний:
67
Добавлен:
13.02.2015
Размер:
642.56 Кб
Скачать

6) Концепция инкапсуляции и ее применение на основе простых и векторных св-в классов.

Инкапсуляция(encapsulation) – это механизм, к-ый позволяет объединять данные и действия с ними, а также защищает и то и другое от нежелательного использования или влияния извне. Понятие инкапсуляции лежит в основе определения объекта.

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

Поля(Fields) – это данные, хранящиеся в объекте.

Методы(Methods) – это процедуры и функции, принадлежащие объекты.

Св-ва(Property) – это элементы объекта, объединяющие процедуры и функции для доступа к полям объекта.

Св-ва появились в Object Pascal начиная с Delphi2. Необходимости исп-ния св-в связана с тем, что в ООП (Объе́ктно-ориенти́рованное программи́рование) непосредственный доступ к данным, хотя и возможен, но является плохим тоном. Это опр-ся тем, что со временем реализация созданного объекта может измениться, поэтому доступ к данным осущ-ся с помощью методов. Наиболее удобно это сделать с помощью св-в, к-ые одновременно объединяет и методы чтения, и методы записи данных объекта (полей). В соответствии с концепцией инкапсуляции объект объединяет не только данные и действия над ними, но и защищает то и другое. С этой целью предусмотрены ряд директив. Например, public – все элементы объекта доступны всем. Private – элементы объекта доступны только ему и закрыты для других пользователей. Любой объект м/б объявлен как открытым, так и закрытым.

Св-ва класса.

Св-во класса объявляется внутри него след. образом. property <имя св-ва>:_<тип св-ва>_read<имя поля или имя метода чтения>_write<имя поля или имя метода записи>;

Свойства могут быть трех видов:

Св-во для чтения, записи данных.

Св-во только для чтения.

Св-во только для записи.

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

Векторные св-ва класса.

Обычные св-ва класса не позволяют обращаться к элементам массива. С этой целью и предназначены векторные св-ва класса. Синтаксис объявления их следующий: property <имя св-ва>[<имя индекса>: <тип индекса>] :_<тип св-ва>_read<имя поля или имя метода чтения>_write<имя поля или имя метода записи>;_default;

Векторное св-во также как и обычное может быть как св-вом только для чтения(не указ write) или св-вом только для записи(не указ read). Внутри класса м/б одно вектор. св-во по умолчанию. Тогда указ. директива default. Обращаться к этому св-ву можно 2 способами:

1) по имени св-ва;

2) по имени объекта.

Соседние файлы в папке Информатика