Имя типа: Simple List ( Простой список )
Свойства типа: Может содержать последовательность элементов.
Операции с типом: Инициализация пустого списка. Определение того, является ли список пустым.
Определение того, является ли список
заполненным.
Определение количества элементов в списке. Добавление элемента в конец списка. Перемещение по списку с обработкой каждого элемента списка.
Тема «Классы С++ и абстрактные типы данных. Класс как расширенное понятие структуры»
Совокупность принципов проектирования, разработки и реализации программ, которая базируется на абстракции данных, предусматривает создание новых типов данных. Одновременно с данными для каждого типа вводится набор функций, необходимых для обработки этих данных. Таким образом, создаваемые пользователем абстрактные типы данных могут
12
обеспечить представления предметной области решаемой задачи. В языке С++ можно вводить собственные типы данных и определять операции над ними с помощью классов.
Рассмотрим отличие структуры от класса. Структура – это объединяемое в единое целое множество поименованных элементов в общем случае разных типов.
Класс - это определяемый пользователем тип с данными и функциями (методами), Они называются полями класса.
Создадим вначале структуру «человек - примитивный». Структура содержит только данные ( параметры):
Позиция_х = 3
Позиция_х =4
Движется = false
Сила_правой_руки =10
Сила_левой_руки = 6
Правая_рука_занята=true
Правая_рука_занята=true
Дальнозоркость = 90
Жизненная сила =100
Одни только свойства и навыки не могут наделить нашего человека интеллектом, поскольку он должен научиться ими управлять. Управлять он будет с помощью функций.
Функциональные возможности:
Осмотреться();
Позиция_свободна(x,y);
Передвинуться_на_позицию(x,y);
Идти_вперёд();
Идти_назад();
Идти_влево();
Идти_вправо();
Остановиться();
Проверить_заняты_ли_руки();
Взять_предмет(какой);
Если к данным добавить функциональные возможности, то получиться класс «человек - примитивный»
Переменная типа «класс» называется объектом (object). Класс создает различные уровни доступа к его полям, разделяя объявление на части: private, protected и public. Часть private (закрытая) объекта может быть доступна только для функций-полей в этом классе. Часть public (открытая) объекта может быть доступна для внешних элементов программы , в области действия которых находится этот объект (рис. 3.1). Protected (защищенные) члены используются с производными классами.
13
Private:
|
|
|
Данные
|
|
|
методы
|
|
|
Поля класса
|
|
|
Public:
|
Внешние программные единицы
|
|
Данные
|
|
методы
|
|
|
Рис 3 Доступ к методам класса
Объявление класса
Объявление класса начинается с заголовка класса (class head), состоящего из зарезервированного слова class, за которым следует имя класса. Поля . класса определяются в теле класса (class body), которое заключается в фигурные скобки и заканчивается точкой с запятой. Зарезервированные слова public и private разделяют поля класса, и эти спецификаторы доступа заканчиваются двоеточием. Поля класса объявляются как переменные С++, а методы задаются, как объявления функций С++. Общая форма объявления класса такова: '
class Имя класса
{
private:
Закрытые данные
Объявление закрытых методов
. . . . . . . .
pиblic:
Объявление открытых методов
Следует, по возможности, помещать данные класса в закрытую секцию. В результате этого значение данных обновляется только функцией-методом класс. Это предотвращает нежелательные изменения в данных кодом использующего класс приложения.
Пример
Класс Rectangle
При геометрических измерениях прямоугольник определяется его длиной и шириной. Это позволяет нам вычислять периметр и площадь фигуры. Параметры длины и ширины и операции объединяются для образования абстрактного типа данных прямоугольной фигуры. Мы разрабатываем класс Rectangle. Класс содержит конструктор и набор методов - GetLength, PutLength, GetWidth и PutWidth, имеющих доступ к закрытым полям класса. Объявление класса Rectangle следующее:
Do'stlaringiz bilan baham: |