2010-06-26 5 views
0

Я хочу создать футбольное решение FIFA в ООП (используя C# в моем случае). На данный момент мне нужно представлять: Команды, Группы (у нас есть группы H) и Игры.Дизайн ООП: Футбольные команды

То, что я сделал это создание таких классов:

  1. Team - которая содержит несколько свойств, таких как teamName, оценку, победы и т.д. ...
  2. игр - который содержит TeamA, TeamB (Обе команды объектов) и 2 свойства TeamAScore, TeamBScore.
  3. Group - содержит: Property GroupName, массив объектов Team (размер 4), список игр, AddGame метод
  4. FIFA - содержит массив объектов Группы (размер массива 7)

мне нужно метод, который печатает всю информацию команды: включая данные из объекта Team (TeamName, оценка, выигрыши ...) + Team GroupName команды + Все игры этой команды. Для этого мне придется создать этот метод в классе FIFA, я думаю.

Я не полностью доволен, что этот макет, но не может действительно объяснить почему. Какие-то ошибки здесь? Предложения?

+0

Это проект в моем исследовании MCPD :) –

+0

«метод, который раскрывает всю информацию о команде» ... раскрывает, как? 'вернуть это;'? – Dolph

+0

Мне нужно распечатать все данные команды на самом деле –

ответ

0

Что касается вашего последнего вопроса, о том, где поставить функцию Print. Я бы уменьшил масштаб, чтобы каждый класс имел свой собственный отпечаток. Так как релевантность данных печати останавливается на уровне группы, я бы остановился там. Если, конечно, вы не следуете советам Валльвогеля и не помещаете список игр в класс FIFA. Что-то вроде этого:

class Team{ 
... 
public void Print(){ 
//prints TeamName, score, wins... 
} 
} 
class Game{ 
... 
public void Print(){ 
//prints a description of the game (Who vs Who, final score) 
} 
} 
class Group{ 
private Team teams[4]; 
private List<Game> games; 
public void PrintTeamInfo(Team t){ 
    t.Print(); 
    foreach Game g in games{ 
     if (g.TeamA == t || g.TeamB == t) //assuming you overloaded == operator for Team 
      g.print(); 
    } 
} 
} 

Эта масштабируемость позволит повторное использование кода, когда в назначении завтрашнему вы должны напечатать все игры и команды в ФИФА, например. Как я уже говорил ранее, если вы решите, что игры принадлежат классу FIFA, тогда необходимо также переместить PrintTeamInfo

Извините, если мой код плохо отформатирован. Прошло некоторое время с тех пор, как я написал код в C#

0

Моя главная забота о вашем дизайне - это решение поместить игры внутри групп. Начиная с сегодняшнего дня, существуют межгрупповые игры.

Кроме того, почему бы не переименовать свой класс FIFA в WorldCupTournament или что-то в этом роде, так что вы можете продлить все это, чтобы отслеживать чашку этого года и 2014 года?!?

+0

Ну, я могу переименовать его, никаких проблем с этим. На данный момент мне просто нужно представить первый этап турнира. Где бы вы спасли игры вместо этого? –

+2

От этого зависит не правда ли? Предвидите ли вы изменения в будущем, которые позволят проводить межгрупповые игры? Если это так, то игры принадлежат классу FIFA, который знает все группы и для всех команд. – eladidan

+3

Посмотрите на «имеет» отношения, чтобы определить, где вещи. В турнире есть группы. Группа имеет команды. В турнире есть Игры. У игр есть Конкуренты (Команды). – Ryan

0

Каковы входные и выходные данные вашей программы?

Проектирование хорошей классовой структуры будет сложно, если у вас нет такой идеи.