Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654

Вызов метода агрегата из метода агрегируемого класса

28.08.2016, 21:45. Показов 1495. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс-агрегат Game
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function Game() {
  this.game_map = null;
  // другие члены
}
 
Game.prototype.needToCall = function() {
  console.log('hello from game');
};
 
Game.prototype.MapInit = function(game_map) { // instance of GameMap
  this.game_map = game_map; // агрегирование
};
И агрегируемый класс GameMap
JavaScript
1
2
3
4
5
6
7
8
9
10
function GameMap() {
  this.count = 0;
}
 
GameMap.prototype.action = function() {
  // некоторый код
  if (condition) { // при определённом условии
    // надо вызвать метод Game.needToCall()
  }
};
JavaScript
1
2
3
4
5
6
var game = new Game();
var game_map = new GameMap();
 
game.MapInit(game_map);
 
game_map.action();
Как это сделать?
Пока нашёл решение в виде перекрёстной ссылки
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
Game.prototype.MapInit = function(game_map) { // instance of GameMap
  this.game_map = game_map;
  game_map.game = this; // добавление ссылки агрегата в объект агрегируемого класса
};
// ...
GameMap.prototype.persShot = function() {
  // код
  if (this.game) {
    this.game.needToCall(); // вызов метода агрегата
  } else {
    console.log('game not found');
  }
};
Хорош ли такой способ? И есть ли другие варианты?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2016, 21:45
Ответы с готовыми решениями:

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Вызов метода класса из метода другого класса
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет метод А, класс2 имеет метод Б, класс1...

4
Coding is art
Эксперт JS
540 / 423 / 154
Регистрация: 04.09.2013
Сообщений: 1,066
28.08.2016, 23:25
я правильно понял, что needToCall должен вызываться после MapInit функции ?
По примерам не очень понятно чего вы именно хотите добиться.
Но например можно вызывать needToCall и проверять уже в нутри неё нужно ли выполнять, если нет - return;
например проверять есть ли this.game_map..
По сути то же самое, что и вы написали, только меняются местами агрегатор и агрегируемый класс..
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
29.08.2016, 00:23  [ТС]
Цитата Сообщение от muxahuk1214 Посмотреть сообщение
я правильно понял, что needToCall должен вызываться после MapInit функции ?
Да.
Цитата Сообщение от muxahuk1214 Посмотреть сообщение
По примерам не очень понятно чего вы именно хотите добиться.
Но например можно вызывать needToCall и проверять уже в нутри неё нужно ли выполнять, если нет - return;
В классе GameMap происходит обработка действий игрового процесса. Если один персонаж побеждает другого, то нужно вызвать метод Game.restartRound() либо Game.end().
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
07.09.2016, 07:43  [ТС]
Есть ещё идеи?
0
102 / 93 / 36
Регистрация: 01.04.2013
Сообщений: 654
10.09.2016, 19:44  [ТС]
Оказывается, по-другому сделать нельзя. Только явным указанием агрегата.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2016, 19:44
Помогаю со студенческими работами здесь

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Вызов public метода public класса внутри static метода static класса
Подскажите, пожалуйста, возможен вызов не статического метода не статического класса внутри статического метода статического класса? ...

Передача метода класса в качестве параметра для метода другого класса
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна...

Вызов метода класса
Суть в том, есть какой-то класс и его методы. Нужно , чтобы при определенных условиях вызывался определенный метод.

Вызов метода из класса
Всем привет, такой вопрос, в классе есть метод public void SelectD(Form1 fr1) { //..................... } и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru