🗊Презентация Принципы ОО представления программных систем

Нажмите для полного просмотра!
Принципы ОО представления программных систем, слайд №1Принципы ОО представления программных систем, слайд №2Принципы ОО представления программных систем, слайд №3Принципы ОО представления программных систем, слайд №4Принципы ОО представления программных систем, слайд №5Принципы ОО представления программных систем, слайд №6Принципы ОО представления программных систем, слайд №7Принципы ОО представления программных систем, слайд №8Принципы ОО представления программных систем, слайд №9Принципы ОО представления программных систем, слайд №10Принципы ОО представления программных систем, слайд №11Принципы ОО представления программных систем, слайд №12Принципы ОО представления программных систем, слайд №13Принципы ОО представления программных систем, слайд №14Принципы ОО представления программных систем, слайд №15Принципы ОО представления программных систем, слайд №16Принципы ОО представления программных систем, слайд №17Принципы ОО представления программных систем, слайд №18Принципы ОО представления программных систем, слайд №19Принципы ОО представления программных систем, слайд №20Принципы ОО представления программных систем, слайд №21Принципы ОО представления программных систем, слайд №22Принципы ОО представления программных систем, слайд №23Принципы ОО представления программных систем, слайд №24Принципы ОО представления программных систем, слайд №25Принципы ОО представления программных систем, слайд №26Принципы ОО представления программных систем, слайд №27Принципы ОО представления программных систем, слайд №28Принципы ОО представления программных систем, слайд №29Принципы ОО представления программных систем, слайд №30Принципы ОО представления программных систем, слайд №31Принципы ОО представления программных систем, слайд №32Принципы ОО представления программных систем, слайд №33Принципы ОО представления программных систем, слайд №34Принципы ОО представления программных систем, слайд №35Принципы ОО представления программных систем, слайд №36Принципы ОО представления программных систем, слайд №37Принципы ОО представления программных систем, слайд №38Принципы ОО представления программных систем, слайд №39Принципы ОО представления программных систем, слайд №40Принципы ОО представления программных систем, слайд №41Принципы ОО представления программных систем, слайд №42Принципы ОО представления программных систем, слайд №43Принципы ОО представления программных систем, слайд №44Принципы ОО представления программных систем, слайд №45Принципы ОО представления программных систем, слайд №46Принципы ОО представления программных систем, слайд №47Принципы ОО представления программных систем, слайд №48Принципы ОО представления программных систем, слайд №49Принципы ОО представления программных систем, слайд №50Принципы ОО представления программных систем, слайд №51Принципы ОО представления программных систем, слайд №52Принципы ОО представления программных систем, слайд №53Принципы ОО представления программных систем, слайд №54Принципы ОО представления программных систем, слайд №55Принципы ОО представления программных систем, слайд №56Принципы ОО представления программных систем, слайд №57Принципы ОО представления программных систем, слайд №58Принципы ОО представления программных систем, слайд №59Принципы ОО представления программных систем, слайд №60Принципы ОО представления программных систем, слайд №61Принципы ОО представления программных систем, слайд №62Принципы ОО представления программных систем, слайд №63Принципы ОО представления программных систем, слайд №64Принципы ОО представления программных систем, слайд №65Принципы ОО представления программных систем, слайд №66Принципы ОО представления программных систем, слайд №67Принципы ОО представления программных систем, слайд №68Принципы ОО представления программных систем, слайд №69Принципы ОО представления программных систем, слайд №70

Содержание

Вы можете ознакомиться и скачать презентацию на тему Принципы ОО представления программных систем. Доклад-сообщение содержит 70 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Принципы ОО представления программных систем, слайд №1
Описание слайда:

Слайд 2





Принципы ОО представления программных систем
Рассмотрение сложной системы - применение декомпозиции - разбиения на составляющие элементы.
Схемы декомпозиции: алгоритмическая и ОО.
В основе алгоритмической -  разбиение по действиям - алгоритмам.
ОО - разбиение по объектам реального (или виртуального) мира. Эти объекты - более «крупные» элементы, каждый из них несет в себе и описания действий, и описания данных.
Описание слайда:
Принципы ОО представления программных систем Рассмотрение сложной системы - применение декомпозиции - разбиения на составляющие элементы. Схемы декомпозиции: алгоритмическая и ОО. В основе алгоритмической - разбиение по действиям - алгоритмам. ОО - разбиение по объектам реального (или виртуального) мира. Эти объекты - более «крупные» элементы, каждый из них несет в себе и описания действий, и описания данных.

Слайд 3






ОО анализ и проектирование отличаются от структурного подхода: другой процесс декомпозиции, другая архитектура программного продукта. 
Структурное проектирование основано на структурном программировании, в основе ОО проектирования - методология ОО программирования.

ОО технология основывается на объектной модели. Основные принципы: абстрагирование, инкапсуляция, модульность, иерархичность, типизация, параллелизм и сохраняемость. 

Каждый принцип сам по себе не нов, но в объектной модели они впервые применены в совокупности.
Описание слайда:
ОО анализ и проектирование отличаются от структурного подхода: другой процесс декомпозиции, другая архитектура программного продукта. Структурное проектирование основано на структурном программировании, в основе ОО проектирования - методология ОО программирования. ОО технология основывается на объектной модели. Основные принципы: абстрагирование, инкапсуляция, модульность, иерархичность, типизация, параллелизм и сохраняемость. Каждый принцип сам по себе не нов, но в объектной модели они впервые применены в совокупности.

Слайд 4






Термин «ОО программирование" означает разное. 
Ренч [1981]: "В 1980-х годах ОО программирование будет занимать такое же место, какое занимало структурное программирование в 1970-х, но всем будет нравиться. Каждая фирма будет рекламировать свой продукт как созданный по этой технологии. Все программисты будут писать в этом стиле, причем все по-разному. Все менеджеры будут рассуждать о нем. И никто не будет знать, что же это такое" 
Данные предсказания продолжают сбываться.
Описание слайда:
Термин «ОО программирование" означает разное. Ренч [1981]: "В 1980-х годах ОО программирование будет занимать такое же место, какое занимало структурное программирование в 1970-х, но всем будет нравиться. Каждая фирма будет рекламировать свой продукт как созданный по этой технологии. Все программисты будут писать в этом стиле, причем все по-разному. Все менеджеры будут рассуждать о нем. И никто не будет знать, что же это такое" Данные предсказания продолжают сбываться.

Слайд 5





Эволюция объектной модели 
Эволюция объектной модели 
Тенденции в проектировании 
Поколения языков программирования: 
смещение акцентов от программирования отдельных деталей к программированию более крупных компонент; 
развитие и совершенствование языков программирования высокого уровня. 
Тенденция перехода от языков, указывающих компьютеру, что делать (императивные языки), к языкам, описывающим ключевые абстракции проблемной области (декларативные языки).
Описание слайда:
Эволюция объектной модели Эволюция объектной модели Тенденции в проектировании Поколения языков программирования: смещение акцентов от программирования отдельных деталей к программированию более крупных компонент; развитие и совершенствование языков программирования высокого уровня. Тенденция перехода от языков, указывающих компьютеру, что делать (императивные языки), к языкам, описывающим ключевые абстракции проблемной области (декларативные языки).

Слайд 6





Поколения ЯП высокого уровня в зависимости от языковых конструкций, которые впервые в них появились (Вегнер):
Поколения ЯП высокого уровня в зависимости от языковых конструкций, которые впервые в них появились (Вегнер):
Первое поколение (1954-1958) 
FORTRAN I, ALGOL-58, Flowmatic, IPL V  - Математические 						      формулы
Второе поколение (1959-1961) 
FORTRAN II -	Подпрограммы, раздельная 					компиляция
ALGOL-60	-	Блочная структура, типы данных
COBOL 	-	Описание данных, работа с 					файлами 
Lisp 		-	Обработка списков, указатели, 				сборка мусора
Описание слайда:
Поколения ЯП высокого уровня в зависимости от языковых конструкций, которые впервые в них появились (Вегнер): Поколения ЯП высокого уровня в зависимости от языковых конструкций, которые впервые в них появились (Вегнер): Первое поколение (1954-1958) FORTRAN I, ALGOL-58, Flowmatic, IPL V - Математические формулы Второе поколение (1959-1961) FORTRAN II - Подпрограммы, раздельная компиляция ALGOL-60 - Блочная структура, типы данных COBOL - Описание данных, работа с файлами Lisp - Обработка списков, указатели, сборка мусора

Слайд 7





Третье поколение(1962-1970) 
Третье поколение(1962-1970) 
PL/I		-	FORTRAN+ALGOL+COBOL 
ALGOL-68 	-	Более строгий приемник ALGOL-				60 
Pascal	-	Более простой приемник ALGOL-			60 
Simula 	-	Классы, абстрактные данные
Потерянное поколение (1970-1980) 
Много языков созданных, но мало выживших
Описание слайда:
Третье поколение(1962-1970) Третье поколение(1962-1970) PL/I - FORTRAN+ALGOL+COBOL ALGOL-68 - Более строгий приемник ALGOL- 60 Pascal - Более простой приемник ALGOL- 60 Simula - Классы, абстрактные данные Потерянное поколение (1970-1980) Много языков созданных, но мало выживших

Слайд 8





Основные положения объектной модели Йонесава и Токоро: «термин "объект" появился практически независимо в различных областях, связанных с компьютерами, и почти одновременно в начале 70-х годов для обозначения того, что может иметь различные проявления, оставаясь целостным. Чтобы уменьшить сложность программных систем, объектами назывались компоненты системы или фрагменты представляемых знании». 
Основные положения объектной модели Йонесава и Токоро: «термин "объект" появился практически независимо в различных областях, связанных с компьютерами, и почти одновременно в начале 70-х годов для обозначения того, что может иметь различные проявления, оставаясь целостным. Чтобы уменьшить сложность программных систем, объектами назывались компоненты системы или фрагменты представляемых знании». 
ОО подход был связан с событиями [Леви]: 
прогресс в области архитектуры ЭВМ; 
развитие ЯП: Simula, Smalltalk, CLU, Ada; 
развитие методологии программирования, включая принципы модульности и скрытия данных.
Описание слайда:
Основные положения объектной модели Йонесава и Токоро: «термин "объект" появился практически независимо в различных областях, связанных с компьютерами, и почти одновременно в начале 70-х годов для обозначения того, что может иметь различные проявления, оставаясь целостным. Чтобы уменьшить сложность программных систем, объектами назывались компоненты системы или фрагменты представляемых знании». Основные положения объектной модели Йонесава и Токоро: «термин "объект" появился практически независимо в различных областях, связанных с компьютерами, и почти одновременно в начале 70-х годов для обозначения того, что может иметь различные проявления, оставаясь целостным. Чтобы уменьшить сложность программных систем, объектами назывались компоненты системы или фрагменты представляемых знании». ОО подход был связан с событиями [Леви]: прогресс в области архитектуры ЭВМ; развитие ЯП: Simula, Smalltalk, CLU, Ada; развитие методологии программирования, включая принципы модульности и скрытия данных.

