Урок 8

Концепции JavaBeans


JavaBeans это классы содержащие свойства. В Java мы можем рассматривать свойства как private переменные класса. Т.к. они private, доступ к ним извне класса может быть осуществлен только с помощью методов класса.

Методы, которые возвращают значение свойств, называются “getter” методы.

Методы, которые изменяют значение свойств, называются “setter” методы.

Правила именования JavaBeans:

  1. Если свойство НЕ типа boolean, префикс "getter" метода должно быть get. Например: getName() это корректное JavaBeans имя "getter" метода для свойства "name".
  2. Если свойство типа boolean, префикс имени "getter" метода может быть get или is. Например, getPrinted() или isPrinted() оба являются корректными именами для JavaBeans свойства типа boolean.
  3. Имя "setter" метода должно начинаться с префикса set. Например, setName() корректное JavaBean имя для свойства "name".
  4. Не обязательно иметь переменную "name". Имя свойства выводится из "getter" и "setter" методов, а не из переменной класса.
  5. Для создания имени "getter" или "setter" метода, первая буква свойства должна быть изменена на большую и прибавлена к соответствующему префиксу (set, get или is).
  6. Setter метод должен быть public, возвращать void тип и иметь параметр соответствующий типу свойства. Например:
    public void setAge(int age) {
        this.age = age;
    }​

     

  7. Getter метод должен быть public, не иметь параметров метода, и возвращать значение соответствующее типу свойства. Например: 
    public int getAge() {
        return age;
    }​

Пример 1. Использование концепции JavaBeans

public class Person {
    private String fullName;
    private int age;
    private boolean retired;

    public Person() {
    }

    public Person(String fullName, int age, boolean retired) {
        this.fullName = fullName;
        this.age = age;
        this.retired = retired;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isRetired() {
        return retired;
    }

    public void setRetired(boolean retired) {
        this.retired = retired;
    }

    @Override
    public String toString() {
        return "Person{"
                + "fullName='" + fullName + '\''
                + ", age=" + age
                + ", retired=" + retired
                + '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        Person person = (Person) o;

        if (getAge() != person.getAge()) {
            return false;
        }
        if (isRetired() != person.isRetired()) {
            return false;
        }
        return getFullName() != null
                ? getFullName().equals(person.getFullName())
                : person.getFullName() == null;

    }

    @Override
    public int hashCode() {
        int result = getFullName() != null ? getFullName().hashCode() : 0;
        result = 31 * result + getAge();
        result = 31 * result + (isRetired() ? 1 : 0);
        return result;
    }
}
public class PersonDemo {
    public static void main(String[] args) {
        Person person = new Person();
        person.setFullName("Петров Иван Иванович");
        person.setAge(56);
        person.setRetired(false);

        System.out.println("Полное имя " + person.getFullName());
        System.out.println("Возраст " + person.getAge());
        System.out.println("Пенсионер? " + person.isRetired());
    }
}

Пример 2. Использование концепции JavaBeans

public class Circle {
    private int radius;
    private int diam;

    public int getRadius() {
        return radius;
    }

    public void setRadius(int radius) {
        this.radius = radius;
        this.diam = radius * 2;
    }

    public int getDiam() {
        return diam;
    }

    public void setDiam(int diam) {
        this.diam = diam;
        this.radius = diam / 2;
    }
}

Пример 3. Использование концепции JavaBeans

public class User {
    private String login;
    private String password;

    public User(String login, String password) {
        this.login = login;
        this.password = password;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        String str = "**************";
        int length = password.length() > str.length()
                ? str.length() : password.length();
        return password.charAt(0) + str.substring(1, length);
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
public class UserDemo {
    public static void main(String[] args) {
        User user = new User("mylogin", "mypassword");
        System.out.println("Login: " + user.getLogin());
        System.out.println("Password: " + user.getPassword());
    }
}


0 comments
Leave your comment: