Лекция 13. Объектно-ориентированный подход к программированию.
План лекции:
Объектно-ориентированный подход к программированию. Массовое промышленное программирование и методы построения программ. Структурное программирование, процедура, процедурный стиль программирования, последовательная декомпозиция алгоритма решения задач, модульное построение программ. Требование ускорения разработки программного обеспечения и развитие объектно-ориентированного программирования. Понятие объекта, описание программной системы в виде взаимодействия объектов, данные объекта и действия над ними, свойства и методы объекта. Свойство наследования, повторное использование программного кода. Объединение данных и методов объекта, инкапсуляция и ее роль в отладке и модификации программ. Интерфейс объекта, защита от доступа к внутренним переменным объекта, связь с другими объектами. Полиморфизм, включение в данные информации о методах обработки данных. Классы объектов. Объединение состояния и интерфейса, понятие объекта "компонент", состояние компонентов. Интерфейс компонентов, интерфейс стадии проектирования и стадии выполнения объекта.
Краткий конспект лекции
С появлением объектно-ориентированного программирования изменились и подходы к алгоритмизации, наряду с разработкой алгоритмов реализации численных методов программист при создании приложения сталкивается с необходимостью алгоритмизации пользовательского интерфейса приложения (команд меню, кнопок панелей инструментов), разработкой алгоритмов при создании классов, написании обработчиков событий для объектов, используемых в приложении.
Объектно-ориентированное программирование (ООП) представляет собой способ программирования, который напоминает процесс человеческого мышления. ООП более структурировано, чем другие способы программирования и позволяет создавать модульные программы с представлением данных на определенном уровне абстракции. Основная цель ООП – это повышение эффективности разработки программ.
Весь окружающий нас мир состоит из объектов, предметов живой и неживой природы, которые представляются как единое целое, а отдельные части объектов образуют сложное взаимодействие друг с другом. При структурном подходе программист обычно разделяет (структурирует) описываемый объект на составные части, стараясь описать свойства отдельных частей, не вдаваясь в подробности взаимодействия между ними.
Базовым в ООП является понятие объекта. Объект имеет определенные свойства. Состояние объекта задается значениями его признаков. Объект «знает», как решать определенные задачи, т.е. располагает методами решения. Программа, написанная с использованием ООП состоит из объектов, которые могут взаимодействовать между собой.
Концепция ООП заключается в том, что каждый объект является экземпляром некоторого класса объектов.
Все объекты с одинаковыми наборами атрибутов принадлежат к одному классу. Однако объединение объектов в классы определяется не набором атрибутов, а семантикой (смыслом). Так, например, объекты конюшня и лощадь могут иметь одинаковые атрибуты: цена и возраст. При этом они могут относиться к одному классу, если рассматриваются просто как товар, либо к разным классам, что более естественно.
Каждый класс имеет свои особенности поведения и характеристик, определяющих этот класс. Один класс отличается от других именем и, обычно, набором поддерживаемых интерфейсов. Интерфейсы, в свою очередь, представляют собою набор сообщений, которые можно посылать объекту.
ООП является наилучшим инструментом для построения иерархических деревьев или структур данных.
Характеристики ООП
Все является объектом.
Вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщения - это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
Каждый объект имеет независимую память, которая состоит из других объектов.
Каждый объект является представителем класса, который выражает общие свойства объектов.
В классе задается поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определенного класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Принципы ООП
Абстракция данных - это выделение существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и, таким образом, четко определяют его концептуальные границы относительно дальнейшего рассмотрения и анализа. Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности его поведения от деталей их реализации. Выбор правильного набора абстракций для заданной предметной области представляет собой главную задачу объектно-ориентированного проектирования.
Объекты представляют собою не полную информацию о реальных сущностях предметной области. Их модели, адекватны решаемой задаче, работать с ними намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Инкапсуляция является важнейшим свойством объекта, на котором строится ООП. Инкапсуляция заключается в том, что объект скрывает в себе детали, которые несущественны для использования. В традиционном подходе к программированию с использованием глобальных переменных программист не был застрахован от ошибок, связанных с использованием процедур, не предназначенных для обработки данных, но связанных с этими переменами. «Жесткое» связывание данных и процедур их обработки в одном объекте позволяет избежать многие неприятности. Инкапсуляция и является средством организации доступа к данным только через соответствующие методы.
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнее лицо, т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Наследование – это еще одно базовое понятие ООП. Наследование позволяет определить новые объекты, используя свойства прежних, дополняя или изменяя их. Объект – наследник получает все поля и методы «родителя», к которым он может добавить свои собственные поля и методы или заменить («перекрыть») их своими методами.
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизм заключается в том, что одно и то же имя может соответствовать различным действиям в зависимости от типа объекта. (Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, характерным именно для него.)
Полиморфизмом называют явление, при котором классы-потомки могут изменять реализацию метода класса-предка, сохраняя его сигнатуру (таким образом, сохраняя неизменным интерфейс класса-предка). Это позволяет обрабатывать объекты классов-потомков как однотипные объекты, не смотря на то, что реализация методов у них может различаться.
Вопросы по данной теме:
Что такое объект?
Перечислите принципы ООП.
Для чего создаются классы?
Дайте определения инкапсуляции, наследования и полиморфизма.
Литература по теме:
Информатика. Общий курс / Под ред. В.И. Колесникова. - 2-е изд. - М.: Дашков и К; Наука-Пресс, 2008. - 400 с.
Игошин В.И. Математическая логика и теория алгоритмов: Уч. пос. - М.: Академия, 2004. - 448с.
Микрюков В.Ю. Алгоритмизация и программирование: Учебн. пос.- Ростов н/Д: Феникс, 2007.
- Тема 1. Понятие информации, общая характеристика процессов сбора, передачи, обработки и накопления информации Лекция 1. Понятие данные и информация
- Свойства информации
- Качества информации
- Лекция 2. Представление информации в компьютере.
- Кодирование графических данных
- Кодирование звуковых данных
- Формула Шеннона
- Лекция 3. Информационно-логические основы построения пк
- Законы логических операций
- Логические элементы эвм
- Cумматор (p0 – перенос разряда из предыдущей операции суммирования)
- Тема 3. Технические средства реализации информационных процессов Лекция 4. Классификация эвм. Тенденции развития вычислительной техники. Архитектура эвм.
- Типы компьютеров:
- Типы компьютерных систем
- Многопроцессорные системы
- Архитектура пк
- Лекция 5. Состав и назначение основных узлов персонального компьютера. Их характеристики
- Микропроцессор
- Лекция 6. Устройства передачи данных в пк. Виды памяти пк. Устройства ввода/вывода информации в пк
- Виды памяти пк. Назначение и основные характеристики
- Внутренняя память пк
- Внешняя память пк
- Устройства ввода информации в компьютер
- Устройства вывода информации из компьютера
- Файловые системы
- Лекция 8. Текстовые редакторы и процессоры, интерфейс, типовые операции. Графические редакторы и демонстрационные программы
- Лекция 9. Электронные таблицы. Специализированные программные средства и системы программирования.
- Тема 4. Основы защиты информации и сведений, методы защиты информации Лекция 10. Защита информации. Компьютерные вирусы. Антивирусные программы. Архивация, методы сжатия. Методы шифрования.
- Основные источники вирусов:
- Основные ранние признаки заражения компьютера вирусом:
- Антивирусные программы
- Различают типы антивирусных программ:
- Алгоритмы сжатия информации без потерь (обратимые методы)
- Алгоритмы сжатия информации с потерями (необратимые методы)
- Тема 5. Базы данных Лекция 11. Методы шифрования базы данных и субд. Реляционные базы данных.
- Тема 6. Алгоритмизация и программирование Лекция 12. Алгоритмы. Свойства алгоритмов. Языки программирования.
- Лекция 13. Объектно-ориентированный подход к программированию.
- Тема 7. Программное обеспечение и технологии программирования Лекция 14. Технологии программирования и принципы разработки программного приложения
- Тема 8. Языки программирования высокого уровня Лекция 15. Эволюция и классификация языков программирования
- Языки программирования низкого уровня
- Машинный язык
- Assembler (Ассемблер)
- Языки программирования высокого уровня
- Basic (Бейсик)
- Fortran (Фортран)
- Cobol (Кобол)
- Pascal (Паскаль)
- Объектно-ориентированное и визуальное программирование
- Лекция 16. Программирование на языке visual basic
- Операции Visual Basic
- Вызов функций и процедур
- Область видимости переменной
- Время жизни переменной
- Лекция 17. Среда разработки приложений visual basic.
- Интегрированная среда разработки приложений Visual Basic
- Компоненты рабочей среды
- Панель элементов управления
- Лекция 18. Разработка программного приложения.
- Лекция 19. Компиляция и выполнение проекта План лекции:
- Тема 9. Модели решения функциональных и вычислительных задач Лекция 20. Моделирование объектов и систем
- Тема 10. Локальные и глобальные сети эвм Лекция 21. Локальные сети эвм
- Типы локальных сетей
- Архитектура (Топология) лвс
- Сетевой кабель
- Сравнение кабелей
- Назначение платы сетевого адаптера
- Администрирование сети
- Лекция 22. Глобальные сети эвм
- Расширение локальных сетей
- Передача данных по сети
- Беспроводные сети
- Семейство протоколов tcp/ip