Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Правильное размещение List<>


Автор: EEE64 29.8.2010, 11:57
Добрый день!
При создании приложения Windows Forms создается два файла *.cs (Program.cs, Form1.cs). Я создаю класс People размещенный в People.cs. После этого я хочу, чтобы из формы я мог добавлять людей в список List<People> AllPeople; где (в каком файле и в каком классе?) мне следует разместить List <People> AllPeople = new List <People> () ?

Автор: wester 29.8.2010, 11:58
лучше Form1.cs

Автор: EEE64 29.8.2010, 12:41
спасибо!
Появился еще один вопрос:
Имеется два класса People и Team, определенные следующим образом:
1. Team - описывает команды и содержит в себе следующую информацию:
а) Название команды. Обязательное поле
б) Ссылка на информацию о капитане

2. People - описывает каждого человека, включая и капитана:
а) Имя человека. Обязательное поле
... и тд
б) ссылка на команду, в которой играет человек. Обязательное поле.

Каким образом реализовать эти ссылки? делегирование?

Автор: Экскалупатор 29.8.2010, 13:19
Цитата(EEE64 @  29.8.2010,  11:41 Найти цитируемый пост)
Каким образом реализовать эти ссылки? делегирование? 


что подразумеваешь под "ссылками"? чем капитан отличается от всех остальных описываемых людей? на мой взгляд все довольно тривиально, в команде есть список с людьми, один из которых капитан.

Автор: EEE64 29.8.2010, 13:35
в том-то и дело, что не понятно, что подразумевается под ссылками... 

Автор: Экскалупатор 29.8.2010, 13:51
))) скорее всего подразумевается что это ссылки на экземпляры класса. тут если не знаком с программированием то сразу и не вкуришь. если по простому то создавая экземпляр класса ты получаешь ссылку на этот объект.

Автор: EEE64 29.8.2010, 18:36
Код

class Team
{
  public string TeamName;
  public Team (string str)
   {
      TeamName = str;
   }
  People onePeople;
  // тут как?
}


class People 
{
   public string PeopleName;
   public Team myTeam;
   
   public People (string PName, string TName)
  {
     PeopleName = PName;
     myTeam = new Team(TName);   // вызываем конструктор для класса Team
  }
}


что-то вроде этого?

Автор: Exai1e 29.8.2010, 19:58
Первое что посоветую в данном случае - откинуть код на задний план, взять бумажку и листок или просто в голове все "спроектировать", и мыслить "объектами", так сказать абстрагироваться
Код

class Team
{
  public string TeamName;
  public Team (string str)
   {
      TeamName = str;
   }
  People onePeople; <--- тут должен быть List<People> peopleList = ...
  // тут как?

и в классе должны быть реализованны методы добавляющие People в команду и т.д.
}


Цитата

class People 
{
   public string PeopleName;
   public Team myTeam; <- команда должна иметь игрока (игрок не может иметь команду, он может находится в ней)

для начала наверно надо определить для себя что хотите получить. 
аля:
Есть команда с некими параметрами, есть игрок с некими параметрами, => команда должна содержать в себе игроков => надо иметь возможность добавлять в команду игроков, удалять и т.д.
p.s. почему то вспомнилось "Написать можно все, главное четко представлять что Вы хотите получить в конце" © кто то 

в наброске как то так, если я правильно понял задачу
Код

namespace ZB
{
    class Player
    {
        public string Name { set; get; }
        public string Surname { set; get; }
        public string Position { set; get; } //может быть Emun
        public int Number { set; get; }

        public Player(string pName, string pSurname, string pPosition, int pNumber)
        {
            this.Name = pName;
            this.Surname = pSurname;
            this.Position = pPosition;
            this.Number = pNumber;
        }
    }
}


Код

namespace ZB
{
    class Team
    {
        public string Country { set; get; }
        public string Name { set; get; }
        private List<Player> playerList = new List<Player>();

        public Team(string pCountry, string pName)
        {
            //init
        }

        public void AddPlayer(string pName, string pSurname, string pPosition, int pNumber)
        {
            //проверка номера (например что бы не был занят и прочее... по вкусу :)
            playerList.Add(new Player(pName, pSurname, pPosition, pNumber));
        }

        public List<Player> GetAllPlayers()
        {
            return playerList;
        }

        //получение игрока по имени, номеру и т.д.
    }
}

Автор: EEE64 30.8.2010, 20:54
спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)