Слайд 9






На становление объектного подхода оказали влияние: 
развитие теории баз данных; 
исследования в области искусственного интеллекта; 
достижения философии и теории познания. 
Понятие "объект" впервые было использовано при конструировании компьютеров с descriptor-based и capability-based архитектурами.
В этих работах - попытки отойти от архитектуры фон Неймана и преодолеть барьер между высоким уровнем программной абстракции и низким уровнем ЭВМ.
Описание слайда:
На становление объектного подхода оказали влияние: развитие теории баз данных; исследования в области искусственного интеллекта; достижения философии и теории познания. Понятие "объект" впервые было использовано при конструировании компьютеров с descriptor-based и capability-based архитектурами. В этих работах - попытки отойти от архитектуры фон Неймана и преодолеть барьер между высоким уровнем программной абстракции и низким уровнем ЭВМ.

Слайд 10





По мнению сторонников этих подходов, были созданы более качественные средства, обеспечивающие: лучшее выявление ошибок, большую эффективность реализации программ, сокращение набора инструкций, упрощение компиляции, снижение объема требуемой памяти. 
По мнению сторонников этих подходов, были созданы более качественные средства, обеспечивающие: лучшее выявление ошибок, большую эффективность реализации программ, сокращение набора инструкций, упрощение компиляции, снижение объема требуемой памяти. 
Ряд компьютеров имеет ОО архитектуру: Burroughs 5000, Plessey 250, Cambridge CAP, SWARD, Intel 432, Caltech's СОМ, IBM System/38, Rational R1000, BiiN 40 и 60. 
С ОО архитектурой связаны ОО ОС. 
Дейкстра, работая над мультипрограммной системой THE, впервые ввел понятие машины с уровнями состояния в качестве средства построения системы.
Описание слайда:
По мнению сторонников этих подходов, были созданы более качественные средства, обеспечивающие: лучшее выявление ошибок, большую эффективность реализации программ, сокращение набора инструкций, упрощение компиляции, снижение объема требуемой памяти. По мнению сторонников этих подходов, были созданы более качественные средства, обеспечивающие: лучшее выявление ошибок, большую эффективность реализации программ, сокращение набора инструкций, упрощение компиляции, снижение объема требуемой памяти. Ряд компьютеров имеет ОО архитектуру: Burroughs 5000, Plessey 250, Cambridge CAP, SWARD, Intel 432, Caltech's СОМ, IBM System/38, Rational R1000, BiiN 40 и 60. С ОО архитектурой связаны ОО ОС. Дейкстра, работая над мультипрограммной системой THE, впервые ввел понятие машины с уровнями состояния в качестве средства построения системы.

Слайд 11





Первые ОО ОС:
Первые ОО ОС:
Plessey/System 250 (для мультипроцессора Plessey 250), 
Hydra (для CMU C.mmp), 
CALTSS (для CDC 6400), 
CAP (для компьютера Cambridge CAP), 
UCLA Secure UNIX (для PDP 11/45 и 11/70), 
StarOS (для CMU Cm*), 
Medusa (также для CMU Cm*) и iMAX (для Intel 432).
Следующее поколение ОС - Microsoft Cairo и Taligent Pink тоже объектно-ориентированные
Описание слайда:
Первые ОО ОС: Первые ОО ОС: Plessey/System 250 (для мультипроцессора Plessey 250), Hydra (для CMU C.mmp), CALTSS (для CDC 6400), CAP (для компьютера Cambridge CAP), UCLA Secure UNIX (для PDP 11/45 и 11/70), StarOS (для CMU Cm*), Medusa (также для CMU Cm*) и iMAX (для Intel 432). Следующее поколение ОС - Microsoft Cairo и Taligent Pink тоже объектно-ориентированные

Слайд 12





Вклад в объектный подход внесен объектными и ОО ЯП.
Вклад в объектный подход внесен объектными и ОО ЯП.
Впервые понятия классов и объектов введены в языке Simula 67.
Система Flex и диалекты Smalltalk-72, -74, -76, -80, взяв за основу методы Simula, довели их до логического завершения, выполняя все действия на основе классов. 
В 1970-х гг. - ЯП, реализующих идею абстракции данных: Alphard, CLU, Euclid, Gypsy, Mesa и Modula. 
Методы, используемые в языках Simula и Smalltalk, были использованы в традиционных ЯП высокого уровня. 
Внесение ОО подхода в С привело к возникновению языков C++ и Objective С. 
На основе ЯП Pascal возникли Object Pascal, Eiffel и Ada. 
Появились диалекты LISP: Flavors, LOOPS и CLOS (Common LISP Object System), с возможностями языков Simula и Smalltalk.
Описание слайда:
Вклад в объектный подход внесен объектными и ОО ЯП. Вклад в объектный подход внесен объектными и ОО ЯП. Впервые понятия классов и объектов введены в языке Simula 67. Система Flex и диалекты Smalltalk-72, -74, -76, -80, взяв за основу методы Simula, довели их до логического завершения, выполняя все действия на основе классов. В 1970-х гг. - ЯП, реализующих идею абстракции данных: Alphard, CLU, Euclid, Gypsy, Mesa и Modula. Методы, используемые в языках Simula и Smalltalk, были использованы в традиционных ЯП высокого уровня. Внесение ОО подхода в С привело к возникновению языков C++ и Objective С. На основе ЯП Pascal возникли Object Pascal, Eiffel и Ada. Появились диалекты LISP: Flavors, LOOPS и CLOS (Common LISP Object System), с возможностями языков Simula и Smalltalk.

Слайд 13





Дейкстра указал на необходимость построения систем в виде структурированных абстракций.
Дейкстра указал на необходимость построения систем в виде структурированных абстракций.
Парнас ввел идею скрытия информации.
В 70-х гг. Лисков и Жиль, Гуттаг и Шоу разработали механизмы абстрактных типов данных. 
Хоар дополнил эти подходы теорией типов и подклассов.
 На объектный подход оказали влияние технологии построения БД, благодаря "сущность-отношение" (ER, entity-relationship). В моделях ER (Чен), моделирование -  в терминах сущностей, их атрибутов и взаимоотношений. 
В понимание ОО абстракций - вклад разработчики способов представления данных в области ИИ:
в 1975 г. Мински - теория фреймов для представления реальных объектов в системах распознавания образов и естественных языков. Фреймы стали архитектурной основой в интеллектуальных системах.
Описание слайда:
Дейкстра указал на необходимость построения систем в виде структурированных абстракций. Дейкстра указал на необходимость построения систем в виде структурированных абстракций. Парнас ввел идею скрытия информации. В 70-х гг. Лисков и Жиль, Гуттаг и Шоу разработали механизмы абстрактных типов данных. Хоар дополнил эти подходы теорией типов и подклассов. На объектный подход оказали влияние технологии построения БД, благодаря "сущность-отношение" (ER, entity-relationship). В моделях ER (Чен), моделирование - в терминах сущностей, их атрибутов и взаимоотношений. В понимание ОО абстракций - вклад разработчики способов представления данных в области ИИ: в 1975 г. Мински - теория фреймов для представления реальных объектов в системах распознавания образов и естественных языков. Фреймы стали архитектурной основой в интеллектуальных системах.

Слайд 14





Объектный подход известен издавна:
Объектный подход известен издавна:

Греки - идея о том, что мир можно рассматривать в терминах как объектов, так и событий. 
В XVII веке Декарт: люди имеют ОО взгляд на мир.
В XX веке эту тему развивала Рэнд в своей философии объективистской эпистемологии.
Мински предложил модель человеческого мышления, в которой разум человека рассматривается как общность различно мыслящих агентов. Он доказывает, что только совместное действие таких агентов приводит к осмысленному поведению человека.
Описание слайда:
Объектный подход известен издавна: Объектный подход известен издавна: Греки - идея о том, что мир можно рассматривать в терминах как объектов, так и событий. В XVII веке Декарт: люди имеют ОО взгляд на мир. В XX веке эту тему развивала Рэнд в своей философии объективистской эпистемологии. Мински предложил модель человеческого мышления, в которой разум человека рассматривается как общность различно мыслящих агентов. Он доказывает, что только совместное действие таких агентов приводит к осмысленному поведению человека.

Слайд 15





Объектно-ориентированное программирование
Объектно-ориентированное программирование
(OOP , object-oriented programming) – 
методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. 
3 части:
OOP использует в качестве базовых элементов объекты, а не алгоритмы (иерархия "быть частью»);
каждый объект является экземпляром какого-либо определенного класса; 
классы организованы иерархически (иерархия «is а».
Программа будет ОО только при соблюдении всех трех требований. 
Программирование, не основанное на иерархических отношениях, не относится к OOP, а называется программированием на основе абстрактных типов данных.
Описание слайда:
Объектно-ориентированное программирование Объектно-ориентированное программирование (OOP , object-oriented programming) – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. 3 части: OOP использует в качестве базовых элементов объекты, а не алгоритмы (иерархия "быть частью»); каждый объект является экземпляром какого-либо определенного класса; классы организованы иерархически (иерархия «is а». Программа будет ОО только при соблюдении всех трех требований. Программирование, не основанное на иерархических отношениях, не относится к OOP, а называется программированием на основе абстрактных типов данных.

Слайд 16





Не все ЯП объектно-ориентированные.
Не все ЯП объектно-ориентированные.
Страуструп: «если термин ОО язык вообще что-либо означает, то он должен означать язык, имеющий средства хорошей поддержки ОО стиля программирования... Обеспечение такого стиля означает, что в языке удобно пользоваться этим стилем. Если написание программ в стиле OOP требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям OOP». 
Теоретически возможна имитация ОО программирования на обычных языках (Pascal, COBOL или ассемблер), но это  затруднительно. 
Карделли и Вегнер: 
«ЯП является ОО тогда и только тогда, когда выполняются условия: 
Поддерживаются объекты, то есть абстракции данных, имеющие интерфейс в виде именованных операций и собственные данные, с ограничением доступа к ним. 
Объекты относятся к соответствующим типам (классам). 
Типы (классы) могут наследовать атрибуты супертипов (суперклассов)".
Описание слайда:
Не все ЯП объектно-ориентированные. Не все ЯП объектно-ориентированные. Страуструп: «если термин ОО язык вообще что-либо означает, то он должен означать язык, имеющий средства хорошей поддержки ОО стиля программирования... Обеспечение такого стиля означает, что в языке удобно пользоваться этим стилем. Если написание программ в стиле OOP требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям OOP». Теоретически возможна имитация ОО программирования на обычных языках (Pascal, COBOL или ассемблер), но это затруднительно. Карделли и Вегнер: «ЯП является ОО тогда и только тогда, когда выполняются условия: Поддерживаются объекты, то есть абстракции данных, имеющие интерфейс в виде именованных операций и собственные данные, с ограничением доступа к ним. Объекты относятся к соответствующим типам (классам). Типы (классы) могут наследовать атрибуты супертипов (суперклассов)".

Слайд 17





Поддержка наследования в таких ЯП означает возможность установления отношения "is-a" («это есть»), например: красная роза - это цветок, а цветок - это растение. 
Поддержка наследования в таких ЯП означает возможность установления отношения "is-a" («это есть»), например: красная роза - это цветок, а цветок - это растение. 
Языки, не имеющие таких механизмов, нельзя отнести к ОО. Такие ЯП – объектные (Карделли и Вегнер). 
ОО ЯП: Smalltalk, Object Pascal, C++ и CLOS;
Ada - объектный язык. 
Так как объекты и классы являются элементами обеих групп языков, желательно использовать и в тех, и в других методы ОО проектирования.
Описание слайда:
Поддержка наследования в таких ЯП означает возможность установления отношения "is-a" («это есть»), например: красная роза - это цветок, а цветок - это растение. Поддержка наследования в таких ЯП означает возможность установления отношения "is-a" («это есть»), например: красная роза - это цветок, а цветок - это растение. Языки, не имеющие таких механизмов, нельзя отнести к ОО. Такие ЯП – объектные (Карделли и Вегнер). ОО ЯП: Smalltalk, Object Pascal, C++ и CLOS; Ada - объектный язык. Так как объекты и классы являются элементами обеих групп языков, желательно использовать и в тех, и в других методы ОО проектирования.

Слайд 18





Объектно-ориентированное проектирование
Объектно-ориентированное проектирование
(OOD, object-oriented design) – 
методология проектирования, соединяющая процесс объектной декомпозиции и приемы представления логической и физической, статической и динамической моделей проектируемой системы
2 части: OOD
 1) основывается на ОО декомпозиции; 
2) использует многообразие приемов представления моделей, отражающих логическую (классы и объекты) и физическую (модули и процессы) структуру системы, а также ее статические и динамические аспекты. 
Программирование подразумевает правильное и эффективное использование механизмов конкретных ЯП.
Проектирование основное внимание уделяет правильному и эффективному структурированию сложных систем.
Описание слайда:
Объектно-ориентированное проектирование Объектно-ориентированное проектирование (OOD, object-oriented design) – методология проектирования, соединяющая процесс объектной декомпозиции и приемы представления логической и физической, статической и динамической моделей проектируемой системы 2 части: OOD 1) основывается на ОО декомпозиции; 2) использует многообразие приемов представления моделей, отражающих логическую (классы и объекты) и физическую (модули и процессы) структуру системы, а также ее статические и динамические аспекты. Программирование подразумевает правильное и эффективное использование механизмов конкретных ЯП. Проектирование основное внимание уделяет правильному и эффективному структурированию сложных систем.

Слайд 19





Объектно-ориентированный анализ
Объектно-ориентированный анализ
(OOA, object-oriented analysis) – 
методология, при которой требования к системе воспринимаются с т.зр. классов и объектов, выявленных в предметной области.
 На объектную модель повлияла более ранняя модель ЖЦ ПО. Традиционная техника структурного анализа (Де Марк, Иордан, Гейн и Сарсон, с уточнениями для режимов реального времени - Варда и Меллора, Хотли и Пирбхая) основана на потоках данных в системе.
ОО анализ направлен на создание моделей реальной действительности на основе ОО мировоззрения. 
Как соотносятся ООА, OOD и OOP? 
На результатах ООА формируются модели, на которых основывается OOD; 
OOD создает фундамент для окончательной реализации системы с использованием методологии OOP.
Описание слайда:
Объектно-ориентированный анализ Объектно-ориентированный анализ (OOA, object-oriented analysis) – методология, при которой требования к системе воспринимаются с т.зр. классов и объектов, выявленных в предметной области. На объектную модель повлияла более ранняя модель ЖЦ ПО. Традиционная техника структурного анализа (Де Марк, Иордан, Гейн и Сарсон, с уточнениями для режимов реального времени - Варда и Меллора, Хотли и Пирбхая) основана на потоках данных в системе. ОО анализ направлен на создание моделей реальной действительности на основе ОО мировоззрения. Как соотносятся ООА, OOD и OOP? На результатах ООА формируются модели, на которых основывается OOD; OOD создает фундамент для окончательной реализации системы с использованием методологии OOP.

Слайд 20





Составные части объектного подхода 
Составные части объектного подхода 
Парадигмы программирования 
Дженкинс и Глазго: «в большинстве своем программисты используют в работе один ЯП и следуют одному стилю. Они программируют в парадигме, навязанной используемым ими языком. Часто они оставляют в стороне альтернативные подходы к цели, а следовательно, им трудно увидеть преимущества стиля, более соответствующего решаемой задаче». 

Бобров и Стефик определили понятие стиля программирования: «Это способ построения программ, основанный на определенных принципах программирования, и выбор подходящего языка, который делает понятными программы, написанные в этом стиле».
Описание слайда:
Составные части объектного подхода Составные части объектного подхода Парадигмы программирования Дженкинс и Глазго: «в большинстве своем программисты используют в работе один ЯП и следуют одному стилю. Они программируют в парадигме, навязанной используемым ими языком. Часто они оставляют в стороне альтернативные подходы к цели, а следовательно, им трудно увидеть преимущества стиля, более соответствующего решаемой задаче». Бобров и Стефик определили понятие стиля программирования: «Это способ построения программ, основанный на определенных принципах программирования, и выбор подходящего языка, который делает понятными программы, написанные в этом стиле».

Слайд 21





5 основных разновидностей стилей программирования с присущими им видами абстракций: 
5 основных разновидностей стилей программирования с присущими им видами абстракций: 
 ∙ процедурно-ориентированный 	алгоритмы
 ∙ объектно-ориентированный 		классы и объекты
 ∙ логико-ориентированный 	цели, в терминах 							исчисления предикатов
 ∙ ориентированный 
   на правила 			правила «если-то»
 ∙ ориентированный 		инвариантные
   на ограничения			соотношения
Описание слайда:
5 основных разновидностей стилей программирования с присущими им видами абстракций: 5 основных разновидностей стилей программирования с присущими им видами абстракций: ∙ процедурно-ориентированный алгоритмы ∙ объектно-ориентированный классы и объекты ∙ логико-ориентированный цели, в терминах исчисления предикатов ∙ ориентированный на правила правила «если-то» ∙ ориентированный инвариантные на ограничения соотношения

Слайд 22





Невозможно признать какой-либо стиль программирования лучшим во всех областях практического применения. 
Невозможно признать какой-либо стиль программирования лучшим во всех областях практического применения. 
Для проектирования БЗ более пригоден стиль, ориентированный на правила, для вычислительных задач - процедурно-ориентированный. 
ОО стиль наиболее приемлем для широкого круга приложений.
Каждый стиль программирования имеет свою концептуальную базу. 
Для ОО стиля концептуальная база - это объектная модель.
Описание слайда:
Невозможно признать какой-либо стиль программирования лучшим во всех областях практического применения. Невозможно признать какой-либо стиль программирования лучшим во всех областях практического применения. Для проектирования БЗ более пригоден стиль, ориентированный на правила, для вычислительных задач - процедурно-ориентированный. ОО стиль наиболее приемлем для широкого круга приложений. Каждый стиль программирования имеет свою концептуальную базу. Для ОО стиля концептуальная база - это объектная модель.

Слайд 23





В 80-е годы - множество различных методологий моделирования. 
В 80-е годы - множество различных методологий моделирования. 
Каждая имела свои достоинства и недостатки, свою нотацию. 
То смутное время получило название "войны методов". 
Проблема: разные люди использовали разные нотации. Один и тот же символ означал в разных нотациях абсолютно разные вещи. 
UML - черты нотаций Гради Буча (Grady Booch), Джима Румбаха (Jim Rumbaugh), Айвара Якобсона (Ivar Jacobson) и других.
Описание слайда:
В 80-е годы - множество различных методологий моделирования. В 80-е годы - множество различных методологий моделирования. Каждая имела свои достоинства и недостатки, свою нотацию. То смутное время получило название "войны методов". Проблема: разные люди использовали разные нотации. Один и тот же символ означал в разных нотациях абсолютно разные вещи. UML - черты нотаций Гради Буча (Grady Booch), Джима Румбаха (Jim Rumbaugh), Айвара Якобсона (Ivar Jacobson) и других.

Слайд 24


Принципы ОО представления программных систем, слайд №24
Описание слайда:

Слайд 25





Появление ООП требовало удобного инструмента для моделирования, единой нотации для описания сложных программных систем. 
Появление ООП требовало удобного инструмента для моделирования, единой нотации для описания сложных программных систем. 
Три специалиста, три автора наиболее популярных методов решили объединить свои разработки. 
В 1991-м каждый из них написал книгу, в которой изложил свой метод ООАП. Каждая методология была по-своему хороша, но имела и недостатки. 
Метод Буча - хорош в проектировании, но слабоват в анализе. 
OMT Румбаха - отличное средство анализа, но плох в проектировании.
Objectory Якобсона - хорош с точки зрения user experience, на который ни метод Буча, ни OMT не обращали особого внимания. 
Основная идея Objectory - анализ должен начинаться с прецедентов, а не с диаграммы классов, которые должны быть производными от них.
Описание слайда:
Появление ООП требовало удобного инструмента для моделирования, единой нотации для описания сложных программных систем. Появление ООП требовало удобного инструмента для моделирования, единой нотации для описания сложных программных систем. Три специалиста, три автора наиболее популярных методов решили объединить свои разработки. В 1991-м каждый из них написал книгу, в которой изложил свой метод ООАП. Каждая методология была по-своему хороша, но имела и недостатки. Метод Буча - хорош в проектировании, но слабоват в анализе. OMT Румбаха - отличное средство анализа, но плох в проектировании. Objectory Якобсона - хорош с точки зрения user experience, на который ни метод Буча, ни OMT не обращали особого внимания. Основная идея Objectory - анализ должен начинаться с прецедентов, а не с диаграммы классов, которые должны быть производными от них.

Слайд 26





В 1994 г. существовало 72 метода или частные методики. Многие из них «перекрывались» -  использовали похожие идеи, нотации.
В 1994 г. существовало 72 метода или частные методики. Многие из них «перекрывались» -  использовали похожие идеи, нотации.
Чувствовалась острая потребность, "социальный заказ" - закончить "войну методов" и объединить в одном унифицированном средстве все лучшее, что было создано в области моделирования.
Сейчас The UML живет и развивается. Имеем десятки CASE-средств, поддерживающих UML. 
Rational не владеет UML, но продолжает работать над ним. UML принадлежит OMG, а сама Rational является одним из подразделений IBM и фигурирует во всех документах как IBM Rational. 
UML получил множество пакетов расширений – профайлов, позволяющих использовать его для моделирования систем из специфических предметных областей.
Описание слайда:
В 1994 г. существовало 72 метода или частные методики. Многие из них «перекрывались» - использовали похожие идеи, нотации. В 1994 г. существовало 72 метода или частные методики. Многие из них «перекрывались» - использовали похожие идеи, нотации. Чувствовалась острая потребность, "социальный заказ" - закончить "войну методов" и объединить в одном унифицированном средстве все лучшее, что было создано в области моделирования. Сейчас The UML живет и развивается. Имеем десятки CASE-средств, поддерживающих UML. Rational не владеет UML, но продолжает работать над ним. UML принадлежит OMG, а сама Rational является одним из подразделений IBM и фигурирует во всех документах как IBM Rational. UML получил множество пакетов расширений – профайлов, позволяющих использовать его для моделирования систем из специфических предметных областей.

Слайд 27





Известная картинка - типичный процесс создания продукта или "решения" (поскольку продукт решает проблему заказчика).
Известная картинка - типичный процесс создания продукта или "решения" (поскольку продукт решает проблему заказчика).
Здесь видны все проблемы программной инженерии, проблемы с коммуникацией и пониманием, вызванные отсутствием четкой спецификации создаваемого продукта.
UML - графический язык моделирования общего назначения (применяют для проектирования чего угодно - от простых качелей до сложного аппаратно-программного комплекса или космического корабля), предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых в ходе разработки.
Описание слайда:
Известная картинка - типичный процесс создания продукта или "решения" (поскольку продукт решает проблему заказчика). Известная картинка - типичный процесс создания продукта или "решения" (поскольку продукт решает проблему заказчика). Здесь видны все проблемы программной инженерии, проблемы с коммуникацией и пониманием, вызванные отсутствием четкой спецификации создаваемого продукта. UML - графический язык моделирования общего назначения (применяют для проектирования чего угодно - от простых качелей до сложного аппаратно-программного комплекса или космического корабля), предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых в ходе разработки.

Слайд 28


Принципы ОО представления программных систем, слайд №28
Описание слайда:

Слайд 29





UML в первую очередь - это спецификации. 
UML в первую очередь - это спецификации. 
Спецификация - подробное описание системы, полностью определяет ее цель и функциональные возможности. 
Заказчик и разработчик имеют обычно разное понимание смысла этого понятия. Есть еще аналитики, менеджеры, бизнес-консультанты... Каждый из них называет спецификации по-своему: постановка задачи, требования пользователя, техническое задание, функциональная спецификация, архитектура системы...
Они - специалисты в разных предметных областях, говорят каждый на своем языке и часто не понимают друг друга. 
Поэтому и возникает проблема, представленная на рисунке, ее может решить только наличие единого унифицированного средства создания спецификаций, простого и понятного для всех заинтересованных лиц.
Описание слайда:
UML в первую очередь - это спецификации. UML в первую очередь - это спецификации. Спецификация - подробное описание системы, полностью определяет ее цель и функциональные возможности. Заказчик и разработчик имеют обычно разное понимание смысла этого понятия. Есть еще аналитики, менеджеры, бизнес-консультанты... Каждый из них называет спецификации по-своему: постановка задачи, требования пользователя, техническое задание, функциональная спецификация, архитектура системы... Они - специалисты в разных предметных областях, говорят каждый на своем языке и часто не понимают друг друга. Поэтому и возникает проблема, представленная на рисунке, ее может решить только наличие единого унифицированного средства создания спецификаций, простого и понятного для всех заинтересованных лиц.

Слайд 30





Объектная модель:
Объектная модель:
4 главных элемента (без любого из них модель не 
				      будет ОО) : 
абстрагирование; 
инкапсуляция; 
модульность; 
иерархия. 
3 дополнительных (полезны, но не обязательны):
типизация;
параллелизм; 
сохраняемость.
Описание слайда:
Объектная модель: Объектная модель: 4 главных элемента (без любого из них модель не будет ОО) : абстрагирование; инкапсуляция; модульность; иерархия. 3 дополнительных (полезны, но не обязательны): типизация; параллелизм; сохраняемость.

Слайд 31





Абстрагирование - один из основных методов, для решения сложных задач. 
Абстрагирование - один из основных методов, для решения сложных задач. 
Хоар: «Абстрагирование проявляется в нахождении сходств между определенными объектами, ситуациями или процессами реального мира, и в принятии решений на основе этих сходств, отвлекаясь на время от имеющихся различий».
 Шоу: «Упрощенное описание или изложение системы, при котором одни свойства и детали выделяются, а другие опускаются. Хорошей является такая абстракция, которая подчеркивает детали, существенные для рассмотрения и использования, и опускает те, которые на данный момент несущественны».
Берзинс, Грей и Науман: «Идея квалифицировалась как абстракция только, если она может быть изложена, понята и проанализирована независимо от механизма, который будет в дальнейшем принят для ее реализации».
Описание слайда:
Абстрагирование - один из основных методов, для решения сложных задач. Абстрагирование - один из основных методов, для решения сложных задач. Хоар: «Абстрагирование проявляется в нахождении сходств между определенными объектами, ситуациями или процессами реального мира, и в принятии решений на основе этих сходств, отвлекаясь на время от имеющихся различий». Шоу: «Упрощенное описание или изложение системы, при котором одни свойства и детали выделяются, а другие опускаются. Хорошей является такая абстракция, которая подчеркивает детали, существенные для рассмотрения и использования, и опускает те, которые на данный момент несущественны». Берзинс, Грей и Науман: «Идея квалифицировалась как абстракция только, если она может быть изложена, понята и проанализирована независимо от механизма, который будет в дальнейшем принят для ее реализации».

Слайд 32





Абстракция выделяет существенные характеристики объекта, отличающие его от всех других видов объектов, и четко определяет его концептуальные границы с точки зрения наблюдателя 
Абстракция выделяет существенные характеристики объекта, отличающие его от всех других видов объектов, и четко определяет его концептуальные границы с точки зрения наблюдателя 

Абстрагирование концентрирует внимание на внешних особенностях О, позволяет отделить существенные особенности поведения от несущественных. 
Такое разделение смысла и реализации - барьер абстракции, основывается на принципе минимизации связей: интерфейс О содержит только существенные аспекты поведения и ничего больше.
Дополнительный принцип - принцип наименьшего удивления: абстракция должна охватывать все поведение объекта, но не больше и не меньше, и не привносить сюрпризов или побочных эффектов, лежащих вне ее сферы применимости.
Описание слайда:
Абстракция выделяет существенные характеристики объекта, отличающие его от всех других видов объектов, и четко определяет его концептуальные границы с точки зрения наблюдателя Абстракция выделяет существенные характеристики объекта, отличающие его от всех других видов объектов, и четко определяет его концептуальные границы с точки зрения наблюдателя Абстрагирование концентрирует внимание на внешних особенностях О, позволяет отделить существенные особенности поведения от несущественных. Такое разделение смысла и реализации - барьер абстракции, основывается на принципе минимизации связей: интерфейс О содержит только существенные аспекты поведения и ничего больше. Дополнительный принцип - принцип наименьшего удивления: абстракция должна охватывать все поведение объекта, но не больше и не меньше, и не привносить сюрпризов или побочных эффектов, лежащих вне ее сферы применимости.

Слайд 33





Абстрагирование сводится к формированию абстракций. Каждая абстракция фиксирует основные характеристики объекта, которые отличают его от других видов объектов. Абстракция концентрирует внимание на внешнем представлении объекта, позволяет отделить основное в поведении объекта от его реализации. Абстракцию удобно строить путем выделения обязанностей объекта.
Абстрагирование сводится к формированию абстракций. Каждая абстракция фиксирует основные характеристики объекта, которые отличают его от других видов объектов. Абстракция концентрирует внимание на внешнем представлении объекта, позволяет отделить основное в поведении объекта от его реализации. Абстракцию удобно строить путем выделения обязанностей объекта.
Пример: физический объект - датчик скорости, устанавливаемый на борту летательного аппарата (ЛА). Создадим его абстракцию: сформулируем обязанности датчика:
знать проекцию скорости ЛА в заданном направлении; 
показывать текущую скорость;
подвергаться настройке.
Описание слайда:
Абстрагирование сводится к формированию абстракций. Каждая абстракция фиксирует основные характеристики объекта, которые отличают его от других видов объектов. Абстракция концентрирует внимание на внешнем представлении объекта, позволяет отделить основное в поведении объекта от его реализации. Абстракцию удобно строить путем выделения обязанностей объекта. Абстрагирование сводится к формированию абстракций. Каждая абстракция фиксирует основные характеристики объекта, которые отличают его от других видов объектов. Абстракция концентрирует внимание на внешнем представлении объекта, позволяет отделить основное в поведении объекта от его реализации. Абстракцию удобно строить путем выделения обязанностей объекта. Пример: физический объект - датчик скорости, устанавливаемый на борту летательного аппарата (ЛА). Создадим его абстракцию: сформулируем обязанности датчика: знать проекцию скорости ЛА в заданном направлении; показывать текущую скорость; подвергаться настройке.

Слайд 34





Аппарат абстракции — удобный инструмент для борьбы со сложностью реальных систем. Создавая понятие в интересах задачи, мы отвлекаемся (абстрагируемся) от несущественных характеристик конкретных объектов, определяя только существенные характеристики. 
Аппарат абстракции — удобный инструмент для борьбы со сложностью реальных систем. Создавая понятие в интересах задачи, мы отвлекаемся (абстрагируемся) от несущественных характеристик конкретных объектов, определяя только существенные характеристики. 
Пример: в абстракции «часы» выделяем характеристику «показывать время», отвлекаясь от характеристик конкретных часов: форма, цвет, материал, цена, изготовитель.
Описание слайда:
Аппарат абстракции — удобный инструмент для борьбы со сложностью реальных систем. Создавая понятие в интересах задачи, мы отвлекаемся (абстрагируемся) от несущественных характеристик конкретных объектов, определяя только существенные характеристики. Аппарат абстракции — удобный инструмент для борьбы со сложностью реальных систем. Создавая понятие в интересах задачи, мы отвлекаемся (абстрагируемся) от несущественных характеристик конкретных объектов, определяя только существенные характеристики. Пример: в абстракции «часы» выделяем характеристику «показывать время», отвлекаясь от характеристик конкретных часов: форма, цвет, материал, цена, изготовитель.

Слайд 35


Принципы ОО представления программных систем, слайд №35
Описание слайда:

Слайд 36





Выбор правильного набора абстракций для заданной предметной области - главная задача OOD.
Выбор правильного набора абстракций для заданной предметной области - главная задача OOD.
«Существует целый спектр абстракций, начиная с объектов, которые почти точно соответствуют реалиям предметной области, и кончая объектами, не имеющими право на существование» [Сейдвиц, Старк].
Абстракции от наиболее полезных к наименее полезным: 
 ∙ Абстракция сущности - Объект представляет собой полезную модель некой сущности в предметной области
