Предисловие
Поздравляем! Вы сделали правильный выбор! Перед вами — практическое руководство и путеводитель по интересной стране объектно-ориентированного анализа и проектирования. В этой книге приводится много новой информации.
Во-первых, вы узнаете, что объектная технология приобретает все более широкое распространение при разработке программного обеспечения. Этот процесс особенно активизировался с появлением языка Java, в связи с чем возрастает роль объектно-ориентированного анализа и проектирования, так как владение этими вопросами обеспечивает создание робастных и простых в поддержке объектно-ориентированных систем, а также открывает новые возможности в развитии карьеры архитектора, аналитика или проектировщика программного обеспечения.
Во-вторых, те, кто еще не знакомы с вопросами объектно-ориентированного анализа и проектирования, наверняка планируют освоить эту область знаний. Данная книга станет хорошим путеводителем и позволит шаг за шагом пройти путь от определения требований к системе до создания кода.
В-третьих, унифицированный язык моделирования UML является признанным стандартом для описания моделей, который обеспечивает возможность общения между разработчиками.
В-четвертых, идиомы и удачные проектные решения при создании объектно-ориентированных систем были сформулированы в виде шаблонов, которые эксперты предлагают применять при создании систем. Из этой книги вы узнаете, как применять шаблоны проектирования, включая популярную "четверку", а также наиболее важные шаблоны GRASP, в которых сконцентрированы фундаментальные принципы распределения обязанностей при объектно-ориентированном проектировании. Изучив и применив шаблоны, можно повысить уровень своего мастерства в области анализа и проектирования.
В-пятых, оптимальность структуры и содержания этой книги проверены годами практического опыта обучения специалистов искусству объектно-ориентированного анализа и проектирования. Этот опыт позволил выработать четкий, мотивированный и эффективный подход к изучению данного предмета, обеспечивающий оптимальность процесса чтения и обучения.
В-шестых, для иллюстрации всего процесса объектно-ориентированного анализа и проектирования в книге приводится исчерпывающее описание одного реального примера. Это достаточно реалистичное упражнение.
В-седьмых, здесь показано, как перейти от этапа объектно-ориентированного проектирования к созданию кода на языке Java.
В-восьмых, в книге рассказывается о том, как разработать многослойную архитектуру и связать уровень графического интерфейса пользователя со слоями реализации и системных служб. Это очень важный практический вопрос, который зачастую остается "за кадром".
И наконец, здесь рассказывается, как разработать объектно-ориентированную структуру и использовать ее для создания структуры базы данных.
Основная задача
Основная задача этой книги сводится к следующему.Помочь студентам и разработчикам в создании удачных объектно-ориентированных решений за счет применения набора обоснованных принципов и эвристик.
В процессе изучения и применения приведенной здесь информации и предлагаемых методов можно глубоко изучить проблему в терминах ее процессов и понятий, а также разработать органичное программное решение с использованием объектного подхода.
Для кого предназначена эта книга
Эта книга рассчитана на следующую аудиторию.
- Разработчики с опытом создания программ на объектно-ориентированных языках, которые пока не являются экспертами в области объектно-ориентированного анализа и проектирования
- Студенты компьютерных специальностей, изучающие объектную технологию
- Специалисты по объектно-ориентированному анализу и проектированию, которые хотят изучить систему обозначений унифицированного языка моделирования UML (Unified Modeling Language), ознакомиться с шаблонами или углубить свои знания в области объектно-ориентированного анализа и проектирования
Что необходимо знать
Для успешного овладения предлагаемым материалом необходимо иметь следующие знания.
- Навыки и опыт программирования на объектно-ориентированном языке наподобие C++, Java или Smalltalk
- Основные понятия объектной технологии, такие как класс, экземпляр, интерфейс, полиморфизм, инкапсуляция и наследование
Определения основных понятий объектной технологии в книге не приводятся.
Структура книги
Общий принцип организации книги сводится к следующему. Вопросы объектно-ориентированного анализа и проектирования рассматриваются в той последовательности, в которой они возникают в процессе разработки системы в течение двух последовательных циклов разработки. При рассмотрении первого цикла вводятся основные понятия анализа и проектирования. При переходе ко второму циклу разработки освещаются новые вопросы анализа и проектирования, а рассмотренные ранее изучаются более подробно.
Назначение книги
Объектная технология предоставляет широкие возможности, однако ее потенциал нельзя полностью реализовать без соответствующей подготовки. Назначение этой книги — привить читателям навыки успешного применения объектной технологии за счет профессионального объектно-ориентированного анализа и проектирования, а также смежные навыки, обеспечивающие успешное создание и поддержку программных систем.
Благодарности
Благодарю всех пользователей и студентов, изучавших под моим руководством язык UML и объектно-ориентированный подход к программированию. Это мои лучшие учителя!
Отдельное спасибо всем рецензентам книги (или ее частей), включая Кента Бека (Kent Beck), Дженса Колдвея (Jens Coldeway), Клея Девиса (Clay Davis), Тома Херуска (Tom Heruska), Люка Хофмана (Luke Hohmann), Дэвида Норриса (David Norris), Дэвида Нанна (David Nunn), Бретта Шухерта (Brett Schuchert) и всех сотрудников компании Mercury. Спасибо Гради Бучу (Grady Booch) за рецензирование учебного курса, в основе которого лежит материал данной книги, а также Джиму Румбаху (Jim Rumbaugh) за обратную связь по вопросам взаимосвязи языка UML с процессом разработки.
Выражаю признательность Тодду Гирвину (Todd Girvin), Джону Хебли (John Hebley), Тому Херуска (Tom Heruska), Дэвиду Норрису (David Norris), Дэвиду Нанну (David Nunn), Чарльзу Рего (Charles Rego) и Рею Воллу (Raj Wall) за участие в проработке вопросов, связанных с процессами и моделями.
Благодарю Гради Буча (Grady Booch), Ивара Якобсона (Ivar Jacobson) и Джима Румбаха (Jim Rumbaugh) за разработку унифицированного языка моделирования UML, поскольку создание открытой, стандартной системы обозначений является крайне своевременным. Кроме того, общаясь с авторами языка, я узнал много полезного.
Спасибо моему коллеге Джефу Ньюсому (Jef Newsom) за реализацию рассматриваемого в книге примера на языке Java.
Благодарю Поля Беккера (Paul Becker) — моего издателя из Prentice-Hall за его веру в успех этого проекта.
И наконец, отдельное спасибо Грэхем Гласс (Graham Glass) за открытую дверь.
Об авторе
Крэг Ларман (Craig Larman) имеет степени бакалавра и магистра компьютерных наук и с 1978 года занимается разработкой больших и малых компьютерных систем на различных платформах, от больших машин до микрокомпьютеров, с использованием широкого диапазона программных технологий, от языков четвертого поколения до средств логического и объектно-ориентированного программирования.
В начале 80-х годов он стал поклонником искусственного интеллекта и методов проектирования баз знаний, из которых почерпнул свой первый опыт объектно-ориентированного программирования на языке Lisp. Ларман программирует на этом зыке с 1984, на языке Smalltalk — с 1986 и на С++ — с 1991 года. Сейчас он совмещает программирование на языке Java с обучением студентов методам объектно-ориентированного анализа и проектирования.
В настоящее время автор является главным инструктором компании ObjectSpace, специализирующейся на разработке распределенных компьютерных систем, агентов и объектных приложений.
C Крэгом Ларманом можно связаться по адресу с[email protected].