Re[6]: Codepedia. Взгляд вглубь. (читать придется много :) )
От: anonymous Россия http://denis.ibaev.name/
Дата: 30.09.05 12:09
Оценка:
Здравствуйте, 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 результата?...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.