∙ Абстракция поведения - Объект состоит из обобщенного множества операций
∙ Абстракция виртуальной машины - Объект группирует операции, которые либо вместе используются более высоким уровнем управления, либо сами используют некоторый набор операций более низкого уровня
∙ Произвольная абстракция - Объект включает в себя набор операций, не имеющих друг с другом ничего общего
Описание слайда:
Выбор правильного набора абстракций для заданной предметной области - главная задача OOD. Выбор правильного набора абстракций для заданной предметной области - главная задача OOD. «Существует целый спектр абстракций, начиная с объектов, которые почти точно соответствуют реалиям предметной области, и кончая объектами, не имеющими право на существование» [Сейдвиц, Старк]. Абстракции от наиболее полезных к наименее полезным: ∙ Абстракция сущности - Объект представляет собой полезную модель некой сущности в предметной области ∙ Абстракция поведения - Объект состоит из обобщенного множества операций ∙ Абстракция виртуальной машины - Объект группирует операции, которые либо вместе используются более высоким уровнем управления, либо сами используют некоторый набор операций более низкого уровня ∙ Произвольная абстракция - Объект включает в себя набор операций, не имеющих друг с другом ничего общего

Слайд 37





Клиент - объект, использующий ресурсы другого объекта (сервера).
Клиент - объект, использующий ресурсы другого объекта (сервера).
Поведение О характеризуют услугами, которые он оказывает другим объектам, и операциями, которые он выполняет над другими объектами. 
Такой подход концентрирует внимание на внешних проявлениях объекта и приводит к идее - контрактной модели программирования [Мейер]: внешнее проявление О рассматривается с т.зр. его контракта с другими О, в соответствии с этим должно быть выполнено и его внутреннее устройство. 
Контракт фиксирует обязательства О-сервера перед О-клиентом. 
Контракт определяет ответственность объекта - поведение, за которое он отвечает.
Описание слайда:
Клиент - объект, использующий ресурсы другого объекта (сервера). Клиент - объект, использующий ресурсы другого объекта (сервера). Поведение О характеризуют услугами, которые он оказывает другим объектам, и операциями, которые он выполняет над другими объектами. Такой подход концентрирует внимание на внешних проявлениях объекта и приводит к идее - контрактной модели программирования [Мейер]: внешнее проявление О рассматривается с т.зр. его контракта с другими О, в соответствии с этим должно быть выполнено и его внутреннее устройство. Контракт фиксирует обязательства О-сервера перед О-клиентом. Контракт определяет ответственность объекта - поведение, за которое он отвечает.

Слайд 38





Каждая операция, предусмотренная контрактом, однозначно определяется ее формальными параметрами и типом возвращаемого значения.
Каждая операция, предусмотренная контрактом, однозначно определяется ее формальными параметрами и типом возвращаемого значения.
Полный набор операций, которые клиент может осуществлять над другим объектом, вместе с правильным порядком, в котором эти операции вызываются - протокол.

Протокол отражает все возможные способы, которыми объект может действовать или подвергаться воздействию.
Описание слайда:
Каждая операция, предусмотренная контрактом, однозначно определяется ее формальными параметрами и типом возвращаемого значения. Каждая операция, предусмотренная контрактом, однозначно определяется ее формальными параметрами и типом возвращаемого значения. Полный набор операций, которые клиент может осуществлять над другим объектом, вместе с правильным порядком, в котором эти операции вызываются - протокол. Протокол отражает все возможные способы, которыми объект может действовать или подвергаться воздействию.

Слайд 39





Центральная идея абстракции - понятие инварианта.
Центральная идея абстракции - понятие инварианта.
 Инвариант - это логическое условие, значение которого (истина или ложь) должно сохраняться.
 Для каждой операции объекта можно задать предусловия (инварианты предполагаемые операцией) и постусловия (инварианты, которым удовлетворяет операция). 
Изменение инварианта нарушает контракт, связанный с абстракцией:
если нарушено предусловие, то клиент не соблюдает свои обязательства и сервер не может выполнить свою задачу правильно;
если нарушено постусловие, то свои обязательства нарушил сервер, и клиент не может более ему доверять.
Описание слайда:
Центральная идея абстракции - понятие инварианта. Центральная идея абстракции - понятие инварианта. Инвариант - это логическое условие, значение которого (истина или ложь) должно сохраняться. Для каждой операции объекта можно задать предусловия (инварианты предполагаемые операцией) и постусловия (инварианты, которым удовлетворяет операция). Изменение инварианта нарушает контракт, связанный с абстракцией: если нарушено предусловие, то клиент не соблюдает свои обязательства и сервер не может выполнить свою задачу правильно; если нарушено постусловие, то свои обязательства нарушил сервер, и клиент не может более ему доверять.

Слайд 40





В случае нарушения условия возбуждается исключительная ситуация
В случае нарушения условия возбуждается исключительная ситуация
Некоторые ЯП имеют средства для работы с исключительными ситуациями: 
объекты могут возбуждать исключения, чтобы запретить дальнейшую обработку и предупредить о проблеме другие объекты, которые могут принять на себя перехват исключения и справиться с проблемой. 
Понятия операция, метод и функция-член происходят от различных традиций программирования (Ada, Smalltalk и C++ соответственно) и фактически обозначают одно и то.
Описание слайда:
В случае нарушения условия возбуждается исключительная ситуация В случае нарушения условия возбуждается исключительная ситуация Некоторые ЯП имеют средства для работы с исключительными ситуациями: объекты могут возбуждать исключения, чтобы запретить дальнейшую обработку и предупредить о проблеме другие объекты, которые могут принять на себя перехват исключения и справиться с проблемой. Понятия операция, метод и функция-член происходят от различных традиций программирования (Ada, Smalltalk и C++ соответственно) и фактически обозначают одно и то.

Слайд 41





Абстракции обладают статическими и динамическими свойствами. Например, файл как объект имеет объем памяти, имя и содержание - статические свойства. Конкретные значения каждого свойства динамичны и изменяются в процессе использования объекта.  
Абстракции обладают статическими и динамическими свойствами. Например, файл как объект имеет объем памяти, имя и содержание - статические свойства. Конкретные значения каждого свойства динамичны и изменяются в процессе использования объекта.  
Процедурный стиль программирования: действия, изменяющие динамические характеристики объектов, составляют суть программы. Любые события связаны с вызовом подпрограмм и с выполнением операторов. 
Стиль программирования, ориентированный на правила: под влиянием определенных условий активизируются определенные правила, которые в свою очередь вызывают другие правила, и т.д. 
Объектно-ориентированный стиль: связан с воздействием на объекты (в терминах Smalltalk с передачей объектам сообщений).
Операция над объектом порождает некоторую реакцию этого объекта. Операции, которые можно выполнить по отношению к данному объекту, и реакция объекта на внешние воздействия определяют поведение объекта.
Описание слайда:
Абстракции обладают статическими и динамическими свойствами. Например, файл как объект имеет объем памяти, имя и содержание - статические свойства. Конкретные значения каждого свойства динамичны и изменяются в процессе использования объекта. Абстракции обладают статическими и динамическими свойствами. Например, файл как объект имеет объем памяти, имя и содержание - статические свойства. Конкретные значения каждого свойства динамичны и изменяются в процессе использования объекта. Процедурный стиль программирования: действия, изменяющие динамические характеристики объектов, составляют суть программы. Любые события связаны с вызовом подпрограмм и с выполнением операторов. Стиль программирования, ориентированный на правила: под влиянием определенных условий активизируются определенные правила, которые в свою очередь вызывают другие правила, и т.д. Объектно-ориентированный стиль: связан с воздействием на объекты (в терминах Smalltalk с передачей объектам сообщений). Операция над объектом порождает некоторую реакцию этого объекта. Операции, которые можно выполнить по отношению к данному объекту, и реакция объекта на внешние воздействия определяют поведение объекта.

Слайд 42





Примеры абстракций.
Примеры абстракций.
В тепличном хозяйстве, использующем гидропонику, растения выращиваются на питательном растворе без песка, гравия или другой почвы. 
Управление режимом работы парниковой установки зависит от вида выращиваемых культур и от стадии выращивания.
Нужно контролировать факторы: температуру, влажность, освещение, кислотность (показатель рН), концентрацию питательных веществ. 
В больших хозяйствах используют автоматические системы, которые контролируют и регулируют эти факторы. 
Цель автоматизации  - при минимальном вмешательстве человека добиться соблюдения режима выращивания.
Описание слайда:
Примеры абстракций. Примеры абстракций. В тепличном хозяйстве, использующем гидропонику, растения выращиваются на питательном растворе без песка, гравия или другой почвы. Управление режимом работы парниковой установки зависит от вида выращиваемых культур и от стадии выращивания. Нужно контролировать факторы: температуру, влажность, освещение, кислотность (показатель рН), концентрацию питательных веществ. В больших хозяйствах используют автоматические системы, которые контролируют и регулируют эти факторы. Цель автоматизации - при минимальном вмешательстве человека добиться соблюдения режима выращивания.

Слайд 43





Ключевая абстракция - датчик.
Ключевая абстракция - датчик.
Датчики: температуры воды и воздуха, влажности, рН, освещения и концентрации питательных веществ. 
Датчик температуры - это объект, способный измерять температуру там, где он расположен. 
Температура – это числовой параметр с ограниченным диапазоном значений и с определенной точностью, означающий число градусов по Фаренгейту, Цельсию или Кельвину. 
Местоположение датчика - это место в теплице, температуру в котором нам необходимо знать. 
Для датчика температуры существенно не столько само местоположение, сколько факт, что данный датчик расположен именно в данном месте, это отличает его от других датчиков. 
Каковы обязанности датчика температуры?  Датчик должен знать температуру в своем местонахождении и сообщать ее по запросу.
Какие действия может выполнять по отношению к датчику клиент? Клиент может калибровать датчик и получать от него значение текущей температуры.
Описание слайда:
Ключевая абстракция - датчик. Ключевая абстракция - датчик. Датчики: температуры воды и воздуха, влажности, рН, освещения и концентрации питательных веществ. Датчик температуры - это объект, способный измерять температуру там, где он расположен. Температура – это числовой параметр с ограниченным диапазоном значений и с определенной точностью, означающий число градусов по Фаренгейту, Цельсию или Кельвину. Местоположение датчика - это место в теплице, температуру в котором нам необходимо знать. Для датчика температуры существенно не столько само местоположение, сколько факт, что данный датчик расположен именно в данном месте, это отличает его от других датчиков. Каковы обязанности датчика температуры? Датчик должен знать температуру в своем местонахождении и сообщать ее по запросу. Какие действия может выполнять по отношению к датчику клиент? Клиент может калибровать датчик и получать от него значение текущей температуры.

Слайд 44





Инкапсуляция 
Инкапсуляция 
Абстракция объекта всегда предшествует его реализации. После того, как решение о реализации принято, оно должно трактоваться как секрет абстракции, скрытый от большинства клиентов. 
Ингалс: "Никакая часть сложной системы не должна зависеть от внутреннего устройства какой-либо другой части" .
 
Абстракция "помогает людям думать о том, что они делают", инкапсуляция "позволяет легко перестраивать программы".
Описание слайда:
Инкапсуляция Инкапсуляция Абстракция объекта всегда предшествует его реализации. После того, как решение о реализации принято, оно должно трактоваться как секрет абстракции, скрытый от большинства клиентов. Ингалс: "Никакая часть сложной системы не должна зависеть от внутреннего устройства какой-либо другой части" . Абстракция "помогает людям думать о том, что они делают", инкапсуляция "позволяет легко перестраивать программы".

Слайд 45





Инкапсуляция и абстракция - взаимодополняющие понятия: 
Инкапсуляция и абстракция - взаимодополняющие понятия: 
абстракция выделяет внешнее поведение объекта, 
инкапсуляция содержит и скрывает реализацию, которая обеспечивает это поведение. 
Инкапсуляция достигается с помощью информационной закрытости. Обычно скрываются структура объектов и реализация их методов.
Инкапсуляция является процессом разделения элементов абстракции на секции с различной видимостью. Инкапсуляция служит для отделения интерфейса абстракции от ее реализации.
Пример: физический объект регулятор скорости. Обязанности регулятора: 
включаться;    выключаться;    увеличивать скорость;
уменьшать скорость;    отображать свое состояние.
Описание слайда:
Инкапсуляция и абстракция - взаимодополняющие понятия: Инкапсуляция и абстракция - взаимодополняющие понятия: абстракция выделяет внешнее поведение объекта, инкапсуляция содержит и скрывает реализацию, которая обеспечивает это поведение. Инкапсуляция достигается с помощью информационной закрытости. Обычно скрываются структура объектов и реализация их методов. Инкапсуляция является процессом разделения элементов абстракции на секции с различной видимостью. Инкапсуляция служит для отделения интерфейса абстракции от ее реализации. Пример: физический объект регулятор скорости. Обязанности регулятора: включаться; выключаться; увеличивать скорость; уменьшать скорость; отображать свое состояние.

Слайд 46





Инкапсуляция определяет четкие границы между абстракциями: 
Инкапсуляция определяет четкие границы между абстракциями: 
структура растения: чтобы понять на верхнем уровне действие фотосинтеза, допустимо игнорировать подробности: функции корней растения, химию клеточных стенок. 
при проектировании БД пишут программы, которые не зависят от физического представления данных; сосредотачиваются на схеме, отражающей логическое строение данных. 
В примерах объекты защищены от деталей реализации объектов более низкого уровня. 
Дисков: "абстракция работает только вместе с инкапсуляцией". 
Это означает наличие двух частей в классе: интерфейса и реализации. 

Интерфейс отражает внешнее поведение О, описывая абстракцию поведения всех объектов данного класса. 
Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта.
Описание слайда:
Инкапсуляция определяет четкие границы между абстракциями: Инкапсуляция определяет четкие границы между абстракциями: структура растения: чтобы понять на верхнем уровне действие фотосинтеза, допустимо игнорировать подробности: функции корней растения, химию клеточных стенок. при проектировании БД пишут программы, которые не зависят от физического представления данных; сосредотачиваются на схеме, отражающей логическое строение данных. В примерах объекты защищены от деталей реализации объектов более низкого уровня. Дисков: "абстракция работает только вместе с инкапсуляцией". Это означает наличие двух частей в классе: интерфейса и реализации. Интерфейс отражает внешнее поведение О, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения объекта.

Слайд 47





Принцип разделения интерфейса и реализации: 
Принцип разделения интерфейса и реализации: 
в интерфейсной части собрано все, что касается взаимодействия данного О с другими О; 
реализация скрывает от других О все детали, не имеющие отношения к процессу взаимодействия объектов. 
Бритон и Парнас назвали такие детали "тайнами абстракции". 
Инкапсуляция скрывает детали реализации объекта.
Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; 
инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.
Описание слайда:
Принцип разделения интерфейса и реализации: Принцип разделения интерфейса и реализации: в интерфейсной части собрано все, что касается взаимодействия данного О с другими О; реализация скрывает от других О все детали, не имеющие отношения к процессу взаимодействия объектов. Бритон и Парнас назвали такие детали "тайнами абстракции". Инкапсуляция скрывает детали реализации объекта. Инкапсуляция - это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение; инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации.

Слайд 48





Модульность 
Модульность 
Майерс: "Разделение программы на модули до некоторой степени позволяет уменьшить ее сложность... Однако гораздо важнее тот факт, что внутри модульной программы создаются множества хорошо определенных и документированных интерфейсов. Эти интерфейсы неоценимы для исчерпывающего понимания программы в целом".
 В некоторых ЯП (Smalltalk) модулей нет, классы составляют единственную физическую основу декомпозиции. В других ЯП (Object Pascal, C++, Ada, CLOS) модуль - это самостоятельная языковая конструкция.
В этих языках классы и объекты составляют логическую структуру системы, они помещаются в модули, образующие физическую структуру системы. 
Это свойство становится особенно полезным, когда система состоит из многих сотен классов.
Описание слайда:
Модульность Модульность Майерс: "Разделение программы на модули до некоторой степени позволяет уменьшить ее сложность... Однако гораздо важнее тот факт, что внутри модульной программы создаются множества хорошо определенных и документированных интерфейсов. Эти интерфейсы неоценимы для исчерпывающего понимания программы в целом". В некоторых ЯП (Smalltalk) модулей нет, классы составляют единственную физическую основу декомпозиции. В других ЯП (Object Pascal, C++, Ada, CLOS) модуль - это самостоятельная языковая конструкция. В этих языках классы и объекты составляют логическую структуру системы, они помещаются в модули, образующие физическую структуру системы. Это свойство становится особенно полезным, когда система состоит из многих сотен классов.

Слайд 49





Лисков: "модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями". 
Лисков: "модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями". 
Парнас: "Связи между модулями - это их представления друг о друге".
 В ЯП, поддерживающих принцип модульности как самостоятельную концепцию, интерфейс модуля отделен от его реализации. 
Модульность и инкапсуляция связаны. 
В разных ЯП модульность поддерживается по-разному. 
В C++ модули -  раздельно компилируемые файлы. Помещение интерфейсной части модулей в отдельные файлы .h. Реализация модуля - в файлах с расширением .срр. Связь между файлами объявляется директивой #include. Такой подход строится на соглашении и не является строгим требованием самого языка. 
В ЯП Object Pascal принцип модульности формализован строже. Определен особый синтаксис для интерфейсной части и реализации модуля (unit). 
Язык Ada: модуль (package) также имеет две части - спецификацию и тело. Допускается раздельное определение связей с модулями для спецификации и тела пакета.
Описание слайда:
Лисков: "модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями". Лисков: "модульность - это разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями". Парнас: "Связи между модулями - это их представления друг о друге". В ЯП, поддерживающих принцип модульности как самостоятельную концепцию, интерфейс модуля отделен от его реализации. Модульность и инкапсуляция связаны. В разных ЯП модульность поддерживается по-разному. В C++ модули - раздельно компилируемые файлы. Помещение интерфейсной части модулей в отдельные файлы .h. Реализация модуля - в файлах с расширением .срр. Связь между файлами объявляется директивой #include. Такой подход строится на соглашении и не является строгим требованием самого языка. В ЯП Object Pascal принцип модульности формализован строже. Определен особый синтаксис для интерфейсной части и реализации модуля (unit). Язык Ada: модуль (package) также имеет две части - спецификацию и тело. Допускается раздельное определение связей с модулями для спецификации и тела пакета.

Слайд 50





Правильное разделение программы на модули - сложная задача как выбор правильного набора абстракций. 
Правильное разделение программы на модули - сложная задача как выбор правильного набора абстракций. 
Зельковиц: "поскольку в начале работы над проектом решения могут быть неясными, декомпозиция на модули может вызвать затруднения. Для хорошо известных приложений (например, создание компиляторов) этот процесс можно стандартизовать, но для новых задач (военные системы или управление космическими аппаратами) задача может быть очень трудной". 
Модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы. 
Такая же ситуация - у проектировщиков бортовых компьютеров. Логика электронного оборудования может быть построена на основе элементарных схем типа НЕ, И-НЕ, ИЛИ-НЕ, но можно объединить такие схемы в стандартные интегральные схемы (модули), например, серий 7400, 7402 или 7404.
Описание слайда:
Правильное разделение программы на модули - сложная задача как выбор правильного набора абстракций. Правильное разделение программы на модули - сложная задача как выбор правильного набора абстракций. Зельковиц: "поскольку в начале работы над проектом решения могут быть неясными, декомпозиция на модули может вызвать затруднения. Для хорошо известных приложений (например, создание компиляторов) этот процесс можно стандартизовать, но для новых задач (военные системы или управление космическими аппаратами) задача может быть очень трудной". Модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы. Такая же ситуация - у проектировщиков бортовых компьютеров. Логика электронного оборудования может быть построена на основе элементарных схем типа НЕ, И-НЕ, ИЛИ-НЕ, но можно объединить такие схемы в стандартные интегральные схемы (модули), например, серий 7400, 7402 или 7404.

Слайд 51





Для небольших задач допустимо описание всех классов и объектов в одном модуле. 
Для небольших задач допустимо описание всех классов и объектов в одном модуле. 
Для большинства программ (кроме тривиальных) лучше сгруппировать в отдельный модуль логически связанные классы и объекты, оставив открытыми те элементы, которые совершенно необходимо видеть другим модулям. 
Такой способ разбиения на модули хорош, но его можно довести до абсурда. При внесении в проект изменений потребуется модифицировать и перекомпилировать сотни модулей. 
Скрытие информации имеет и обратную сторону. Деление программы на модули бессистемным образом иногда гораздо хуже, чем отсутствие модульности вообще. 
 
Описание слайда:
Для небольших задач допустимо описание всех классов и объектов в одном модуле. Для небольших задач допустимо описание всех классов и объектов в одном модуле. Для большинства программ (кроме тривиальных) лучше сгруппировать в отдельный модуль логически связанные классы и объекты, оставив открытыми те элементы, которые совершенно необходимо видеть другим модулям. Такой способ разбиения на модули хорош, но его можно довести до абсурда. При внесении в проект изменений потребуется модифицировать и перекомпилировать сотни модулей. Скрытие информации имеет и обратную сторону. Деление программы на модули бессистемным образом иногда гораздо хуже, чем отсутствие модульности вообще.  

Слайд 52





В структурном проектировании модульность - это искусство раскладывать п/п по кучкам так, чтобы в одну кучку попадали п/п, использующие друг друга или изменяемые вместе. 
В структурном проектировании модульность - это искусство раскладывать п/п по кучкам так, чтобы в одну кучку попадали п/п, использующие друг друга или изменяемые вместе. 
В ОО необходимо физически разделить классы и объекты, составляющие логическую структуру проекта. 
Парнас: "конечной целью декомпозиции программы на модули является снижение затрат на программирование за счет независимой разработки и тестирования. Структура модуля должна быть достаточно простой для восприятия; реализация каждого модуля не должна зависеть от реализации других модулей; должны быть приняты меры для облегчения процесса внесения изменений там, где они наиболее вероятны" 
На практике перекомпиляция тела модуля не является трудоемкой операцией: заново компилируется только данный модуль, и программа перекомпонуется.
Перекомпиляция интерфейсной части модуля более трудоемка. 
В строго типизированных ЯП надо перекомпилировать интерфейс и тело самого измененного модуля, затем все модули, связанные с данным, модули, связанные с ними, и т.д. по цепочке. 
Интерфейсная часть модулей должна быть возможно более узкой (в пределах обеспечения необходимых связей). Необходимо скрыть все, что возможно, в реализации модуля. Постепенный перенос описаний из реализации в интерфейсную часть менее опасен, чем "вычищение" избыточного интерфейсного кода.
Описание слайда:
В структурном проектировании модульность - это искусство раскладывать п/п по кучкам так, чтобы в одну кучку попадали п/п, использующие друг друга или изменяемые вместе. В структурном проектировании модульность - это искусство раскладывать п/п по кучкам так, чтобы в одну кучку попадали п/п, использующие друг друга или изменяемые вместе. В ОО необходимо физически разделить классы и объекты, составляющие логическую структуру проекта. Парнас: "конечной целью декомпозиции программы на модули является снижение затрат на программирование за счет независимой разработки и тестирования. Структура модуля должна быть достаточно простой для восприятия; реализация каждого модуля не должна зависеть от реализации других модулей; должны быть приняты меры для облегчения процесса внесения изменений там, где они наиболее вероятны" На практике перекомпиляция тела модуля не является трудоемкой операцией: заново компилируется только данный модуль, и программа перекомпонуется. Перекомпиляция интерфейсной части модуля более трудоемка. В строго типизированных ЯП надо перекомпилировать интерфейс и тело самого измененного модуля, затем все модули, связанные с данным, модули, связанные с ними, и т.д. по цепочке. Интерфейсная часть модулей должна быть возможно более узкой (в пределах обеспечения необходимых связей). Необходимо скрыть все, что возможно, в реализации модуля. Постепенный перенос описаний из реализации в интерфейсную часть менее опасен, чем "вычищение" избыточного интерфейсного кода.

Слайд 53





Программист должен находить баланс между двумя противоположными тенденциями: стремлением скрыть информацию и необходимостью обеспечения видимости тех или иных абстракций в нескольких модулях. 
Программист должен находить баланс между двумя противоположными тенденциями: стремлением скрыть информацию и необходимостью обеспечения видимости тех или иных абстракций в нескольких модулях. 
Парнас, Клеменс и Вейс правило: "Особенности системы, подверженные изменениям, следует скрывать в отдельных модулях; в качестве межмодульных можно использовать только те элементы, вероятность изменения которых мала. Все структуры данных должны быть обособлены в модуле; доступ к ним будет возможен для всех процедур этого модуля и закрыт для всех других. Доступ к данным из модуля должен осуществляться только через процедуры данного модуля" .
Следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями. 
 
Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.
Описание слайда:
Программист должен находить баланс между двумя противоположными тенденциями: стремлением скрыть информацию и необходимостью обеспечения видимости тех или иных абстракций в нескольких модулях. Программист должен находить баланс между двумя противоположными тенденциями: стремлением скрыть информацию и необходимостью обеспечения видимости тех или иных абстракций в нескольких модулях. Парнас, Клеменс и Вейс правило: "Особенности системы, подверженные изменениям, следует скрывать в отдельных модулях; в качестве межмодульных можно использовать только те элементы, вероятность изменения которых мала. Все структуры данных должны быть обособлены в модуле; доступ к ним будет возможен для всех процедур этого модуля и закрыт для всех других. Доступ к данным из модуля должен осуществляться только через процедуры данного модуля" . Следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями. Модульность - это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.

Слайд 54





Принципы абстрагирования, инкапсуляции и модульности - взаимодополняющие. 
Принципы абстрагирования, инкапсуляции и модульности - взаимодополняющие. 
Объект логически определяет границы определенной абстракции, а инкапсуляция и модульность делают их физически незыблемыми. 
При разделении системы на модули 2 правила:
поскольку модули служат в качестве элементарных и неделимых блоков программы, которые могут использоваться в системе повторно, распределение классов и объектов по модулям должно учитывать это. 
многие компиляторы создают отдельный сегмент кода для каждого модуля. Поэтому могут появиться ограничения на размер модуля. Динамика вызовов подпрограмм и расположение описаний внутри модулей может влиять на локальность ссылок и на управление страницами виртуальной памяти. При плохом разбиении процедур по модулям учащаются взаимные вызовы между сегментами, что приводит к потере эффективности кэш-памяти и частой смене страниц.
Описание слайда:
Принципы абстрагирования, инкапсуляции и модульности - взаимодополняющие. Принципы абстрагирования, инкапсуляции и модульности - взаимодополняющие. Объект логически определяет границы определенной абстракции, а инкапсуляция и модульность делают их физически незыблемыми. При разделении системы на модули 2 правила: поскольку модули служат в качестве элементарных и неделимых блоков программы, которые могут использоваться в системе повторно, распределение классов и объектов по модулям должно учитывать это. многие компиляторы создают отдельный сегмент кода для каждого модуля. Поэтому могут появиться ограничения на размер модуля. Динамика вызовов подпрограмм и расположение описаний внутри модулей может влиять на локальность ссылок и на управление страницами виртуальной памяти. При плохом разбиении процедур по модулям учащаются взаимные вызовы между сегментами, что приводит к потере эффективности кэш-памяти и частой смене страниц.

Слайд 55





Иерархическая организация
3 механизма для борьбы со сложностью:
Абстракция (упрощает представление физического объекта). Но число абстракций в системе намного превышает наши умственные возможности. 
Инкапсуляция позволяет устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций (закрывает детали внутреннего представления абстракций). 
Модульность также упрощает задачу, объединяя логически связанные абстракции в группы.
Описание слайда:
Иерархическая организация 3 механизма для борьбы со сложностью: Абстракция (упрощает представление физического объекта). Но число абстракций в системе намного превышает наши умственные возможности. Инкапсуляция позволяет устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций (закрывает детали внутреннего представления абстракций). Модульность также упрощает задачу, объединяя логически связанные абстракции в группы.

Слайд 56





Дополнение к ним - иерархическая организация - формирование из абстракций иерархической структуры. Упрощаются понимание проблем заказчика и их реализация - сложная система становится обозримой человеком.
Дополнение к ним - иерархическая организация - формирование из абстракций иерархической структуры. Упрощаются понимание проблем заказчика и их реализация - сложная система становится обозримой человеком.
Иерархия - это упорядочение абстракций, расположение их по уровням.
Описание слайда:
Дополнение к ним - иерархическая организация - формирование из абстракций иерархической структуры. Упрощаются понимание проблем заказчика и их реализация - сложная система становится обозримой человеком. Дополнение к ним - иерархическая организация - формирование из абстракций иерархической структуры. Упрощаются понимание проблем заказчика и их реализация - сложная система становится обозримой человеком. Иерархия - это упорядочение абстракций, расположение их по уровням.

Слайд 57





Основные виды иерархических структур:
Основные виды иерархических структур:
структура из классов («is a»-иерархия);
структура из объектов («part of»-иерархия).
«is а» - строится с помощью наследования. Наследование определяет отношение между классами, где класс разделяет структуру или поведение, определенные в одном другом (единичное наследование) или в нескольких других (множественное наследование) классах.
Описание слайда:
Основные виды иерархических структур: Основные виды иерархических структур: структура из классов («is a»-иерархия); структура из объектов («part of»-иерархия). «is а» - строится с помощью наследования. Наследование определяет отношение между классами, где класс разделяет структуру или поведение, определенные в одном другом (единичное наследование) или в нескольких других (множественное наследование) классах.

Слайд 58





«part of» - иерархическая структура  базируется на отношении агрегации. 
«part of» - иерархическая структура  базируется на отношении агрегации. 
Агрегация не является понятием, уникальным для ОО систем: любой ЯП, разрешающий структуры типа «запись», поддерживает агрегацию.
Агрегация полезна в сочетании с наследованием:
- агрегация обеспечивает физическую группировку логически связанной структуры;
- наследование позволяет легко и многократно использовать эти общие группы в других абстракциях.
Описание слайда:
«part of» - иерархическая структура базируется на отношении агрегации. «part of» - иерархическая структура базируется на отношении агрегации. Агрегация не является понятием, уникальным для ОО систем: любой ЯП, разрешающий структуры типа «запись», поддерживает агрегацию. Агрегация полезна в сочетании с наследованием: - агрегация обеспечивает физическую группировку логически связанной структуры; - наследование позволяет легко и многократно использовать эти общие группы в других абстракциях.

Слайд 59





Сравним элементы иерархий наследования и агрегации с точки зрения уровня сложности. 
Сравним элементы иерархий наследования и агрегации с точки зрения уровня сложности. 
При наследовании нижний элемент иерархии (подкласс) имеет больший уровень сложности (большие возможности), 
при агрегации -  наоборот (агрегат обладает большими возможностями, чем его элементы).
Описание слайда:
Сравним элементы иерархий наследования и агрегации с точки зрения уровня сложности. Сравним элементы иерархий наследования и агрегации с точки зрения уровня сложности. При наследовании нижний элемент иерархии (подкласс) имеет больший уровень сложности (большие возможности), при агрегации - наоборот (агрегат обладает большими возможностями, чем его элементы).

Слайд 60





Принцип наследования делает проект менее громоздким и более выразительным. 
Принцип наследования делает проект менее громоздким и более выразительным. 
Кокс: "В отсутствие наследования каждый класс становится самостоятельным блоком и должен разрабатываться "с нуля". Классы лишаются общности, поскольку каждый программист реализует их по-своему. Стройность системы достигается тогда только за счет дисциплинированности программистов. Наследование позволяет вводить в обращение новые программы, как мы обучаем новичков новым понятиям - сравнивая новое с чем-то уже известным". 
Принципы абстрагирования, инкапсуляции и иерархии находятся между собой в конфликте.
 Данфорт и Томлинсон: "Абстрагирование данных создает непрозрачный барьер, скрывающий состояние и функции объекта; принцип наследования требует открыть доступ и к состоянию, и к функциям объекта для производных объектов".
Описание слайда:
Принцип наследования делает проект менее громоздким и более выразительным. Принцип наследования делает проект менее громоздким и более выразительным. Кокс: "В отсутствие наследования каждый класс становится самостоятельным блоком и должен разрабатываться "с нуля". Классы лишаются общности, поскольку каждый программист реализует их по-своему. Стройность системы достигается тогда только за счет дисциплинированности программистов. Наследование позволяет вводить в обращение новые программы, как мы обучаем новичков новым понятиям - сравнивая новое с чем-то уже известным". Принципы абстрагирования, инкапсуляции и иерархии находятся между собой в конфликте. Данфорт и Томлинсон: "Абстрагирование данных создает непрозрачный барьер, скрывающий состояние и функции объекта; принцип наследования требует открыть доступ и к состоянию, и к функциям объекта для производных объектов".

Слайд 61





Для любого класса существуют два вида клиентов: объекты, которые манипулируют с экземплярами данного класса, и подклассы-наследники. 
Для любого класса существуют два вида клиентов: объекты, которые манипулируют с экземплярами данного класса, и подклассы-наследники. 
Лисков: «существуют три способа нарушения инкапсуляции через наследование: "подкласс может получить доступ к переменным экземпляра своего суперкласса, вызвать закрытую функцию, обратиться напрямую к суперклассу своего суперкласса».
ЯП по-разному находят компромисс между наследованием и инкапсуляцией; наиболее гибкий - C++. Интерфейс класса разделен на 3 части: закрытую (private), защищенную (protected) и открытую (public).
Описание слайда:
Для любого класса существуют два вида клиентов: объекты, которые манипулируют с экземплярами данного класса, и подклассы-наследники. Для любого класса существуют два вида клиентов: объекты, которые манипулируют с экземплярами данного класса, и подклассы-наследники. Лисков: «существуют три способа нарушения инкапсуляции через наследование: "подкласс может получить доступ к переменным экземпляра своего суперкласса, вызвать закрытую функцию, обратиться напрямую к суперклассу своего суперкласса». ЯП по-разному находят компромисс между наследованием и инкапсуляцией; наиболее гибкий - C++. Интерфейс класса разделен на 3 части: закрытую (private), защищенную (protected) и открытую (public).

Слайд 62





Типизация 
Типизация 
Понятие типа взято из теории абстрактных типов данных. 
Дойч: «тип - точная характеристика свойств, включая структуру и поведение, относящуюся к некоторой совокупности объектов".
Термины тип и класс взаимозаменяемы
 (Тип и класс не вполне одно и то же; в некоторых языках их различают)
Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.
Описание слайда:
Типизация Типизация Понятие типа взято из теории абстрактных типов данных. Дойч: «тип - точная характеристика свойств, включая структуру и поведение, относящуюся к некоторой совокупности объектов". Термины тип и класс взаимозаменяемы (Тип и класс не вполне одно и то же; в некоторых языках их различают) Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.

Слайд 63





Вегнер: «такой способ контроля существенен для программирования "в большом" ». 
Вегнер: «такой способ контроля существенен для программирования "в большом" ». 
В понятии типизации центральное место - идея согласования типов занимает. 
Пример: физические единицы измерения. Деля расстояние на время, мы ожидаем получить скорость, а не вес. В умножении температуры на силу смысла нет, а в умножении расстояния на силу - есть. 
Это примеры сильной типизации, когда прикладная область накладывает правила и ограничения на использование и сочетание абстракций.
Описание слайда:
Вегнер: «такой способ контроля существенен для программирования "в большом" ». Вегнер: «такой способ контроля существенен для программирования "в большом" ». В понятии типизации центральное место - идея согласования типов занимает. Пример: физические единицы измерения. Деля расстояние на время, мы ожидаем получить скорость, а не вес. В умножении температуры на силу смысла нет, а в умножении расстояния на силу - есть. Это примеры сильной типизации, когда прикладная область накладывает правила и ограничения на использование и сочетание абстракций.

Слайд 64





Примеры сильной и слабой типизации
Примеры сильной и слабой типизации
Конкретный ЯП может иметь сильный или слабый механизм типизации или не иметь никакого, оставаясь ОО. 
В Eiffel соблюдение правил использования типов строго контролируется - операция не может быть применена к объекту, если она не зарегистрирована в его классе или суперклассе. 
В Smalltalk типов нет: во время исполнения любое сообщение можно послать любому объекту, и если класс объекта (или его надкласс) не понимает сообщение, то генерируется сообщение об ошибке.
C++ тяготеет к сильной типизации, но в этом языке правила типизации можно игнорировать или подавить полностью.
Описание слайда:
Примеры сильной и слабой типизации Примеры сильной и слабой типизации Конкретный ЯП может иметь сильный или слабый механизм типизации или не иметь никакого, оставаясь ОО. В Eiffel соблюдение правил использования типов строго контролируется - операция не может быть применена к объекту, если она не зарегистрирована в его классе или суперклассе. В Smalltalk типов нет: во время исполнения любое сообщение можно послать любому объекту, и если класс объекта (или его надкласс) не понимает сообщение, то генерируется сообщение об ошибке. C++ тяготеет к сильной типизации, но в этом языке правила типизации можно игнорировать или подавить полностью.

Слайд 65





Статическое и динамическое связывание. 
Статическое и динамическое связывание. 
Сильная (строгая) и статическая типизация - разные вещи. 
Строгая типизация следит за соответствием типов, а статическая (статическое, раннее связывание) определяет время, когда имена связываются с типами.
Статическая связь - типы всех переменных и выражений известны во время компиляции; динамическое связывание (позднее) - типы неизвестны до момента выполнения программы. 
Типизация и связывание - независимы, в ЯП может быть: 
типизация - сильная, связывание - статическое (Ada),
типизация - сильная, связывание - динамическое (C++, Object Pascal),
или и типов нет, и связывание динамическое (Smalltalk). 
Язык CLOS - промежуточное положение между C++ и Smalltalk
Описание слайда:
Статическое и динамическое связывание. Статическое и динамическое связывание. Сильная (строгая) и статическая типизация - разные вещи. Строгая типизация следит за соответствием типов, а статическая (статическое, раннее связывание) определяет время, когда имена связываются с типами. Статическая связь - типы всех переменных и выражений известны во время компиляции; динамическое связывание (позднее) - типы неизвестны до момента выполнения программы. Типизация и связывание - независимы, в ЯП может быть: типизация - сильная, связывание - статическое (Ada), типизация - сильная, связывание - динамическое (C++, Object Pascal), или и типов нет, и связывание динамическое (Smalltalk). Язык CLOS - промежуточное положение между C++ и Smalltalk

Слайд 66





Параллелизм 
Параллелизм 
ООР основано на абстракции, инкапсуляции и наследовании; параллелизм главное внимание уделяет абстрагированию и синхронизации процессов.
 
Параллелизм - это свойство, отличающее активные объекты от пассивных. 
Параллелизм позволяет различным объектам действовать одновременно.

Сохраняемость 
Любой программный объект существует в памяти и живет во времени. 

Аткинсон: «есть непрерывное множество продолжительности существования объектов: существуют О, которые присутствуют лишь во время вычисления выражения, но есть такие, как БД, которые существуют независимо от программы».
Описание слайда:
Параллелизм Параллелизм ООР основано на абстракции, инкапсуляции и наследовании; параллелизм главное внимание уделяет абстрагированию и синхронизации процессов. Параллелизм - это свойство, отличающее активные объекты от пассивных. Параллелизм позволяет различным объектам действовать одновременно. Сохраняемость Любой программный объект существует в памяти и живет во времени. Аткинсон: «есть непрерывное множество продолжительности существования объектов: существуют О, которые присутствуют лишь во время вычисления выражения, но есть такие, как БД, которые существуют независимо от программы».

Слайд 67





Объектная модель отличается от моделей, связаных с методами структурного анализа, проектирования и программирования. 
Объектная модель отличается от моделей, связаных с методами структурного анализа, проектирования и программирования. 
Объектная модель не требует отказа от ранее найденных и испытанных методов и приемов. 
Она вносит новые элементы, которые добавляются к предшествующему опыту. 
Объектный подход обеспечивает ряд удобств, которые другими моделями не предусматривались.
Объектный подход позволяет создавать системы, удовлетворяющие признакам хорошо структурированных сложных систем.
Описание слайда:
Объектная модель отличается от моделей, связаных с методами структурного анализа, проектирования и программирования. Объектная модель отличается от моделей, связаных с методами структурного анализа, проектирования и программирования. Объектная модель не требует отказа от ранее найденных и испытанных методов и приемов. Она вносит новые элементы, которые добавляются к предшествующему опыту. Объектный подход обеспечивает ряд удобств, которые другими моделями не предусматривались. Объектный подход позволяет создавать системы, удовлетворяющие признакам хорошо структурированных сложных систем.

Слайд 68





Преимущества объектной модели:
Преимущества объектной модели:

Позволяет использовать возможности ОО ЯП.
Повышается уровень унификации разработки, повторное использование программ и проектов. Уменьшение объема кода программ, удешевление проекта, выигрыш во времени. 
Построение систем на основе стабильных промежуточных описаний, это упрощает процесс внесения изменений. 
Уменьшается риск разработки сложных систем. Объектный подход состоит из ряда хорошо продуманных этапов проектирования. 
Ориентирована на человеческое восприятие мира, "многие люди, не имеющие понятия о том, как работает компьютер, находят вполне естественным ОО подход к системам" .
Описание слайда:
Преимущества объектной модели: Преимущества объектной модели: Позволяет использовать возможности ОО ЯП. Повышается уровень унификации разработки, повторное использование программ и проектов. Уменьшение объема кода программ, удешевление проекта, выигрыш во времени. Построение систем на основе стабильных промежуточных описаний, это упрощает процесс внесения изменений. Уменьшается риск разработки сложных систем. Объектный подход состоит из ряда хорошо продуманных этапов проектирования. Ориентирована на человеческое восприятие мира, "многие люди, не имеющие понятия о том, как работает компьютер, находят вполне естественным ОО подход к системам" .

Слайд 69





Выводы: 
Выводы: 
Развитие программной индустрии привело к созданию методов OOA, OOD, OOP, служщие для программирования "в большом". 
В программировании существует несколько парадигм, ориентированных на процедуры, объекты, логику, правила и ограничения. 
Абстракция определяет существенные характеристики О, которые отличают его от других видов О, абстракция четко очерчивает концептуальную границу О с т.зр. наблюдателя. 
Инкапсуляция -  процесс разделения устройства и поведения О; служит, чтобы изолировать контрактные обязательства абстракции от их реализации.
Описание слайда:
Выводы: Выводы: Развитие программной индустрии привело к созданию методов OOA, OOD, OOP, служщие для программирования "в большом". В программировании существует несколько парадигм, ориентированных на процедуры, объекты, логику, правила и ограничения. Абстракция определяет существенные характеристики О, которые отличают его от других видов О, абстракция четко очерчивает концептуальную границу О с т.зр. наблюдателя. Инкапсуляция - процесс разделения устройства и поведения О; служит, чтобы изолировать контрактные обязательства абстракции от их реализации.

Слайд 70






Модульность - это состояние системы, разложенной на внутренне связные и слабо связанные между собой модули. 
Иерархия - это ранжирование или упорядочение абстракций. 
Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере способ управлять такой подменой. 
Параллелизм - это свойство, отличающее активные объекты от пассивных. 
Сохраняемость - способность объекта существовать во времени и (или) в пространстве.
Описание слайда:
Модульность - это состояние системы, разложенной на внутренне связные и слабо связанные между собой модули. Иерархия - это ранжирование или упорядочение абстракций. Типизация - это способ защититься от использования объектов одного класса вместо другого, или по крайней мере способ управлять такой подменой. Параллелизм - это свойство, отличающее активные объекты от пассивных. Сохраняемость - способность объекта существовать во времени и (или) в пространстве.



Похожие презентации
Mypresentation.ru
Загрузить презентацию