Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Другая типичная операция, выполняемая с экземплярами Rbook, – это получение значений их полей, таких как, например, индекс книги и ее авторы. Опять можно было бы манипулировать каждым экземпляром отдельно, получая значения его поля, следующим образом:
var | |||
Index1, | |||
Author1, | |||
Author2: String; | |||
begin | |||
... | |||
Index1 | :=Exempl1.Index; | ||
Author1 | := Exempl1.FirstName; | ||
Author2 | := Exempl1.SecondName; | ||
... | |||
end; | |||
Как и раньше, поскольку эту операцию придется повторять для многих библиографических карточек, имеет смысл оформить ее в виде отдельной подпрограммы и передавать ей экземпляр карточки в виде параметра, чтобы использовать этот набор операций со многими различными карточками. Достигается это с помощью следующей процедуры GetIndex:
procedure GetIndex | |||||
( | |||||
const Book: | Rbook; | ||||
var Index1, | |||||
Author1, | |||||
Author2: | String | ||||
); | |||||
begin | |||||
Index1 | := Book.Index; | ||||
Author1 | := Book.FirstName; | ||||
Author2 | := Book.SecondName; | ||||
end; | |||||
Как и ранее, вместо “жесткого” кодирования переменной конкретной книги, процедура GetIndex ссылается на общую переменную Book, передаваемую в качестве параметра. Она передается как параметр вида const во избежание копирования значения фактического аргумента в локальный параметр Book во время вызова. Параметр const обеспечивает обращение к переменной как к ссылке без копирования ее значения, и, кроме того, она не может быть случайно изменена внутри процедуры.
Параметры Index1, Author1 и Author2 являются выходными параметрами, через которые передаются соответствующие строки индекса, фамилии первого и второго авторов книги. Поэтому они объявляются как параметры var и их измененные значения могут передаваться из процедуры.
Как и ранее, подпрограмма доступа к данным скрывает детали реализации. Однако этот подход требует, чтобы внутренние детали описания записи были открыты, а принадлежность подпрограммы и типа записи Rbook друг другу остается неочевидной.
Дата публикования: 2014-11-03; Прочитано: 357 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!