Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка программы перевода числовой записи в словесную

Содержание:

ВВЕДЕНИЕ

игра

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

Цель курсовой работы - разработка программы для перевода числовой записи числа в словесную на языке программирования высокого уровня.

Из указанной цели курсовой работы вытекают ее задачи:

  • анализ и выбор языка программирования;
  • анализ и выбор среды разработки;
  • получение практического опыта по разработке прикладных программ;
  • овладение функционалом и инструментарием разработки на языке программирования высокого уровня.

1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1.1 Анализ и выбор языка программирования

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

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

Java,

JavaScript,

Python,

С,

C++.

Рассмотрим их достоинства и недостатки:

JavaScript.

Достоинства:

– поддержка практически всеми известными и самыми популярными браузерами;

- понятен для пользователей, не являющихся профессиональными программистами;

- прямое подключение скриптов к HTML коду;

- возможность запуска программ в браузере и на сервере.

Недостатки:

- пониженный уровень безопасности ввиду повсеместного и свободного доступа к исходным кодам популярных скриптов;

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

- повсеместное распространение.

Python.

Достоинства:

- интерпретатор Python реализован практически на всех платформах и операционных системах;

- расширяемость языка, имеется возможность совершенствования языка всеми заинтересованными программистами;

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

Недостатки:
- сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью.

- недостаточные возможности статического анализа кода.

С.

Достоинства:

- гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения;

- предоставляет исключительные возможности для переноса программ.

Недостатки:
- автоматически и динамически создаваемые объекты по умолчанию не инициализируются и после создания содержат значения, оставшиеся в памяти от ранее находившихся там объектов;

- в синтаксисе языка нет модулей и механизмов их взаимодействия;

- системные функции для работы с динамически выделяемой памятью не обеспечивают контроля за правильностью и своевременностью её выделения и освобождения.

C++

Достоинства:

- масштабируемость. На языке разрабатывают программы для самых различных платформ и систем;

- возможность работы на низком уровне с памятью, адресами, портами;

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

Недостатки:

- плохая поддержка модульности. Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию, при подключении большого количества модулей;

- некоторые преобразования типов неинтуитивны. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.

Java.

Достоинства:

- объектно-ориентированность: в Java все является объектом. Дополнение может быть легко расширено, так как он основан на объектной модели;

- платформонезависимость: в отличие от многих других языков, Java не компилируется в платформе конкретной машины, а в независимом от платформы байт-коде. Этот байт код распространяется через интернет и интерпретируется в Java Virtual Machine (JVM), на которой он в настоящее время работает;

- простота: процессы изучения и введение в язык программирования Java остаются простыми;

- безопасность: методы проверки подлинности основаны на шифровании с открытым ключом;

- архитектурная нейтральность: компилятор генерирует архитектурно-нейтральные объекты формата файла, что делает скомпилированный код исполняемым на многих процессорах, с наличием системе Java Runtime;

- портативность: архитектурно-нейтральный и не имеющий зависимости от реализации аспектов спецификаций — все это делает Java портативным. Компилятор в Java написан на ANSI C с чистой переносимостью, который является подмножеством POSIX;

- прочность: прилагает усилия, чтобы устранить ошибки в различных ситуациях, делая упор в основном на время компиляции, проверку ошибок и проверку во время выполнения;

- многопоточность: функции многопоточности, можно писать программы, которые могут выполнять множество задач одновременно. Введение в язык Java этой конструктивной особенности позволяет разработчикам создавать отлаженные интерактивные приложения;

- интерпретированность: Java байт-код переводится на лету в машинные инструкции и нигде не сохраняется. Делая процесс более быстрым и аналитическим, поскольку связывание происходит как дополнительное с небольшим весом процесса;

- высокопроизводительность: введение Just-In-Time компилятора, позволило получить высокую производительность;

- широкое распространение: предназначен для распределенной среды интернета;

