Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

В этой терминологии говорят о наследовании (inheritance) классов, в нашем примере класс Dog наследует класс Pet.

Читайте также:
  1. FAB-классификация острых лейкозов
  2. I. Классификации осужденных по УИК РФ
  3. II. КЛАССНАЯ ДАМА
  4. II. ОРГАНИЗАЦИЯ И ФУНКЦИОНИРОВАНИЕ КЛАССОВ КОРРЕКЦИОННО-РАЗВИВАЮЩЕГО ОБУЧЕНИЯ
  5. II. Типологии характера, их классификация
  6. II. Формальные нормативы классического идеала.
  7. II.3. На классическом материале или на современном?
  8. III. Классицизм в Петербурге в таблице.
  9. III. ПРАВО ПОСЛЕКЛАССИЧЕСКОЕ
  10. IV. Проведение классификации пляжей

Мы еще не определили счастливого владельца нашего домашнего зоопарка. Опишем его в классе Master. Делаем набросок:

class Master{ // Хозяин животного

String name; // Фамилия, имя

// Другие сведения

void getFood(int food, int drink); // Кормление

// Прочее

}

Хозяин и его домашние животные постоянно соприкасаются в жизни. Их взаимодействие выражается глаголами "гулять", "кормить", "охранять", "чистить", "ласкаться", "проситься" и прочими. Для описания взаимодействия объектов применяется третий принцип объектно-ориентированного программирования — обязанность или ответственность.

Ответственность

В нашем примере рассматривается только взаимодействие в процессе кормления, описываемое методом eat(). В этом методе животное обращается к хозяину, умоляя его применить метод getFood().

В англоязычной литературе подобное обращение описывается словом message. Это понятие неудачно переведено на русский язык ни к чему не обязывающим словом "сообщение". Лучше было бы использовать слово "послание", "поручение" или даже "распоряжение". Но термин "сообщение" устоялся и нам придется его применять. Почему же не используется словосочетание "вызов метода", ведь говорят: "Вызов процедуры"? Потому что между этими понятиями есть, по крайней мере, триЪтличия.

Сообщение идет к конкретному объекту, знающему метод решения задачи, в примере этот объект — текущее значение переменной person. У каждого объекта свое текущее состояние, свои значения полей класса, и это может повлиять на выполнение метода.

Способ выполнения поручения, содержащегося в сообщении, зависит от объекта, которому оно послано. Один хозяин поставит миску с "Chappi", другой бросит кость, третий выгонит собаку на улицу. Это интересное свойство называется полиморфизмом (polymorphism) и будет обсуждаться ниже.

Обращение к методу произойдет только на этапе выполнения программы, компилятор ничего не знает про метод. Это называется "поздним связыванием" в противовес "раннему связыванию", при котором процедура присоединяется к программе на этапе компоновки.

Итак, объект sharik, выполняя свой метод eat (), посылает сообщение объекту, ссылка на который содержится в переменной person, с просьбой выдать ему определенное количество еды и питья. Сообщение записано в строке person.getFood(food, drink).

Этим сообщением заключается контракт (contract) между объектами, суть которого в том, что объект sharik берет на себя ответственность (responsibility) задать правильные параметры в сообщении, а объект — текущее значение person — возлагает на себя ответственность применить метод кормления getFood(), каким бы он ни был.




Дата добавления: 2015-09-11; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав

Выражения | Приведение типа (тип). | Блоки операторов часто используются для ограничения области действия переменных и просто для улучшения читаемости текста программы. | Листинг 1.4. Вычисление корней квадратного уравнения | While (true) оператор | Короче говоря, выполняется последовательность операторов | Знатокам Pascal | Третий этап — инициализация (initialization). На этом этапе элементы массива получают начальные значения. Например, | Парадигмы программирования | Рассмотрим подробнее принципы объектно-ориентированного программирования. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав