Эти типы не абстрактны, они столь же реальны, как int и float.
При разработке программного обеспечения выделяют два принципиальных подхода к проектированию: структурный (или функциональный) и объектный.
Структурный (функциональный) подход заключается в выделении основных функций или действий и базируется на нисходящем проектировании, основанном на структурах и алгоритмах управления. Основное понятие этого подхода - алгоритмы.
В объектном или объектно-ориентированном подходе в первую очередь выделяется множество основных объектов системы и впоследствии определяется множество операций над объектами. Такой подход базируется на абстрактных типах, и решение задачи выражается в терминах выделенных объектов.
Для обоих подходов первый шаг проектирования заключается в постановке задачи. При объектно-ориентированном подходе удобно строить таблицу, в которую заносятся все объекты и операции. Такая таблица помогает структурировать описание и показывает основные взаимосвязи между объектами.
Рассмотрим задачу реализации электронного каталога и системы учета для библиотеки. Читатель приходит в библиотеку, ищет в электронном каталоге нужные книги, выбирает их, берет на прочтение (эта операция связывает читателя и книгу, отметка ставится в формуляр читателя). При возвращении книги делаются соответствующие записи как в формуляре читателя, так и в данных о книге.
Основными объектами программы будут:
Основные операции - найти книгу, взять книгу и вернуть книгу. Таблица объектов будет выглядеть следующим образом:
| Объект | Операции | Примечания |
|---|---|---|
| Книга | Взять книгу на прочтение | |
| Проверить соответствие критерию поиска | Используется для поиска нужной книги по критериям | |
| Получить полную информацию о книге | ||
| Обновить информацию о книге | Изменить информацию об имеющейся книге | |
| Завести новую книгу | При появлении новой книги в библиотеке | |
| Вернуть книгу после прочтения | ||
| Формуляр | Взять книгу на прочтение | |
| Вернуть книгу после прочтения | ||
| Снять книгу с читателя | Совмещается с возвратом книги в библиотеку или в случае утери книги | |
| Завести новый формуляр | ||
| Читатель | Взять книгу на прочтение | |
| Вернуть книгу после прочтения | ||
| Снять книгу с читателя | ||
| Завести нового читателя | ||
| Показать информацию о читателе | ||
| Обновить информацию о читателе |
Как видно из табл. 6.1, возможны случаи, когда одна операция вы-полняется сразу над несколькими объектами. Например, операция "Взять книгу на прочтение" выполняется сразу над тремя объектами - "Читатель", "Формуляр" и "Книга", так как эта операция связывает объекты "Читатель" и "Книга" через объект "Формуляр". В данной задаче понятие "Формуляра" является связью между "Читателем" и "Книгой". Но это не равнозначная связь, так как с одним читателем может быть связано несколько книг, но не наоборот.
Из табл. 6.1 видно, что для каждого объекта предусмотрена операция создания (конструктор). Эта операция позволяет заводить новые книги и новых читателей с установкой для них первоначальных значений всех свойств.
Таблица объектов выявляет наиболее значимые объекты, для которых определено наибольшее количество операций. В нашем случае основные объекты - это "Читатель" и "Книга", что не противоречит восприятию реальной библиотеки.
В таблицу объектов можно добавить объект "Операция" или объект, отвечающий за получение команды пользователя электронной системой.
Теперь, когда определены все основные объекты, можно рассматривать алгоритм, основываясь на выделенных операциях. Следующий шаг объектно-ориентированного подхода к проектированию заключается в детальной проработке каждой операции. Предварительно должны быть рассмотрены все форматы ввода/вывода и интерфейсы.
Первый шаг - построение таблицы объектов и операций рассмат-ривает абстракции и не накладывает ограничений на реализацию. Второй шаг, наоборот, фиксирует структуры данных, детализирует представление каждого объекта, структурирует алгоритмы. Если операция или объект достаточно сложны, то к ним в отдельности может снова применяться объектно-ориентированный подход.
Как объектный, так и структурный подходы имеют свои достоинства и недостатки. Объектный подход удобен в случаях, когда алгоритм для решения задачи представляется не очень сложным и главная проблема заключается в представлении данных. Выделение основных объектов упрощает описание задачи реального мира. Однако когда алгоритм представляется достаточно сложным, объектный подход не позволяет его упростить. В этом случае удобен структурный подход, который позволяет двигаться сверху вниз, постепенно упрощая алгоритм, но при этом общая картина решения задачи постоянно остается целостной.
Объектный подход упрощает декомпозицию программы на модули, естественно выделяя каждый объект в отдельный модуль. Структурный подход слабо поддерживает декомпозицию на модули, а это порой является довольно сложной самостоятельной задачей.
Объектно-ориентированный подход упрощает последующую модификацию, так как все операции логически выделены в отдельные процедуры.
В силу того, что объектный и структурный подходы являются независимыми, их стоит объединять вместе для использования преимуществ каждого.
Объекты и операции удобно выбирать, используя объектный подход, а реализацию удобнее проводить при помощи структурного подхода.
Внимание!
Объектно-ориентированный подход помогает выделить объекты программы. Если описать алгоритм становится сложно, следует использовать структурный подход, если же основная проблема в структуре данных, то стоит обратиться к объектному подходу. При проектировании следует придерживаться максимального уровня абстракции. Каждую операцию и каждый объект стоит рассматривать как отдельную задачу. Сочетание объектного и структурного подхода дает наибольший эффект.
Напомним, что для преобразования строки по правилу 2-3-1 мы пришли в нашем случае к последовательности действий программы:
Простейший анализ этого описания действий позволил нам выделить основной объект - входную строку и список действий:
Далее можно выделить объект - "сообщение" и соответствующую ему операцию - "вывести".
Конкретный способ реализации объекта выбирается программистом в результате оценки нескольких вариантов, например способ представления объекта строка - список в связном представлении или массив символов; вид параметра процедуры вывода сообщения - текст сообщения или его номер в таблице сообщений и т.п.
Выводы
В данном примере целесообразно принять решение о представлении объекта "строка" (входная и преобразованная) в виде массива символов. Этот массив представляет собой основной информационный объект и может быть реализован в отдельном модуле str. Над ним должны быть определены следующие операции (процедуры).
readString).testString).isEmpty).processString).printString).На процедуру testString естественно возложить контроль алфавита, длины входной строки и нарушение структуры входной строки (ведущие символы не пробелы).
Для вывода сообщений можно разработать отдельный модуль msg, в котором будет реализована единственная процедура msgWrite, ее параметром является значение перечислимого типа (INPUT_MSG, END_MSG, ERROR_MSG), определяющее вывод сообщений 2.2.1.1, 2.2.1.2 и 2.2.1.3 соответственно.
При этом логика программы головного модуля может быть представлена так:
msgWrite(INPUT_MSG);
readString(str);
while(!isEmpty(str))
{
if (!testString(str))
{
msgWrite(ERROR_MSG);
} else
{
processString(str);
printString(str);
}
msgWrite(INPUT_MSG);
readString(str);
}
msgWrite(END_MSG);
Предполагается, что процедура ввода строки обращается к модулю msg для вывода приглашения к вводу msgWrite (INPUT_MSG).
Далее кодирование и отладка головного модуля и модулей str и msg могут быть произведены на языке программирования.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.