- динамичность: программирование на Java считается более динамичным, чем на C или C++, так как он предназначен для адаптации к меняющимся условиям. Программы могут выполнять обширное количество во время обработки информации, которая может быть использована для проверки и разрешения доступа к объектам на время выполнения.

Недостатки:

- низкая скорость (по сравнению с С и С++);

- не имеет поддержки низкоуровневого программирования (например, нет указателей);

- с 2019 года обновления для бизнеса и коммерческого использования стали платными.

Не так много технологий могут похвастаться тем, что они актуальны уже более 20 лет. Однако в этом году Java заняла пятое место в списке самых популярных технологий, уступив только неоспоримым лидерам: JavaScript, HTML, CSS и SQL. Java занимает 18-е место в рейтинге любимых технологий (по результатам опроса StackOverflow) и не попадает в рейтинги ненавистных. Сегодня обсудим плюсы и минусы Java — близкого и дорогого для многих программистов языка, проверенной временем технологии с узнаваемым логотипом, в виде чашки горячего кофе.

Что такое Java-программирование: история и вклад

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

Загрузки Java

Документация Java

Сообщество Oracle Java

JavaWorld — популярный портал о Java

JavaRanch — форум для Java-разработчиков

Java — это не только язык программирования, но и экосистема инструментов, охватывающая почти все, что может понадобиться при программировании на Java. В нее входят:

Java Development Kit (JDK) — комплект разработчика Java. С помощью JDK и стандартного блокнота можно писать и запускать/ компилировать код на Java;

Java Runtime Environment (JRE) — исполняющая система Java. Механизм распространения программного обеспечения, состоит из автономной виртуальной машины Java, стандартной библиотеки Java (Java Class Library) и инструментов настройки.

Integrated Development Environment (IDE) — интегрированная среда разработки. Инструменты, которые помогают запускать, редактировать и компилировать код. Самые популярные из них — IntelliJ IDEA, Eclipse и NetBeans.

Java можно найти везде. Это основной язык разработки для Android. Он используется в веб-приложениях, правительственных веб-сайтах и ​​технологиях обработки больших данных, таких как Hadoop и Apache Storm. Java подходит и для научных проектов, особенно в области обработки естественного языка. Язык Java преобладал и в программировании для мобильных устройств, задолго до появления смартфонов — первые мобильные игры в начале 2000-х годов были написаны на Java. Java, благодаря своей долгой истории, заработал свое место в Зале славы программирования. Индекс TIOBE, один из самых авторитетных индексов популярности программ в мире, при составлении рейтинга использует результаты поисковой выдачи. Несмотря на растущую популярность Go и Python, Java остается на вершине списка уже более десятилетия.

Индекс TIOBE, Август 2018 года

Все началось в начале 1990-х, когда команда Sun Microsystems начала разрабатывать улучшенную версию C ++ — независимую от конкретной платформы, удобную для начинающих и с автоматическим управлением памятью. Исследование привело к созданию совершенно нового языка. Название Java — одно из десятков других, предложенных командой. Сегодня логотип кофейной чашки с паром — это неприметный, но узнаваемый символ программирования. И уже неясно, что было первым: одержимость программистов кофеином или ассоциация с Java.

Как Java изменила мир программирования:

Гибкость. Java доказала, что C — процедурный, управляемый вручную и зависящий от платформы код — это не предел совершенства . Благодаря Java, все больше людей начали применять объектно-ориентированное программирование, которое сейчас используется повсеместно.

Апплеты. Еще до появления JavaScript, в Java добавили апплеты — небольшие веб-программы, которые предоставляют интерактивные элементы для визуализации и обучения. Они не используются ни для чего, кроме простой анимации, однако апплеты привлекли внимание многих программистов и подтолкнули их к разработке HTML5, Flash и JavaScript.

Разработка через тестирование. Java TDD — уже давно не экспериментальная практика, а стандартный способ разработки программного обеспечения. Введение JUnit в 2000 году считается одним из самых больших достижений Java.

