В нашем примере рассматривается только взаимодействие в процессе кормления, описываемое методом eat (). В этом методе животное обращается к хозяину, умоляя его применить метод getFood ( ).
В англоязычной литературе подобное обращение описывается словом message. Это понятие переведено на русский язык напрямую ни к чему не обязывающим словом
□ Сообщение идет к конкретному объекту, знающему метод решения задачи. В примере этот объект — текущее значение переменной person. Объекты одного и того же класса отличаются друг от друга. У каждого объекта свое текущее состояние, свои значения полей класса, и это может повлиять на выполнение метода.
□ Способ выполнения поручения, содержащегося в сообщении, зависит от объекта, которому оно послано. В нашем примере этот объект — хозяин животного. Один хозяин поставит миску с Chappi, другой бросит кость, третий выгонит собаку на улицу. Это интересное свойство называется
□ Обращение к методу произойдет только на этапе выполнения программы, компилятор ничего не знает про метод. Это называется
Итак, объект sharik, выполняя свой метод eat (), посылает сообщение объекту, ссылка на который содержится в переменной person, с просьбой выдать ему определенное количество еды и питья. Сообщение записано в строке person.getFood(food, drink).
Этим сообщением заключается
Для того чтобы правильно реализовать принцип ответственности, применяется четвертый принцип объектно-ориентированного программирования —
Этот принцип утверждает: каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы.
В языке Java инкапсуляция достигается добавлением модификатора private к описанию члена класса. Например:
private int mouseCatched; private String name; private void preserve();
Эти члены классов становятся
А если в классе Master мы напишем
private void getFood(int food, int drink);
то метод getFood () не будет найден объектами других классов и несчастный sharik не сможет получить пищу.
В противоположность закрытости мы можем объявить некоторые члены класса
public void getFood(int food, int drink);
К таким членам может обратиться любой объект любого класса.
В языке Java словами private, public и protected отмечается каждый член класса в отдельности.
Принцип модульности предписывает открывать члены класса только в случае необходимости. Вспомните надпись на железнодорожном переезде: "Нормальное положение шлагбаума — закрытое".
Если же надо обратиться к закрытому полю класса, то рекомендуется включить в класс специальные
В нашем примере класса Master методы доступа к полю name в самом простом виде могут выглядеть так:
public String getName(){ return name;
}
public void setName(String newName){ name = newName;
}
В реальных ситуациях доступ ограничивается разными проверками, особенно в
Кроме методов доступа рекомендуется создавать проверочные
public boolean isEmpty(){ return name == null;
}