- •Методы измерения дальности.
- •Частотный метод радиодальнометрии.
- •2.Фазовые методы дальнометрии.
- •Методы радиодальнометрии
- •Фазовый метод
- •Частотный метод
- •Радиолокационные методы измерения дальности
- •50. Обзор защищенного бумажного и электронного делопроизводства
- •Иерархия базовых классов vcl
- •Визуальный подход к разработке алгоритмов и программ (принципы визуального программирования, компоненты, их свойства и события, обработка событий, процессы во времени, пример).
- •2.Типы объектовых средств охраны.
- •2.1.Пассивные инфракрасные детекторы движения.
- •2.2.Детекторы битого стекла.
- •2.4.Ультразвуковые детекторы.
- •Достоинства и недостатки
- •47. Основы деятельности информационно-аналитической службы безопасности
- •Системы счисления и форматы представления данных
- •Системы счисления
- •Формат представления чисел
- •15. Функция Эйлера. Теорема Эйлера. Малая теорема Ферма. Понятие простого числа и взаимопростых чисел. Алгоритмы Эвклида поиска нод двух и большего числа целых чисел.
- •Взаимно простые числа
- •Микропроцессорная техника
- •Виды технологии производства мп
- •25. Классификация извещателей тсо. Принцип действия бесконтактных датчиков: омический, оптоэлектронный, емкостной, ультразвуковой, радиоволновой. Способы снижения влияния помех на извещатели.
- •Организация и структура полупроводниковой памяти микропроцессорных систем. Классификация. Принципы построения. Наращивание информационной емкости и разрядности памяти.
- •Функции памяти
- •Сетевая модель osi. Взаимодействие уровней модели osi. Сетевая модель ieee Project 802 и ее категории. Расширения модели osi. Назначение и работа протоколов.
- •Модель ieee
- •Simple Mail Transfer Protocol (smtp) – простой протокол электронной почты.
- •Internet Protocol (ip) – межсетевой протокол.
- •Internet Control Message Protcol (icmp) – межсетевой протокол управляющих сообщений.
- •Архитектуры и стандарты Ethernet на 10, 100, 1000 Мбит/с.
- •Ethernet – основные характеристики
- •Модификации Ethernet – 10BaseT (802.3i )
- •Модификации Ethernet -10Base2 (ieee 802.3a)
- •Модификации Ethernet -10Base5 (ieee 802.3)
- •Модификации Ethernet -10BaseF (ieee 802.3)
- •Стандарты ieee на 100 Мбит/с
- •Модификации Ethernet -100BaseX Ethernet (Fast Ethernet)
- •Модификации Ethernet -100BaseVg-AnyLan
- •Модификации Ethernet –Gigabit Ethernet
- •Модификации Ethernet –Gigabit Ethernet; 1000base-cx
- •49. Принципы обработки конфиденциальных документов.
- •Работа с внутренними документами
- •Кодирование информации в системах связи. Принципы и понятия.
- •Помехоустойчивое кодирование
- •Классификация помехоустойчивых кодов
- •33. Меры защиты информации: законодательного, административного, процедурного и программно-технического уровня. Законодательный, административный, процедурный, программно-технический уровни
- •Основные методы коммутации. Основные понятия, принципы Методы коммутации в сетях электросвязи
- •1. Коммутация каналов,
- •2. Коммутация пакетов,
- •3. Гибридная коммутация каналов и пакетов
- •Гибридная коммутация каналов и пакетов
- •35. Работа с персоналом: виды угроз информационным ресурсам, связанные с персоналом, подбор персонала. Виды угроз
- •Требования к системе защиты информации.
- •Объекты информационной системы Организации, подлежащие защите.
- •Синхронные и асинхронные методы передачи данных. Основные принципы
- •Асинхронные многоканальные системы передачи
- •2. Этапы создания комплексной системы защиты информации
- •3. Научно-исследовательская разработка ксзи
- •14. Многоканальные системы передачи информации. Частотное и временное разделение сигналов. Основные принципы и понятия. Общие принципы построения многоканальных систем передачи
- •Обобщенная структурная схема многоканальной системы передачи
- •Классификация многоканальных систем связи
- •Системы передачи с разделением каналов по частоте
- •Системы передачи с временным разделением каналов
- •Часть 2 стандарта включает универсальный систематизированный каталог функциональных требований безопасности и предусматривает возможность их детализации и расширения по определенным правилам.
- •Среда безопасности
- •Цели безопасности
- •Требования безопасности ит
- •Краткая спецификация оо
- •Парадигма функциональных требований
- •Функциональные компоненты безопасности Краткий обзор
- •Структура класса
- •Структура семейства
- •Имя семейства
- •Характеристика семейства
- •Ранжирование компонентов
- •Управление
- •Структура компонента
- •Идентификация компонента
- •Функциональные элементы
- •16. Понятие кольца многочленов над конечным полем. Неприводимые многочлены. Порядок многочленов над конечным полем. Число нормированных неприводимых многочленов степени n над конечным полем .
- •Подход к доверию
- •Требования доверия к безопасности Структуры
- •Структура класса
- •Ранжирование компонентов
- •Компоненты доверия
- •Структура компонента доверия
- •Замечания по применению
- •Элементы доверия
- •Элементы доверия
- •Структура оуд
- •Замечания по применению
- •Компоненты доверия
- •Приемка оо
- •Мониторинг оо
- •Переоценка
- •Оценочные уровни доверия
- •Краткий обзор оценочных уровней доверия (оуд)
- •Критерии безопасности компьютерных систем министерства обороны сша («Оранжевая книга»)
- •Классы безопасности компьютерных систем
- •Руководящие документы Гостехкомиссии России.
- •Классы защищенности автоматизированных систем
- •Машины Тьюринга.
- •Анализ и синтез машин Тьюринга
- •19. Асимметричные системы шифрования. Основные этапы реализации электронной цифровой подписи. Электронная цифровой подписи по алгоритму rsa.
- •Основные принципы построения криптосистем с открытым ключом
- •Особенности системы Применение
- •Преимущества
- •Недостатки
- •Виды асимметричных шифров
- •Асимметричные криптосистемы. Эцп rsa
- •Эцп сжатого сообщения по rsa
- •Криптоанализ rsa
- •20. Общая схема подписывания и проверки подписи с использованием хэш-функции. Основные свойства хэш-функций. Вычисление хэш-функции по гост р 34.11-94, по алгоритму sha.
- •Гост р34.11-94
- •Магнитные карты
- •Магнитные карты: изготовление
- •Магнитные карты: кодирование
- •Магнитные карты: персонализация
- •Технология производства карт с магнитной полосой
- •Карты Виганд
- •Разновидности
- •Электрическое подключение
- •Формат данных в кадре
- •Передача данных
- •Пластиковые карты с штрих-кодом
- •Контактная память(touch memory)
- •Смарт-карты контактные и бесконтактные
- •Виды смарт-карт
- •Контактные смарт-карты с интерфейсом iso 7816
- •Контактные смарт-карты с usb интерфейсом
- •Бесконтактные смарт-карты (бск)
- •Контактные карты
- •Бесконтактные карты
- •Биометрические системы контроля доступа
- •Краткое описание алгоритма
- •Алгоритмы эцп
- •Алгоритмы выработки имитовставки
- •28. Защита телефонных линий связи на предприятии. Методы обнаружения устройств несанкционированного съема информации с телефонных линий. Методы съема информации с линий связи.
- •48. Классификация информации и документов. Свойства различных видов документов.
- •29. Методы защиты речевых сигналов, передаваемых по каналам связи предприятия: скремблеры и криптографические методы. Принципы работы и сравнительные характеристики методов защиты сигналов.
- •Классификация факторов, воздействующих на защищаемую информацию
- •1 Перечень объективных факторов, воздействующих на защищаемую информацию, в соответствии с установленным принципом их классификации (4.3)
- •2 Перечень субъективных факторов, воздействующих на защищаемую информацию, в соответствии с установленным принципом их классификации.
- •Общие положения
- •Основные принципы защиты от нсд
- •Модель нарушителя в ас
- •30. Досмотровая техника, используемая на предприятиях: металлоискатели, тепловизоры, рентгеновская аппаратура. Принципы работы и методика обнаружения.
- •Индукционный метод обнаружения металлических обьектов
- •36. Формирование информационных ресурсов и их классификация. Основные определения в области информационного права
- •Информационные ресурсы
- •Классификация и виды информационных ресурсов
- •Правовое регулирование информации в компьютерных сетях
- •37. Правовые основы защиты государственной, коммерческой и профессиональной тайны.
- •Правила распространения и хранения
- •Сеансовый ключ. Хранение.
- •Цифровые конверты
- •Прямой обмен ключами между пользователями
- •38. Правовые формы защиты интеллектуальной собственности. Объекты интеллектуальной собственности
- •Правовые нормы защиты интеллектуальной собственности
- •Правовая охрана программ для эвм и баз данных
- •Технические средства защиты авторских прав
- •Охрана топологии интегральных микросхем
- •Охрана объектов промышленной собственности
- •Право на секрет производства (ноу-хау)
- •Права на средства индивидуализации юридических лиц, товаров, работ, услуг и предприятий
- •Основные приёмы, используемые при взаимной аутентификации
- •Типовые схемы идентификации и аутентификации
- •Аутентификация субъекта в асимметричных системах по стандарту ccitt Recommendation X.509. Двухэтапная аутентификация
- •Cхема «рукопожатия» взаимной аутентификации.
- •39. Система правовой ответственности за разглашение, утечку информации.
- •Свойства.
- •Самообучение. Детерменированные и стохастические методы обучения.
- •41. Информация как товар, цена информации; основные подходы к определению затрат на защиту информации.
- •Тактическая информация
- •Оперативная информация
- •Вклад сспи и стои в информационное обслуживание
- •42. Интеллектуальная собственность фирмы и ее стоимостная оценка.
- •43. Обеспечение экономической безопасности предприятия в рыночных условиях. Виды ущерба, наносимые информации.
- •1.Антопогенные
- •2.Техногенные
- •3.Стихийные
- •56. Принципы построения особености применения и основные характеристики средств статической биометрии для идентификации и аутентификации пользователей компьютерных систем.
- •44. Создание концепции защиты коммерческого предприятия. Структура службы безопасности коммерческого предприятия. Функции, задачи и особенности деятельности Службы безопасности.
- •1.Структура службы безопасности.
- •1.2.Правовые основы деятельности службы безопасности.
- •1.3.Основные задачи службы безопасности.
- •1.4.Общие функции службы безопасности.
- •45. Организационные основы деятельности и подбор кадров Службы безопасности.
- •1. Симметричные криптосистемы.
- •2.1. Режимы des
- •Гост 28147-89.
- •Режим гаммирования Зашифрование данных
- •Расшифрование данных
- •Режим гаммирования с обратной связью. Зашифрование данных
- •Расшифрование данных
- •Современные методы криптоанализа.
- •4.1 Обзор основых универсальных методов криптоанализа
- •Метод полного перебора
- •Анализ на основе использования словарей
- •Парадокс Дней Рождений
- •Общие сведения о линейном криптоанализе
- •Общие сведения о дифференциальном криптоанализе
- •Метод «встреча посередине»
- •Метод «разделяй и побеждай»
- •Поточные шифры.
- •Регистры сдвига с обратной связью
- •Алгоритм а5
- •Описание криптосхемы
- •46. Организационные основы деятельности и подбор кадров Службы безопасности.
Радиолокационные методы измерения дальности
Измерение дальности радиолокационными методами базируется на предположении прямолинейного распространения радиоволн с постоянной скоростью. Следовательно, для измерения дальности до цели достаточно измерить время задержки отраженного от цели сигнала относительно излученного радиолокационного сигнала.
Методы измерения дальности подразделяются на амплитудные, частотные и фазовые в зависимости от того, какой из параметров принимаемых радиосигналов используется при измерении времени задержки.
Среди РЛС с амплитудным методом измерения дальности наибольшее распространение получили импульсные станции. Принцип их действия иллюстрируется схемой на рис. 6. Генератор высокой частоты, управляемый модулятор генератор СВЧ синхронизатор индикатор приемник антенный переключатель Рис. 6. Функциональная схема импульсного
радиолокационного дальномера импульсным модулятором, генерирует короткие высокочастотные импульсы (зондирующие сигналы) с заданным периодом повторения.
Зондирующий сигнал может быть записан следующим образом:
uген(t) = U0 cos(ω0t + ψ0) при t0 £ t £ t0 + τи,
где t0 – начало отсчета на временной оси, совпадающее с началом импульса; τи – длительность импульса; U0 – амплитуда колебаний; ψ0 – начальная фаза колебаний.
На время излучения каждого импульса антенна подсоединяется к генератору с помощью антенного переключателя; все остальное время антенна подключена к приемнику. Отраженные от цели сигналы после преобразования в приемнике поступают к выходному устройству, где путем сопоставления моментов излучения зондирующего импульса и приема
отраженного измеряется время запаздывания tD. Синхронность процессов в передатчике РЛС и измерительном устройстве обеспечивает синхронизатор. В качестве выходного устройства в импульсной РЛС может быть использована электронно-лучевая трубка с амплитудной или яркостной отметкой. Развертка луча по экрану трубки, как правило, осуществляется с
постоянной скоростью. Работа схемы развертки синхронизирована с работой передатчика РЛС (рис. 7, а). Если на экране трубки расстояние между изображениями излученного и отраженного импульсов равно l (рис. 7, б), скорость развертки υразв , то
tD = l/υразв. (41)
В качестве выходного устройства импульсного дальномера может быть использовано и автоматическое счетное устройство.
Для импульсных дальномеров диапазон однозначного измерения дальности определяется периодом следования Тп излучаемых импульсов
БИЛЕТ № 2
2. Объектно-ориентированный подход к разработке алгоритмов и программ (методика проектирования алгоритма, свойства объектного программирования (инкапсуляция, наследование, полиморфизм), описание объектов, программирование объектного алгоритма и методов объектов, пример).
ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД
В основу структурного подхода положены структуризация и декомпозиция окружающего мира. Задача любой сложности разбивается на подзадачи, а те, в свою очередь, разбиваются далее, пока каждая подзадача не станет простой, соответствующей модулю (подпрограмме), выполняющему строго одно действие. Методы структурного проектирования используют модули в качестве строительных блоков программы, а структура программы представляется иерархией подчиненности модулей.
При объектно-ориентированном подходе в качестве строительных блоков используются объекты, содержащие свои собственные коды и данные. Структура программ при объектно-ориентированном подходе представляется графом взаимодействия объектов, а не деревом иерархии, как это имеет место в структурном проектировании.
Объектно-ориентированный анализ (object-oriented analysis) -это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области. Объектно-ориентированный анализ направлен на создание моделей реальной действительности на основе объектно-ориентированного подхода.
Объектно-ориентированное проектирование (object-oriented design) - это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления моделей, отражающих логическую (классы и объекты) и физическую структуру системы (процессы и деление на компоненты, файлы или модули), а также ее статические и динамические аспекты.
Объектно-ориентированное программирование (object-oriented programming) - это технология реализации программ, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
На результатах объектно-ориентированного анализа формируются модели, на которых основывается объектно-ориентированное проектирование, а оно, в свою очередь, создает фундамент для окончательной реализации системы с использованием языковых средств объектно-ориентированного программирования.
ОСНОВНЫЕ ПОНЯТИЯ - ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
Понятие объектно-ориентированного программирования определяет три основные концепции, при соблюдении которых программа будет объектно-ориентированной:
объектно-ориентированное программирование использует в качестве базовых элементов классы, порождающие объекты;
в процессе выполнения программы может одновременно использоваться несколько объектов, порожденных от одного класса (экземпляров реализации класса);
классы организованы иерархически (иерархия означает «быть частью»).
Класс - представляет собой объединяющую концепцию набора объектов, имеющих общие характеристики. Класс также определяет интерфейс с окружающим миром, посредством которого осуществляется взаимодействие с отдельными объектами.
Класс является описанием того, как будет выглядеть и вести себя его представитель. Поэтому класс проектируют как образование, отвечающее за создание своих новых представителей (экземпляров или объектов). Создание объектов и их уничтожение осуществляется с помощью особых методов - называемых конструктором и деструктором.
Объект — это структурированная переменная типа класс, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии. Все объекты - представители данного класса аналогичны друг другу в том смысле, что они имеют один и тот же набор операций - методов.
Объект, как логическая единица, содержит следующие данные и операции (методы с кодом алгоритма) в отдельном участке памяти:
поля объекта (или атрибуты исходных данных), значения которых определяют текущее состояние объекта;
методы объекта, которые реализуют действия (выполнение алгоритмов) в ответ на их вызов в виде преданного сообщения;
свойства — часть методов, которые определят поведение объекта, то есть его реакцию на внешние воздействия.
При объявлении классов определяются описанные выше три характеристики объектов: поля, методы и свойства, а также указывается предок данного класса.
Объекты в программах воспроизводят все оттенки явлений реального мира: «рождаются» и «умирают»; меняют свое состояние; запускают и останавливают процессы; «убивают» и «возрождают» другие объекты.
ПРИНЦИПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ: ИНКАПСУЛЯЦИЯ, НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ
В основе классов лежат три фундаментальных принципа - инкапсуляция, наследование и полиморфизм.
Инкапсуляция. Проектирование программных и технических систем базируется на том условии, что никакая подсистема данного уровня не должна зависеть от устройства любой другой подсистемы этого уровня. Такая независимость внутреннего устройства одного объекта от внутреннего устройства другого называется инкапсуляцией. Принцип инкапсуляции использовался в технологии модульного программирования. В модуле в явной форме введена инкапсуляция путем разделения его на секции интерфейса и реализации. В объектно-ориентированном программировании принцип инкапсуляции используется для изоляции класса от остальных частей программы, чтобы сделать его самодостаточным для решения конкретной задачи. Например, класс TForm в среде Delphi содержит (инкапсулирует в себе) все необходимое для создания Windows-окна, класс ТМето представляет собой полнофункциональный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т. д. Инкапсуляция достигается путем совмещения в одной записи языка программирования структур данных с процедурами и функциями, которые манипулируют полями данных этой записи, для получения нового типа данных ~ класса. Инкапсуляция позволяет защитить по интерфейсу доступ к полям и методам. Доступ разрешается лишь к открытым методам и полям. Полная совокупность методов и тонкости их реализаций являются скрытыми.
Type
TMyClass = class
IntField: Integer;
function MyFunc(a: Integer): Integer;
procedure MyProc; end;
Путем использования принципа инкапсуляции появляется возможность осуществлять обмен готовыми к работе программными заготовками. Например, библиотека классов Delphi - это, фактически, набор кирпичиков для построения прикладных программ.
Наследование. Число абстракций в сложных программных системах намного превышает наши возможности их осознания. Инкапсуляция частично помогает устранить это препятствие, убирая из поля зрения внутреннее содержание абстракций.
Однако значительное упрощение понимания сложных задач достигается за счет усложнения иерархии. Под иерархией здесь понимается упорядочение абстракций, расположение их по уровням. Усложнение иерархии от уровня к уровню достигается за счет наследования.
Принцип наследования оперирует с понятиями «предок - потомок» и предусматривает расширение набора свойств наследника за счет принятия всех свойств предка.
Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса-родителя:
TChildCIass = class (TParentClass )
Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять их новыми. Таким образом, принцип наследования обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов.
Все классы в Object Pascal порождены от единственного родителя - класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов - от их создания до уничтожения. Поэтому программист не может создать класс, который не был бы дочерним классом TObject. Следующие два объявления идентичны.
TaClass = class(TObject) <==> TaClass = class
Принцип наследования приводит к созданию ветвящегося дерева классов. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам. Например, класс TPersistent обогащает возможности своего родителя TObject тем, что он умеет сохранять данные в файле и получать их из него, в результате это умеют делать и все его потомки. Класс TComponent, в свою очередь, умеет взаимодействовать со средой разработчика и передает это умение своим потомкам. TControl не только способен работать с файлами и средой разработчика, но он еще умеет создавать и обслуживать видимые на экране изображения, а его потомок TWinControl может создавать Windows-окна и т. д.
В Object Pascal возможно только так называемое одиночное наследование, но в реальном мире у потомка два родителя, поэтому в ряде языков (например, в C++) предусмотрен механизм множественного наследования. Множественное наследование более логично с точки зрения моделирования реального мира, однако, оно усложняет реализацию языков программирования.
Полиморфизм. Одним из базовых понятий технологии объектно-ориентированного программирования является полиморфизм. Этот термин имеет греческое происхождение и приблизительно означает «много форм» (poly — много, morphos — форма).
Полиморфизм - это средство для придания различных значений одному и тому же событию в зависимости от типа обрабатываемых данных. Этот принцип определяет различные формы реализации одноименного действия.
Целью полиморфизма является использование одного имени для задания общих для класса действий, причем каждый объект или класс иерархии имеет возможность по-своему реализовать это действие своим собственным, подходящим для него, кодом. Таким образом, полиморфизм является свойством классов решать схожие по смыслу проблемы разными способами.
В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Этот принцип используется, когда требуется расширить свойства класса не путем добавления новых методов, а путем достраивания одного из методов или набора методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства.
Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие различную алгоритмическую основу и придающие объектам разные свойства. В этом сущность полиморфизма объектов.
Кроме этого, в Object Pascal полиморфизм достигается не только механизмом наследования и перекрытия методов родителя, но и их виртуализацией, позволяющей родительским методам обращаться к методам своих потомков.
Терминология ООП
Отправной точкой во всей терминологии ООП является понятие класса. Классом называется шаблон, по которому создаются объекты. Каждый объект, созданный на основе класса, называется экземпляром этого класса. Методы, свойства и процедуры событий, определенные внутри класса, называются членами.
Отношения между классами в программах
В традиционном ООП предусмотрены три типа отношений между классами:
Использование: непосредственная зависимость.
Включение: иногда называется агрегированием. Реализует логические связи типа «является составной частью».
Наследование: реализует логические связи типа «является частным случаем».
Вернемся к классической тройке. Отношение использования, означает, что один класс зависит от другого. Во всех ситуациях, когда один объект посылает сообщение другому объекту, можно говорить о зависимости между этими объектами.
Термин «включение» (агрегирование) означает, что объект класса А содержит внутренние объекты класса Б.
Инкапсуляция
В ООП термин «инкапсуляция» означает то, что мы обычно называем маскировкой данных. Скрывая данные, вы определяете свойства и методы для работы с ними. Успешное применение ООП возможно лишь в том случае, если все операции с внутренними данными объекта осуществляются посредством обмена сообщениями. Данные объекта хранятся в полях экземпляра. Текущее состояние объекта определяется текущими значениями полей экземпляра. Существует рекомендация: никогда не предоставляйте прямой доступ извне к полям экземпляра (внутренним данным объекта).
Наследование
Под наследованием понимается механизм, когда на основании одного класса (базового) создается другой класс (производный). Производный класс будет содержать в себе все члены базового класса. Производный класс может содержать новые методы, не имеющие аналогов в базовом классе.
Производные классы:
всегда решают более специализированные задачи, чем базовые классы;
содержат все члены базового класса (хотя поведение этих членов может быть совершенно иным).
Полиморфизм
В традиционной трактовке термин «полиморфизм» (от греческого «много форм») означает, что объекты производных классов выбирают используемую версию метода в зависимости от своего положения в иерархии наследования.
Переход к использованию объектов
Между ООП и процедурно-ориентированным программированием существуют два важных различия:
В ООП программист сначала выделяет классы, образующие объектную модель, и только после этого переходит к анализу их методов и свойств.
Методы и свойства ассоциируются с классом, предназначенным для выполнения соответствующих операций.
Возникает очевидный вопрос: по каким критериям выделять классы в программе? Для этого имеется хорошее эмпирическое правило, которое связывает компоненты объектной модели с частями речи. Классы соответствуют существительным в постановке задачи. Свойства соответствуют прилагательным, описывающим существительные. Разумеется, это соответствие лишь намечает контуры объектной модели. Только практический опыт поможет вам решить, какие существительные, глаголы и прилагательные важны, а какие являются второстепенными.
Описание логических связей между классами играет в ООП настолько важную роль, что появилась целая наука о построении диаграмм, иллюстрирующих отношения между классами.
В полях экземпляра хранится информация об операциях, выполняемых объектом; некоторые поля могут использоваться для хранения информации об истории существования объекта. В совокупности эти сведения определяют состояние объекта. Состояние объекта подвержено частым изменениям, но, как было сказано выше, любые изменения в состоянии объекта в результате внешних воздействий должны происходить только в результате полученных сообщений.
Текущее состояние объекта не обеспечивает его однозначной идентификации. Два объекта могут находиться в одинаковом состоянии, одинаково реагировать на внешние воздействия, но при этом они все равно остаются разными объектами (как два массива с одинаковым содержимым). Таким образом, должен существовать некий критерий, по которому объект можно отличить от других похожих объектов. К поведению объекта относится информация о том, что он делает в данный момент и что он теоретически может сделать в будущем.
Предоставление доступа к полям и методам класса осуществляется с помощью трех ключевых слов: public, protected и private, которые называют модификаторами. Модификаторы устанавливаются перед описанием метода и имеют следующие значения:
public – метод является открытым и может быть доступен как наследникам, так и программистам;
protected – метод является закрытым и доступен только наследникам;
private – такой метод является приватным и к нему доступ закрыт для всех. Только сам объект имеет право его использовать.
Преимущества ООП
На первый взгляд классы ООП и связанные с ними методы и свойства имеют много общего с процедурным подходом и модульным строением программ. Ключевое различие заключается в следующем:
Класс представляет собой шаблон для создания объектов, состояние которых изменяется со временем.
Пример работы с классами.
Допустим создадим класс, который будет представлять собой копилку. Копилка будет иметь общедоступное (public) поле – цель накопления, скрытое поле (private) – накопленная сумма, и общедоступные методы – положить в капилку и разбить капилку. То есть нельзя посмотреть количество денег не разбив и не опусташив копилку. Класс будем писать на языке C++.
class Kopilka
{
public string Tcel_Nakopleniya;
private Summa;
public void Dobavit_v_kopilku(int dob)
{
Summa += dob;
}
public int Razbit_Kopilky()
{
int buf = Summa;
Summa = 0;
return buf;
}
};
Теперь мы можем создать экземпляр класса – объект.
Kopilka *Kopilka1 = new Kopilka();
Мы можем получить доступ к полю Tcel_Nakopleniya:
Kopilka1->Tcel_Nakopleniya = “Коплю на машину”;
Но получить доступ к полю Summa мы не можем так как оно задано с модификатором private. В данном случае доступ к этому полю имеет только метод класса Razbit_Kopilky, который вернет сумму находящуюся в копилке, но при этом копилка будет очищена. Это и есть применение инкапсуляции.
Мы можем легко добавить некую сумму в копилку:
Kopilka1-> Dobavit_v_kopilku(100);
Теперь наследуем этот класс. Класс Прозрачная копилка наследует базовый класс Копилка и будет иметь те же поля и методы. Но так как это прозрачная копилка мы добавим метод Проверить сумму, который будет возвращать значение закрытого поля Сумма.
class Prozrachnaya_Kopilka : Kopilka
{
Public int Proverit_Summu()
{
Return Summa;
}
}
Теперь продемонстрируем полиморфизм.
Создадим класс Волшебная копилка, которую можно разбивать частично (и забирать при этом из нее часть средств). Если запрошенная сумма из копилки будет превышать имеющуюся в ней, будет выдана имеющаяся. Волшебная копилка будет наследоваться от класса Копилка.
class Volshebnaya_Kopilka : Kopilka
{
public int Razbit_Kopilky(int s)
{
if (Summa >= s)
{
Summa -= s;
return s;
}
else
{
int buf = Summa;
Summa = 0;
Return buf;
}
}
}
Теперь в случае вызова метода класса Волшебная копилка Разбить копилку с параметром в виде целого числа - будет вызван метод, описанный выше. Если же будет вызван этот же метод, но без параметра – будет вызван метод Разбить копилку, определенный в базовом классе, то есть копилка просто будет разбита и очищена.
