Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование работы перекрёстка по регулированию движения на GPSS + Поя...
База данных - словарь терминов на Delphi + Пояснительная записка
Двунаправленный динамический список на Delphi + Блок схемы

ПРИНЦИПЫ, ЛЕЖАЩИЕ В ОСНОВЕ ООП


ООП не появилось на пустом месте. Этот подход скорее развивает и облегчает воплощение принципов программирования, которые применяются уже на протяжении нескольких десятилетий. Речь идет о модульности, иерархии и абстрагировании.
Вы уже встречались с понятием модульности. Под модулем обычно имеется в виду часть программы, которая может включать данные и одну или несколько процедур. Второй стороной модуля являются строгие и относительно простые правила его использования, которые в программировании выражаются понятием интерфейс. В этом смысле и процедуры, и функции образуют модули, причем их интерфейс определяется заголовком процедуры или функции . Классическим модулем в Pascal является Unit. В нем существует отдельный раздел описывающий интерфейс — interface.
При разработке модулей остается не вполне ясно, какие процедуры должны быть включены в один модуль, а какие в другой. ООП дает собственный критерий распределения процедур по логическим модулям — каждый вид объектов описывается некоторыми данными и процедурами, выполняющими основной набор действий над ними — методами. И данные и методы объединяются в одно логическое понятие — класс. Особенность методов еще и в том, что они применимы только к объектам одного класса. Обычно описание класса вместе с реализацией методов и выделяют в отдельный модуль.
Чтобы определить модуль мы прибегли к понятию интерфейс. Наличие интерфейса неявно предполагает, что не все детали модуля проявляются при его использовании, иными словами, некоторая часть содержания модуля от пользователя скрыта. Эта часть называется реализацией (implementation). В процедурах и функциях скрыты локальные переменные и алгоритм, в Unit скрыты статические данные, константы, типы, процедуры и функции не объявленные в разделе interface.
В объектно–ориентированном программировании механизмам скрытия уделяется особое внимание, в связи с чем введено понятие инкапсуляции. В полном смысле инкапсуляция означает объединение в одно целое данных и методов работы с ними с одной стороны, и обеспечение доступа к данным только через методы класса, т.е. скрытие реализации, с другой. Таким образом, понятие класса в ООП тесно связано с интерфейсом объектов и скрытием их реализации, т.е. можно сказать, что ООП развивает понятие модульности.
Даже для встроенных типов в паскаль можно наблюдать инкапсуляцию. Так средства языка не позволяют непосредственно прочесть дробную часть действительного числа, узнать длину строки не используя функцию length или не прибегая к специальным функциям определить размер массива.
При структурном подходе к проектированию и программированию большое значение придается иерархической организации программы. Имеется главная программа, которая вызывает подчиненные подпрограммы более низкого уровня иерархии, а они в свою очередь обращаются к другим подпрограммам и т.д.
Иерархия понятий в ООП поддерживается механизмом наследования. При разработке очередного класса, программист имеет возможность указать, что объекты этого класса являются объектами другого более общего класса, и описать лишь его новые дополнительные особенности.
Наконец, последний из упомянутых принципов — абстрагирование. Под абстрагированием понимается формирование общих понятий. Такими понятиями в программировании являются типы. Каждый тип соответствует не одному реальному объекту, а целому множеству: строки, числа, записи о студентах, трехмерные вектора и т.д. являются абстракциями, позволяющими хранить конкретные данные определенного типа. Класс тоже является типом.
Кроме того, ООП позволяет создавать абстракции операций. Это явление получило название полиморфизма. Полиморфизм позволяет определять логически схожие действия одинаково над различными данными.
Полиморфизм присутствует в самом языке Pascal. Вспомните как выполняется операция сложения над числами и строками. И то, и другое мы легко воспринимаем как сложение, хотя смысл операции в каждом из случаев совершенно различен. Можно было бы определить и операцию сложения файлов. Другой пример полиморфизма — вывод данных. Строка непосредственно выводится на дисплей, тогда как число сначала преобразуется в строку, а затем полученная строка выводится. При отсутствии такого полиморфизма программы стали бы значительно менее наглядными.
В Delphi Object Pascal полиморфизм становится инструментом программиста — методы разных классов могут иметь одинаковые имена. Какое именно действие будет выполняться, зависит от класса объекта. Кроме того, виртуальные методы позволяют не определять класс объекта во время компиляции программы, а отложить выяснение до момента обращения к методу. Таким образом, один и тот же код может с успехом работать для объектов различных классов, которые будут обрабатываться в процессе выполнения программы.
Опубликовал Kest May 26 2011 20:51:31 · 0 Комментариев · 6990 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Голосование для ...
База данных фильм...
Assembler. Практикум
Java 2 - Эффектив...
Pass [Исходник на...
Краснов М. - Open...
Советы по Delphi
Abc_component
PHP, MySQL и Drea...
SynEdit
C++ : библиотека ...
Blib [Исходник на...
Animation (Пример...
PDPcheck
Пример работы с р...
JanComp
Delphi 6. Учебный...
База предприятий ...
Создание фракталов
Delphi 2005 Учимс...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97837
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10292
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Если ГВС-канал свя...
Технологии SQL
Играть онлайн бесп...
Поток с использова...
Циклический код по...
Мебельные петли
Почему каждый хост...
Особенности команд...
Окно редактора кол...
Клуб Вулкан онлайн...
Делаем закругленны...
политику издания, ...
О ВРЕМЕНИ, О П...
Драйвер seg_map
Как взломать форум...
Компонент изображение
Hemstädning N...
Интерфейс с базой ...
Новостные сайты
Типы данных
Однако нужная поло...
• Для шифрования и...
Аккуратно работаем...
Программа считывае...
ПРЕОБРАЗОВАНИЕ АРИ...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?