![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
Другая типичная операция, выполняемая с экземплярами 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; Прочитано: 409 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
