Слайд 2
Литература
Васильев А.Н. Java. Объектно-ориентированное программирование. – СПб.: Питер,
2011.
Монахов В. В. Язык программирования Java и среда Netbeans.
– СПб.: БХВ-Петербург, 2011.
Хорев П. Б. Объектно-ориентированное программирование: учебное пособие по направлению "Информатика и вычислительная техника". М. : Академия , 2011.
Хабибуллин И.Ш. Самоучитель JAVA. 3-е изд. перераб. и доп. – СПб.: БХВ-Петербург, 2008.
Шилдт Г. Java. Полное руководство. М.: Вильямс, 2012
Флэнаган Д. Java. Справочник. СПб.-М.: Символ, 2004.
Эккель Б. Философия Java. Библ. программиста. СПб.: Питер, 2011.
Слайд 3
Парадигмы программирования
Паради́гма программи́рования
— это система идей, понятий и
средств, определяющих стиль написания компьютерных программ, т.е. по сути
— это стиль мышления программиста.
Слайд 4
Перечень известных парадигм программирования (1)
Агентно-ориентированная (ООП с ограничениями)
Компонентно-ориентированная
( – "" – )
Конкатенативная ( PostScript, Forth, Joy,
… )
Декларативная (контрастирует с Императивной)
Ограничениями ( Jaffar, Lassez, GNU Prolog, … )
Функциональностью (Lisp, Erlang, ML, Haskell, … )
Потоком данных
Таблично-ориентированная (электронные таблицы: Excel, … )
Реактивная ( AWK, *HDL, Verylog, … )
Логическим выводом ( Prolog, Mercury, Oz, … )
Слайд 5
Список парадигмы программирования (2)
Событийно-ориентированная ( OS Windows, пользовательские
интерфейсы, сервера, … )
Сервис-ориентированная ( технологии SOAP, CORBA, DCOM,
Web-services, … )
Комбинấторная ( разновидность функциональной )
Императивная (контрастирует с Декларативной)
Процедурная
Предметно-ориентированная ( *DSL, XML, XSL, … )
Метапрограммирование ( программы, порождающие другие программы)
Автоматизация разработки ПО или решение задач без программирования ( человеко-машинные языки, ИИ )
Обобщённое программирование ( шаблоны, generics, … )
Рефлексивно-ориентированная ( расширения ООП: самоверификация, самомодификация, …; Objective-C, MOO, Common Lisp, …)
Слайд 6
Список парадигм программирования (3)
Структурная ( иерархия блоков, запрет
GOTO )
Модульная ( процедуры/функции, библиотеки )
Рекурсивная ( частный случай
модульности )
Объектно-ориентированная ( стандарт написания хорошо структурированных модульных программ )
Класс-ориентированная ( статическое, определяемое полностью в процессе разработки, наследование: С++, Java, C#, … )
Прототип-ориентированная ( динамическое наследование от прототипа, изменяющегося в процессе функционирования приложения: Self, JavaScript, Lua, … )
Параллельная ( масса параллельных версий популярных языков всех прочих парадигм)
Слайд 7
Основные модели программирования
Функциональное программирование
Логическое программирование
Императивное программирование
Структурное программирование
Объектно-ориентированное программирование
Слайд 8
Предшественники ООП
Процедурное программирование
Структурное программирование
Модульное программирование
Событийно-ориентированное программирование
Компонентное программирование
Первое применение
принципов ООП: язык Симула (1967 год)
Первый действительно и полностью
объектно-ориентированный язык: Smalltalk (1971 год)
Слайд 9
Что такое ООП?
ООП имеет уже более чем сорокалетнюю
историю, но, несмотря на это, до сих пор не
существует чёткого общепринятого определения данной технологии. Основные принципы, заложенные в первые объектные языки и системы, подверглись существенному изменению (или искажению) и дополнению при многочисленных реализациях последующего времени.
Кроме того, примерно с середины 1980-х годов термин «объектно-ориентированный» стал модным, в результате с ним произошло то же самое, что несколько раньше произошло с термином «структурный» — его стали искусственно «прикреплять» к любым новым разработкам, чтобы обеспечить им привлекательность.
Слайд 10
Так что же такое ООП?
По мнению Алана Кея,
создателя языка Smalltalk, которого считают одним из «отцов-основателей» ООП,
объектно-ориентированный подход заключается в согласованном применении следующего набора основных принципов:
Всё является объектом.
Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие.
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
Слайд 11
Объекты
Каждый объект имеет независимую память, которая содержит данные
примитивных типов и другие объекты.
Каждый объект является представителем (экземпляром)
класса, который определяет общие свойства объектов.
В классе задаётся поведение (функциональность) объекта.
Слайд 12
Объекты и классы:
Тем самым все объекты, которые являются
экземплярами одного класса, могут выполнять похожие действия.
Классы организованы
в единую древовидную структуру с общим корнем, называемую иерархией наследования.
Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Слайд 13
ОО-программа – это
набор объектов, имеющих состояние и поведение.
Объекты взаимодействуют посредством посылки сообщений или путем вызова методов.
Программа в целом — это тоже объект, для выполнения своих функций она в определенной последовательности обращается к входящим в неё объектам.
Каждый из внутренних объектов программы , в свою очередь, при получении запроса извне выполняет требуемое действие либо путём обращения к другим объектам (возможно – входящим в его состав), либо возвращая сформированный им самим результат.
Слайд 14
Основные термины ООП
Абстракция — это способ выделить набор значимых
характеристик объекта, исключая из рассмотрения незначимые (для данного уровня
абстракции).
Класс — описываемая на языке исходного кода модель ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом.
Говорят, что объект — это экземпляр класса. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали реальным объектам предметной области.
Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с прототипом, автоматически наследуя изменения в нем – динамическое наследование.
Объект — сущность, появляющаяся при создании экземпляра класса или при копировании прототипа.
Слайд 15
Основные термины ООП
Инкапсуляция — это свойство системы программирования, позволяющее
объединить некоторые данные класса и методы, работающие с ними,
и скрыть детали реализации от пользователя.
Наследование — это свойство системы программирования, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствованной функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.
Полиморфизм — это свойство системы программирования, позволяющее одинаковым образом использовать объекты разных классов, имеющие одинаковый (полностью или частично) интерфейс.