Методические указания для студентов специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»
Вид материала | Методические указания |
- Методические указания к дипломному проектированию для студентов специальности 230105, 352.52kb.
- Рабочая программа по дисциплине Архитектура вычислительных систем Для специальности, 122.63kb.
- Рабочая программа по дисциплине "Вычислительная математика" для специальности 230105, 201.66kb.
- Рабочая программа по дисциплине «Информатика» для специальности 230105(220400) «Программное, 259.13kb.
- Методические указания По дисциплине «Разработка и эксплуатация удаленных баз данных», 370.7kb.
- Рабочая программа по дисциплине "Программирование на языке высокого уровня" для специальности, 137.39kb.
- «Программное обеспечение вычислительной техники и автоматизированных систем», 1790.14kb.
- Рабочая программа по дисциплине "Методы оптимизации" для специальности 230105 "Программное, 106.67kb.
- Рабочая программа по дисциплине: «Программное обеспечение сетей эвм» Для специальности, 72.13kb.
- Рабочая программа для специальности: 220400 Программное обеспечение вычислительной, 133.96kb.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
«ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
__________________________________________________________________
«УТВЕРЖДАЮ»
Директор ИДО
______________ С.И. Качин
«____»_____________2009 г.
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
КУРСОВОЙ ПРОЕКТ
Методические указания для студентов специальности
230105 «Программное обеспечение вычислительной
техники и автоматизированных систем»
Института дистанционного образования
Томск 2009
УДК 004.432.2
Объектно-ориентированное программирование. Курсовой проект: методические указания для студентов специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» ИДО / Сост. Ф.Е. Татарский. – Томск: Изд. ТПУ, 2009. – 21 с.
Методические указания по курсовому проектированию рассмотрены и рекомендованы к изданию методическим семинаром кафедры автоматички и компьютерных систем
«______» ______________2009 г., протокол № ___.
Зав. кафедрой, профессор, д.т.н. _________________ Г. П. Цапко
Аннотация
Методические указания по курсовому проектированию по дисциплине «Объектно-ориентированное программирование» предназначены для студентов специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» ИДО. Курсовой проект выполняется в седьмом семестре. Форма отчетности – дифференцированный зачёт.
Приведено содержание курсового проекта, указан состав текстового и программного разделов проекта. Приведены варианты заданий для курсового проекта.
1. Цель курсового проекта
Курсовой проект по дисциплине «Объектно-ориентированное программирование» ставит своей целью закрепление и углубление навыков использования объектно-ориентированного подхода к программированию, полученных в процессе изучения дисциплины «Объектно-ориентированное программирование».
2. Задачи курсового проекта
Для достижения поставленной выше цели, студентам предлагается, пользуясь средствами объектно-ориентированного языка С++, разработать программу – компьютерную логическую игру (по варианту). В результате выполнения данной работы студенты осваивают приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта:
- реализующего выбранную (в соответствии с вариантом) компьютерную логическую игру,
- обладающего графическим интерфейсом пользователя,
- удовлетворяющего требованию переносимости на уровне исходного кода,
- простого в установке и обслуживании.
3. Тематика и варианты заданий
Вариант выбирается в соответствии с порядковым номером в журнале. Кроме того, вы можете самостоятельно придумать себе задание, отсутствующее в этом списке, предварительно согласовав его с преподавателем.
Тем не менее, все программы должны предоставлять следующие возможности:
- начало игры на чистом поле, сброс предыдущей игры;
- выбор противника (человек, компьютер) (если применимо);
- сохранение текущей игры в любой момент игры в файл, восстановление состояния игры из файла;
- отмену ходов;
- подсказку следующего хода;
- контроль правильности ходов игрока(ов);
- определение конца игры, отслеживание патовых ситуаций;
- возможность задания произвольного размера поля (если применимо);
- возможность визуального редактирования уровней (если применимо);
- управление как с клавиатуры так и мышью;
- настройку клавиш управления;
- использование горячих клавиш;
- возможность задания настроек в конфигурационном файле или реестре Windows;
- индикацию текущего счета (если применимо);
- ведение списка чемпионов для каждого размера поля;
- выбор уровня сложности игры (если применимо)
- вынесение графических элементов (курсоры, иконки, спрайты) в ресурсный файл (если применимо)
- наличие инсталлятора (показ лицензии, выбор устанавливаемых компонентов, выбор пути установки и т.д.)
Ниже приведены варианты заданий.
- Логическая игра “Крестики-нолики” на неограниченном поле Приложение является реализацией известной логической игры “Крестики-нолики” В данной реализации предусматривается игра двух игроков на неограниченном поле. Цель игры . построить непрерывную линию из пяти или более фишек (крестиков или ноликов) по горизонтали, вертикали или диагонали. Возможны два режима игры, когда выигрывает тот, кто первым построит линию, или кто больше наберет очков за определенное количество времени. Во втором случае количество построенных линий не ограничено, каждая фишка в линии приносит игроку одно очко. Приложение должно обеспечивать начало новой игры на чистом поле, а также проверку соответствия действий игроков правилам игры и условия окончания игры. Роль одного из игроков (по выбору пользователя) может выполнять компьютер. Для исключения возможности образования изолированных игр на одном поле и неоправданного увеличения размера поля следует установить максимально допустимое расстояние (не более пяти) от уже существующих фишек до новой, размещаемой игроком.
- Логическая игра “Цепь” Данное приложение является реализацией известной логической игры. В данной реализации предусматривается игра двух игроков на квадратном поле фиксированного размера. Цель игры - построить непрерывную линию, соединяющую горизонтальные или вертикальные (для каждого из игроков соответственно) стороны игрового поля, причем линия считается непрерывной, если фишки граничат друг с другом по горизонтали, вертикали или диагонали. Выигрывает тот игрок, который первым построит свою линию. Приложение должно обеспечивать начало новой игры на чистом поле, а также проверку соответствия действий игроков правилам игры и условия окончания игры. Роль одного из игроков (по выбору пользователя) может выполнять компьютер.
- Логическая игра “Точки” Данное приложение является реализацией известной логической игры. В данной реализации предусматривается игра двух игроков на квадратном поле фиксированного размера. Цель игры . заполнить максимальное количество клеток игрового поля своими фишками. Игроки выполняют ходы по очереди. Ход игрока заключается в произвольной установке линии на границе двух ячеек, причем, если какая-либо ячейка оказывается со всех четырех сторон обрамлена линиями, то она отмечается фишкой данного игрока, а самому игроку предоставляется дополнительный ход, и т.д. Игра заканчивается, когда все игровое поле оказывается заполнено фишками. Выигрывает тот игрок, чьих фишек на поле больше на момент окончания игры. Приложение должно обеспечивать начало новой игры на чистом поле, а также проверку соответствия действий игроков правилам игры и условия окончания игры. Роль одного из игроков (по выбору пользователя) может выполнять компьютер.
- Логическая игра “Мозаика” Разрабатываемое приложение представляет собой программную реализацию популярной игры .Мозаика. (.Puzzle.), цель которой заключается в создании игроком полного изображения путем упорядочивания его фрагментов последовательным перемещением и соединением соответствующих сторон. Приложение должно обеспечивать:
- просмотр исходного изображения во время игры, а также поиск подходящих друг к другу фрагментов (функция подсказки);
- возможность перемещать фрагменты за пределы рабочего поля или в другое окно и обратно для улучшения наглядности.
- просмотр исходного изображения во время игры, а также поиск подходящих друг к другу фрагментов (функция подсказки);
Следует учесть, что при создании новой игры все фрагменты должны быть разъединены и размещены беспорядочно в области рабочего поля или в области, отведенной специально для фрагментов. При использовании отдельной области для отображения фрагментов может быть применена ее прокрутка и изменение масштаба.
- Логическая игра “Шарики” Разрабатываемое приложение представляет собой программную реализацию известной логической игры. Цель игры состоит в том чтобы набрать максимальное количество очков. Суть игры состоит в следующем: на игровом поле отображаются круги разного цвета, игроку предлагается создать линию из кругов одинакового цвета, расположенных по горизонтали или по вертикали, созданная линия .сгорает.. Причем линия может .сгореть., только в том случае если количество элементов в ней равно 3. После этой процедуры пустые места на игровом поле заполняются новыми элементами. Линию можно создать путем перестановки по горизонтали или по вертикали соседних элементов. Игра заканчивается тогда когда не возможно создать ни одной линии. Приложение должно обеспечивать возможность задания количества цветов элементов (кругов). Следует учесть что цвета кругов выбираются произвольным образом исходя из заданного количества. Кроме того, линии (3 и более элементов) получаемые при произвольной расстановки элементов “сгорают”.
- Логическая игра “Морской бой” Разрабатываемое приложение представляет собой программную реализацию известной логической игры. Приложение должно обеспечивать:
- Расстановку .кораблей. на игровом поле 10х10
- Выбор противника (человек, компьютер).
- Изменение интерфейса в зависимости от выбора противника.
- Фиксацию имен противников и число побед.
- Расстановку .кораблей. на игровом поле 10х10
- Логическая игра “Реверси” Разрабатываемое приложение представляет собой программную реализацию логической игры “Реверси”. Игра идет на поле произвольного размера. Два игроки по очереди устанавливают фишки своего цвета на поле. Фишку можно ставить только на те клетки, рядом с которыми уже стоят фишки. Если между установленной фишкой и какой либо другой фишкой того же цвета находятся фишки другого цвета, все они меняют свой цвет.
- Логическая игра “Водопроводчик” Суть игры заключается в постройке трубопровода от одного края игрового поля к другому за определенное время. Играет один игрок. Компьютер предлагает очередной узел трубопровода, игрок может присоединить его к концу трубопровода, предварительно повернув его нужной стороной. В определенный момент времени с начала игры, в трубопровод начинает подаваться вода, которая медленно заполняет трубопровод. Если трубопровод будет заполнен до того, как игрок закончит строительство - игрок проиграл.
- Логическая игра “Сокобан” Разрабатываемое приложение представляет собой программную реализацию известной логической игры “Сокобан”. Играет один игрок. Игрок последовательно переходит от одного уровня к другому, по мере выполнения заданий. Уровень представляет собой лабиринт, в котором в беспорядке расставлены ящики. Игрок должен толкая ящики человечком расположить их на своих местах (места отмечены на лабиринте). Человечек может толкать только один ящик. Если ящик упирается в стену, то дальше его толкать нельзя.
- Логическая игра “Тетрис” Программа представляет собой Тетрис на поле произвольного размера. Программа должна предоставлять возможность выбирать размер фигур (4, 5, 6, 7 клеток). Скорость падения управляется автоматически в зависимости от времени игры.
- Логическая игра “Break House” Широко распространенная во времена БК-0010-01 и Spectrum игра. Игрок переходит от уровня к уровню. Каждый уровень представляет собой клеточное игровое поле - лабиринт. Клетка может быть проходной, или на ней может стоять блок. Блоки могут быть многоклеточными. Также, имеются движущиеся по простым траекториям (вперед-назад) блоки, если движущийся блок прижмет игрока к стене или другому блоку - игрок будет раздавлен.
- Логическая игра “Рикошет” Игровое поле содержит источник лазера, набор целей, набор зеркал. Зеркала и цели выставляются на поле случайным образом в начале игры. Каждое зеркало может проворачиваться в любом направлении с шагом 30гр. Игрок должен поворачивая зеркала по очереди сжечь все цели.
- Логическая игра “Авеле” Разрабатываемое приложение представляет собой программную реализацию африканской игры “Авеле” (другое название “Манкала”). Игровое поле состоит из двух рядов, по 6 лунок в каждом. Каждая лунка в начале игры содержит 4 камня. Нижний ряд принадлежит игроку, верхний - его противнику. Игроки делают ходы по очереди. Для хода игрок берет камни из любой своей непустой лунки, и раскладывает их по одному в каждую следующую лунку, двигаясь против часовой стрелки. Начальная лунка всегда пропускается. Если игрок кладет последний камень в лунку противника И лунка содержит 2 или 3 камня (включая только что положенный) то игрок собирает камни из лунок, двигаясь по часовой стрелке, до тех пор, пока два вышеприведенных условия соблюдаются. Если игрок не может сделать очередной ход, он собирает все оставшиеся камни, игра заканчивается и определяется победитель.
- Игра “Шадоки” Великий колдун сказал, что шадокские ракеты терпят неудачу потому, что не хватает транзисторов в системах безопасности. Транзисторы нужного типа собирают с растений, произрастающих на огородах Гиби. Вы должны отправиться на планету Гиби и привести нужные транзисторы. Будьте осторожны, Гиби очень умны. Они позволяют Шадокам забираться в свои огороды, но окружают огород со всех сторон. Всякий раз, когда растение зацветает и дает транзистор, они мчатся, чтобы собрать урожай раньше шадока. Обратите внимание, что растения обладают разной плодоносностью.
- Логическая игра “Обратный тетрис” Тетрис наоборот. Игрок выбирает фигуру и бросает, компьютер пытается установить ее в стакан. Цель игры - завалить компьютер.
- Логическая игра “Шашки” Разрабатываемое приложение представляет собой программную реализацию логической игры “Шашки”. Необходимо реализовать подмножество правил классических шашек на доске 8x8.
- Логическая игра “Уголки” Известная игра на шашечном поле. Противники расставляют свои шашки симметрично в противоположных углах доски в виде прямоугольников 3x4. Ходы осуществляются по очереди. За один ход можно двинуть одну шашку на одну свободную клетку. Если к шашке примыкает шашка противника, а за ней есть свободное поле, можно «прыгнуть» через шашку противника на это свободное поле. За один ход можно делать несколько последовательных прыжков одной шашкой. Выигрывает тот, кто быстрее выстроит свои шашки на позиции противника.
- Логическая игра “Шахматы” Известная игра. Необходимо реализовать разумное подмножество международных шахматных правил, как они определены FIDE. Учить игре в шахматы компьютер не нужно, достаточно реализовать игру двух человек за одним компьютером.
- Игра-аркада “Bounce” В KBounce играют на поле, окруженном стеной, с двумя или более мячами, которые отскакивают от стен. Размер поля уменьшается, если вы создаете стену и при этом никакой шар не оказывается попавшим в ловушку. Чтобы пройти уровень, игроку за данное время нужно уменьшить размер поля по крайней мере на 75%. На каждом следующем уровне к игре добавляется по одному шару, а игроку дается больше жизней и времени. Подсчет очков зависит от того, насколько вы уменьшили площадь. Новые стену строятся по щелчку левой кнопкой мыши на свободном пространстве поля. После щелчка, начиная от клетки, где он был сделан, в противоположных направлениях начинают строиться две части стены. За один промежуток времени может строиться только одна стена.
- Игра-аркада “Snake” Правила игры: Чтобы выиграть в KSnake, вам нужно съесть все яблоки в комнате и выйти через дверь, которая откроется вверху. С каждым съеденным яблоком вы становитесь длиннее. Если вы врежетесь в стену, вы умрете. Если вы врежетесь в себя, вы умрете. Если вам в голову попадет мяч, вы умрете. Если вы слишком долго не будете есть яблоки, появятся новые.
- Игра-аркада “Космическая дуэль” Каждый игрок управляет одним кораблем. Корабль может поворачиваться, ускоряться, стрелять и закладывать мины. У каждого корабля есть определенное количество энергии. Кораблю требуется энергия для поворотов, ускорения, стрельбы и закладывания мин. Корабль получает ее при помощи своих солнечных батарей. Количество энергии, которую корабль получает, зависит от расстояния и направления, в котором находится солнце. Корабль получает больше энергии вблизи солнца и меньше около границы. Он получает полное количество энергии, если солнце светит прямо на батареи, часть энергии, если оно светит под углом и, совсем не получает ее, если солнце светит на торец батареи. Если у корабля закончилась энергия, он теряет управление и не может стрелять. Столкновение со своими или чужими снарядами и минами уменьшает здоровье корабля. Если столкнутся два корабля, то более слабый корабль будет уничтожен, и здоровье более сильного уменьшится на значение здоровья слабого корабля, плюс некоторое значение (Ущерб при аварии). Корабль уничтожается, когда он влетает в солнце. Снаряды летают вокруг солнца как корабли. У мин есть некоторое количество энергии, чтобы оставаться на одном месте. Когда энергия заканчивается, мина падает на солнце. Минам, расположенным около солнца, требуется больше энергии, чем расположенным вдали от него. Мины могут быть уничтожены снарядами. Время от времени на поле боя появляются заправки.
- Игра-аркада “Tron” Цель игры прожить дольше, чем противник. Поэтому нельзя врезаться в стены, себя и противника. После начала раунда игроки уже не могут остановить свое движение (если не нажата пауза). Вы можете только пытаться избегать столкновения, постоянно меняя направление движения. Кроме того, вы можете мешать своему противнику. Вы можете увеличивать скорость своего движения, нажимая на клавишу ускорения. Раунд начинается, когда все игроки нажмут на какую-нибудь клавишу направления движения. Первое движение будет совершаться в эту сторону.
4. Методические указания
Курсовой проект выполняется поэтапно, этапы приведены ниже в этом разделе. Сроки выполнения работ по каждому этапу приведены в разделе «Организация выполнения и защиты курсового проекта».
4.1. Написание технического задания
Техническое задание (далее, ТЗ) содержит основные технические требования, предъявляемые к разрабатываемому программному обеспечению. В ТЗ указываются назначение программы, область ее применения, стадии разработки, сроки исполнения и т. д., а также особые требования, обусловленные спецификой конкретного программного обеспечения.
Правильно разработанное техническое задание позволяет студенту:
- представить готовую программу,
- выполнить попунктную проверку готовой программы (приемочное тестирование, проведение испытаний),
- уменьшить число ошибок, связанных с изменением требований в результате их неполноты или ошибочности (на всех стадиях и этапах создания, за исключением испытаний),
- понять суть задачи, показать преподавателю технический облик будущей программы,
- спланировать выполнение проекта и работать по намеченному плану,
- отказаться от выполнения работ, не указанных в ТЗ.
Со своей стороны, на основании ТЗ преподаватель может:
- убедиться, что студент правильно понял задание,
- требовать от студента соответствия программы всем условиям, оговоренным в ТЗ.
Техническое задание пишется в свободной форме и может, например, содержать такие разделы:
- Обзор. Здесь можно рассмотреть назначение программы; требования к программе; ограничения, накладываемые на реализацию; выбрать платформу, язык программирования и т.п.
- Модель программы. Здесь должно быть подробное словесное описание пользовательского интерфейса программы, ее поведения. Для большей наглядности могут быть приведены эскизы пользовательского интерфейса.
- Архитектура программы. В этом разделе должна быть подробно расписана иерархия классов, используемых в программе, их интерфейсы и взаимодействие. Для большей наглядности можно использовать рисунки и диаграммы.
- Форматы и протоколы. Здесь описываются форматы файлов, которые будут использованы в программе. Если программа будет иметь поддержку сети, то также определяется прикладной протокол взаимодействия клиента и сервера. Если программа будет использовать базу данных, ее структуру уместно так же привести в этом разделе. При написании этого пункта особое внимание необходимо обратить на существующие стандарты. Если для конкретной задачи уже существуют готовые решения, протоколы, форматы и т.п, являющиеся международными или национальными стандартами - лучше воспользоваться ими, а не придумывать собственное решение. Необходимо проведите исследование на предмет наличия таких стандартов, применительно к предметной области курсового проекта.
- Тестирование. Для каждого разрабатываемого модуля программы должны быть приведены тесты, которыми будет проверяться корректность работы этого модуля.
- План работы. Здесь должен быть по пунктам расписан порядок выполнения работы. Какие компоненты программы в каком порядке будут реализованы и т.п.
4.2. Программная реализация
Написание и тестирование самой программы в соответствии с техническим заданием. Подробные требования к программное реализации приведены в разделе «Организация выполнения и защиты курсового проекта».
4.3. Документирование
Написание инструкций по сборке и установке программы, руководство пользователя, программиста. Подробные требования к документации приведены в разделе «Организация выполнения и защиты курсового проекта».
4.4. Защита
На защите студент представляет преподавателю программу, соответствующую техническому заданию, и документацию к программе. Преподаватель определяет степень соответствия представленной программы техническому заданию и аутентичность ее реализации.
5. Требования к программной реализации и документации
Основным требованием к программной реализации является обязательное использование объектно-ориентированного подхода при написании программы. Критериями использования объектно-ориентированного подхода являются использование:
- классов,
- механизма исключений,
- механизма наследования и множественного наследования,
- инкапсуляции,
- полиморфизма,
- механизмов управления памятью и сборки мусора.
Помимо перечисленных выше базовых требований, программа, разрабатываемая в рамках курсового проекта должна удовлетворять ряду дополнительных требований, приведенных ниже.
5.1. Требования к среде разработки
Выбранная для реализации курсового проекта среда разработки должна удовлетворять следующим требованиям:
- поддержка современных 32-битных операционных систем,
- отсутствие лицензионных отчислений за право использовать систему (бесплатность),
- кроссплатформенность (возможность установить и использовать среду не только в Windows но и в UNIX-подобных ОС).
Существует широкий выбор систем, удовлетворяющих этим требованиям. Среди наиболее развитых можно назвать систему Eclipse, KDevelop, Code::Blocks. Допустимо, также, вместо интегрированной среды использование основанных на скриптах утилит управления проектами, таких как GNU Make, Apache Ant, Autotools, Apache Maven и т.п.
5.2. Требования к оформлению исходных кодов и документации
Для контроля за процессом написания программы, возможности отката к предыдущим версиям, возможности совместной работы над программным кодом все исходные коды программы и вся сопутствующая документация (ТЗ, отчет и т.п.) должны храниться в репозитарии под управлением системы контроля версий Subversion [1] (далее, SVN).
Документацию по системе Subversion можно найти в [2]. Оффлайн-версию книги можно получить у преподавателя.
Перед защитой выполненного курсового проекта преподавателю сдается весь SVN репозитарий (а не рабочая копия проекта!), упакованный в архив формата ZIP.
На дерево исходных кодов не налагается никаких специальных требований, вы можете организовывать их так, как вам удобно. Однако, за многие годы сообщество разработчиков программного обеспечения выработало более менее универсальные подходы к структурированию дерева каталогов.
Рассмотрим пример. Пусть, мы разрабатываем программу "Морской бой". Логично назвать SVN модуль (а значит и корневой каталог исходных кодов программы) по названию программы: seabattle. Внутри этого каталога могли бы размещаться такие файлы и каталоги:
README
Файл (в формате ASCII), содержащий краткое описание программы и указания, где искать подробную документацию.
AUTHORS
Файл, содержащий список авторов программы. Вы могли бы указать здесь ваше имя, номер группы, почтовый адрес, вклад в программу (если разработчиков несколько).
INSTALL
Файл, содержащий инструкции по компиляции и инсталляции программы в систему.
TODO
В этом файле можно хранить список обнаруженных ошибок, которые планируется исправить в будущем, или нереализованных еще возможностей и т.п.
ChangeLog
В этом файле ведется хронология официальных версий программы, с указанием даты выхода очередной версии, ее номера, списка исправленных ошибок и улучшений для каждой версии.
COPYRIGHT
Здесь обычно приводится лицензия, под которой распространяются исходные коды программы.
VERSION
Последняя выпущенная версия программы. Этот файл обычно используют при автоматической сборке дистрибутива программы, чтобы вставить номер версии в имя файла дистрибутива и т.п.
src
Каталог, в котором находятся исходные тексты программы.
doc
В этом каталоге можно разместить документация на программу: техническое задание, руководство пользователя и т.п.
contrib
Здесь размещают сторонние модули. Библиотеки сторонних разработчиков, которые вы использовали в своем проекте и т.п.
share
В этом каталоге можно поместить различные системно-независимые файлы: иконки, спрайты, игровые уровни, карты и т.п.
Таким образом структурированные исходные коды курсового проекта облегчат преподавателю проверку и оценку работы.
5.3. Обеспечение переносимости на уровне исходного кода
Под переносимостью программного обеспечения на уровне исходного кода понимается возможность компиляции исходных кодов и сборки работоспособного исполняемого файла более чем на одной программной или аппаратной платформе. Например, переносимой можно считать программу, которая без модификации исходного кода компилируется и работает одновременно в операционных системах Windows и Linux, или Linux и FreeBSD, или FreeBSD и Symbian.
Переносимости на уровне исходных кодов можно добиться различными способами:
Обеспечение переносимости средствами языка программирования
По мере разработки программа тестируется во всех поддерживаемых операционных системах. Переносимость достигается встроенными средствами языка программирования. Например, средствами условной компиляции в языках C/C++ (#ifdef).
Это самый трудоемкий способ достижения переносимости. Однако, если в программе не предусматривается создание развитого графического интерфейса, то этот способ может оказаться самым подходящим. Язык программирования C++ наиболее удобен, если выбран такой способ обеспечения переносимости.
Обеспечение переносимости средствами кроссплатформенной библиотеки
Программа разрабатывается на основе какой либо существующей кроссплатформенной библиотеки. В этом случае, вопросы переносимости уже решены разработчиками библиотеки, программа пользуется предлагаемым API и переносимость достигается автоматически.
Использование кроссплатформенной библиотеки предпочтительно тогда, когда программа должна иметь развитый графический интерфейс пользователя. В качестве такой кроссплатформенной библиотеки рекомендуется воспользоваться библиотекой wxWidgets[3] или Qt[4]. Эти библиотеки прекрасно документированы, имеют большое количество примеров разного уровня сложности и реализованы для многих языков программирования, в частности, для языков программирования C++, Python, Perl.
Обеспечение переносимости средствами виртуальной машины
Этот подход предполагает использование языка программирования, компилируемого в байт-код виртуальной машины. В этом случае разрабатываемая программа будет работать в любой среде, для которой реализована виртуальная машина.
Использование виртуальной машины особенно эффективно в том случае, когда необходимо обеспечить переносимость между различными аппаратными платформами. Однако, этим же способом достигается и переносимость между программными платформами. Важно только, чтобы выбранный язык программирования был объектно-ориентированным. Рекомендуется рассмотреть такие системы, как Java, Python, Perl, Ruby.
Обеспечение переносимости средствами веб-технологий
Программа реализуется как веб-сервис, работающий под управлением какого либо сервера приложений. Пользовательский интерфейс создается средствами веб-технологий, такими как XML, HTML, CSS, SVG, " onclick="return false">
Этот подход обеспечит самую высокую степень переносимости (с точки зрения пользователя), однако, реализация программы таким способом может оказаться неоправданно трудоемкой. С другой стороны, создание веб-приложения даст вам дополнительный ценный опыт программирования. В качестве среды разработки веб-приложения рекомендуется рассмотреть такие системы, как Jakarta Tomcat, Apache Cocoon, eXist. Языком разработки при выборе этих серверов приложений будет язык программирования Java. Графический интерфейс пользователя нужно будет создавать на языке HTML, возможно, с использованием технологий CSS и " onclick="return false">
5.4. Оформление исходного кода
Исходный код программы необходимо оформлять правильно:
- как можно чаще пользуйтесь комментариями,
- выносите константы в #define,
- тщательно проверяйте параметры и возвращаемые значения на возможные ошибки.
В [5] даются советы, следование которым значительно облегчит отладку программного кода и его проверку преподавателем.
5.5. Лицензионная чистота реализации
Все средства разработки, использованные в курсовом проекте (компилятор, среда выполнения, сторонние библиотеки и т.д.) должны позволять использовать их без лицензионных отчислений. Другими словами, преподаватель должен иметь возможность установить на своем компьютере все необходимое программное обеспечение, не покупая лицензий и не нарушая действующее законодательство.
Обратите внимание, что не только средства реализации, но и средства оформления программного продукта являются интеллектуальной собственностью, защищенной законодательством. Используемые в программе изображения (иконки, логотипы и т.п.) тоже должны быть лицензионно чистыми. Для оформления пользовательского интерфейса можно воспользоваться какой либо свободной библиотекой изображений. Мы рекомендуем библиотеку «Tango!» [6].
6. Организация выполнения и защиты курсового проекта
В качестве результата выполнения работы студент должен предоставить SVN репозитарий, в котором будет содержаться:
- техническое задание,
- исходный код программы,
- руководство пользователя,
- руководство программиста,
- отчет.
Кроме репозитария необходимо предоставить распечатанный отчет. Другие документы распечатывать не надо.
Техническое задание пишется до написания программы. Это не значит, что пока не написано ТЗ, нельзя написать ни строчки программного кода. Конечно, вам придется экспериментировать, изучать возможности выбранного вами средства реализации, прежде чем вы сможете составить полноценное ТЗ. Важно только, что программа должна быть написана на основе технического задания и в соответствии с ним, а не техническое задание по уже готовой программе, как это иногда бывает.
Отчет является «вводным» документом. В отчете должна быть информация о структуре работы. Что это за работа (подробно), с чего начать проверку (по вашему мнению), каким образом развернуть исходные коды и скомпилировать программу.
Формально, за выполнение работы можно получить максимум 1000 баллов. Оценке “отлично” соответствует 800 б. и более. Оценке “хорошо” соответствует 700-799 баллов. Оценке “удовлетворительно” соответствует 600-699 баллов.
Баллы выставляются за каждый вовремя выполненный этап работы. Цена этапов следующая:
- черновик технического задания - 200 баллов,
- техническое задание - 200 баллов,
- программная реализация - 200 баллов,
- отладка, тестирование - 100 баллов,
- документация, защита - 300 баллов.
На каждый этап отводится время:
- черновик технического задания - 2 недели
- техническое задание - 3 недели
- программная реализация - 5 недель
- тестирование программной реализации - 1 неделя
- документация, защита - 3 недели
Результаты выполнения каждого этапа высылаются преподавателю по электронной почте. Почтовый адрес и правила оформления писем можно найти в [7]. В случае невозможности высылать результаты по электронной почте в течение семестра, результаты каждого этапа, сразу после его выполнения, помещаются в SVN репозитарий и помечаются уникальной меткой. Наличии и верная дата установки метки в репозитарии будет служить доказательством того, что этап выполнен вовремя.
Защита работы проводится в форме собеседования, во время сессии. Позднее выполнение этапа влечет за собой снижение балла на 60 баллов в неделю. Небрежность в оформлении технического задания, документации, программного кода, влечет за собой снижение баллов на 10%-30%.
За все нестандартные решения (использование нового для вас объектно-ориентированного языка программирования; добавление в программу поддержки работы по сети и т.п.) будут начисляться дополнительные баллы. Количество зарабатываемых таким образом баллов оговаривается с преподавателем и назначается индивидуально.
Литература
- Tigris.org : Open Source Software Engineering Tools // CollabNet, Inc / —
(2009-01-04).
- Коллинз-Сассман, Бен. Управление версиями в Subversion : Для Subversion 1.4 / Б. Коллинз-Сассман, Б. Фитцпатрик, М. Пилато; —
(2009-01-04).
- wxWidgets : Cross-Platform GUI Library / wxWidgets community. — <.org/> (2009-01-04).
- QT : Cross-Platform Application Framework / Nokia Corporation. — <.com/products> (2009-01-04).
- Вогел, Джефф. Шесть советов по написанию более понятного программного кода / Д. Вогел; —
(2009-01-04).
- Tango! : Tango Desktop Project // Tango Desktop Project / —
(2009-01-04).
- Татарский, Федор. Персональная страница / Ф. Татарский; —
(2009-01-05).
- wxWidgets : Cross-Platform GUI Library / wxWidgets community. — <.org/> (2009-01-04).
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
курсовой проект
Методические указания
Составитель: Федор Евгеньевич Татарский
Рецензент: С.В. Кирсанов, д.т.н., профессор кафедры ТАМП МСФ
Подписано к печати Формат 60х84/16. Бумага «Классика». Печать RISO. Усл.печ.л. 2,09. Уч.-изд.л. 1,89. Заказ . Тираж экз. | ||
| Томский политехнический университет Система менеджмента качества Томского политехнического университета сертифицирована NATIONAL QUALITY ASSURANCE по стандарту ISO 9001:2000 | |
. 634050, г. Томск, пр. Ленина, 30. |