- •Начальные сведения об объектно-ориентированном программировании (программа как динамический набор взаимодействующих объектов).
- •Классы и объекты (экземпляры класса), главные отличия класса от объекта.
- •Открытый интерфейс класса и его составляющие (свойства методы и события).
- •Инкапсуляция и ее назначение.
- •Понятие о полиморфизме, предназначение полиморфизма.
- •Наследование и его использование для реализации полиморфизма.
- •Понятие распределенного приложения. Клиенты и серверы.
- •Пятислойная архитектура распределенных приложений.
- •Архитектура, ориентированная на сервисы. Понятие об облачных вычислениях.
- •Локальные и глобальные компьютерные сети. Internet.
- •Сетевые протоколы и их роль в передаче данных.
- •Стандарт xml, языки разметки html и xhtml.
- •Дата-центры, провайдеры данных и прокси-серверы.
- •Базы данных и хранилища данных.
- •Понятие о сжатии информации и архивах. Примеры программ архивации Windows.
- •Защита информации путем разграничения доступа.
- •Защита информации путем шифрования.
- •Цифровая подпись и ее назначение.
- •Понятие о вредоносном программном обеспечении (вирусы и программы-шпионы).
- •Средства борьбы с вредоносным по (на примерах Kaspersky Internet Security и Microsoft Security Essentials).
- •Компьютер как средство связи. Коммуникаторы и смартфоны.
- •Электронная почта (на примерах Microsoft Outlook и Windows Live).
- •Понятие об электронной коммерции: интернет-магазины, платежные системы и т.П.
- •Понятие о по для решения бизнес-задач (на примерах Microsoft Office и 1с Предприятие).
Начальные сведения об объектно-ориентированном программировании (программа как динамический набор взаимодействующих объектов).
По определению авторитета в области объектно-ориентированных методов разработки программ Гради Буча «объектно-ориентированное программирование (ООП) – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса (типа особого вида), а классы образуют иерархию на принципах наследуемости».
Объектно-ориентированная методология так же, как и структурная методология, была создана с целью дисциплинировать процесс разработки больших программных комплексов и тем самым снизить их сложность и стоимость.
Объектно-ориентированная методология преследует те же цели, что и структурная, но решает их с другой отправной точки и в большинстве случаев позволяет управлять более сложными проектами, чем структурная методология.
Как известно, одним из принципов управления сложностью проекта является декомпозиция. Гради Буч выделяет две разновидности декомпозиции: алгоритмическую (так он называет декомпозицию, поддерживаемую структурными методами) и объектно-ориентированную, отличие которых состоит, по его мнению, в следующем: «Разделение по алгоритмам концентрирует внимание на порядке происходящих событий, а разделение по объектам придает особое значение факторам, либо вызывающим действия, либо являющимся объектами приложения этих действий».
Другими словами, алгоритмическая декомпозиция учитывает в большей степени структуру взаимосвязей между частями сложной проблемы, а объектно-ориентированная декомпозиция уделяет больше внимания характеру взаимосвязей.
На практике рекомендуется применять обе разновидности декомпозиции: при создании крупных проектов целесообразно сначала применять объектно-ориентированный подход для создания общей иерархии объектов, отражающих сущность программируемой задачи, а затем использовать алгоритмическую декомпозицию на модули для упрощения разработки и сопровождения программного комплекса.
ОО-программирование является, несомненно, одним из наиболее интересных направлений для профессиональной разработки программ.
Классы и объекты (экземпляры класса), главные отличия класса от объекта.
Базовыми блоками объектно-ориентированной программы являются объекты и классы. Содержательно объект можно представить как что-то ощущаемое или воображаемое и имеющее хорошо определенное поведение. Таким образом, объект можно либо увидеть, либо потрогать, либо, по крайней мере, знать, что он есть, например, представлен в виде информации, хранимой в памяти компьютера. Дадим определение объекта, придерживаясь мнения Гради Буча: «Объект – осязаемая сущность, которая четко проявляет свое поведение».
Объект —
это часть окружающей нас реальности, т. е. он существует во времени и в пространстве (впервые понятие объекта в программировании введено в языке Simula ). Формально объект определить довольно трудно. Это можно сделать через некоторые свойства, а именно: объект имеет состояние, поведение и может быть однозначно идентифицирован (другими словами, имеет уникальное имя).
Класс —
это множество объектов, имеющих общую структуру и общее поведение. Класс — описание (абстракция), которое показывает, как построить существующую во времени и пространстве переменную этого класса, называемую объектом. Смысл предложений «описание переменных класса» и «описание объектов класса» один и тот же.
Объект
имеет состояние, поведение и паспорт (средство для его однозначной идентификации); структура и поведение объектов описаны в классах, переменными которых они являются .
Определим теперь понятия состояния, поведения и идентификации объекта.
Состояние объекта
объединяет все его поля данных (статический компонент, т.е. неизменный) и текущие значения каждого из этих полей (динамический компонент, т.е. обычно изменяющийся).
Поведение
выражает динамику изменения состояний объекта и его реакцию на поступающие сообщения, т.е. как объект изменяет свои состояния и взаимодействует с другими объектами.
Идентификация
(распознавание) объекта — это свойство, которое позволяет отличить объект от других объектов того же или других классов. Осуществляется идентификация посредством уникального имени (паспорта), которым наделяется объект в программе, впрочем как и любая другая переменная.
Выше уже говорилось, что процедурный (а также и модульный) подход позволяет строить программы, состоящие из набора процедур (подпрограмм), реализующих заданные алгоритмы. С другой стороны, объектно-ориентированный подход представляет программы в виде набора объектов, взаимодействующих между собой. Взаимодействие объектов осуществляется через сообщения. Предположим, что нашим объектом является окружность. Тогда сообщение, посланное этому объекту, может быть следующим: «нарисуй себя». Когда мы говорим, что объекту передается сообщение, то на самом деле мы вызываем некоторую функцию этого объекта (компонент-функцию). Так, в приведенном выше примере мы вызовем функцию, которая будет рисовать окружность на экране дисплея.