Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 01:41, курсовая работа
В наше время новые информационные технологии занимают очень важное место не только в специализированных, но и в повседневных сферах жизни. Компьютеры применяются в бизнесе, менеджменте, торговле, учебе и многих других сферах деятельности человека.
Компьютерные технологии очень удобны для выполнения разнообразных операций, но в разных сферах применения эти операции разные. Потому, каждая отдельная отрасль, которая использует специфические технические средства, нуждается в своих собственных программах, которые обеспечивают работу компьютеров.
б) он не может запуститься до тех пор, пока не запустится виртуальная Java-машина, и это может занять значительное время при первом запуске;
в) создание и дизайн хорошего пользовательского интерфейса с использованием апплетов считается более сложной задачей, чем с помощью технологии, основанной на HTML;
г) некоторые организации допускают только программное обеспечение, установленное администраторами. В результате многие пользователи не могут видеть апплеты по умолчанию;
д) апплеты могут потребовать использования определенного JRE.
Еще одной альтернативой апплетов для клиента Java является Java Web Start, который запускается вне браузера. В дополнение к функциям, доступным в апплете, простой доступ к полям предоставляет программам Java Web Start доступ по чтению и/или записи определенных файлов, хранящихся у клиента, а также к буферу обмена клиента [1].
1.9 Сравнение сред разработки Java и .Net
.Net и J2EE имеют отличия в технических деталях. Мы рассмотрим два наиболее существенных отличия, а именно технологии реализации многоплатформенности и многоязыковой поддержки.
Многоплатформенность. Для разработчика важно то, что и .Net, и J2EE предоставляют средства для создания Web-служб. До сих пор J2EE могла гордиться своей поддержкой многоплатформенности, но, если верить Microsoft, более это не является прерогативой J2EE. Microsoft позиционирует .Net как платформу с двухступенчатой компиляцией, что позволяет создавать среду выполнения для любой платформы, подобно Java. Eric Rutter, старший вице-президент Microsoft запустил информацию о переносе .Net на FreeBSD. FreeBSD – это операционная система, производная от BSD (Berkeley Software Distribution) Unix. Он объявил, что Microsoft в самом деле занимается созданием среды выполнения для FreeBSD. Создание такой среды нарушило бы гегемонию Java в области платформенной независимости, однако не стоит пока полагаться на эту информацию. Создание CLR для наиболее популярных операционных систем может занять много лет. Более того, однажды, Microsoft уже делала подобные заявления в отношении переноса DCOM (Distributed Component Object Model) на другие платформы. Однако такой перенос так и не был осуществлен.
Таким образом, на сегодняшний день единственной средой разработки, поддерживающей многоплатформенность, является J2EE.
Многоязыковая поддержка. Единственной языковой основой J2EE является Java, что сильно отличается от .Net, где поддерживается более двух дюжин языков, включая Fortran, COBOL, C++ и Visual Basic. Можно, конечно, поспорить насчет того, что единственный язык является более элегантным решением, однако надо признать, что .Net предлагает более простое решение для организаций, которые хотят пользоваться знаниями, которые уже имеются у их разработчиков. Ведь для тех разработчиков, которые используют языки, отличные от Java, .Net дает возможность создавать Web-службы на привычном им языке с минимальными затратами на переобучение.
В то время как вокруг . Net и J2EE бушуют споры, мы должны четко понимать, что представляет собой каждая из платформ. Каждая из технологий позволяет создавать Web-службы, доступные потребителям, использующим самые разные технологии. Web-служба на платформе .Net может вызывать J2EE Web-службу и наоборот, поскольку все Web-службы удовлетворяют одинаковым стандартам. Более того, даже если выяснится, что одна из технологий имеет преимущество, то эффективно использовать это преимущество сможет только высоко квалифицированный программист. Инструменты и средства хороши настолько, насколько хорош программист, их использующий.
Если рассуждать с точки
зрения развития отрасли
Web-службы создают однородное представление для неоднородной среды. И если это верно, то Web-службы должны прекратить споры о том, какая из платформ является лучшей; разработчикам нет нужды беспокоиться о платформе, разрабатывая сервисы, поскольку Web-службы обеспечивают однородное представление.
Лучше всего попробовать разработать Web-службы и с помощью .Net, и с помощью J2EE. Тогда можно быстро понять, какая из платформ лучше. Выбирая поставщика, многие используют такое эмпирическое правило: если в настоящий момент вы используете платформу Microsoft, то выбирайте .Net, в противном случае – J2EE.
1.10 Преимущества языка программирования Java
Одно из главных преимуществ языка Java – его независимость от платформы, на которой выполняются программы. Таким образом, один и тот же код можно запускать под управлением операционных систем Windows, Linux, FreeBSD, Solaris, Apple Mac и др. Это становится очень важным, когда программы загружаются посредством глобальной сети интернет и используются на различных платформах.
Другим не менее важным преимуществом Java является большая схожесть с языком программирования C++. Поэтому тем программистам, которые знакомы с синтаксисом С и С++ будет просто освоить Java.
Кроме того, Java – полностью объектно-ориентированный язык, даже в большей степени, чем С++. Все сущности в языке Java являются объектами, за исключением немногих основных типов(primitive types), например чисел. В свое время объектно-ориентированное программирование(ООП) заменило структурное программирование.
Важно и то, что разрабатывать на Java программы, которые не содержат ошибок, значительно легче, чем на С++.
Все дело в том, что
Для этого было сделано следующее:
а) Разработчики исключили возможность явного выделения и освобождения памяти.
К примеру, память в Java освобождается автоматически с помощью механизма сбора мусора. Получается, что программист застрахован от ошибок, которые возникают от неправильного использования памяти.
б) Введение истинных массивов и запрещение указателей.
Теперь программисты не могут стереть данные из памяти по причине неправильного использования указателей.
г) Была исключена возможность перепутать оператор присваивания с оператором сравнения на равенство. Как правило, проблема со знаком "=" очень часто приводит в С и С++ к логическим ошибкам, которые не так просто обнаружить. Особенно в крупных программах.
д) Полностью исключено множественное наследование. Оно было заменено новым понятием – интерфейсом, идея которого была позаимствована из языка Objective C.
Интерфейс дает программисту
практически все, что тот
Выбранная среда программирования хороша тем, что Java одинаково хорошо функционирует и на Windows, и на юниксовидных системах.
2.1 Постановка задачи
Разработать апплет на языке Java, который выполняет следующие действия:
а) формирует и выводит массив случайных чисел;
б) выводит сформированный массив;
в) отражает шаги сортировки;
г) выводит отсортированный массив.
2.2 Исходные данные к проекту
Исходными данными к проекту является массив, в котором 20 элементов, сформированных программой случайно на промежутке от 0 до 9.
2.3 Описание алгоритма сортировки подсчетом
Сортировка подсчетом - специализированный алгоритм, который очень хорошо работает, если элементы данных — целые числа, значения которых находятся в относительно узком диапазоне. Этот алгоритм работает достаточно быстро, например, если значения находятся между 1 и 1000.
Если список
удовлетворяет этим
Выдающаяся скорость
сортировки подсчетом
Идея вот в чем: для каждого элемента найти, сколько элементов, меньших определенного числа, и поместить это число на соответствующие место. Делается это так: за линейный проход по массиву мы для каждого из возможных значений подсчитываем, сколько элементов имеют такое значение. Потом добавляем к каждому из найденных чисел суму всех предыдущих. Получая, таким образом, сколько есть элементов, значения которых не больше данного значения. Далее, опять-таки за линейный проход, формируем из исходного массива новый отсортированный. При этом следим, чтобы два одинаковых элемента не были записаны в одно место.
2.4 Анализ алгоритма для его визуализации
Из рассмотрения алгоритма следует, что его визуализация должна выполняться следующим образом:
• показать массив A, заполненный начальными значениями;
• отразить ход решения
задачи – процесс заполнения
массива С, основанный на
• показать подсчет частичных сумм в массиве С;
• отразить процесс
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
3.1 Структура программного комплекса
Апплет состоит из 4 классов: CountSortApplet, CSCanvas, CSControls и AutoThread.
Таблица 3.1 – Содержимое класса CountSortApplet
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
1 |
2 |
3 |
4 |
5 |
init |
Метод |
void |
public |
Инициализация апплета |
destroy |
Метод |
void |
public |
Удаление ссылок |
start |
Метод |
void |
public |
Запуск апплета |
stop |
Метод |
void |
public |
Остановка апплета |
processEvent(AWTEvent e) |
Метод |
void |
public |
События процессов на пункте меню |
getAppletInfo() |
Метод |
void |
public |
Возвращает текстовую информацию об аплете в виде объекта класса String. |
Таблица 3.2 – Содержимое класса CSCanvas
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
1 |
2 |
3 |
4 |
5 |
N |
Поле |
int |
private static |
Размер массива, который нужно отсортировать |
K |
Поле |
int |
private static final |
Диапазон чисел |
i0 |
Поле |
int |
private static |
Переменная цикла. Счетчик |
i |
Поле |
int |
public static |
Переменная цикла. Счетчик |
j |
Поле |
int |
public static |
Переменная цикла. Счетчик |
m |
Поле |
int |
static |
Переменная цикла. Счетчик |
a[] |
Поле |
int[] |
static |
Входная последовательность |
b[] |
Поле |
int[] |
static |
Выходная отсортированная последовательность |
c[] |
Поле |
int[] |
static |
Вспомогательный массив |
astep |
Поле |
int |
static |
Переменная для сравнения |
bstep |
Поле |
int |
static |
Переменная для сравнения |
Продолжение таблицы 3.2
1 |
2 |
3 |
4 |
5 |
сstep |
Поле |
int |
static |
Переменная для сравнения |
state |
Поле |
int |
static |
Переменная для сравнения |
comment |
Поле |
string |
static |
Комментарии к каждому шагу выполнения |
comment2 |
Поле |
string |
static |
Комментарии к каждому шагу выполнения |
comment3 |
Поле |
string |
static |
Комментарии к каждому шагу выполнения |
init |
Метод |
void |
static |
Инициализация апплета |
restart |
Метод |
void |
static |
Перезапуск апплета |
randomStart |
Метод |
void |
static |
Заполнение входной |
paint |
Метод |
void |
static |
Рисует текст и граф. компоненты |
makeStep |
Метод |
void |
static |
Метод для пошагово выполнения |
Таблица 3.3 – Содержимое класса CSControls
Имя |
Вид элемента |
Тип |
Спецификатор |
Описание |
1 |
2 |
3 |
4 |
5 |
auto |
Поле |
boolean |
private |
Переменная для сравнения |
INITIAL_DELAY |
Поле |
int |
private static |
Задержка инициализации |
DELAYS |
Поле |
int |
private static |
Задержка выполнения шага при выполнении в автоматическом режиме |
CSControls(CSCanvas canvas) |
Метод |
void |
public |
Метод для отрисовки элементов управления |
Start |
Метод |
void |
public |
Запуск автоматического выполнения |
Stop |
Метод |
void |
public |
Остановка автоматического выполнения |
actionPerformed(ActionEvent ev) |
Метод |
void |
public |
Выполнение события на элементы управления |
Информация о работе Сортировка подсчетом визуализатор на языке программирования Java