Материал: Создание программного продукта для редактирования и сшивания топографических карт

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 2.12 - Система условных координат для сборки пазла

После сборки пазла необходимо переместить в начало координат. Делается это для упрощения расчета реальных координат. Для этого находится квадратик с минимальной условной координатой по Х и У. Затем начало координат переносим в точку (0,0). От всех условных координат отнимаем эти значения. При этом перенос выглядит как на рисунке 2.13.

Рисунок 2.13 - Перенос собранного пазла в начало координат

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

Выводы

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

Использование объектно-ориентированного подхода, а так же библиотеки .Net позволило полностью реализовать необходимый функционал программы, который соответствует техническому заданию.

Обоснование технических приемов программирования

Обоснование выбора языка программирования

Язык С# и связанную с ним среду .NET Framework можно без преувеличения назвать самой значительной из предлагаемых в настоящее время технологий для разработчиков. Среда .NET является такой средой, которая была создана для того, чтобы в ней можно было разрабатывать практически любое приложение для запуска в Windows, а С# является языком программирования, который был специально создан для использования в .NET Framework. Например, с применением С# и .NET Framework можно создавать динамические веб-страницы, приложения Windows Presentation Foundation, веб-службы XML, компоненты для распределенных приложений, компоненты для доступа к базам данных, классические настольные приложения Windows и даже клиентские приложения нового интеллектуального типа, обладающие возможностями для работы в оперативном и автономном режимах. В настоящем дипломе рассматривается версия .NET Framework 4. Не стоит поддаваться заблуждению из-за наличия в названии Framework слова "NET" и думать, что данная среда предназначена только для создания приложений, ориентированных на Интернет. Слово "NET" здесь является лишь показателем того, что, по мнению Microsoft, распределенные приложения, в которых обработка распределяется между клиентом и сервером, являются шагом вперед. Однако важно понимать, что С# представляет собой язык, предназначенный не только для написания приложений, способных работать в Интернете и в сети. Он предоставляет средства для кодирования практически любого типа программного обеспечения или компонентов для платформы Windows. Язык С# и среда .NET привели к революционным изменениям в способе написания разработчиками программ и сделали программирование приложений для Windows гораздо более простым, чем когда-либо. Так что же такого важного в .NET и С#?

Для понимания важности .NET не помешает вспомнить о многих технологиях Windows, которые появились в последние примерно 18 лет. Хотя на первый взгляд все они могут выглядеть довольно разными, на самом деле все операционные системы Windows, начиная с Windows 3.1 (которая вышла в 1992 г.) и заканчивая Window 7 и Windows Server 2008 R2, в основе своей имеют один и тот же хорошо знакомый API-интерфейс Windows.

По мере появления новых версий Windows в этот API-интерфейс добавлялось много новых функций, но это был скорее процесс совершенствования и расширения API-интерфейса, а не его замена. То же самое можно сказать и о многих других технологий и каркасах, которые применялись для разработки программного обеспечения, ориентированного на Windows. Например, технология COM (Component Object Model - объектная модель компонентов) первоначально называлась технологией OLE (Object Linking and Embedding - связывание и внедрение объектов) и по большей части представляла собой средство для связывания различных типов документов Office, например, для размещения в документе Word таблицы Excel. После этого она эволюционировала в технологию СОМ, затем в DCOM (Distributed СОМ - распределенная объектная модель компонентов) и, наконец, в сложную технологию СОМ+, которая стала основой для обеспечения связи между всеми компонентами, а также реализации транзакций, служб обмена сообщениями и организации пула объектов.

Подобный подход с совершенствованием программного обеспечения был выбран Microsoft по вполне очевидной причине, а именно - для обеспечения обратной совместимости. За многие годы независимыми разработчиками была написана масса программ для Windows, и ОС Windows не была бы такой успешной, если бы при каждом добавлении новой технологии существующая кодовая база нарушалась. Хотя наличие обратной совместимости является важным свойством технологий Windows и одной из сильных сторон платформы Windows, с ним также связан и один серьезный недостаток.

При каждом совершенствовании какой-нибудь технологии и добавлении в нее новых возможностей, из-за необходимости в наличии обратной совместимости она получается немного сложнее, чем была раньше. Из-за этого со временем стало ясно, что нужно что-то менять. В Microsoft не могли до бесконечности расширять одни и те же языки и средства для разработки, постоянно делая их все более и более сложными для удовлетворения конфликтующих между собой потребностей в поддержке новейшего оборудования и обеспечении обратной совместимости с тем, что было в ходу, когда Windows впервые стала популярной в начале 90-х годов прошлого века. Настал момент начать с чистого листа и создать простой, но при этом совершенный набор языков, сред и средств разработки, который бы позволял разработчиками легко писать современное программное обеспечение. Для этого первоначально и были предназначены язык С# и среда .NET. Грубо говоря, .NET представляет собой платформу или API-интерфейс для программирования на платформе Windows. Вместе с .NET Framework язык С# был разработан с нуля специально для работы в .NET, а также для объединения всех достижений, которые были сделаны в средах разработки, и всех принципов объектно-ориентированного программирования, которые были выведены за последние 25 лет.

Прежде чем продолжить, следует отметить, что обратная совместимость при этом не утратилась. Существующие программы все равно будут продолжать работать, потому что в .NET предусмотрена возможность для работы с существующим программным обеспечением.

В настоящее время связь между программными компонентами в Windows осуществляется практически полностью за счет использования технологии СОМ. С учетом этого в .NET Framework предлагается и возможность для создания оболочек вокруг существующих компонентов СОМ и тем самым позволения компонентам .NET взаимодействовать с ними.

Преимущества .Net. Пока лишь в общем говорилось о том, насколько .NET является замечательной технологией, но ничего конкретно о том, каким образом она облегчает жизнь разработчикам. Поэтому в настоящем разделе кратко перечисляются некоторые из наиболее совершенных функциональных возможностей .NET. И .NET Framework, и С# изначально основаны на принципах объектно-ориентированного программирования. Поставляемая библиотека базовых классов построена полностью с нуля и является интуитивно понятной.

Независимость от языка. В .NET код, написанный на любом языке - Visual Basic, C# или управляемом C++ - компилируется в код на промежуточном языке (Intermediate Language). Это делает языки способными к взаимодействию в невиданной до сих пор мере.

Усовершенствованная поддержка для создания динамических веб-страниц. Хотя в классической технологии ASP предлагалась довольно высокая степень гибкости, ее все равно не хватало из-за необходимости использования интерпретируемых сценарных языков, а отсутствие объектно-ориентированного дизайна часто приводило к получению довольно запутанного кода ASP. В .NET предлагается интегрированная поддержка для создания веб-страниц с помощью ASP.NET. В случае применения ASP.NET код создаваемых страниц поддается компиляции и может быть написан на любом поддерживающем .NET языке высокого уровня, например, С# или Visual Basic 2010. В новой версии .NET эта поддержка улучшилась еще больше, сделав возможным применение новейших технологий вроде Ajax и jQuery.

Эффективный доступ к данным. Набор компонентов .NET, известный под общим названием ADO.NET, позволяет получать эффективный доступ к реляционным базам данных и многим другим источникам данных. Также предлагаются компоненты, позволяющие получать доступ к файловой системе и каталогам. В частности, в .NET встроена поддержка XML, позволяющая манипулировать данными, импортируемыми и экспортируемыми на платформы, отличные от Windows.

Разделение кода. В .NET был полностью переделан способ разделения кода между приложениями за счет введения понятия сборки вместо традиционных библиотек DLL. Сборки обладают формальными средствами для управления версиями и допускают одновременное существование рядом нескольких различных версий сборок.

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

Установка с нулевым воздействием. Сборки бывают двух типов: разделяемые и приватные. Разделяемые сборки представляют собой обычные библиотеки, доступные всему программному обеспечению, а приватные сборки предназначены для использования только с определенными программами. Существующие программы все равно будут продолжать работать, потому что в .NET предусмотрена возможность для работы с существующим программным обеспечением. Приватные сборки являются полностью самодостаточными, поэтому процесс их установки выглядит просто. Никакие записи в системный реестр не добавляется; все нужные файлы просто размещаются в папке файловой системы. В .NET предлагается полностью интегрированная поддержка для разработки веб-служб таким же простым образом, как и приложений любых других типов. Studio 2010. Вместе с .NET поставляется среда разработки Visual Studio 2010, которая способна одинаково хорошо справляться как с кодом на языке C++, С# и Visual Basic 2010, так и с кодом ASP.NET или XML. В Visual Studio 2010 интегрированы все наилучшие возможности сред конкретных языков из всех предыдущих версий этой замечательной IDE-среды.

Обоснование выбора операционной системы

Для выбора операционной системы необходимо сначала определиться, какие стоит рассматривать. Исторически сложилось так, что наиболее превалирующими операционными системами являются Windows и Linux(Unix). Следовательно, их и необходимо сравнивать.

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

Для начала необходимо дать определение понятию "настольный компьютер".

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

То есть это компьютер, используемый дома или в офисе для довольно широкого круга несложных задач, исключая узкоспециальные и высокопрофессиональные области вроде инженерного проектирования или видеопроизводства. На западе это называют "сектор SOHO (small office, home office)".

Также нужно сказать о принципиальных различиях между операционными системами MS Windows и GNU/Linux. Для точного понимания того, что есть что.

