Форум: "Начинающим";
Текущий архив: 2013.11.03;
Скачать: [xml.tar.bz2];
Внизпроектирование иерархии классов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c