как организовать класс
От: good07  
Дата: 14.07.11 16:29
Оценка:
здраствуйте. прошу помощи с логикой организации программы.
прошу не пинать сильно. Очень много букв.

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

есть 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;


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

Очень жду советов, еще раз прошу не пинайте сильно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.