Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно организовать класс, помогите с логикой... 
:(
    Опции темы
good07
Дата 14.7.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



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

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

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

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

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

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

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

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

для курьера            
  зарплата: опционально, почта обязательно,
    фотошоп: параметр отсутствует.    
    
коля:дизайнер:25:2135476:Москва:500:[email protected]:да
вася:инженер:25:1234567:Москва:1000:[email protected]:нет
дима:курьер:20:1234567:Москва:400:[email protected]:

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

количество типов в дальненейшем будет увеличиваться, а количество полей будет больше 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;

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

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





PM MAIL   Вверх
Frees
Дата 15.7.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Попробуй GoF почитать...


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.