Разработка программы "Цифровой калькулятор"
Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.07.2012 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Введение
- Руководство пользователя
- Листинг программы
- Алгоритмы
- Тестовые примеры
- Источники
Введение
1) Объектно-ориентированный подход.
Объектно-ориентированное программирование или ООП (object-oriented programming) - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из который является реализацией определенного типа, использующая механизм пересылки сообщений и классы, организованные в иерархию наследования.
Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности, т. н. объекта.
Объект - сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции исходного кода на выполнение).
Инкапсуляция
Инкапсуляция - это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик - пользователь класса должен видеть и использовать только интерфейсную часть класса (т.е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Сокрытие данных
Сокрытие данных - неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.
Наследование
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизм
Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами - из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием - в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
2) Язык программирования Java.
Java - объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры.
Основные возможности
· автоматическое управление памятью;
· расширенные возможности обработки исключительных ситуаций;
· богатый набор средств фильтрации ввода/вывода;
· набор стандартных коллекций, таких как массив, список, стек и т.п.;
· наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);
· наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
· встроенные в язык средства создания многопоточных приложений;
· унифицированный доступ к базам данных:
· на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;
· на уровне концепции объектов, обладающих способностью к хранению в базе данных - на основе Java Data Objects (англ. ) и Java Persistence API (англ. );
· поддержка шаблонов (начиная с версии 1.5);
· параллельное выполнение программ.
Классификация платформ Java
Внутри Java существуют несколько основных семейств технологий:
· J2EE или Java EE (начиная с v1.5) - Java Enterprise Edition, для создания программного обеспечения уровня предприятия;
· J2SE или Java SE (начиная с v1.5) - Java Standard Edition, для создания пользовательских приложений, в первую очередь - для настольных систем;
· J2ME, Java ME или Java Micro Edition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, КПК, встроенных системах;
· Java Card для использования в устройствах без собственного человекомашинного интерфейса, например в смарт-картах.
Самыми популярными считаются серверные технологии семейства J2EE.
Последним релизом является версия 1.6, в которой было произведено улучшение системы безопасности, улучшение поддержки XML, а также добавлена поддержка скриптового языка JavaScript на основе механизма Mozilla Rhino, улучшена интеграция с рабочим столом, добавлены некоторые новые возможности в создании графических интерфейсов.
Формулировка задачи:
Создание программы, обеспечивающей вычисление арифметических выражений. Основные функции: сложение, вычитание, умножение, деление, sin (), cos (), exp (), sqr (), sqrt (). При разработке использовать объектно-ориентированный подход.
Руководство пользователя
Содержание:
1. Управление
Осуществляется только манипулятором мышь.
2. Меню
Меню программы активируется нажатием на кнопку “ Файл". Далее мышкой можно выбрать соответствующие подменю: Информация о калькуляторе (где можно посмотреть версию и разработчика и выход (с помощью которого можно завершить работу приложения)
Функции:
· Основные (Элементарные)
· Математические
· Тригонометрические
Основные (Элементарные):
§ Вычитание (-)
§ Сложение (+)
§ Деление (/)
§ Умножение (*)
Математические:
§ Вычисление числа обратного x (1/x)
§ Вычисление квадрата числа x (x^2)
§ Извлечение квадратного корня из x ()
§ Вычисление процента (X%)
§ Вычисление натурального логарифма (Ln (x))
§ Возведение x в любую степень (X^Y)
§ Вычисление экспоненты числа x (Exp (x))
§ Вычисление факториала числа x (n!;! =x)
§ Вычисление y процентов от числа x (Y%X)
§ Вычисление куба числа x (x^3)
§ Возведение 10 в степень числа x (10^x)
Тригонометрические:
1) Обычные:
§ Вычисление синуса числа x (sin (x))
§ Вычисление косинуса числа x (cos (x))
§ Вычисление тангенса числа x (tan (x))
§ Вычисление котангенса числа x (ctg (x))
2) Обратные:
§ Вычисление арксинуса числа x (Asin (x))
§ Вычисление арккосинуса числа x (Acos (x))
§ Вычисление арктангенса числа x (Atan (x))
4. Дополнительные замечания:
Перед использованием математических функций следует удостовериться, что калькулятор завершил предыдущую операцию. Для этого нужно предварительно несколько раз щёлкнуть мышкой по выбранной кнопке, реализующей нужную математическую функцию.
Листинг программы
import javax. swing. *; // импортируем пакет swing для работы с графическим интерфейсом (для всех ОС)
import java. awt. *; // импортируем пакет awt для работы с графическим интерфейсом (для определённых ОС)
import java. awt. event. *; // импортируем класс event для обработки событий
import java. math. *; // импортируем пакет math для работы с математическими функциями
public class Калькулятор // создаём новый класс Калькулятор
{
public static void main (String [] args) // метод main позволяет начать работу в консольном окне
{
System. out. println ("It is program calculator (Version 1; Developer - Dyakonov A. V.)"); // метод println выводит на консольное окно строку в ()
MyFrame frame=new MyFrame (); // создаём экземпляр класса MyFrame
frame. setBackground (Color. blue); // задаём цвет фона
frame. setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); // метод setDefaultCloseOperation завершает работу приложения
frame. show (); // метод show рисует наш frame
}
}
class MyFrame extends JFrame // создаём новый класс MyFrame на основе класса JFrame
{
public MyFrame () // указываем конструктор класса MyFrame
{
setTitle ("Калькулятор"); // задаём имя заголовка
Container pane= getContentPane (); // группируем компоненты
MyPanel panel= new MyPanel (); // создаём экземпляр класса MyPanel
pane. add (panel); // добавляем компоненту panal
setSize (350,350); // задаём размер фрэйма
JMenu fileMenu=new JMenu ("Файл"); // создаём экземпляр класса JMenu
JMenuItem newItem=fileMenu. add
("Информация о калькуляторе: Версия 1; Разработчик - Дьяконов А.В. ");
fileMenu. addSeparator ();
JMenuItem exitItem=fileMenu. add (new AbstractAction ("Выход")
{
public void actionPerformed (ActionEvent event)
{System. exit (0);
}
});
JMenuBar menuBar=new JMenuBar ();
setJMenuBar (menuBar);
menuBar. add (fileMenu);
}
}
class MyPanel extends JPanel // создаём новый класс MyPanel на основе класса JPanel
{
private JLabel display; // создаём поле JLabel для компоненты display (текстовое поле)
private JPanel panel; // создаём поле JPanel для компоненты panel
private boolean start; // создаём переменную start типа boolean
private String lastCommand; // создаём переменную, хранящую значение последней введённой команды
private double result; // создаём переменную для хранения результата
public MyPanel () // указываем конструктор класса MyPanel
{
setLayout (new BorderLayout ()); // разместим компоненту текстового типа (компонента BorderLayout () делит панель на две части)
start=true; // проинициализируем переменную start
result=0;
lastCommand="=";
display=new JLabel ("0"); // создаём компоненту display
add (display,BorderLayout. NORTH); // добавляем объект display на frame
display. setBackground (Color. green);
panel=new JPanel (); // проинициализируем компоненту panel
panel. setLayout (new GridLayout (10,4)); // задаём сеточную компановку
// добавим все необходимые кнопки на окно нашего калькулятора
addButton ("7",0);
addButton ("8",0);
addButton ("9",0);
addButton ("/",1);
addButton ("4",0);
addButton ("5",0);
addButton ("6",0);
addButton ("*",1);
addButton ("1",0);
addButton ("2",0);
addButton ("3",0);
addButton ("-",1);
addButton ("0",0);
addButton (". ",0);
addButton ("=",1);
addButton ("+",1);
addButton ("X^2",1);
addButton ("sqrt",1);
addButton ("1/x",1);
addButton ("%",1);
addButton ("sin",1);
addButton ("cos",1);
addButton ("tan",1);
addButton ("ctg",1);
addButton ("X^Any",1);
addButton ("Asin",1);
addButton ("Acos",1);
addButton ("Atan",1);
addButton ("X^3",1);
addButton ("LN",1);
addButton ("Exp",1);
addButton ("n!",1);
addButton ("y%x",1);
addButton ("10^x",1);
add (panel,BorderLayout. CENTER); // добавим нашу компоненту (область) в середину
}
private void addButton (String s, int i) // создадим метод addButton (метод addButton создаёт кнопки)
{
JButton button=new JButton (s); // создаём объект button (кнопку) класса JButton
button. setBackground (Color. white); // задаём цвет кнопки
button. setForeground (Color. black); // задаём цвет названия кнопки
if (i==0) // если i=0, тогда выполняется метод addActionListener (new InsertAction ()) кнопки button, добавляющий новый объект класса InsertAction
{
button. addActionListener (new InsertAction ()); } // обработка нажатия кнопки передаётся классу InsertAction (), заполняется переменная input
if (i==1) // если i=1, тогда выполняется метод addActionListener кнопки button
{
button. addActionListener (new CommandAction ());
}
panel. add (button); // добавляем кнопку button на компоненту (область) panel
}
private class InsertAction implements ActionListener // создадим класс InsertAction, поддерживающий интерфейс ActionListener (обрабатывает нажатие на клавиши 1,2,3,4 и т.д.)
{
public void actionPerformed (ActionEvent event) // напишем метод actionPerformed как это требует ActionListener
{
String input=event. getActionCommand (); // создадим переменную, хранящую введённую команду (getActionCommand () - метод с помощью которого можно получить значение нажатой кнопки)
if (start)
{display. setText (""); // присвоим переменной display значение пустой стороки
start=false; }
if (! input. equals (". ") || (display. getText (). lastIndexOf (". ") <0)) // проверка на вторую точку
display. setText (display. getText () +input); // присвоим переменной display значение предыдущей и следующей строки
}
}
private class CommandAction implements ActionListener // создадим класс CommandAction, поддерживающий интерфейс ActionListener (обрабатывает нажатие на клавиши действия)
{
public void actionPerformed (ActionEvent event) // напишем метод actionPerformed как это требует ActionListener
{
String command=event. getActionCommand (); (); // создадим переменную, хранящую введённую команду (getActionCommand () - метод с помощью которого можно получить значение нажатой кнопки)
if (start)
{
if (command. equals ("-")) // если переменная command содержит знак минус
{display. setText (command); // присвоим переменной display значение переменной command
start=false;
}
else lastCommand=command; // иначе присвоим переменной lastCommand значение переменной command
{if (! display. getText (). equals ("-")) // выполняем метод calculate, если display. getText () не содержит знак “-”
calculate (Double. parseDouble (display. getText ())); // иначе метод calculate проведёт все расчёты; передаём методу calculate действительное значение, получаемое преобразованием строки в число (Double. parseDouble)
lastCommand=command; // присвоим переменной lastCommand значение переменной command
start=true;
}
}
}
public void calculate (double x) // создадим (опишем) метод calculate
{double y=Math. toRadians (x); // переводим радианы в градусы
if (lastCommand. equals ("+")) result+=x; //
else if (lastCommand. equals ("-")) result-=x;
else if (lastCommand. equals ("*")) result*=x;
else if (lastCommand. equals ("/")) result/=x;
else if (lastCommand. equals ("X^2")) result=Math. pow (x,2);
else if (lastCommand. equals ("1/x")) result=1/x;
else if (lastCommand. equals ("%")) result=x/100;
else if (lastCommand. equals ("X^3")) result=Math. pow (x,3);
else if (lastCommand. equals ("sqrt")) result=Math. sqrt (x);
else if (lastCommand. equals ("sin")) result=Math. sin (y);
else if (lastCommand. equals ("cos"))
{ if (x==90) result=0; else
result=Math. cos (y);
}
else if (lastCommand. equals ("tan")) result=Math. tan (y);
else if (lastCommand. equals ("=")) result=x;
else if (lastCommand. equals ("ctg")) result=1/ (Math. tan (y));
else if (lastCommand. equals ("Asin")) result= (180/Math. PI) * (Math. atan (x/Math. sqrt (1 - x*x)));
else if (lastCommand. equals ("Acos"))
result= (180/Math. PI) * ( (Math. PI / 2 - (Math. atan (x/Math. sqrt (1 - x*x)))));
else if (lastCommand. equals ("Atan")) result= (180/Math. PI) * (Math. atan (x));
else if (lastCommand. equals ("LN")) result=Math. log (x);
else if (lastCommand. equals ("Log")) result=Math. log (x);
else if (lastCommand. equals ("10^x"))
{double S=1;
for (double u=1; u<=x; u++)
S=10*S;
result=S;
}
else if (lastCommand. equals ("Exp")) result=Math. exp (x);
else if (lastCommand. equals ("X^Any"))
{
String ss=JOptionPane. showInputDialog
("Выберете степень");
int ii=Integer. parseInt (ss);
result=Math. exp (ii* (Math. log (x)));
result=Math. round (result*100) /100;
}else if (lastCommand. equals ("n!"))
{ double P=1;
for (int t=1; t<=x; t++)
P=t*P;
result=P;
} else if (lastCommand. equals ("y%x"))
{
String qq=JOptionPane. showInputDialog
("Выберете желаемый процент от числа");
double ww=Double. parseDouble (qq);
result=x*ww/100;
}
display. setText (" "+result); // присвоим значение result переменной display для вывода на экран
}
}
руководство пользователь программа калькулятор
Алгоритмы
Алгоритм №1.
Алгоритм №2.
Алгоритм №3.
Тестовые примеры
1) Скриншот программы.
2) Вычитание. (12-5=7)
3) Возведение x в любую степень (X^Y). (2^5=32)
4) Вычисление синуса числа x (sin (x)) (sin (90) =1)
5) Вычисление y процентов от числа x (Y%X) (11% от 300=33)
6) Вычисление факториала числа x (x!; x={N}) (7! =5040)
Источники
1. http://ru. wikipedia.org/wiki/Java#
2. http://ru. wikipedia.org/wiki/ Объектно-ориентированное программирование.
3. Видео уроки Java от Teach Pro (http://videoshkola.com/video-uroki-programmirovaniya/video-uroki-java. htm)
4. http://www.ctc. msiu.ru/materials/Book/node82.html
Размещено на Allbest.ru
Подобные документы
Разработка приложения "Калькулятор с переходом в строковый калькулятор" с применением объектно-ориентированного программирования. Концепция и понятия объектно-ориентированного программирования. Язык программирования Java. Листинг программы "Калькулятор".
курсовая работа [966,9 K], добавлен 11.02.2016Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Основные преимущества и возможности объектно-ориентированного языка программирования С#. Руководство пользователя: установка приложения, эксплуатация ежедневника, назначение полей, кнопок и пунктов меню. Руководство программиста. Событие элемента Timer.
курсовая работа [4,5 M], добавлен 16.08.2012Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.
курсовая работа [122,5 K], добавлен 19.05.2011Основные способы создания в среде Lazarus на языке программирования Pascal программ "Калькулятор" и "Лабиринт". Создание программы "Простейший калькулятор". Вычисление значения выражения, сумм ряда чисел, системы функций "Логическая развилка".
курсовая работа [2,9 M], добавлен 27.09.2014Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.
курсовая работа [106,6 K], добавлен 16.06.2014Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013