Первое отличие заключается в том, что операционная система (далее будет использоваться сокращение - ОС) MS Windows разрабатывается и поддерживается одной единственной компанией - Microsoft corporation. Ей же принадлежат авторские права на этот продукт, и она же взимает плату за использование ОС Windows и бесплатного использования компания Microsoft не допускает. То есть если вы хотите использовать эту ОС вы должны заплатить компании Microsoft./Linux это ОС, разрабатываемая и поддерживаемая десятками, если не сотнями компаний в разных странах мира и тысячами программистов. Права на эту ОС переданы в общественную собственность. И хотя в мире есть много компаний, которые предоставляют платную техническую поддержку этой ОС, само использование GNU/Linux не оговаривается финансовыми условиями. То есть вы не обязаны никому ничего платить, для того чтобы иметь право использования Linux.

Второе принципиальное отличие заключается в том, что в Windows графическая среда пользователя является неотъемлемой частью ОС. То есть Windows в варианте без графической среды (консольный режим) попросту не существует.

В то время как GNU/Linux это ОС текстового (консольного) режима и графическая среда это отдельный программный продукт, подобно текстовому редактору или видеопроигрывателю. Программ, которые реализуют графическую среду для ОС GNU/Linux более 10, но широко используются только две - GNOME и KDE.

Графическая среда пользователя необходимая и важнейшая часть ОС для настольных компьютеров. И сравнивая две ОС с этой точки зрения, важно понимать, что мы сравниваем Windows не с Linux, а с одной из графических сред, например с KDE.

Третье отличие в том, что MS Windows как конечный продукт состоит из собственно ОС и небольшого набора прикладных программ, которые имеют очень скромную функциональность. Другими словами, устанавливая Windows, вы получаете только ОС и для того, чтобы решать какие-то задачи вам нужно дополнительно находить и устанавливать прикладные программы./Linux в чистом виде, как ОС, распространяется лишь в узкоспециальных областях применения. А применительно к рассматриваемому мной случаю используются так называемые дистрибутивы Linux. Дистрибутив это комплект, состоящий из ОС GNU/Linux, графической среды пользователя и набора прикладных программ. То есть, устанавливая дистрибутив Linux, вы получаете готовую к практическому использованию систему, в которую вам быть может ничего больше не нужно будет добавлять.

Ну и поскольку Linux никому конкретно не принадлежит и существуют разные графические среды и разные прикладные программы то, как следствие этого сотни компаний или даже просто группы частных лиц предлагают десятки дистрибутивов Linux. Некоторые из них похожи почти как близнецы, некоторые сильно различаются. А в мире Windows различия заключаются лишь в версиях самой ОС Windows и этих версий меньше чем дистрибутивов Linux.

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

ОС MS Windows имеет как плюсы, так и минусы. Например, поддержка очень большого ассортимента компьютерного оборудования. Какая бы экзотическая "железяка" вам не попалась, почти наверняка вы сможете ее использовать под Windows. Хотя быть может вам и потребуется время на поиски нужной программы-драйвера. Огромное количество прикладных программ, на сегодняшний день это уже, наверное, более ста тысяч наименований. Для любой прикладной задачи на платформе Windows есть как минимум несколько десятков, для популярных задач существуют сотни программ. Выбрать есть из чего. На любой вкус.

Большое количество специалистов, которые более или менее хорошо знают семейство ОС Windows. То есть, если вам потребуется помощь, вы ее найдете легко и за умеренную цену.

К минусам же можно отнести сравнительно высокую стоимость.Даже в самом дешевом варианте , притом, что такая "дешевая" Windows, приобретаемая в комплекте с новым компьютером, "привязана" к этому компьютеру. А это значит, что, меняя компьютер, вам снова придется тратить деньги на Windows. Варианты Windows независимые от компьютера имеют цену ближе к двумстам долларов США и выше. И это стоимость Windows для одного компьютера. И если вам нужна ОС, например, на пять компьютеров, которые уже у вас есть (не новые), то придется выложить за пять копий Windows около тысячи долларов. Очень большое количество вредоносных программ (так называемые компьютерные вирусы). Для версии Windows XP это особо серьезная проблема, которая вынуждает конечного пользователя нести дополнительные расходы. Либо на покупку хорошей антивирусной программы либо на обращение к специалистам в случаях, когда вредоносные программы делают невозможной нормальную работу ОС Windows. Эту проблему можно уменьшить за счет квалифицированной настройки ОС Windows и аккуратного ее использования в ситуациях риска, главная из которых Интернет. Также жесткая зависимость от разработчика. ОС Windows распространяется только в бинарном виде, который труднодоступен для изменения, но более того, компания Microsoft вообще запрещает вносить какие-либо изменения в рабочие коды ОС Windows. Так что если вам потребуется какая-то функциональность, которой сейчас нет в ОС Windows, то остается лишь надеяться на, то, что Microsoft когда-нибудь эту функциональность реализует либо искать некие "заплатки" от сторонних разработчиков. Впрочем, для среднестатистического пользователя это несущественный недостаток.