Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как правильно организовать класс


Автор: good07 14.7.2011, 20:12
здраствуйте. прошу помощи с логикой организации программы.
прошу не пинать сильно. Очень много букв.

вообщем, ситуация такая.

есть n-е количество записей например  в базе, у  всех записей примерно одинаковая структура полей,
и к ним применюятся одинаковые по смыслу действия.
но, в зависимости от типа записи, действия различаются по реализации.

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

имя:должность:возраст:телефон:город:зарплата:почта:знает ли Фотошоп

для всех имя, должность,город возраст - обязательны.

для инженера:
 обязательны параметры зарплата, почта. 
 сайт, фотошоп - опционально.

для дизайнера:
  почта,  фотошоп обязательны, зарплата - опционально

для курьера            
  зарплата: опционально, почта обязательно,
    фотошоп: параметр отсутствует.    
    
коля:дизайнер:25:2135476:Москва:500:k@m.ru:да
вася:инженер:25:1234567:Москва:1000:v@m.ru:нет
дима:курьер:20:1234567:Москва:400:d@m.ru:

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

количество типов в дальненейшем будет увеличиваться, а количество полей будет больше 50, и потом они тоже будут добавляться.

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

я предположил, что лучше все вынести в класс.
шаблон класса профессий
Код

TProf=class(TObject)

public
  property name:string read GetName write SetName;
    ...    
  property photoshop:boolean read GetPS write SetPs;
    ...        
  function Send:Boolean;virtual;    

каждая профессия наследует класс proff
Код

TIng=class(TProf)
    
...
  
   function Send:Boolean;override;
...

далее делается класс контроллер, как я его назвал
Код

TContr=class(Tobject)

  constuctor Create(typeProf:Byte);            
  data:TProf;
..
constructor TContr.Create(typeProf:Byte);
...
  case typeProfof
    1:
      Data:=TIng.Create;


с этим более-не менее я разобрался, а как проверить заполнены ли нужные property, и узнать необходимые для каждого класса, чтобы, например сгенерить форму для заполнения,
вообщем, как организовать всю эту логику по правильному?

не заводить же 
Код

MyString=record;
  enabled:Boolean;    
  sure:Boolean;
  optional:Boolean;
  Value:String;

 к тому же поля могут быть разных типов....

Очень жду советов, еще раз прошу не пинайте сильно...
            





Автор: Frees 15.7.2011, 14:54
Попробуй GoF почитать...

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