Как лучше всего разрешить классу моего ребенка получать доступ к информации родителей? - PullRequest
3 голосов
/ 07 марта 2012

Это моя классовая структура на данный момент.

enter image description here

Игроку теперь нужна информация как о графическом интерфейсе, так и о столе. Как лучше всего это сделать?

  • Сделать таблицу статичной? (будет только один стол)
  • Передать экземпляр стола и соответствующее место в конструкторе игрока?
  • Передать данные, необходимые для каждого метода игроков в качестве аргументов?

Я бы хотел избежать реструктуризации моего кода, чтобы включить промежуточные классы или подобные им, если это возможно. На данный момент это будет много усилий. Спасибо:)


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

Ответы [ 5 ]

1 голос
/ 07 марта 2012

Если я понимаю, что вы делаете, я бы подумал, что в графическом интерфейсе будет экземпляр таблицы, таблица будет иметь массив мест, и игрокам будет назначена позиция в массиве мест, которую имеет таблица.,Стол может иметь общедоступные методы для предоставления игроку информации, которая может понадобиться игроку относительно стола и других игроков в ряду мест.Графический интерфейс может предоставить игроку информацию о столе и всех игроках с помощью открытых методов в таблице, месте и классах игроков.Я действительно не понимаю, как таблица, место и игрок могут быть дочерними классами GUI, так как, я полагаю, GUI является GUI и не имеет никакой другой функции, кроме как отображать и предоставлять средства пользовательского ввода.

1 голос
/ 07 марта 2012

Я выберу второй вариант: передать экземпляр стола и соответствующее место в конструкторе игрока.

0 голосов
/ 20 марта 2012

В итоге я просто передал данные, необходимые игроку, в качестве аргументов в своих методах.Я определенно задумывался, потому что у меня было только небольшое количество данных для передачи.Если вам нужны более подробные данные, обратитесь к одному из других ответов.

Это пример метода в классе моей таблицы, который передает две свои собственные переменные и одну из переменных мест в класс Player, вызывая один из них.of Players методы, которым нужны эти переменные.

seats[j].getPlayer().raise(raised, seats[j].getPosition(), inPlaySeats);
0 голосов
/ 07 марта 2012

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

0 голосов
/ 07 марта 2012

Если Player расширяет Seat, Seat расширяет Table, а Table расширяет GUI, то Player должен иметь доступ ко всей (общедоступной) информации, содержащейся в его родителях. Это основная идея объектно-ориентированного (ОО) программирования.

Создание статической таблицы, вероятно, повредит вам в долгосрочной перспективе. Если рефакторинг вашего кода в соответствии с тем, что предложено выше, слишком сложен, то я бы предложил вам 2-й пункт маркировки (передать стол и место конструктору Player).

...