Доступ к переменным класса Java - Часть 2

Продолжаем предыдущий урок и получаем доступ к остальным двум переменным для нашей 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 + "$";
    }
}

В следующем уроке вы узнаете о наследовании.

Дата обновления: 26.08.2019

  • Текущий 0.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

/Рейтинг: 0.0/5 (0 голос(ов) всего)

Добавить комментарий (без регистрации)