русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Public int pop ( )


Дата добавления: 2014-10-07; просмотров: 666; Нарушение авторских прав


{if (StackPointer >0) return SrackEntnes[--StackPointer]:

else return 0;

}

}

 

Используя этот класс как шаблон, при помощи следующего оператора на Java или С# можно создать объект с именем StackOne, представляющий стек объемом до 50 целых чисел:

StackOfIntegers StackOne = new Stack0flntegers(50);

Для C++ это будет оператор StackOfIntegers Stack0ne(50):

Далее в программе в стек StackOne можно протолкнуть значение 106, применив оператор

StackOne.push(106):

или получить в переменную OldValue верхнюю запись из StackOne при помощи оператора

OldValue - StackOne.pop ( ):

Возвращаясь к листингам 1 и 2, обратите внимание, что для обеспечения целостности структур данных в классе используется инкапсуляция. В частности, StackEntries и StackPointer определены в разделе private, тогда как методы push и pop — в разделе public. Так, внутренняя структура стека недоступна за пределами экземпляров класса. Любое обращение к стеку должно быть выполнено при помощи общих методов.

Чтобы понять важность такой защиты, предположим, что StackEntries и StackPointer определены как publiс, и программисту требуется обратиться к третьей записи стека типа StackOfIntegers. Программист, который знает, как стек реализован в памяти, может нарушить целостность стека и обратиться к массиву StackEntry напрямую, а не путем выталкивания первых двух записей. Проблема состоит в том, что в будущем программисты, обслуживающие это приложение, могут внести где-либо в программе изменения, не совместимые с этой прямой ссылкой на запись. Например, для увеличения максимального размера стека можно изменить внутреннюю организацию типа StackOfIntegers с массива на связную структуру, в которой прямая ссылка, предполагающая, что стек реализован в виде массива, будет недопустима.

В завершение раздела заметим, что класс StackOfInteges в том виде, как он определен в листингах 1 и 2, иллюстрирует кульминацию темы, проходящей через все предыдущие лекции, — это набор структур данных и процедур для управления ими в одном программном модуле. Действительно, концепция классов позволяет еще более расширить эту тему, так как разрешает программистам объединять структуры данных и относящиеся к ним процедуры в форме пользовательских типов данных, при помощи которых можно создавать множество экземпляров. На самом деле концепция классов является более общей, чем концепция типов данных, так как класс может состоять, в том числе, только из процедур. Или другой экстремальный случай — класс может включать только структуры данных. Таким образом, концепция классов ~ это мощный инструмент разработки программного обеспечения, при помощи которого можно проектировать и реализовывать шаблоны для программных модулей различных видов. Классы и объектно-ориентированный принцип стали основными инструментами в сегодняшнем арсенале средств разработки приложений.



Знания обычно принимают одну из двух форм: первый случай иллюстрируется тем, что человек знает свое имя, а второй — что человек знает, как ходить. Первый пример — это пример описательных знаний, которые отвечают на вопросы «кто?», «что?», или «почему?». Зачастую мы связываем описательные знания с накоплением фактов. Второй пример — это процедурные знания, отвечающие на вопрос «как?». Их мы ассоциируем с возможностью производить подходящее действие. Важны обе формы. В частности, накопление исключительно описательных данных редко говорит о превосходном владении предметом изучения.

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



<== предыдущая лекция | следующая лекция ==>
Int pop ( ) | Роль операционной системы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.114 сек.