- •Оглавление
- •1. Информация, ее представление и измерение
- •2. Общая характеристика процессов сбора, передачи и обработки информации
- •2.1. Системы счисления и действия в них
- •2.2. Общая характеристика процессов передачи информации
- •2.3. Кодирование и шифрование информации
- •2.4. Компьютерные вирусы
- •3. Модели решения функциональных и вычислительных задач
- •3.1. Модели и моделирование
- •3.2. Основные свойства модели и моделирования
- •Моделирование – есть метод системного анализа.
- •3.3. Классификация видов моделирования
- •3.4. Компьютерное моделирование
- •3.5. Функции алгебры логики
- •3.6. Булева алгебра. Функциональная полнота
- •8. Закон поглощения
- •9. Закон Де Моргана
- •3.7. Минимизация функций алгебры логики
- •4. Программные средства реализации информационных процессов
- •5. Технические средства реализации информационных процессов
- •6. Алгоритмизация и программирование
- •6.2. Данные, типы данных, структуры и обработка
- •7. Архитектура эвм. Локальные и глобальные сети.
- •7.1. Архитектура эвм
- •7.2. Cеть передачи данных
- •7.3. Аппаратные средства сети
- •7.4. Локальная вычислительная сеть
- •7.5. Топология сети
- •7.6. Глобальная вычислительная сеть
- •7.7. Сетевая модель osi
- •7.8. Стек протоколовTcp/ip
- •8. Программное обеспечение
- •8.1. Классификация и основные характеристики по
- •8.2. Структура технического обеспечения
- •8.3.Состав операционной системы и ее основные функции
- •9. Технология программирования
- •9.1. Организация данных в эвм
- •9.2. Стеки и очереди
- •9.3. Графы
- •9.4. Деревья
- •10. Базы данных
- •10.1. Основные понятия
- •10.2. Модели данных в субд
- •Реляционные базы данных
- •Выбор типа поля
- •10.3. Основные понятия реляционной модели
- •11. Объектно – ориентированное программирование
- •11.1. Основные положения ооп
- •11.2. Инкапсуляция
- •11.3. Полиморфизм
- •11.5. Наследование
- •Литература
11.2. Инкапсуляция
Инкапсуляция - это механизм, который объединяет данные и код, и защищает и то и другое от внешнего вмешательства или неправильного использования. В ООП код и данные могут быть объединены вместе; в этом случае говорят, что создается так называемый «черный ящик». Все необходимые данные и коды находятся внутри его, то есть создается объект. Другими словами, объект - это то, что поддерживает инкапсуляцию. Внутри объекта коды и данные могут быть закрытыми (private) или открытыми (public). По умолчанию действует принцип private. Закрытые коды или данные недоступны для тех частей программы, которые существуют вне объекта. В случае public коды и данные доступны для всех частей программы. Характерной чертой является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс с его закрытой частью. Рассмотрим такое важное понятие как класс.
Класс - это механизм для создания объектов. Синтаксис описания класса на С++ похож на синтаксис описания структуры.
class имя класса {
закрытые функции и переменные класса
public:
открытые функции и переменные класса
} список объектов;
В описании класса список объектов не является обязательным. Функции и переменные, объявленные внутри класса, становятся членами этого класса. По умолчанию, все функции и переменные, объявленные в классе, становятся закрытыми для этого класса. Все функции и переменные, объявленные после слова public, доступны как для членов класса, так и для любой другой части программы, в которой содержится класс.
11.3. Полиморфизм
Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более задач, но технически разных. Целью полиморфизма, применительно к ООП, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом и/или количеством данных. Например, в языке С++ можно использовать одно имя функции для множества различных действий. Это называется перегрузкой функции. В более общем смысле концепцией полиморфизма является идея «один интерфейс, множество методов». Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. При этом выполнение конкретного действия зависит от данных. Преимуществом полиморфизма является то, что он помогает снижать сложность программ. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Полиморфизм может применяться и к функциям, и к операциям.
Остановимся на понятии перегрузка функций. Перегрузка функций не только обеспечивает тот механизм, посредством которого в С++ достигается один из типов полиморфизма, она также формирует то ядро, вокруг которого развивается среда программирования. Перегрузить функцию очень легко: просто объявите и задайте все требуемые варианты. Компилятор автоматически выберет правильный вариант вызова на основании числа или /и типа используемых в функции аргументов. То есть, имеем один интерфейс и множество методов.
Рассмотрим пример определения абсолютного значения числа, представляемого как целое, как длинное целое и как число с плавающей точкой на основе введения перегрузки функции.
# include < iostream.h >
// Перегрузка abs() тремя способами
int abs( int n);
long abs( long n);
double abs( double n);
main()
{
cout << ‘’ Абсолютная величина -10:’’ << abs(-10) << ‘’\n’’;
cout << ‘’ Абсолютная величина -10L:’’ << abs(-10L) << ‘’\n’’;
cout << ‘’ Абсолютная величина -10.01:’’ << abs(-10.01) << ‘’\n’’;
return 0;
}
int abs( int n)
{
return n < 0 ? -n : n;
}
long abs(long n)
{
return n < 0 ? -n : n;
}
double abs(double n)
{
return n < 0 ? -n : n; }
Как можно заметить, в программе задано три функции abs(), своя функция для каждого типа данных. Внутри main() abs() вызывается с тремя аргументами разных типов. Компилятор автоматически вызывает правильную версию abs(), основываясь на используемом в аргументе типе данных. На этом простом примере видна ценность перегрузки функций. На компилятор возлагается задача выбора соответствующей конкретной версии вызываемой функции, а значит и метода обработки данных. Это имеет лавинообразный эффект для снижения сложности программ. В данном случае, благодаря использованию полиморфизма, из трех имен получилось одно. Перегружаемые функции могут отличаться не только типом своих переменных, но и числом параметров.