Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.11.03;
Скачать: CL | DM;

Вниз

проектирование иерархии классов   Найти похожие ветки 

 
Dmitry1987   (2013-02-06 13:32) [0]

программе будут операции над значениями атрибутов:

- Очистить
- Заменить полностью
- Заменить фрагмент
- Добавить текст вначало
- Добавить текст вконец

Нужно как-то хранить операцию и ее аргументы. Решил на каждую операцию сделать класс. Помогите с проектированием иерархии.  Правильно ли делать классы-пустышки? У меня получилось так:


TOperation = class
end;
TClear = class(TOperation)
end;
TReplaceFull = class(TFunction)
private
 FText: AnsiString;
public
 property Text: AnsiString read FText write FText;
end;
TReplacePartial = class(TFunction)
private
 FNewText: AnsiString;
 FOldText: AnsiString;
public
 property NewText: AnsiString read FNewText write FNewText;
 property OldText: AnsiString read FOldText write FOldText;
end;
TAddTop = class(TFunction)
private
 FText: AnsiString;
public
 property Text: AnsiString read FText write FText;
end;
TAddBottom = class(TFunction)
private
 FText: AnsiString;
public
 property Text: AnsiString read FText write FText;
end;


Чувствую что иерархия получилать бредовая, поправьте если что не так.


 
Ega23 ©   (2013-02-06 14:20) [1]


> Помогите с проектированием иерархии.

Чтобы помочь с проектированием, нужно сначала понять вот это:

> программе будут операции над значениями атрибутов:
>
> - Очистить
> - Заменить полностью
> - Заменить фрагмент
> - Добавить текст вначало
> - Добавить текст вконец

Я, например, нифига не понял. Что за атрибуты? XML или HTML-тэга? Или текстовые атрибуты свойств класса "Кривозубая Обезьяна"?
Почему текст?
Зачем иерархия классов, если не поддерживается полиморфизм?

В общем, дуть бобр, чётко и доходчиво объясни задачу.


 
O'ShinW ©   (2013-02-06 14:44) [2]


> - Очистить
> - Заменить полностью
> - Заменить фрагмент
> - Добавить текст вначало
> - Добавить текст вконец

Суть одна операция - Текст меняется на текст.

Очистить - с 0 до конца заменить на S = ""
Заменить полностью - с 0 до конца заменить на S
Заменить фрагмент - с x1 по x2 на на S
Добавить текст в начало - с 0 по 0 заменить на S
Добавить текст вконец - с конца до конца заменить на S


 
Ega23 ©   (2013-02-06 14:58) [3]


> Суть одна операция - Текст меняется на текст.


Ну тогда вообще элементарно:


TTextOperation = class
 class function Operation1(Params: ... ): string;
 class function Operation2(Params: ... ): string;
 ....
 class function OperationN(Params: ... ): string;
end;

И никаких иерархий. :)


 
Dmitry1987   (2013-02-06 14:59) [4]

Есть класс "Услуга" у которого есть набор атрибутов (properties): "Код", "Название", "Тариф" и проч. Есть класс-список объектов типа "Услуга".

Нужно сделать форму на которой пользователь сможет выбрать услугу, выбрать один из ее атрибутов и указать операцию над значением атрибута и аргументы операции. Т.е. выбираю к примеру услугу - "Услуга 1", атрибут - "Код", операцию "Добавить текст в начало", указываю аргумент операции - "A0".

Всю эту информацию нужно как-то хранить, она будет передоваться по сокету серверу приложений.


 
Dmitry1987   (2013-02-06 15:02) [5]

сервер приложений исходя из этих данных будет формировать sql-запрос


 
Ega23 ©   (2013-02-06 15:12) [6]

фигня какая-то, извините.


 
Jeer ©   (2013-02-06 15:36) [7]


> Dmitry1987   (06.02.13 14:59) [4]
>
> Есть класс "Услуга"


На тутошнем форуме нет услуг, как класса.


 
O'ShinW ©   (2013-02-06 17:23) [8]


> выбираю к примеру услугу - "Услуга 1", атрибут - "Код",
> операцию "Добавить текст в начало", указываю аргумент операции
> - "A0".


ListService[0].["КОД"].id_operation := 1;
ListService[0].["КОД"].x1 := 0;
ListService[0].["КОД"].x2 := 0;
ListService[0].["КОД"].S := "A0";



Страницы: 1 вся ветка

Текущий архив: 2013.11.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.004 c
3-1293438440
avers_sm
2010-12-27 11:27
2013.11.03
Как передать TIBTransaction в качестве параметра процедуры.


15-1365950832
anikos
2013-04-14 18:47
2013.11.03
Взрыв при попадании


3-1293286581
caesar_88
2010-12-25 17:16
2013.11.03
База данных "План - рейтинг"


15-1368728640
Cynic
2013-05-16 22:24
2013.11.03
Разработчик интерфейсов


2-1360298852
Andrey K
2013-02-08 08:47
2013.11.03
Вкладка Diagram