Опубликован: 23.10.2005 | Уровень: специалист | Доступ: платный
Основы объектно-ориентированного проектирования Фундаментальный учебник по основам объектно-ориентированного проектирования и инженерии программ. В книге подробно рассматривается объектная технология бесшовной разработки программных систем, включающая этапы анализа, проектирования, разработки и сопровождения. Как находить классы, правильное использование наследования, таксономия наследования, объектно-ориентированный анализ – это далеко не полный перечень рассматриваемых в книге тем.
Данная книга Бертрана Мейера посвящена бесшовному процессу разработки программных систем, когда объектная технология применяется на самых ранних этапах разработки - анализа и проектирования. Рассмотрение начинается с двух важных образцов проектирования. На этих примерах демонстрируются преимущества объектной технологии. Далее идет систематическое изложение основ объектного анализа и проектирования. Подробно обсуждаются вопросы поиска нужных абстракций данных, правильное применение наследования, как важнейшего механизма проектирования систем, роль абстрактных классов. Центральными главами являются главы, посвященные принципам проектирования классов и объектно-ориентированному анализу. В книге подробно обсуждаются и более сложные механизмы – параллельности и распределенных вычислений. Эти темы начинают играть все более важную роль в современных разработках. Специальный интерес могут представлять темы, посвященные проблемам обучения и сравнительному анализу языков программирования. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного проектирования.
Цель: Курс предназначен для изучения всего процесса разработки программных систем на основе объектной технологии. В данной книге основное внимание уделяется проблемам, возникающим на начальных этапах разработки – этапах анализа и проектирования системы. Предполагается знакомство читателя с первой частью фундаментального труда Бертрана Мейера «Основы объектно-ориентированного программирования». Однако учебник представляет самостоятельный интерес, дает фундаментальное описание объектной технологии разработки и полезен всем, кто создает программные системы в объектном стиле независимо от того, в какой рабочей среде и на каком языке программирования эти системы создаются.
Необходимые знания: Книга в первую очередь адресуется профессионалам, создающим качественный программный продукт. Всякий, кто хочет по настоящему понять суть объектно-ориентированных языков программирования и объектной технологии, просто обязан изучить книгу Бертрана Мейера, поскольку по глубине охвата рассматриваемой тематики другой подобной книги просто нет. Книга рекомендуется студентам, чья профессия связана с разработкой программных систем.

План занятий

ЗанятиеЗаголовок <<Дата изучения
-
Лекция 1
44 минуты
Объектно-ориентированная методология: Правильно применяйте метод
В этих лекциях рассматривается методология объектной ориентации: как применять мощное множество концепций и технических приемов для получения преимуществ наших проектов и успешной их организации.
Оглавление
    -
    Тест 1
    15 минут
    -
    Лекция 2
    58 минут
    Образец проектирования: многопанельные интерактивные системы
    Создадим образец проектирования, иллюстрирующий ОО-метод. Он будет сравниваться с другими подходами, в частности с функциональной декомпозицией сверху вниз, что позволит продемонстрировать выдающиеся возможности Метода.
    Оглавление
      -
      Тест 2
      15 минут
      -
      Лекция 3
      1 час 18 минут
      Наследование: "откат" в интерактивных системах
      В нашем втором примере займемся задачей, возникающей перед проектировщиками почти любой интерактивной системы, - как обеспечить возможность "отката" команд. Покажем, что наследование и динамическое связывание позволяют получить простое и общее решение довольно сложной и многогранной проблемы.
      Оглавление
        -
        Тест 3
        15 минут
        -
        Лекция 4
        1 час 33 минуты
        Как найти классы
        Важнейшая цель ОО-методологии - дать рекомендации по нахождению классов, на основе которых строится программная система. Этому посвящена данная лекция.
        Оглавление
          -
          Тест 4
          15 минут
          -
          Лекция 5
          3 часа 30 минут
          Принципы проектирования класса
          Опытные разработчики ПО знают, что одной из наиболее критичных проблем является проблема проектирования интерфейсов модуля. В больших и длительных проектах многие обсуждения и недоразумения связаны со спецификациями интерфейса модулей: "Но я полагал, что вы передаете мне уже нормализованные данные...", "Зачем Вы делаете эту обработку, я ведь уже об этом позаботился?.." и так далее.
          Оглавление
            -
            Тест 5
            15 минут
            -
            Лекция 6
            3 часа 16 минут
            Используйте наследование правильно
            Изучение технических деталей наследования и связанных механизмов в лекциях 7-18 курса "Основы объектно-ориентированного программирования" не означает еще автоматического владения всеми методологическими следствиями. Из всех проблем ОО-технологии ни одна не вызывает столько обсуждений и вопросов о том, как и когда использовать наследование. В этой лекции мы продвинемся в понимании смысла наследования не ради теории, а ради наилучшего применения наследования в наших проектах. В частности, мы попытаемся понять, чем наследование отличается от другого межмодульного отношения, его брата и соперника, - отношения встраивания, чаще всего называемого клиентским отношением. Мы исследуем, когда следует использовать одно, когда - другое, а когда оба отношения являются приемлемыми. Мы установим основной критерий использования наследования, по пути выяснив, в каких случаях его использование ошибочно. Мы сможем создать классификацию различных случаев легитимного использования, часть из которых принимается безоговорочно (наследование подтипов), другие - более спорны. На этом пути мы попытаемся освоить опыт таксономии или систематики, привнесенный из других научных дисциплин.
            Оглавление
              -
              Тест 6
              15 минут
              -
              Лекция 7
              12 минут
              Полезные приемы
              Примеры ОО-проектирования, приведенные в предыдущих лекциях, иллюстрируют несколько характерных приемов. Хотя мы и не закончили наш обзор методологических проблем - нам предстоит еще рассмотрение правил стиля, концепций ОО-анализа, вопросов обучения, процессов ПО, - сделаем паузу и кратко сформулируем то, что уже изучено. Это будет самая короткая лекция во всей книге. Она просто перечисляет плодотворные идеи, объединяя их в группы с предваряемыми ключевыми словами, напоминая о тех примерах, где мы впервые столкнулись с этими идеями.
              Оглавление
                -
                Тест 7
                15 минут
                -
                Лекция 8
                1 час 31 минута
                Чувство стиля
                Реализация ОО-метода требует обращать внимание на многие детали стиля, считающиеся пустяковыми для менее амбициозного подхода.
                Оглавление
                  -
                  Тест 8
                  15 минут
                  -
                  Лекция 9
                  1 час 13 минут
                  Объектно-ориентированный анализ
                  Направленный изначально на решение проблем реализации ОО-метод быстро распространился на весь жизненный цикл ПО. Особый интерес представляет приложение ОО-идей к моделированию как программных, так и непрограммных систем. Это применение объектной технологии для рассмотрения скорее проблем, чем решений, известно как объектно-ориентированный анализ.
                  Оглавление
                    -
                    Тест 9
                    15 минут
                    -
                    Лекция 10
                    38 минут
                    Процесс разработки ПО
                    Центральный вопрос объектной технологии - ее воздействие на весь процесс разработки ПО. Пришло время рассмотреть влияние ОО-принципов на общую организацию проектов и их деление на этапы. Это часть более общей проблемы перспектив объектной технологии с позиций менеджмента. Вопросы менеджмента подробно изучаются в книге Object Success. В данной лекции обсуждаются лишь наиболее существенные идеи: кластеры как основная организационная единица, принципы параллельной разработки на основе кластерной модели жизненного цикла ПО, этапы и задачи такой модели, роль обобщения для повторного использования, принципы бесшовности и обратимости.
                    Оглавление
                      -
                      Тест 10
                      15 минут
                      -
                      Лекция 11
                      55 минут
                      Обучение методу
                      Заканчивая наше изучение методологических проблем, обратимся к одному из принципиальных вопросов, стоящих перед компаниями и университетами: как лучше учить тех, кто должен применять объектные технологии. Эта лекция представляет принципы обучения и отмечает типичные ошибки. В первой части проблема рассматривается с точки зрения лица, организующего профессиональную подготовку в компании, во второй - с позиций профессора университета. Несмотря на то, что речь пойдет о педагогических проблемах профессиональной подготовки, обсуждение касается и тех, кто не занимает указанных позиций и является скорее обучаемым, чем обучающим.
                      Оглавление
                        -
                        Тест 11
                        15 минут
                        -
                        Лекция 12
                        5 часов 15 минут
                        Параллельность, распределенность, клиент-сервер и Интернет
                        Как и люди, компьютеры могут объединяться в команды для достижения результатов, которые ни один из них не может получить в одиночку, но в отличие от людей они могут выполнять много дел одновременно (или делать вид, что делают их одновременно) и делать их хорошо. Однако до сих пор в обсуждении неявно предполагалось, что вычисление является последовательным, т. е. управляется одной цепочкой команд. Сейчас мы увидим, что получится, если отказаться от этого предположения и перейти к рассмотрению параллельных вычислений.
                        Оглавление
                          -
                          Тест 12
                          15 минут
                          -
                          Лекция 13
                          1 час 43 минуты
                          Сохранение объектов и базы данных (БД)
                          Выполнение ОО-приложения означает создание и манипулирование некоторым числом объектов. Что происходит с этими объектами, когда текущее вычисление завершается? Часть объектов исчезает с завершением сессии. Многим приложениям нужны также и сохраняемые объекты, остающиеся между сессиями. Сохраняемые объекты могут использоваться разными приложениями, что приводит к необходимости баз данных.
                          Оглавление
                            -
                            Тест 13
                            15 минут
                            -
                            Лекция 14
                            53 минуты
                            ОО-метод для графических интерактивных приложений
                            Элегантный интерфейс пользователя стал неотъемлемой частью всякого успешного программного продукта. Достижения в создании новых мониторов, эргономике (изучении человеческого фактора) и в разработке ПО привели к всеобщему распространению интерактивных методов и средств, прокладывающих себе дорогу с семидесятых. Многооконные системы позволяют выполнять одновременно несколько работ, мышь позволяет быстро указывать на требуемый элемент, меню ускоряет возможность выбора, значки представляют важные понятия, рисунки демонстрируют информацию визуально, кнопки выполняют стандартные операции.
                            Оглавление
                              -
                              Тест 14
                              15 минут
                              -
                              Лекция 15
                              1 час 18 минут
                              OO-программирование и язык Ada
                              Успехи методологии программирования 70-х годов привели к появлению нового поколения языков, сочетающих управляющие структуры Algol 60 и конструкции структурирования данных Algol W и Pascal с поддержкой скрытия информации. При различии свойств эти языки близки по сути, их принято называть инкапсулирующими языками. (Они также известны как "основанные на объекте" - терминология обсуждается в следующей лекции.)
                              Оглавление
                                -
                                Тест 15
                                15 минут
                                -
                                Лекция 16
                                46 минут
                                Эмуляция объектной технологии в не ОО-средах
                                Языки Fortran, Cobol, Pascal, C, Basic, PL/I и даже ассемблер до сих пор составляют существенную часть создаваемого или обновляемого ПО. Ясно, что проект, использующий один из этих языков, не сможет получить все преимущества объектной технологии. Это потребовало бы введения нотации, подобной изучаемой в этой книге, и, соответственно, компилятора, среды и библиотек. Но те, кто вынужден использовать такие инструменты, чаще всего из-за ограничений не технического характера, все же могут, вдохновившись объектной технологией, использовать ее концепции для улучшения качества своего ПО. Данная лекция представляет технические приемы эмуляции объектов, дающие возможность приблизиться к объектной технологии. В частности, эти приемы рассматриваются для языков Fortran, Pascal и C, но они применимы не только для упомянутых языков. Ada и другие инкапсулирующие языки обсуждались в предыдущей лекции. В следующей лекции будут рассмотрены такие ОО-языки, как Simula, Smalltalk, Objective-C, C++ и Java. Заметьте: при использовании языка, не входящего в список, например, Basic или Cobol, перенос рассматриваемых концепций не должен вызвать особых трудностей; при использовании ОО-языка данное обсуждение может привести к лучшему пониманию новшеств объектной технологии и поддерживающей техники реализации.
                                Оглавление
                                  -
                                  Тест 16
                                  15 минут
                                  -
                                  Лекция 17
                                  1 час 55 минут
                                  От Simula к Java и далее: основные ОО-языки и окружения
                                  Под влиянием языка Simula, введенного в 1967 г., появился ряд ОО-языков, отличающихся разнообразием подходов. Эта лекция описывает некоторые из них, привлекшие самое большое внимание: Simula, Smalltalk, C++ и другие ОО-расширения C, Java. В литературе до сих пор нет глубокого сравнительного описания важнейших ОО-языков. Цель этой лекции гораздо скромнее. Потому некоторые наиболее популярные языки описываются весьма коротко. Наша цель - изучить проблемы и концепции, находя их, где это возможно, даже если придется обратиться к менее популярным подходам. Для языка, имеющего практическую значимость, невелик риск пропустить что-то главное, поскольку многочисленные статьи и книги описывают его достаточно подробно. Настоящий риск таится в обратном: риск пропустить перспективную идею, просто потому, что поддерживающий ее язык (скажем, Simula) сейчас не так популярен. Таким образом, описание будет следовать не принципу равных возможностей в выборе примечательных языковых свойств, а принципу позитивных действий.
                                  Оглавление
                                    -
                                    Тест 17
                                    15 минут
                                    -
                                    Лекция 18
                                    56 минут
                                    Объектно-ориентированная среда
                                    В заключительной части Девятой симфонии Бетховена баритон прерывает поток изумительной инструментальной музыки, призывая нас к чему-то возвышенному: О, друзья! Не эту мелодию! Пусть начнет звучать Более радостная. В предыдущих лекциях был дан обзор некоторых известных средств OO-разработки. Не принижая их значения, мы завершим обсуждение рассмотрением современного и комплексного подхода (первые три части Девятой симфонии тоже прелестны, хоть вокал в них и отсутствует). Данная лекция представляет программную среду (ISE EiffelStudio), реализующую принципы, изложенные в данной книге и делающую их непосредственно доступными разработчикам ОО-ПО.
                                    Оглавление
                                      -
                                      Тест 18
                                      15 минут
                                      -
                                      Дополнительный материал 1
                                      4 минуты
                                      -
                                      Дополнительный материал 2
                                      1 час 15 минут
                                      -
                                      5 часов
                                      -
                                      Алексей Щербанов
                                      Алексей Щербанов
                                      Россия, г. Оренбург
                                      Ксения Маковецкая
                                      Ксения Маковецкая
                                      Россия, Москва, МГЮА им. О.Е. Кутафина, 2014