Введение в теорию программирования. Объектно-ориентированный подход



             

Основные понятия объектно-ориентированного подхода: объекты, классы и методы - часть 3


Для иллюстрации приведем следующий пример фрагмента программы на языке C#:

class Stack { int[] values; int top = 0; public Stack(int size){ ... } public void Push(int x){ ... } public int Pop(){ ... } }

В данной программе приведено (с сокращениями) описание класса, моделирующего стек (аналогичный стеку КАМ) посредством массива элементов values с вершиной top, функциями создания стека Stack размером size и "выталкивания" Push элемента x из стека, а также "вталкивания" Pop элемента в стек.

Аналогично объектам ссылочных типов, объекты классов (как принципиально динамические) хранятся в динамической области памяти (или так называемой "куче"). В силу ограничений безопасности программного кода любой объект языка программирования C# до использования необходимо инициализировать оператором new, например:

Stack s = new Stack(100);

Заметим, что наследование классами свойств других классов может быть как единичным, так и множественным. Последнее реализуется посредством множественных интерфейсов (что приводит к множественному наследованию типов).

Подводя итоги обсуждения основных понятий объектно-ориентированного подхода к программированию (классов, объектов и методов) применительно к языку программирования C#, кратко отметим достоинства и недостатки подхода.

К преимуществам объектно-ориентированного подхода следует отнести:

  • интуитивную близость произвольной предметной области;
  • возможность моделирования сколь угодно сложной предметной области, высокий уровень абстракции (рассмотренные примеры дают представление о "масштабируемости" моделирования сложных объектов);
  • событийно-ориентированный подход (динамика объектов и возможность манипулирования ими посредством методов приводят к управлению объектами посредством событий);
  • возможность повторного использования описаний (основана на обращении к полям и методам извне описания классов, а также на использовании механизма наследования);
  • параметризация методов обработки объектов (основана на использовании механизма интерфейсов, которые будут подробно рассмотрены в ходе дальнейших лекций).

К недостаткам объектно-ориентированного подхода к программированию можно отнести сложность тестирования и верификации программ. Заметим, однако, что выбор ламбда-исчисления и комбинаторной логики в качестве средства формализации объектов, классов и методов позволяет построить адекватную, полную и непротиворечивую объектную модель, учитывающую как статический, так и динамический случаи.

Для более подробного самостоятельного ознакомления с тематикой лекции рекомендуется следующий список источников: [ 24, 28, 36, 66-69, 79-81].




Содержание  Назад