ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
3.3.2. Наследование на основе списка классов стека и
очереди
Стек и очередь – это такие динамические структуры данных, в
которых добавление и извлечения элементов происходит по четко
определенным правилам. Стек работает по правилу LIFO (Last In First
Out), т.е. «последним вошел, первым вышел». Очередь работает по
правилу FIFO (First In First Out), т.е. «первым вошел, первым вышел». Для
реализации стеков и очередей можно использовать динамические списки.
Поскольку структура данных, методы добавления и извлечения
элементов определены уже в классе List, классы стека (Stack) и
очереди (Queue) удобно наследовать от класса List. Класс List
обладает большими функциональными возможностями, чем это нужно
для реализации стека и очереди. Например, из списка можно удалять
элементы по ключу, добавлять и удалять элементы из любой позиции.
Поэтому использование методов класса List в дочерних классах должно
быть ограничено. Это можно осуществить, используя private-
наследование. В этом случае все методы базового класса становятся
private-методами для производных классов. Они могут быть вызваны
только из методов классов-наследников. Для контролируемого вызова и
корректного использования методов базового класса в классы Queue и
Stack добавляем методы помещения и извлечения элемента. Таким
образом, объявления производных классов могут быть следующими:
class Stack : private List
{
public:
// метод добавления элемента в стек
void PushElement(int);
// метод извлечения элемента из стека
int PopElement();
// дружественная функция печати стека
friend ostream& operator<<(ostream&, Stack&);
};
159
Объектно-ориентированное программирование на С++
3.3.2. Наследование на основе списка классов стека и
очереди
Стек и очередь – это такие динамические структуры данных, в
которых добавление и извлечения элементов происходит по четко
определенным правилам. Стек работает по правилу LIFO (Last In First
Out), т.е. «последним вошел, первым вышел». Очередь работает по
правилу FIFO (First In First Out), т.е. «первым вошел, первым вышел». Для
реализации стеков и очередей можно использовать динамические списки.
Поскольку структура данных, методы добавления и извлечения
элементов определены уже в классе List, классы стека (Stack) и
очереди (Queue) удобно наследовать от класса List. Класс List
обладает большими функциональными возможностями, чем это нужно
для реализации стека и очереди. Например, из списка можно удалять
элементы по ключу, добавлять и удалять элементы из любой позиции.
Поэтому использование методов класса List в дочерних классах должно
быть ограничено. Это можно осуществить, используя private-
наследование. В этом случае все методы базового класса становятся
private-методами для производных классов. Они могут быть вызваны
только из методов классов-наследников. Для контролируемого вызова и
корректного использования методов базового класса в классы Queue и
Stack добавляем методы помещения и извлечения элемента. Таким
образом, объявления производных классов могут быть следующими:
class Stack : private List
{
public:
// метод добавления элемента в стек
void PushElement(int);
// метод извлечения элемента из стека
int PopElement();
// дружественная функция печати стека
friend ostream& operator<<(ostream&, Stack&);
};
159
Страницы
- « первая
- ‹ предыдущая
- …
- 157
- 158
- 159
- 160
- 161
- …
- следующая ›
- последняя »
