русс | укр

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

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

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

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


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

Основные принципы ООП


Дата добавления: 2015-01-08; просмотров: 540; Нарушение авторских прав


Класс в ООП соответствует определённому объекту предметной области. При работе с классами используются три основных принципа:

- инкапсуляция;

- полиморфизм;

- наследование.

Подробное рассмотрение этих принципов не является задачей данного пособия, поэтому они будут описаны в краткой форме.

Инкапсуляция означает объединение данных и кода, который их обрабатывает, в едином элементе программе – классе. Это позволяет обезопасить данные от внешнего вмешательства и неправильного их использования, а также скрыть подробности внутренней реализации класса. Программист – разработчик класса обычно стремится скрыть данные от внешней программы и реализовать для их обработки собственные функции.

Например, может быть разработан класс для представления даты. Дата хранится внутри класса в виде трех чисел – дня, месяца и года. Непосредственный доступ к этим числам закрыт, а для их получения и изменения разработаны соответствующие функции класса. Функции изменения даты проверяют допустимость её нового значения: месяц должен быть в диапазоне от 1 до 12, день – от 1 до 28-31 в зависимости от месяца и года. Год также может иметь диапазон допустимых значений.

В классе даты также могут быть функции увеличения и уменьшения её значения на указанное количество дней, вычитания двух дат для получения временного интервала, проверки года на високосность и т.д.

В результате получается самодостаточный класс даты, который можно легко использовать в программах не зная ничего о его внутреннем устройстве и не заботясь о собственных алгоритмах работы с датами. В этом смысле класс можно считать «чёрным ящиком».

Полиморфизм – это свойство, позволяющее использовать одно имя для обозначения множества схожих, но в чём-то отличающихся действий. Говоря другими словами: один интерфейс – множество реализаций. Одним из примеров полиморфизма является перегрузка функций, при которой несколько функций имеют одно имя, но различаются типом и/или количеством аргументов. Выбор конкретной функции при использовании общего имени выполнит компилятор при сборке программы.



Таким образом, полиморфизм позволяет упростить разработку программ за счет введения одного имени для задания общего класса действий.

Например, пусть существует класс геометрических фигур. Он может быть использован для описания треугольника, прямоугольника, ромба, эллипса и т.д. Класс реализует функции для перемещения, поворота и масштабирования фигур. Полиморфизм позволяет использовать для этих действий одно имя для всех типов фигур. Например, функция поворота будет называться rotate. Это одно имя будет иметь различные реализации для разных типов фигур. Функции масштабирования также будет отличаться в зависимости от фигуры, для которой они выполняются. Но все эти функции будут иметь одно имя, например, scale.

Другой пример полиморфизма – класс матрицы. В программе могут быть описаны несколько классов матриц, отличающиеся типами элементов. Например, матрица целых чисел, матрица символов и матрица строк. Все они будут иметь функции возвращения подматрицы. И эти функции будут иметь одно имя – submatrix – несмотря на то, что каждый класс матрицы будет иметь собственную реализацию этой функции.

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

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

Например, существует класс «Автомобиль». У него может быть следующий перечень свойств: «Масса», «Количество пассажирских мест», «Объём бака», «Мощность двигателя», «Количество колес».

В качестве его наследников создаются классы «Автобус», «Грузовик», «Легковой автомобиль». Они наследуют все свойства родителя.

Класс «Автобус» дополнительно определяет свойства «Количество сидячих мест», «Количество стоячих мест», «Количество дверей для посадки пассажиров», «Тип автобуса».

Класс «Грузовик» задает собственные свойства «Объем платформы», «Тип грузовика».

Класс «Легковой автомобиль» добавляет к свойствам родителя «Тип кузова», «Количество дверей», «Объём багажника».

На основе класса легковой автомобиль могут быть созданы производные классы, описывающие конкретные марки машин. Например, его наследниками будут классы «ВАЗ 2101», «ВАЗ 2110», «Ford Focus», «Toyota Camry» и т.д.

В результате получается следующая иерархия классов:



<== предыдущая лекция | следующая лекция ==>
Директива #define | Объявление класса


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


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

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

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


 


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

 
 

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

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