- •Вопрос №2 Алгоритм. Основные алгоритмические структуры и конструкции
- •Вопрос №3 Этапы построения алгоритма. Технологическая цепочка решения задачи на эвм
- •Вопрос №6 Трансляция. Виды трансляторов
- •Типы данных
- •Вопрос №9 Организация ввода-вывода. Оператор присваивания. Стандартные функции языка Pascal
- •Вопрос №10 Условный оператор. Оператор выбора. Логические выражения и операции
- •Вопрос №11 Операторы циклов в языке Pascal
- •Вопрос №12 Массивы. Одномерные и двухмерные массивы. Описание массивов. Принципы работы с массивами
- •Вопрос №13 Массивы данных. Алгоритмы обработки массивов данных
- •Вопрос №14 Принципы и алгоритмы сортировки. Оценка алгоритмов сортировки. Характеристики алгоритмов сортировки
- •Вопрос №15 Алгоритм быстрой сортировки
- •Вопрос №16 Записи. Описание записей. Принципы работы с записями
- •Вопрос №17 Процедуры в языке Pascal. Описание и вызов процедур.
- •Описание и вызов процедур и функций
- •Вопрос №19 Формальные и фактические параметры подпрограммы. Способы передачи параметров
- •Вопрос №20 Глобальные и локальные переменные. Область действия описаний
- •Вопрос №21 Рекурсия. Рекурсивные алгоритмы и подпрограммы
- •Вопрос №22 Строковый тип данных. Основные операции для работы со строками
- •Вопрос №23 Множественный тип данных. Основные операции над множествами.
- •Вопрос №24 Типизированные и нетипизированные файлы. Основные операции для работы с ними
- •Вопрос №25 Текстовые файлы. Операции для работы с ним
- •Вопрос №26 Структурный подход к программированию. Основные принципы
- •Вопрос №27 Нисходящая и восходящая разработка. Достоинства и недостатки. Принципы нисходящего структурного программирования
- •1)Метод нисходящей разработки пс
- •2)Метод восходящей разработки пс
- •Вопрос №28 Принцип модульного программирования. Структура модуля
- •Вопрос №29 Объектно-ориентированный подход к программированию. Основные принципы
- •Вопрос №30 Понятия класса и объекта. Описание классов и Object Pascal. Создание и уничтожение объектов
- •Вопрос №31 Инкапсуляция. Примеры реализации
- •Вопрос №32 Свойства как механизм доступа к данным
- •Вопрос №33 Наследование. Примеры реализации принципа наследования
- •Вопрос №34 Полиморфизм. Примеры реализации
- •Вопрос №35 Методы. Виртуальные и динамические методы
Вопрос №32 Свойства как механизм доступа к данным
Контроль доступа
Каждое поле, метод или свойство класса имеет атрибут, называемый видимостью. В Pascal существуют три типа атрибутов видимости: public (открытый), private (закрытый) и protected (защищенный). К члену класса, имеющему атрибут public, можно обратиться из любого места программы, члены класса с атрибутом private доступны только внутри методов этого класса, члены класса с атрибутом protected доступны внутри методов этого класса и всех его подклассов. Атрибуты видимости могут находиться внутри класса, при этом все дальнейшие члены приобретают этот атрибут. Например:
type A=class private x: integer; protected a: integer; public constructor Create(xx: integer); begin x:=xx; // верно, т.к. мы внутри метода класса, которому принадлежит закрытое поле x a:=0; // верно end; procedure print; end; B=class(A) procedure print; begin writeln(a); // верно, т.к. a - защищенное поле writeln(x); // неверно, т.к. х - закрытое поле end; end; ... var a1: A; ... writeln(a1.x); // неверно, т.к. х - закрытое поле writeln(a1.a); // неверно, т.к. a - защищенное поле a1.print; // верно, т.к. print - открытый метод
Вопрос №33 Наследование. Примеры реализации принципа наследования
Наследование позволяет изменить или дополнить поведение уже существующего класса, нет никакой необходимости переписывать класс заново. Вы должны объявить, что новый класс является потомком уже существующего и добавить в новый класс свойства и методы, которые Вам необходимы или перекрыть существующие методы и свойства.( Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.)
Type TmyFirstClass = class(TObject) Private Protected Public Constructor Create(Val: Integer); virtual; end;
TmySecondClass = class(TMyFirstClass) Private AmyField: string; // Добавили новое поле Protected Procedure SetMyField(Val: string); // Добавили процедуру Public Constructor Create(Val: Integer); override; // Перегрузили конструктор Property MyField: string read AmyField write SetMyField; // Добавили свойство End.
Вопрос №34 Полиморфизм. Примеры реализации
Указателю на экземпляр объектного типа может быть присвоен адрес любого экземпляра любого из дочерних типов. При обращении к свойствам и методам через этот указатель будет доступен именно экземпляр, адрес которого был присвоен, а не предок. Это и есть полиморфизм. Т.е. Вы можете иметь доступ к потомку через указатель объектного типа предка.( Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.)
Type
TMyClass = class(TObject) … public procedure GetData: string; virtual; abstract; … end;
TmySun1Class = class(TMyClass) Protected AmyField: string; … public procedure GetData: string; override; … end;
TmySun2Class = class(TMyClass) Protected AmyField: Integer; … public procedure GetData: string; override; … end; … implementation
procedure TmySun1Class.GetData: string; begin Result:= AmyField; end;
procedure TmySun2Class.GetData: string; begin Result:=IntToStr(AmyField); end; …
Var MyClass: TmyClass; Class1: TmySun1Class; Class2: TmySun2Class; Begin Class1:=TmySun1Class.Create; Class2:=TmySun2Class.Create; … MyClass:= Class1; Label1.Caption:= MyClass.GetData; MyClass:= Class2; Label2.Caption:= MyClass.GetData; end;