Плюсы программирования на Java

Java — уже не единственный официально поддерживаемый язык для разработки на Android. Java далеко не единственный выбор в веб-программировании. Тем не менее, Java идет в ногу со временем. Давайте рассмотрим, какие преимущества предлагает Java.

+ Объектно-ориентированное программирование

Java включает в себя объектно-ориентированное программирование (OOP) — концепцию, в которой вы не только определяете тип данных и его структуру, но и набор функций, применяемых к нему. Таким образом, структура данных становится объектом, которым можно управлять для создания отношений между различными объектами.

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

Сравнение процедурного и объектно-ориентированного программирования

В чем плюсы ООП?

При ООП можно повторно использовать объекты в других программах

ООП предотвращает ошибки, поскольку объекты скрывают информацию, к которой не должно быть доступа

ООП более эффективно организует структуру программ, в том числе больших

ООП упрощает обслуживание и модернизацию старого кода

+ Java — язык высокого уровня с простым синтаксисом и плавной кривой обучения

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

Hello World

Синтаксис Java основан на C ++, поэтому Java похожа на C. Тем не менее, синтаксис Java проще, что позволяет новичкам быстрее учиться и эффективнее использовать код для достижения конкретных результатов.

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

+ Стандарт для корпоративных вычислительных систем

Корпоративные приложения — главное преимущество Java с 90-х годов, когда организации начали искать надежные инструменты программирования не на C. Java поддерживает множество библиотек — строительных блоков любой корпоративной системы. Библиотеки помогают разработчикам создавать любые функции, которые могут понадобиться компании. Java широко распространен — это язык, который преподают в рамках введения в программирование в большинстве школ и университетов. Возможности интеграции Java впечатляют: большинство хостинг-провайдеров поддерживают Java. Более того, Java — язык, дешевый в обслуживании: работать с Java можно с любого компьютера, вне зависимости от конкретной аппаратной инфраструктуры.

+ Безопасность

Существует мнение, что Java — безопасный язык, однако это не совсем так. Сам язык не защищает вас от уязвимостей, но некоторые его функции устраняют распространенные уязвимости. Во-первых, в отличие от C, в Java нет указателей. Указатель — это объект, который сохраняет адрес ячейки памяти другого значения, что может вызвать несанкционированный доступ к памяти. Во-вторых, в Java есть Security Manager, созданная для каждого приложения политика безопасности, в которой можно указать правила доступа. Это позволяет запускать приложения Java в «песочнице» и устранять таким образом уязвимости.

+ Независимость от платформы («Написать один раз и использовать везде»)

«Написать один раз и использовать везде» (WORA) — популярная в IT-сфере фраза, с помощью которой Sun Microsystems описывает кросс-платформенные возможности Java. Можно создать Java-приложение на Windows, скомпилировать его в байт-код и запустить его на любой другой платформе, поддерживающей виртуальную машину Java (JVM). Таким образом, JVM служит уровнем абстракции между кодом и оборудованием.

Как работает WORA на Java

Все основные операционные системы, включая Windows, Mac OS и Linux, поддерживают JVM. Если ваша программа не опирается на специфичные для платформы функции и пользовательский интерфейс, ее можно с легкостью перенести: по крайней мере, большую ее часть.

+ Язык для распределенного программирования и комфортной удаленной совместной работы

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

Сравнение распределенного и параллельного программирования

В других языках нужно использовать внешний API для дистрибуции. В Java эта технология встроена. Специфическая для Java методология распределенных вычислений называется Remote Method Invocation (RMI). RMI позволяет использовать все преимущества Java: безопасность, независимость от платформы и объектно-ориентированное программирование для распределенных вычислений. Кроме того, Java также поддерживает программирование сокетов и методологию распределения CORBA для обмена объектами между программами, написанными на разных языках.

+ Автоматическое управление памятью

Разработчикам Java не нужно вручную писать код для управления памятью благодаря автоматическому управлению памятью (AMM). AMM также используется в языке программирования Swift и при очистке памяти приложениями, которые автоматически обрабатывают распределение и освобождение памяти. Что именно это означает?

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

+ Многопоточность

Поток — наименьшая единица обработки в программировании. Чтобы максимально эффективно использовать время процессора, Java позволяет запускать потоки одновременно, что называется многопоточностью.

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

Пример многопоточного выполнения

+ Стабильность и сообщество

Уже много лет развитию Java способствуют сообщество, поддержка Oracle и изобилие приложений и языков на JVM. Кроме того, постоянно выпускаются новые версии Java с новыми интересными функциями.

Сообщество разработчиков Java не имеет себе равных. Около 45% респондентов опроса StackOverflow 2018 используют Java. У Java чрезвычайно большая экосистема хорошо протестированных библиотек и фреймворков для любых задач. Начинающий разработчик, скорее всего, выберет Java: на тему Java-программирования существует более 1000 курсов на Udemy и более 300 на Coursera.

Минусы программирования на Java

Рассмотрим недостатки Java-программирования.

— Платное коммерческое использование

Недавно Oracle объявила, что с 2019 года компания начнет взимать плату за использование Java Standard Edition 8 в «коммерческих целях». За все новые обновления и исправления ошибок придется заплатить. Плата зависит от количества пользователей или компьютеров.

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

— Низкая производительность

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

— Отсутствие нативного дизайна

Для создания графического интерфейса пользователя (GUI) разработчики используют различные инструменты, ориентированные для конкретного языка. Для Android-приложений есть Android Studio, которая помогает создавать приложения с нативным дизайном. Однако, когда дело доходит до пользовательского интерфейса на ПК, Java-инструмента для создания нативного дизайна нет.

Есть несколько инструментов для разработки GUI для Java: самые популярные из них — Swing, SWT, JavaFX, JSF. Библиотека Swing — это старый, но надежный кросс-платформенный инструмент, интегрированный в различные Java-IDE, в том числе Eclipse и NetBeans. Однако, если вы не используете шаблоны, вы заметите несоответствия интерфейса. SWT использует собственные компоненты, но не подходит для сложного интерфейса. JavaFX — лаконичный и современный, но слишком новый. В целом, перед созданием GUI на Java нужно подробнее изучить инструменты.

— Многословный и сложный код

Многословность кода может показаться преимуществом, которое поможет при изучении языка. Однако, длинные, чрезмерно сложные предложения затрудняют чтение и просмотр кода. Как и естественные языки, многие языки программирования высокого уровня содержат лишнюю информацию. Java — это более легкая версия неприступного C ++, которая вынуждает программистов прописывать свои действия словами из английского языка. Это делает язык более понятным для неспециалистов, но менее компактным.

В заключение: где используется Java?

Большинство организаций так или иначе используют Java. Широкий спектр вариантов использования Java делает ее практически незаметной в использовании: поэтому часто возникает вопрос «где используется Java?». Давайте посмотрим, в каких сферах используется Java:

Приложения для Android. Несмотря на активный рост Kotlin, Java по-прежнему остается де-факто основным языком Android-приложений. Таким образом, все разработчики Java очень легко могут стать Android-программистами. Хотя Android использует Android SDK вместо JDK, тем не менее, код написан на Java.

Программные продукты. Помимо уже упомянутых Hadoop и Apache Storm, Java использовалась для создания Eclipse, OpenOffice, Gmail, Atlassian и других.

Финансовые программы. Java — один из самых востребованных языков в финансовой отрасли. Он используется для создания надежных, быстрых и простых веб-сайтов как на стороне сервера, так и на стороне клиента. Java также используется для моделирования данных.

Кассовые терминалы. Многие компании используют Java для создания систем PoS, поскольку их создание обычно требует кроссплатформенности и обширного штата специалистов.

Торговые системы. На Java написана Murex, популярная программа управления банками для фронтальной и обратной связи.

Программы для работы с большими данными. Hadoop написан на Java. Scala, Kafka и Spark используют JVM. Кроме того, Java предоставляет доступ к множеству проверенных библиотек, инструментов отладки и мониторинга.

Исходя из достоинств и недостатков языков программирования был выбран язык Java, так как он является самым безопасным из всех описанных языков и написание кроссплатформенного приложения на нем будет наиболее простым по сравнению с С++.

1.2 Анализ и выбор среды разработки

Интегрированная среда разработки или по-английски Integrated development environment — IDE — это программа, которая содержит в себе инструменты для разработки программного обеспечения. Обычно современная среда разработки включает в себя:

  • Текстовый редактор с подсветкой кода;
  • компилятор или интерпретатор;
  • браузер классов, инспектор объектов и диаграмму иерархии классов;
  • средства автоматизации сборки;
  • отладчик;
  • средства для интеграции с системами управления версиями (Git);
  • инструменты для упрощения конструирования графического интерфейса пользователя.

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

IntelliJ является закрытой исходной Java IDE и одной из главных среди IDE для Java. IntelliJ IDEA имеет отличный современный интерфейс. Он был выбран как базовая IDE для Android Studio – нового программного обеспечения для создания Android-приложений, разработанного компанией Google.

Существуют две версии IntelliJ – Community Edition, которая является бесплатной, и Ultimate Edition, которая полностью признана и требует использования оплачиваемых лицензий.

Eclipse – одна из самых популярных IDE, не только для Java, но и для C++ с PHP. Eclipse – это инструмент с открытым исходным кодом, имеющий отличное сообщество разработчиков. В нем также имеется огромная библиотека плагинов, созданная самими пользователями. У этой IDE есть множество версий, самая популярная – Eclipse Oxygen. Eclipse также была базовой IDE для старого Android SDK (Software Development Kit).

lueJ — это кроссплатформенная IDE, разработанная для образовательных целей и разработки небольших программ на Java. Она бесплатна, с открытым исходным кодом и предоставляет базовый набор инструментов разработки Java. Продукт имеет ряд интерактивных инструментов обучения и простой интерфейс по сравнению с большинством полноценных IDE. Основные функции включают выделение области видимости, проверку объектов и создание диаграмм исходного кода.

JDeveloper — полностью свободная среда разработки, выпущенная Oracle. JDeveloper предлагает несколько функций, таких как: рефакторинг; контроль версий Git; аудит и метрики; отладка и профилирование кода; поддержка Ant и Maven. Он поставляется в двух версиях: Studio Edition, который имеет полностью загруженный набор инструментов для создания программ на Java, и Java Edition, в котором отсутствуют функции J2EE, ADF, UML и базы данных, но эта версия занимает меньше места и быстрее работает. Java Edition имеет все основные функции, необходимые для Java, и должен удовлетворять большинству начинающих Java-программистов.

jCreator — это быстрая и эффективная Java IDE, написанная на C ++ (который предположительно делает его быстрее, чем другие IDE, написанные на Java). Он имеет интерфейс, похожий на более ранние версии Visual Studio, и позволяет настроить его по своему усмотрению. jCreator — платная IDE, но доступна бесплатная версия без таких функций, как автоматическое завершение кода. jCreator предлагает только поддержку Windows, но ее можно запустить на Linux с помощью Vine.

Изучив самые известные IDE для разработки на языке Java выбор пал на IDE NetBeans.

2 РАЗРАБОТКА ПРОГРАММЫ

2.1 Вводимые и выводимые данные

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

Выводимыми данными являются данные сообщаемые пользователю, а вводимыми являются те данные, которые пользователь сообщает программе.

Выводимые данные в программе представлены в виде диалоговых сообщений с просьбой о вводе числа и сообщении с результатом его обработки.

Вводимой информацией является ввод числа для последующего его преобразования в словесную форму.

2.2 Системные требования

Требования к «железу»:

  • 50 кб свободного пространства на жестком диске
  • 40 мб оперативной памяти

Требования к операционной системе:

  • JRE (виртуальная машина Java)

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

2.3 Описание классов и методов

В процессе разработки программы били созданы два класса:

NumberInWords – класс, описывающий логику преобразования числовой формы записи в словесную.

Main – класс предназначенный для взаимодействия пользователя с логикой программы.

Поля класса NumberInWords:

– private BigDecimal amount – поле класса представляющие числовое значение числа.

– private boolean IsPositive – поле класса указывающие является ли число положительным.

Методы класса NumberInWords:

  • Конструкторы:
    • public NumberInWords (long l)

Рисунок 2.1 - Метод NumberInWords (long l)

    • public NumberInWords (double l)

Рисунок 2.1 - Метод NumberInWords (double l)

  • String morph(long n, String f1, String f2, String f5) – метод определяющий верное склонение слова.

Рисунок 2.3 - Метод String morph(long n, String f1, String f2, String f5)

  • public String toString() – переопределенный метод toString, реализующий алгоритм формирования словестной формы записи.

Рисунок 2.4 - Метод toString()

Рисунок 2.5 - Часть А алгоритма toString()

3 ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

При разработке программ наиболее трудоемким является этап отладки и тестирования программ.

Цель тестирования, т.е. испытания программы, заключается в выявлении имеющихся в программе ошибок.

Цель отладки состоит в выявлении и устранении причин ошибок.

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

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

Поэтому был выбран метод модульного тестирования.

Тестирование проводилось в ручном режиме путем последовательного ввода различных наборов данных.

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

Отладка приложения проводилась по мере написания кода, тестирование выполнялось в ручном режиме.

При тестировании проводилась проверка:

  • корректности обработки данных
  • правильность отображения информации.

Проверка работоспособности программы, проведена на компьютерах с операционными системами семейства Windows и Linux с установленными виртуальными машинами java. Сбоев в работе программы не наблюдалось.

На рисунках 3.1 – 3.5 приведены примеры работы программы.

Рисунок 3.1 – Тест программы №1

Рисунок 3.2 – Тест программы №2

Рисунок 3.3 – Тест программы №3

Рисунок 3.4 – Тест программы №4

Рисунок 3.5 – Тест программы №5

ЗАКЛЮЧЕНИЕ

В данной курсовой работе были выполнены все поставленные цели и задачи, а именно:

  • получен практический опыт по разработке прикладных программ;
  • был изучен функционал и инструментарий IDE NetBeans и языка программирования Java;
  • реализована программа для перевода числовой формы записи в словесную с применением принципов ООП.

Так же было произведено тестирование программы, по результатам тестирования можно судить о отсутствии ошибок в работе программы.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Альфред, В. Ахо Компиляторы. Принципы, технологии и инструментарий / Альфред В. Ахо и др. - М.: Вильямс, 2015. - 689 c.
  2. Берд, Барри Java для чайников / Барри Берд. - М.: Диалектика / Вильямс, 2013. - 521 c.
  3. Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.
  4. Гонсалвес, Энтони Изучаем Java EE 7 / Энтони Гонсалвес. - М.: Питер, 2016. - 640 c.
  5. ГОСТ 19.401 – 78. ЕСПД. Текст программы. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1978.
  6. ГОСТ 19.505 – 79. ЕСПД. Руководство оператора. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1977.
  7. ГОСТ 19.701 - 90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. - М.: Изд-во стандартов. - 1990.
  8. Гупта, Арун Java EE 7. Основы / Арун Гупта. - М.: Вильямс, 2014. - 336 c.
  9. Монахов, В. Язык программирования Java и среда NetBeans (+ CD-ROM) / В. Монахов. - М.: БХВ-Петербург, 2012. - 720 c.
  10. Савитч, Уолтер Язык Java. Курс программирования / Уолтер Савитч. - М.: Вильямс, 2015. - 928 c.
  11. Хабибуллин, Ильдар Самоучитель Java / Ильдар Хабибуллин. - М.: БХВ-Петербург, 2014. - 768 c.
  12. Шилдт, Герберт Java 8. Руководство для начинающих / Герберт Шилдт. - М.: Вильямс, 2015. - 720 c.
  13. Эккель, Брюс Философия Java / Брюс Эккель. - М.: Питер, 2016. - 809 c.

ПРИЛОЖЕНИЕ А. ЛИСТИНГ ПРОГРАММЫ

// NumberInWords.java

package numberinwords;

import java.util.ArrayList;

import java.util.Collections;

import java.math.BigDecimal;

public class NumberInWords {

private BigDecimal amount;

private boolean IsPositive;

public NumberInWords(long l) {

this.IsPositive = (l>=0);

this.amount = new BigDecimal( Math.abs(l));

}

public NumberInWords(double l) {

this.IsPositive = (l>=0);

this.amount = new BigDecimal( Math.abs(l));

}

public String toString() {

String[][] sex = {

{"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},

{"","одна","две","три","четыре","пять","шесть","семь","восемь","девять"},

};

String[] str100= {"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот", "восемьсот","девятьсот"};

String[] str11 = {"","десять","одиннадцать","двенадцать","тринадцать","четырнадцать", "пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать","двадцать"};

String[] str10 = {"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят", "семьдесят","восемьдесят","девяносто"};

String[][] forms = {

{"тысяча", "тысячи", "тысяч", "1"},

{"миллион", "миллиона", "миллионов", "0"},

{"миллиард","миллиарда","миллиардов","0"},

{"триллион","триллиона","триллионов","0"},

//сюда можно добавить разряды

};

long number = amount.longValue();

long number_tmp = number;

ArrayList segments = new ArrayList();

while(number_tmp>999) {

long seg = number_tmp/1000;

segments.add( number_tmp-(seg*1000) );

number_tmp=seg;

}

segments.add( number_tmp );

Collections.reverse(segments);

String o = "";

if (number== 0)

{

o = "ноль";

}

else

{

int lev = segments.size();

for (int i= 0; i<segments.size(); i++ )

{

int sexi = (int)Integer.valueOf( forms[lev][3] );

int ri = (int)Integer.valueOf( segments.get(i).toString() );

if (ri== 0 && lev>1)

lev--;

else

{

String rs = String.valueOf(ri);

if (rs.length()==1) rs = "00"+rs;

if (rs.length()==2) rs = "0"+rs;

int r1 = (int)Integer.valueOf( rs.substring( 0,1) );

int r2 = (int)Integer.valueOf( rs.substring(1,2) );

int r3 = (int)Integer.valueOf( rs.substring(2,3) );

int r22= (int)Integer.valueOf( rs.substring(1,3) );

if (ri>99) o += str100[r1]+" ";

if (r22>20)

{

o += str10[r2]+" ";

o += sex[ sexi ][r3]+" ";

}

else {

if (r22>9)

o += str11[r22-9]+" ";

else

o += sex[ sexi ][r3]+" ";

}

if(lev>1)

o += morph(ri, forms[lev-2][ 0],forms[lev-2][1],forms[lev-2][2])+" ";

lev--;

}

}

}

if (!IsPositive)

return "минус "+o;

else

return o;

}

private static String morph(long n, String f1, String f2, String f5) {

n = Math.abs(n) % 100;

String rez = f5;

long n1 = n % 10;

if (n > 10 && n < 20) rez= f5;

if (n1 > 1 && n1 < 5) rez= f2;

if (n1 == 1) rez= f1;

return rez;

}

}

//Main.java

package numberinwords;

import java.util.Scanner;

public class Main

{

public static void main(String[] args)

{

Scanner in = new Scanner(System.in);

System.out.print("Введите число: ");

int amount = in.nextInt();

NumberInWords miw = new NumberInWords(amount);

System.out.println("Стрококое представление числа: " + miw);

}

}