Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 94 стр.

UptoLike

Составители: 

94
виртуальный метод, переопределяемый потомком, поэтому к ним при-
меняется стратегия динамического связывания.
Абстрактные классы являются одним из важнейших инструмен-
тов объектно-ориентированного проектирования классов. В основе лю-
бого класса лежит абстракция данных. Абстрактный класс описывает
эту абстракцию, не входя в детали реализации, ограничиваясь описани-
ем тех операций, которые можно выполнять над данными класса. Так,
проектирование абстрактного класса Stack, описывающего стек, мо-
жет состоять из рассмотрения основных операций над стеком и не опре-
делять, как будет реализован стек списком или массивом. Два потом-
ка абстрактного класса ArrayStack и ListStack могут быть уже
конкретными классами, основанными на различных представлениях
стека. Вот описание полностью абстрактного класса Stack:
public abstract class Stack {
public Stack(){}
public abstract void put(int item);
public abstract void remove();
public abstract int item();
public abstract bool IsEmpty();
}
Создадим теперь класс ListStack производный от этого абст-
рактного класса Stack, реализация которого основана на списковом
представлении. Данный класс будет включать объекты класса
Linkable, задающего элементы списка. Класс Linkable выглядит
следующим образом:
public class Linkable{
public Linkable(){ }
public int info;
public Linkable next;
}
В данном классе описаны два поля и конструктор по умолчанию.
Рассмотрим теперь класс ListStack:
public class ListStack: Stack {
public ListStack(){
top = new Linkable();
}
Linkable top;
public override void put(int item){
Linkable newitem = new Linkable();
newitem.info = item;
newitem.next = top;
top = newitem;