Автоматизация учета и анализа результатов свиданий Полли с поклонниками

Астраханский государственный технический университет

Институт Информационных технологий и коммуникаций

Кафедра Автоматизированных систем
обработки информации и управления

 

 


ИНТЕГРАЦИЯ РЕШЕНИЙ ПО МЕТОДАМ ПРОГРАММИРОВАНИЯ

В ПРОЦЕССЕ РАЗРАБОТКИ АВТОМАТИЗИРОВАННЫХ СИСТЕМ

 

Часть 2. Рекомендации к выполнению лабораторных работ (NN4-6)

Основы проектирования

 

Практикум по дисциплине «Методы программирования»

Для студентов II курса специальности 090105.65

«Комплексное обеспечение безопасности

автоматизированных систем»

 

 

АСТРАХАНЬ – 2010 г.


Автор: Бокова А.В. – старший преподаватель кафедры «Автоматизированные системы обработки информации и управления»

 

Рецензент: Белов С.В. - к.т.н., доцент кафедры «Информационная безопасность»

 

Методическое пособие рассмотрено и одобрено на заседании кафедры «Автоматизированные системы обработки информации и управления» «29» октября 2009г., протокол № 3.

 

Практикум по дисциплине «Методы программирования» предназначен для студентов специальности 090105.65 «Комплексное обеспечение безопасности автоматизированных систем».

Практикум включает в себя цикл из шести лабораторных работ, который завершается выполнением курсовой работы. Лабораторные и курсовая работы объединены общим замыслом и ориентированы на решение единой типовой задачи.

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

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

Рекомендации к выполнению сопровождаются примером реализации программного кода и подробными комментариями к нему.

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




СОДЕРЖАНИЕ

 

1.    ОБЩИЕ СВЕДЕНИЯ.. 3

2.    ЗАДАНИЕ К ВАРИАНТУ №0. 5

3.    ЛАБОРАТОРНАЯ РАБОТА №4. 6

3.1. Вопросы для самостоятельной подготовки. 6

3.2. Требования к объектно-ориентированной модели предметной области 6

3.3. Требования к реализации логики предметной области. 8

3.4. Требования к реализации интерфейса взаимодействия с пользователем 10

3.5. Пример реализации программы.. 10

3.5.1. Методика испытаний программного продукта. 10

3.5.2. Структура программного проекта. 10

4.    ЛАБОРАТОРНАЯ РАБОТА №5. 11

4.1. Вопросы для самостоятельной подготовки. 11

4.2. Требования к реализации логики предметной области. 11

4.3. Требования к реализации интерфейса взаимодействия с пользователем 12

4.4. Пример реализации программы.. 13

4.4.1. Методика испытаний программного продукта. 13

4.4.2. Фрагменты кода реализации методов управляющего класса SuitorManager, обеспечивающих анализ списка поклонников. 13

4.4.3. Код реализации интерфейса взаимодействия с пользователем.. 13

5.    ЛАБОРАТОРНАЯ РАБОТА №6. 14

5.1. Вопросы для самостоятельной подготовки. 14

5.2. Требования к реализации обобщенного алгоритма сортировки связного списка 14

5.3. Требования к реализации логики предметной области. 15

5.4. Требования к реализации интерфейса взаимодействия с пользователем 15

6.    ЛИТЕРАТУРА.. 16



ОБЩИЕ СВЕДЕНИЯ

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

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

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

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

Строгое соблюдение принципа инкапсуляции в приведенном примере требует применения разнообразных синтаксических «ухищерений», что утяжеляет код и затруняет его восприятие, порождает различные ньюансы, которые необходимо постоянно учитывать. В реальной жизни не редко прнимается решение о менее строгом соблюдении принципа инкапсуляции в пользу повышения читабельности кода.

Однако в процессе обучения повышенное внимание к ньюансам реализации полезно, тем более, что позволяет использовать на практике синтаксические конструкции, необходимость в которых редко возникает при решении прикладных задач. Например, ссылки на возвращаемые значения функции (метода) или указатели на функцию.



ЗАДАНИЕ К ВАРИАНТУ №0

Автоматизация учета и анализа результатов свиданий Полли с поклонниками

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

Полли ведет рейтинг поклонников следующим образом. Для каждого поклонника учитываются фамилия и имя, рост и масса, контактный телефон, а также список назначенных ему свиданий.

Каждое свидание характеризуется датой и временем встречи. При назначении свидания необходимо контролировать, чтобы оно не пересекалось по времени со свиданием, назначенным другому поклоннику. После встречи Полли оценивает ее по пятибалльной шкале: 5 баллов выставляется, если она прошла великолепно, если ужасно – 0 баллов. Рейтинг ухажера вычисляется как средний балл всех проведенных с ним встреч.

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

Полли очень любит танцевать и считает, что оптимальный рост ее партнера составляет 180 см, а оптимальный вес – 75 кг. Поэтому при выборе поклонника из списка «потенциальных претендентов», Полли выбирает того, у которого рост минимально отличается от оптимального. Среди поклонников с одинаковым ростом она выберет наименьшего по весу. Однако в первую очередь он выберет того, у которого по итогам свиданий окажется лучший рейтинг (у новых поклонников рейтинг одинаков – 0 баллов), а уж потом будет выбирать среди них наиболее подходящего по росту и по весу.

Чтобы поклонники не забывали о Полли, она время от времени назначает свидания с теми, с кем наиболее давно не встречалась, независимо от его роста, веса и рейтинга.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: