Простой калькулятор на Java
Так как мы уже разобрались из чего состоит класс и как писать консольные приложения, давайте напишем нашу первую полезную программу. Мы напишем простейший калькулятор.
Первое, что нам необходимо сделать, это создать новый проект консольного приложения и назвать его, например MyCalculator. После создания нового проекта мы конечно же увидим основной класс приложения, в котором можно описать всю логику калькулятора. Но чтобы научиться чему-то новому и чтобы просто было интересно давайте дополнительно в нашем проекте задействуем интерфейс Java. Интерфейс в Java - это специальная конструкция, которая описывает обязательную структуру использующего её класса. Более простым языком это означает, что если мы хотим создать объект, то для этого нам необходимо определить класс этого объекта. А если нам необходимо задать правила построения этого класса, то нам необходим интерфейс. Это очень важная вещь при наследовании классов. Про наследование классов мы поговорим попозже, а сейчас мы научимся работать с интерфейсом.
Если мы посмотрим в левой части NetBeans'a на структуру проекта, то увидим что наш основной класс лежит в определённо папке. Эта папка и является его пакетом. Теперь нажмём на этот пакет правой кнопкой мыши и выберем раздел Создать. Здесь мы увидим много различных элементов, которые мы может создать прямо сейчас. Давайте создадим новый Интерфейс Java и назовём его PrimitiveCalculator. Как мы видим внешне его структура абсолютно такая же как и у класса, но вместо ключевого слова class здесь имеется ключевое слово interface.
Главное отличие интерфейса от класса в том, что здесь не описывается объект, а только объявляется какими обязательными элементами он должен обладать объект, если его класс будет использовать данный интерфейс. Приведём наш интерфейс к такому виду:
package zmey_console_calculator_example;
/** * Интерфейс примитивного калькулятора * * @author Zmey * @author http://shendenkov.at.ua */public interface PrimitiveCalculator {
public double add(double a, double b); public double sub(double a, double b); public double mul(double a, double b); public double div(double a, double b);}
Как видите интерфейс довольно простой и лаконичный. Здесь объявляются 4 метода, которые обязательно должны быть описаны в классе который будет использовать этот интерфейс.
Теперь давайте вернёмся к нашему основному классу и приведём его к следующему виду:
package zmey_console_calculator_example;
/** * Простой калькулятор * * @author Zmey * @author http://shendenkov.at.ua */public class MyCalculator implements PrimitiveCalculator {
public MyCalculator(double a, String o, double b) { if (o.equals("+")) { System.out.println(a + " + " + b + " = " + add(a,b)); return; } if (o.equals("-")) { System.out.println(a + " + " + b + " = " + sub(a,b)); return; } if (o.equals("*")) { System.out.println(a + " + " + b + " = " + mul(a,b)); return; } if (o.equals("/")) { System.out.println(a + " + " + b + " = " + div(a,b)); return; } System.out.println("Unknown operation"); }
public double add(double a, double b) { return a + b; }
public double sub(double a, double b) { return a - b; }
public double mul(double a, double b) { return a * b; }
public double div(double a, double b) { return a / b; }
/** * @param args the command line arguments */ public static void main(String[] args) { if (args.length >= 3) { new MyCalculator(Double.valueOf(args[0]), args[1], Double.valueOf(args[2])); } else { System.out.println("Enter parameters like this: 1 + 1"); return; } }}
Давайте разберёмся, что здесь описано. Добавилось ключевое слово implements, которое как бы подключает используемый интерфейс PrimitiveCalculator. В конструктор принимаются параметры типа double и String, описывается вся логика работы калькулятора с помощью методов add, sub, mul и div. Эти метода как раз и являются теми методами, которые обязательно должны присутствовать в нашем классе, потому что мы используем созданный ранее интерфейс. Также мы используем ключевое слово return, после которого идёт возвращаемое значение этого метода если он что-то возвращает. Это ключевое слово сразу же прекращает выполнение метода, в котором оно вызвано. Оно обязательно должно присутствовать в методе. Для методов, которые ничего не возвращают его можно не указывать - NetBeans автоматически его подставляет неявным образом.
Обратите внимание, что в методе main мы создаём новый объект типа MyCalculator, но не помещаем его ни в одну переменную и он сразу же исчезает. Что, естественно, не имеет никакого смысла, если бы нам необходимо было его использовать дальше и поэтому NetBeans пометит это как предупреждение. Но тем не менее объект на мгновение создаётся и в процессе создания выполняет все необходимые нам операции.
Для выполнения программы ей необходимы 3 параметра, а именно число, операция и число. Прямо как в математике. Чтобы их передать программе необходимо её запускать в командной строке и через пробел после названия программы писать параметры. Но эти параметры можно задать и в NetBeans для проверки работы программы. Для этого нажмём правой кнопкой мыши на текущий проект, выберем Свойства, перейдём в категорию Выполнить, в поле Аргументы укажем необходимые нам аргументы и нажмём OK. Теперь как только мы будем запускать этот проект в NetBeans, он автоматически будет подставлять эти параметры в метод main. Всё как пользователь будет делать вручную в командной строке.