Зміст
Ініціалізація записів під час опису (на прикладі Student)
Доступ до поля записів. Точкова нотація.
Зауваження.Для записів має місце іменна еквівалентність типів.
Передача записів у підпрограми. Записи як значення функції, що повертаються
Передача записів у п/п (Print(s)). Запис як значення функції, що повертається (s := ReadStudent;).
Передавати записи за значенням неефективно, т.к. копіюються всі поля. Тому слід передавати їх за посиланням (з ключовим словом const - якщо значення полів не змінюються, і var - якщо всередині п/п їх потрібно змінити.
Оператор зручний, коли потрібно виконати достатню кількість операцій з однією і тією ж змінною (ім'я цієї змінної та точка додаються неявно перед усіма полями)
Методи у записах
На прикладі Student.Print.
Запис як простір імен
Запис виступає для своїх полів і методів як модуль (оскільки є набором даних і пов'язаних з ними процедур і функцій, оформлених як єдине ціле).
Методи працюють у певному оточенні, у ролі якого виступають поля записи та інші методи.
Т.о. виникає поняттяінкапсуляції:
Інкапсуляція- зберігання в записі одночасно даних і методів (запис є "капсулою"). Інкапсуляція тісно пов'язана із захистом даних: лише деякі члени у цій «капсулі» є відкритими.
Створюється оточення в описі змінної типу запис.
- Порівняння s.Print та Print(s)
s.Print- об'єктно-орієнтований підхід, що домінує об'єкт, який сам виконує над собою дію.
Print(s)- процедурно-орієнтований підхід, головним є дія, що виконується над змінною.
- Метод Init – ініціалізатор полів запису.
Створення найпростіших графічних об'єктів
Для кожного типу визначаються методи Print, Draw, MoveOn
Записи як пакування параметрів
Приклад.Використовуємо певні типи записів для створення перевантажених версій процедур Rectangle та Line:
Змінний тип запису як об'єкт
У модулі можна виносити реалізацію методів запису розділ реалізації. У цьому розділі інтерфейсу всередині визначення типу запис описуються лише заголовки методів, а розділ реалізації перед ім'ям методу необхідно писати .
Поля записування як стан об'єкта.
Методи запису як дії, що впливають стан об'єкта.
- міняючі стан об'єкта (MoveOn для RPoint)
- що здійснюють доступ до стану об'єкта на читання (Draw для RPoint)
Сортування масиву записів.
Індексне сортування
Часто фізично переставляти елементи масиву або взагалі неможливо, або довго (через досить великий розмір, наприклад). У цьому випадку зручно використовуватиперестановку індексівзамість перестановки самих елементів.
Ідея полягає в тому, щоб описатиіндексний масивindex, який взаємооднозначно зіставляєреальниміндексам елементавіртуальнітаким чином, щоб щодовіртуальнихмасив виявився упорядкованим.
Даний масив цілих (з реальними індексами):
А так виглядає відсортований масив за віртуальними індексами:
Відповідно, алгоритм сортування змінюється таким чином, що замість зміни місцями самих елементів масиву, що впорядковується.змінюєтьсявміст елементів index.
Спочатку зручно покласти елементи index відповіднимитотожноюпідстановці (тобто a[i] = i).