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

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

28.08.2016, 21:45. Показов 1468. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru