Роберт Мартин в соавторстве с Джеймсом Ньюкирком и Робертом Коссом предлагает вниманию читателей книгу о различных методиках быстрого (и даже экстремального) программирования. Изложение начинается с обзора основных понятий экстремального программирования и завершается готовыми программами, применяемыми на практике. В каждой главе приведены примеры кода на языках программирования Java и C++. Книга будет полезной руководителям групп программистов, нацеленных на быструю разработку коммерческих программных проектов, характеризующихся высоким уровнем качества и минимальной себестоимостью.
Когда один клиент вносит изменение в подобный класс, это оказывает влияние на всех остальных клиентов. Поэтому клиенты должны зависеть от методов, которые реально ими вызываются. Чтобы достичь этого, интерфейс подобных . Каждый интерфейс, связанный с определенным клиентом, объявляет только функции, которые вызываются данным клиентом или клиентской группой. Таким образом прерывается зависимость между клиентами и методами, к которым они не обращаются, что позволяет поддерживать независимость клиентов друг от друга. Были обговорены основные вопросы, связанные с разработкой программных проектов. Также обсуждались методики тестирования и планирования. Итак, пришло время первого практического занятия. В следующих нескольких главах речь пойдет о проектировании и практической реализации системы пакетов, выполняющей расчет зарплаты. Элементарная спецификация этой системы будет приведена немного позже. В процессе проектирования и реализации будут применяться несколько проектных шаблонов. К этим шаблонам относятся следующие. Именно эти шаблоны составляют предмет рассмотрения следующих нескольких глав. Материал этого практического задания может изучаться несколькими способами. Если встречаетесь с незнакомым шаблоном, вернитесь к главе, описывающей этот шаблон, затем снова перейдите к главе . Элементарная спецификация системы расчета зарплаты Ниже приводятся некоторые соображения, которые следует учитывать при беседе с заказчиком. Разрабатываемая нами система состоит из базы данных, в которой хранятся записи о работниках компании. В этой базе данных накапливаются вспомогательная информация, например, табели учета отработанного времени. В результате автоматизируется оплата труда каждого сотрудника. При этом требуется начислять корректные суммы заработанных денег, основываясь на повременной системе оплаты или любом другом методе. Также допускается возможность формирования различных отчетов на базе начисленной зарплаты. Для них используется почасовая ставка, которая вводится в одно из полей записи, соответствующей этому работнику. В качестве источника входных данных применяются ежедневные карточки табельного учета, в которые вносятся записи, включающие сведения о датах и количестве отработанных часов. Ставка за сверхурочные часы в полтора раза превышает обычную ставку. Выплата денег производится по пятницам. В этом случае выплата денег производится в последний рабочий день месяца. Величина месячной зарплаты хранится в одном из полей записи для данного работника. Им приходится заполнять квитанции, в которых они указывают даты и величину оклада. Величина комиссионных указывается в одном из полей записи, соответствующей сотруднику. Все комиссионные выплачиваются по пятницам. Они могут получать платежные чеки, отсьшаемые по избранному почтовому адресу, или передавать свои платежные чеки кассиру. В этом случае соответствующая запись включает поле, в котором определяется величина еженедельного взноса. Причем величина взноса вычисляется на основании размера зарплаты. Помимо этого, от самого объединения может исходить инициатива относительно изменения размера взносов для отдельных членов объединения. Размеры этих взносов определяются еженедельно, а также они должны вычисляться на основе суммы следующей выплаты. Система сообщает дату, которой закрываются выплаты сотрудникам. Благодаря этому можно вычислить суммы платежей, начиная от даты последней оплаты и завершая указанной датой. Упражнение Перед тем как продолжить работу, следует продумать . Может потребоваться выполнить наброски некоторых начальных . А еще лучше, если вьшолнить на практике тестирование нескольких практических занятий. Воспользуйтесь методиками и принципами, изученными вами ранее, и попытайтесь создать сбалансированный и . А теперь обратите внимание на варианты использования, краткий обзор которых приводится ниже. Вы можете спокойно пропустить этот материал, поскольку он излагается повторно в следующих главах. Эта транзакция включает имя сотрудника, адрес, а также присвоенный ему табельный номер. Сама транзакция выступает в трех формах. Сообщение об ошибке . Эта транзакция имеет следующий вид. Сообщение об ошибке . Сообщение об ошибке . Существует несколько возможных вариантов этой транзакции. Затем определяется величина оплаты, после чего производится оплата в соответствии с выбранным методом платежа. Именно в ней заключается его . Большинство классов ассоциируются с набором методов, а также с соответствуюшим им множеством переменных. Можно сказать, что он включает в себя функции без переменных. Если строго придерживаться основ объектно. Она поднимает значимость и свойства функции до уровня класса. Простые команды Несколько лет назад я консультировал представителей фирмы, производящей копировальную технику . Я помогал одной из команд разработчиков в проектировании и внедрении встроенной програм. мы, работающей в режиме реального времени, которая была предназначена для нового поколения ксероксов. Ни один человек не обладает изначально правом командовать своими ближними. Дидро Из всех описанных в последние годы шаблонов проектирования меня больше всего впечатляет структура . Но как мы увидим далее, видимая простота часто бывает обманчивой. Поэтому диапазон применения шаблона . Простота применения шаблона . Может показаться абсурдным, что наш шаблон состоит из интерфейса с одним методом. Некоторые простые команды программы управления ксероксом Мы буквально натолкнулись на идею использования шаблона . Была создана иерархия, похожая на ту, что изображена на рис. Роль данных классов очевидна. Когда вы вызываете функцию . Адрес двигателя или реле включается в объект как аргумент. Имея в своем распоряжении такую структуру, мы можем оперировать объектами . Это ведет к дальнейшим любопытным упрошениям. Данная система управляется событиями. Реле срабатывали и отключались, двигатели включались и выключались, муфты сцеплялись и расцеплялись в зависимости от определенных событий, происходяших в системе.