Здравствуйте, FreshMeat, Вы писали:
FM>Верно, получаем вариант, который развивается здесьАвтор: Зверёк Харьковский
Дата: 29.09.05
да, пожалуй я также начинаю склонятся к фреймворку, но... (см. ниже)
A>>есть ещё идея автоматически генерировать такие методы, по некоему описанию класса, заданному пользователем, на основе вот таких сниппетов функций... но как, пока не ясно...
FM>Интересная идея. Надо осмыслить.
вариант: пльзователь имеет класс SomeLine — прямую и хочет определить пресекается ли эта прямая с другой прямой, для чего создаёт метод IsIntersectWith(Line&) и описывает его как:
bool Line::IsIntersectWith(Line& line) {
return intersect_line2(this.p0x, this.p0y, this.p1x, this.p1y, line.p0x, line.p0y, line.p1x, line.p1y);
}
нет, лучше наверное директивой (не целевого языка, а директивой Codepedia), например, $IMPLEMENTATION$:
bool Line::IsIntersectWith(Line& line) {
$IMPLEMENTATION intersect_line2(this.p0x, this.p0y, this.p1x, this.p1y, line.p0x, line.p0y, line.p1x, line.p1y)$
}
причем сниппет описан так:
bool intersect_line2(int p00x, int p00y, int p01x, int p01y, int p10x, int p10y, int p11x, int p11y) {
...
}
в результате после обработки код сниппета intersect_line2 вставляется в Line::IsIntersectWith с заменой переменных p00x на this.p0x, p00y на this.p0y и т. п... (ну и конечно типы еще указывать надо...) в итоге получаем рабочий метод без страшных параметров...
зачем это надо: затем, чтобы пользователь не зависел от других классов Codepedia и мог создавать свои... в данном случае пользователь создал сразу класс Line с координатами точек, а ведь мог сначала создать красс точек Point, который затем использовать в классе Line, либо пойти каким то третьим путём... и в каждом из этих случаев обращение к параметрам функции различается...
FM>Может не совсем точно выразился — ф-я должна найти точку пересечение двух прямых в трехмерном пространстве.
это просто я невнимателен... а зачем 3 результата?...