Продолжаем предыдущий урок и получаем доступ к остальным двум переменным для нашей Java-программы про зарплату работников. Полный код класса Sales будет написан внизу статьи.

Итак, теперь у нас есть имя работника и название его должности. Оба хранятся в экземплярах класса Sales. Теперь мы можем добавить количество продаж.
Добавьте следующий новый метод в свой класс сразу после метода pos:
String numSales(int aSales) { Num_Sales = aSales + " из 1000шт"; return Num_Sales; }
Этот новый метод получил название numSales, а в круглых скобках - переменная int с именем aSales. Он должен возвращать строковое значение. Сам метод просто объединяет количество продаж работника со строкой «из 1000шт». Таким образом, если значение в aSales равно 300, текст «300 из 1000шт» будет сохранен в поле Num_Sales.
В классе Branch добавьте следующую строку:
String sales = aWorker.numSales(300);
То есть мы вызываем новый метод numSales и передаем ему значение 300. Возвращаем значение в экземпляр Num_Sales, который затем сохраняется в строковой переменной, которую мы назвали sales.
Добавьте новую строку печати, чтобы ваш код выглядел как наш ниже:
package firm; public class Branch { public static void main(String[] args) { Sales aWorker = new Sales(); String sWork = aWorker.nameWorker("Иван Петров");
String position = aWorker.pos("ДФ"); String sales = aWorker.numSales(300); System.out.println(sWork); System.out.println(position); System.out.println(sales); } }
Когда программа запустится, окно вывода будет выглядит так:
Таким образом, у нас есть имя работника, его должность и количество продаж. Теперь мы можем добавить зарплату.
Для зарплаты мы будем использовать переменную int. Если работник продал от 801 шт. товара и больше, он получит зарплату 600$; если количество продаж было от 601 до 800 шт., то зарплата составит 500$; если продажи в промежутке от 401 до 600 шт., зарплата будет 400$; за продажи от 201 до 400 шт. работник получит зарплату в размере 300$; и зарплата в 200$ - продаж от 0 до 200 шт. товара.
Добавьте следующий метод для вычисления вышеуказанной зарплаты (добавьте его в класс Sales):
private String getSalary(int aSales) { int salaryWorker = 0; if (aSales >= 0 && aSales <= 200) { salaryWorker = 200; } else if (aSales >= 201 && aSales <= 400) { salaryWorker = 300; } else if (aSales >= 401 && aSales <= 600) { salaryWorker = 400; } else if (aSales >= 601 && aSales <= 800) { salaryWorker = 500; } else if (aSales >= 801) { salaryWorker = 600; } return "Зарплата " + salaryWorker + "$"; }
Обратите внимание, что этот метод является private. Точно так же, как и экземпляры класса. Закрытие метода означает, что его можно увидеть только внутри этого класса. Доступ к нему будет закрыт в классе Branch.
Чтобы получить доступ к оценке, мы настроим еще один метод внутри класса Sales.
Добавьте следующий метод чуть выше метода getSalary (вы можете добавить его и ниже, если хотите: это не имеет никакого значения для Java!):
String salaryWorker(int aSales) { Salary = this.getSalary(aSales); return Salary; }
Это метод, который мы будем вызывать из класса Branch, а не из метода getSalary. Название этого нового метода - salaryWorker, куда мы снова передаем результаты работника. Посмотрите на эту строку:
Salary = this.getSalary(aSales);
Здесь вызывается метод getSalary, в который мы передаем переданное из класса Branch количество продаж.
Вызов одного метода из другого является стандартной практикой и позволяет упростить код. Альтернативный вариант будет иметь слишком длинные методы, которые трудно будет прочитать.
Еще стоит заметить в приведенной выше строке ключевое слово Java this. Ключевое слово this означает «этот класс», а не другой класс, который может иметь такое же имя метода. this позволяет избежать путаницы. this строго не обязательно, и мы могли бы его опустить. Вызов метода все равно будет работать и без него:
Salary = getSalary(aSales);
Конечный результат, тем не менее, остается тем же: в переменной Salary будет текст «Зарплата» плюс сумма зарплаты плюс снова текст «$».
Добавьте следующую строку в класс Branch, чтобы протестировать ваши новые методы:
String salary = aWorker.salaryWorker(300);
Эта строка передает значение 300 методу salaryWorker. Затем значение в переменной Salary возвращается и сохраняется в переменной с именем salary.
Со строкой печати ваш класс Branch должен выглядеть следующим образом:
package firm; public class Branch { public static void main(String[] args) { Sales aWorker = new Sales(); String sWork = aWorker.nameWorker("Иван Петров"); String position = aWorker.pos("ДФ"); String sales = aWorker.numSales(300); String salary = aWorker.salaryWorker(300); System.out.println(sWork); System.out.println(position); System.out.println(sales); System.out.println(salary); } }
Запустите свою программу, чтобы увидеть окно вывода:
Если ваша программа должным образом не работает, вот полный код класса Sales:
package firm; public class Sales { private String Worker; private String Position; private String Num_Sales; private String Salary; Sales() { Worker = "Без имени"; Position = "Неизвестно"; Num_Sales = "Нет продаж"; Salary = "Нет зарплаты"; } String nameWorker(String aWork) { Worker = aWork; return Worker; } String pos(String posAbb) { if (posAbb.equals("МП")) { Position = "Менеджер по продажам"; } else if (posAbb.equals("СП")) { Position = "Супервайзер"; } else if (posAbb.equals("ДФ")) { Position = "Директор филиала"; } else { Position = "Должность не выбрана"; } return Position; } String numSales(int aSales) { Num_Sales = aSales + " из 1000шт"; return Num_Sales; } String salaryWorker(int aSales) { Salary = this.getSalary(aSales); return Salary; } private String getSalary(int aSales) { int salaryWorker = 0; if (aSales >= 0 && aSales <= 200) { salaryWorker = 200; } else if (aSales >= 201 && aSales <= 400) { salaryWorker = 300; } else if (aSales >= 401 && aSales <= 600) { salaryWorker = 400; } else if (aSales >= 601 && aSales <= 800) { salaryWorker = 500; } else if (aSales >= 801) { salaryWorker = 600; } return "Зарплата " + salaryWorker + "$"; } }
В следующем уроке вы узнаете о наследовании.