![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Prol |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Коллеги, помогите новичку понять, как это сделать?
Волк и Корова наблюдают друг за другом, Волк гонится за Коровой и догоняет её. У меня не получается чтоб оно хотя бы откомпилилось, более того, я не понимаю, где что вызвать :о((( Помогите старому больному пролу понять Observer
|
||||||
|
|||||||
| anglerhood |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 23.5.2007 Где: Спб Репутация: 1 Всего: 3 |
Prol,
В паттерне "наблюдатель" есть два класса объектов: объект одного класса(Наблюдатель/Observer) следит и реагирует на изменения объекта второго класса(Наблюдаемый/Obsrevable). Как Observer узнает, что Observable изменился? А очень просто, Observable сам уведомляет о своем изменении Observera. Получив такое уводмление Observer обновляет свое состояние в соответствии с изменениям Observable. В учебных целях рекомендую реализовать этот паттерн без java.util В случае с коровой и волком, каждый из классов является наблюдателем и наблюдаемым. Жизненный цикл получается такой: волк изменяет свое положение волк уведомляет о своем изменении корову корова изменяет свое положение корова уведомляет волка о своем изменении волка цикл В методе update каждый клас должен изменять свое состояние, то есть Volk должен вызывать setDognat, а Korova - setUbegat. Ну и кто-то должен из них первым начать изменение. В общем вот тебе рассказ от очевидца про корову и волка
Это сообщение отредактировал(а) anglerhood - 23.1.2008, 03:31 |
||||||
|
|||||||
| Prol |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Вопросы: - Что вы называете "паттерном"? Добавлено через 2 минуты и 21 секунду
- Цикла нету в вашем коде, скорей какая-то рекурсия хитрая :о))) Добавлено через 5 минут и 52 секунды
- Какой смысл в применении @Override ? Я ведь не перекрываю никакой метод в суперклассе... Добавлено через 9 минут и 49 секунд
Компилер вот такое выдаёт: The method setDogonat() in the type Volk is not applicable for the arguments (Korova) Это сообщение отредактировал(а) Prol - 23.1.2008, 08:59 |
||||||||||
|
|||||||||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Паттерном называется паттерн, он же шаблон проектирования, ни что более. Prol, а что вы собственно хотите понять? Вам понятие жизненного цикла в принципе не знакомо? Добавлено через 5 минут и 18 секунд Про паттерны можно почитать здесь - http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%...%BD%D0%B8%D1%8F, если есть желание. |
|||
|
||||
| Prol |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
То есть "паттерн" - это интерфейс (набор процедур проектирования и правил пользования ими) Спасибо. Добавлено через 4 минуты и 58 секунд
Вот мой код. Мне непонятно следующее: - он не хочет компилится, компилятор выдаёт The method setDogonat() in the type Volk is not applicable for the arguments (Korova) - мне непонятно как его остановить, если он вдруг заработает :о)))
|
||||||||||
|
|||||||||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Хлопцы, у кого-нибудь получилось скомпилить мой код последний вариант?
А то я смотрю много просматривают тему, и молчат загадочно... |
|||
|
||||
| Kangaroo |
|
||||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Скомпилилось Само остановилось:
На больше времени нет -------------------- Lost.... |
||||
|
|||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
ыыы...
Вот за ето я себя ненавижу. Напишу код, он работает, почему работает, я сам непонимаю :о((( У меня он не компилится и я не понимаю, почему он у вас останавливается именно когда волк поймал корову :о))) |
|||
|
||||
| anglerhood |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 23.5.2007 Где: Спб Репутация: 1 Всего: 3 |
Prol,
Как раз перегружается метод класса Observer Я думаю, что основаная проблема с пониманием этого кода у тебя связана с тем, что ты пользуешься классами из java.util. Реализуй этот паттерн полностью сам и все станет намного понятнее.
Эмоции тут излишни, протрейси построчно и много станет понятным. Ты скопировал код класса VolkIKorova с моим указанием пакета ru.forum.vingrad. У остальных классов такой же пакет указал? Рекомендую полносьтю скопировать мой код, расставить брейкпоинты и протрейсить его. Смотри в методе setDogonat:
|
||||||
|
|||||||
| Prol |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Какой смысл указывать @override если и без этой инструкции работает? Добавлено через 2 минуты и 14 секунд
У меня в коде никаких винградов нету, если ты почитаешь мой код :о) Добавлено через 5 минут и 23 секунды Скомпилилось :о))) Я убрал из проекта кучу тренировочных классов и скомпилилось :о))) Добавлено через 7 минут и 1 секунду Вобщем понял, в дефаулт пакаже не может быть двух майнов :о) |
||||||
|
|||||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Смысл этой инструкции: 1) Код будет читальбенее, сразу видно что этот метод перекрыт 2) Дополнительное указание компилятору. Если вы поставите @override на методе, который не перекрыт - будет ошибка компиляции Код работает ) Я просто скопировал, разве что импорты еклипс добавил. -------------------- Lost.... |
|||
|
||||
| Prol |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Вот универсальный класс Mobile получился.
Пример использования
Прога завершает работу, потому что когда корова попалась, то волк не делает notifyObservers() Я правильно понял? Это сообщение отредактировал(а) Prol - 24.1.2008, 02:35 |
||||
|
|||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Спасибо за помощь :о)
|
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Ну да. -------------------- Lost.... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |