Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Цикл-пока <очередной элемент> определен

Читайте также:
  1. FAQ (Frequently Asked Questions) - Список часто задаваемых вопросов по какой-то определенной теме с ответами на них.
  2. I.2 Определение понятия фразеологизма
  3. III. ОПРЕДЕЛЕНИЕ ЭФФЕКТИВНОСТИ ПРОИЗВОДСТВА
  4. А) Определение расчетных усилий в ветвях колонны
  5. А) Определение требуемой площади поперечного сечения колонны.
  6. А. Определение ценной бумаги
  7. Анализ конкурентов и определение конкурентной политики.

<выполнить обработку>

<очередной элемент>:=<следующий элемент>

Все-цикл.

Поэтому обычно он состоит из трех частей:

· метод, позволяющий организовать обработку данных с начала (получение первого элемента структуры);

· метод, организующий переход к следующему элементу;

· метод, позволяющий проверить окончание данных.

Доступ к очередной порции данных при этом осуществляется через специальный указатель текущей порции данных (указатель на объект класса-элемента).

Пример

Контейнерный класс с итератором (класс «Список»).

Разработаем контейнерный класс «Список», реализующий линейный односвязный список из объектов класса «Элемент».

Класс «Элемент»:

Поле Указатель_наследующий

Конец описания.

Класс «Список» включает три метода, составляющих итератор: метод Определить_первый, который должен возвращать указатель на первый элемент, метод Определить_следующий, который должен возвращать указатель на следующий элемент, и метод Конец_списка, который должен возвращать «да», если список исчерпан.

Класс «Список»

Реализация

Поля Указатель_напервый, Указатель_натекущий

Интерфейс

метод Добавить_передпервым (аЭлемент)

Метод Удалить_последний

Метод Определить_первый

Метод Определить_следующий

Метод Конец_списка

Конец описания.

 

Тогда поэлементная обработка списка будет программироваться следующим образом:

Элемент:= Определить_первый

Цикл-пока не Конец_списка

Обработать элемент, переопределив его тип

Элемент:= Определить_следующий

Все-цикл

При использовании второго способа поэлементной обработки реализуемой структуры процедура обработки элемента передается в списке параметров. Такую процедуру можно определить, если известен тип обработки, например, процедура вывода значений информационных полей объекта. Процедура должна вызываться из метода для каждого элемента данных. В языках с жесткой типизацией данных тип процедуры должен описываться заранее, при этом часто невозможно предусмотреть, какие дополнительные параметры должны передаваться в процедуру. В таких случаях первый способ может оказаться предпочтительнее.

Пример

Контейнерный класс с процедурой обработки всех объектов (класс «Список»). В этом случае класс «Список» будет описываться следующим образом:

Класс «Список»

Реализация

Поля Указатель_напервый, Указатель_натекущий

Интерфейс

метод Добавить_перед_первым (аЭлемент)

Метод Удалить_последний

метод Выполнить_для_всех (аПроцедура_обработки)


Дата добавления: 2015-09-06; просмотров: 189 | Нарушение авторских прав


Читайте в этой же книге: Объектная декомпозиция | Объекты и сообщения | Т: Классы | Конец описания. | Простой полиморфизм | Конец описания. | Композиция при разработке классов | Наполнение при разработке классов | Делегирование методов |
<== предыдущая страница | следующая страница ==>
Контейнерные классы| Исключения при разработке классов

mybiblioteka.su - 2015-2024 год. (0.007 сек.)