Re[31]: Наследование квадратов и прямоугольников
От: Erop Россия  
Дата: 02.04.13 15:04
Оценка:
Здравствуйте, Serginio1, Вы писали:

E>>Правда конкретно у портных вертеть фигуры НЕЛЬЗЯ.

S> Почему, если не зависит от структуры Кожи или других материалов? Так скажем не портных а раскройщиков одежды.

Потому, что портные шьют из ткани, а её механические свойства анизотропны... (Свойства в направлении утка и основы сильно отличаются)...

IMHO, это тут офтоп.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Наследование квадратов и прямоугольников
От: Erop Россия  
Дата: 02.04.13 15:06
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>ООП это не только полиморфизм, на который здесь упирают, но и простое наследование реализации с добавлением новых свойств. А где это использовать уже другой вопрос.


У термина "ООП" есть устоявшееся значение. Если хочешь, что бы тебя понимали, не стоит толковать его расширительно или нетрадиционно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[17]: Наследование квадратов и прямоугольников
От: Mamut Швеция http://dmitriid.com
Дата: 02.04.13 15:26
Оценка:
S>class треугольник:Фигура
S>public треугольник(Point a, Point b, Point c)
S>{
S> массивТочек=new Point[]{a,b,c}

S>}

S>void ПовернутьТреугольникНа90Градусов()
S>end

S> Метод Начертить будет один для всех. А вот метод ПовернутьТреугольникНа90Градусов только для треугольника.


Такой программист отправляется пешим ходом в первый класс. Потому что у нормального программиста будет метод «ПовернутьНа90Градусов(по-или-против-часовой)», общий для всех фигур (на плоскости), но реализуемый по-разному разными фигурами


dmitriid.comGitHubLinkedIn
Re[33]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 03:59
Оценка: +1 :)
Здравствуйте, Serginio1, Вы писали:
S>>Надо понимать, что никакой "сути" нету. Есть только код.
S> Почему?
Потому, что программисты работают с кодом, а не с сутью.

S>Прямоугольники проще располагать паралельно стороне листа и соответственно у неё будет всего две степени свободы.

"у неё" — это у кого? У стороны листа? У неё вообще степеней свободы нет.
S>Для окружности и квадрата только одна.
Вообще-то у круга (который вы почему-то упорно называете окружностью) и квадрата две степени свободы — это их координаты x и y. При условии, что мы не рассматриваем крой с квадратами под произвольными углами.
S>У прямоугольника будет 4.
У прямоугольника — две степени свободы; при этом одна из них дискретная.
S>При алгоритмах работы с разными фигурами тебе так или иначе нужен будет контракт. А вот резать ты будешь по массиву точек.
В последний раз повторюсь, а то я вижу, что с пяти раз аргументы не доходят и вы долдоните одну и ту же чушь:
Общий контракт нужен только если один и тот же алгоритм потребуется применять к разным фигурам.
У вас для размещения кругов и для размещения прямоугольников используется один и тот же алгоритм?
Далее, использовать наследование при реализации этого контракта нужно только в том случае, если есть хоть какой-то полиморфизм.
Про отсутствие полиморфизма при вычислении площади и периметра криволинейных многоугольников мы уже поговорили, пожалуйста не пишите по данному вопросу больше ничего.
Про полиморфизм среди фигур по отношению к размещению я ничего не могу сказать, пока не увижу алгоритм. Очень может оказаться, что если и существует некий общий алгоритм размещения, работающий что для прямоугольников, что для кругов, то никаких иерархий фигур в его аргументах не будет. А просто фигура будет сразу описываться параметрами её симметрии (которые задаются в конструкторе, точно так же, как и список точек для произвольного полигона), и из них алгоритм будет автоматически определять варианты размещения для перебора.ю

S>Можно делать наследование, можно агрегат с контрактом или приведение к типу. Каждый выбирает то что ему удобней.

Пока что в вашем сумбурном описании задачи не видно места ни для наследования, ни для агрегата с контрактом, ни для приведения к типу.
Это означает, что кто-то из нас катастрофически заблуждается. Надеюсь, что я — потому что свои заблуждения мне исправить гораздо легче, чем чужие.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[31]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 04:00
Оценка: +1
Здравствуйте, Serginio1, Вы писали:
S> Только вот если я работаю с овалами и окружностями, почему я должен брать полигон? который я могу попросту вычислить, и который будет использоваться например для резки этих фигур?
Потому что код для полигона уже есть. Объясните мне, зачем вы хотите писать отдельный код для овалов и кругов?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[33]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 04:07
Оценка: +1
Здравствуйте, Serginio1, Вы писали:
S> Почему? Реальные алгоритмы раскроя кожанной одежды, где нет привязки к структуре, реально работают с разными фигурами. Просто для упрощения алгоритма, можно подобрать описанную примитивную фигуру.
Продолжаю не понимать. Если алгоритмы работают с разными фигурами — то почему не пользоваться ими?
Если вы хотите упростить алгоритм, то он сразу потеряет способность работать с разными фигурами.

S>>Совершенно непонятно, при чём тут работа по единому интерфейсу. Нет никакого единого интерфейса у прямоугольников и кругов, которым бы мог воспользоваться алгоритм размещения.

S> Почему. Есть повороты, пересечение, сдвиги итд
Ну так эти функции совершенно одинаково работают для любого произвольного многоугольника.

S>>Степени свободы никуда не деваются — ведь треугольник вписать в прямоугольник тоже можно несколькими способами.

S>Интересно это скольким? По максимальной стороне и высоте?
Тремя. Для тупоугольного треугольника один из этих способов предпочтителен, т.к. он даёт минимальный процент отходов.
Для остроугольного и прямоугольного треугольников все три способа равнозначны с точки зрения отходов при раскрое.

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

Простите, но вы пишете бред. Обший контракт делается для учёта общностей, а не для учёта особенностей.

S>А вот резать мы их будем по единому алгоритму.

Резать вы будете не те фигуры, которые воображались в процессе размещения, а те реальные, которые заказаны. В алгоритме реза никакого полиморфизма нет: это, грубо говоря, язык HP-GL — набор команд по перемещению режущего инструмента.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 04:10
Оценка:
Здравствуйте, Abyx, Вы писали:
A>в первую очередь контракты и требования не должны быть контр-интуитивными.
От щас прям. В первую очередь контракт должен удовлетворять требованиям. Интуитивная понятность тут малоприменима.
A>если есть объект Квадрат, то его площадь должна быть равна квадрату стороны. Иначе он не может называться "Квадрат".
Я вам уже сказал: в случае таких требований вы должны отказаться от полиморфизма.

A>если есть метод add(a, b), то в его реализацией не может быть { return a — b };

А что ваша интуиция говорит по поводу метода multiply(a, b)? Должен ли он возвращать то же, что и multiply(b, a)?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[33]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 04:13
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

S> Вот кстати пример более сложного кроя, при том, что края материала криволинейной формы http://lemarse.spb.ru/products/cut_leather/

Это прекрасно. Видим, что алгоритм работает с одним примитивом — "лекало заданной формы". Что там у него внутри — ХЗ, но уж точно не то, о чём вы говорите — потому что прямоугольники размещаются под произвольными углами, а не с квантом в 90 градусов.
Восхищает ваша способность приводить нерелевантные аргументы.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[34]: Наследование квадратов и прямоугольников
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.13 04:16
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>>У прямоугольника будет 4.
S>У прямоугольника — две степени свободы; при этом одна из них дискретная.
опечатка: три
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Наследование квадратов и прямоугольников
От: Ziaw Россия  
Дата: 03.04.13 04:35
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Я вам уже сказал: в случае таких требований вы должны отказаться от полиморфизма.


Нет, в общем случае надо не наследовать прямоугольник от квадрата. Ибо прямоугольник не является квадратом. Конкретно в этом случае иммутабельность не поможет. Вот в обратном да, сработает. Квадрат, это частный случай прямоугольника и он сможет быть корректно обработан любым методом умеющим правильно работать с прямоугольниками.

Методы же работающие с квадратами, в общем случае не смогут адекватно работать с прямоугольниками. Программист, пишущий метод, который принимает квадрат, должен иметь какую-то почву под ногами, прямоугольник на месте квадрата может оказаться ничем не лучше треугольника или эллипса.
Re[32]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 06:47
Оценка: :))
Здравствуйте, Erop, Вы писали:


S>>Для треугольника будет 4 степени свободы.

E>Что ты называешь "степень свободы"?..
4 положения.
S>> Я не вижу разницы между агрегацией и наследованием. Объект может вести себя и как любой агрегат в его составе. Мало того в COM вовсю используется

E>То есть ты таки правда в ООП совсем не разобрался. Бывает. Говорят есть книжки всякие там про принцип подстановки Лисовски и т. п., говорят некоторым они помогают


S>>В приведенном примере использование директивы implements говорит о том, что методы, реализующие интерфейс IFoo, следует искать в свойстве Foo.


E>А при чём тут вообще наследование?

По моему у тебя плохо с наследованием. Агрегация это тоже наследование, при этом имплементс это директива поведения объекта, где все методы берутся из агрегата.
ООП это не только полиморфизм, но и наследование своств и методов.
и солнце б утром не вставало, когда бы не было меня
Re[32]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 06:58
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Serginio1, Вы писали:


S>>А вот когда у тебя алгоритм будет работать с несколькими примитивами, тебе уже нужно работать по единому интерфейсу


E>А зачем ему рабоать с несколькими примитивами?

С примитивами проще работать чем с оргигиналами. http://lemarse.spb.ru/products/cut_leather/

Там прямоугольники и треугольники проще соединять по сторонам а не углам. Это оптимизация расположения за счет знания формы фигуры.
S>> Нет оригинальная фигура если ты её не впишешь в прямоугольник для оптимального расположения нужно выбрать положение от крайних фигур.
E>Почему и кому это "нужно"?
Для максимального использования площамди материала.
E>Смотри, если я решаю, что эту фигуру надо вписать в прямоугольник и дальше прямо вот как прямоугольник и размещать, то это, на самом деле означает, что я всего-то фиксирую углы поворота этой фигуры, котрые стоит попробовать. Конкретно 90 о 0 градусов. И ВСЁ, боьше это ничего не значит.


S>>Для треугольника это уже 4 степени свободы.

E>IMHO, если отражать нельзя, то у треугольника РОВНО одна степень свободы, так же, как и у любой другой фигуры -- это то, на сколько градусов его можно повернуть относительно первоначального положения
Угу то есть треугольник к прямоуголик можно пристраивать углом к стороне прямоугольника? Так как это NP задача нужно сокращать количество вариантов и не использовать заведомо ложные.
(могут быть еще и ограничения на структуры и здесь и поэтому количество поворотов ограничено но количество положений тля разных фигур различно)
А вот после получения некой картины на примитивах, можно уже крутить вертеть оригиналы.
и солнце б утром не вставало, когда бы не было меня
Re[32]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:05
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Serginio1, Вы писали:


E>>>Правда конкретно у портных вертеть фигуры НЕЛЬЗЯ.

S>> Почему, если не зависит от структуры Кожи или других материалов? Так скажем не портных а раскройщиков одежды.

E>Потому, что портные шьют из ткани, а её механические свойства анизотропны... (Свойства в направлении утка и основы сильно отличаются)...

А что с кожей http://lemarse.spb.ru/products/cut_leather/ которую я уже упоминал?
E>IMHO, это тут офтоп.
Да вся эта ветка оофтоп. Когда люди наследуют прямоугольник от квадрата и говорят, что это ООП
Но при этом когда очевидно что любая частная фигура это наследник более общего понятия Фигура, здесь начинается флейм, а зачем и для чего.
Доводы, того что для эффективной работы с фигурами тебе нужно знать особенности фигур просто отметаются. Ничего продуктивного в разговоре нет.
Единственный плюс, когда начинаешь спор рождаются новые мысли и идеи. Вот за это спасибо.
и солнце б утром не вставало, когда бы не было меня
Re[4]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:07
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Serginio1, Вы писали:


S>>ООП это не только полиморфизм, на который здесь упирают, но и простое наследование реализации с добавлением новых свойств. А где это использовать уже другой вопрос.


E>У термина "ООП" есть устоявшееся значение. Если хочешь, что бы тебя понимали, не стоит толковать его расширительно или нетрадиционно...

Ну если ты отбрасываешь наследование реализации, и наследуешь прямоугольник от квадрата, значит что то неправильно в этом термине.
и солнце б утром не вставало, когда бы не было меня
Re[18]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:14
Оценка: :))
Здравствуйте, Mamut, Вы писали:


S>> Метод Начертить будет один для всех. А вот метод ПовернутьТреугольникНа90Градусов только для треугольника.


M>Такой программист отправляется пешим ходом в первый класс. Потому что у нормального программиста будет метод «ПовернутьНа90Градусов(по-или-против-часовой)», общий для всех фигур (на плоскости), но реализуемый по-разному разными фигурами

Угу осталось добавить вокруг какой точки. Для прямоугольного треугольника это может быть только одна точка, с ограинчением расположения треугольника в 4 положениях.
Спасибо за предложение. Пошел учиться
и солнце б утром не вставало, когда бы не было меня
Re[4]: Наследование квадратов и прямоугольников
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 03.04.13 07:28
Оценка:
S>И наследование реализации — один из худших видов наследования.

Чем по-твоему наследование реализации отличается от композиции? если, конечно, отвлечься от слов и смотреть на суть.
Re[34]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:34
Оценка: :)
Здравствуйте, Sinclair, Вы писали:



S>Вообще-то у круга (который вы почему-то упорно называете окружностью) и квадрата две степени свободы — это их координаты x и y. При условии, что мы не рассматриваем крой с квадратами под произвольными углами.


Круг — геометрическое место точек плоскости, расстояние от которых до заданной точки, называемой центром круга, не превышает заданного неотрицательного числа, называемого радиусом этого круга. Если радиус равен нулю, то круг вырождается в точку.


Окружность — геометрическое место точек плоскости, удалённых от некоторой точки — центра окружности — на заданное расстояние, называемое радиусом окружности.
Окружность диаметра AB — это фигура, состоящая из точек A, B и всех точек плоскости, из которых отрезок AB виден под прямым углом.


Когда мы говорим о фигурах нам интересны внешние точки и их пересечение. Нас не интересуют точки внутри окружности, квадрата.

S>>У прямоугольника будет 4.



S>У прямоугольника — две степени свободы; при этом одна из них дискретная.

S>>При алгоритмах работы с разными фигурами тебе так или иначе нужен будет контракт. А вот резать ты будешь по массиву точек.
S>В последний раз повторюсь, а то я вижу, что с пяти раз аргументы не доходят и вы долдоните одну и ту же чушь:
S>Общий контракт нужен только если один и тот же алгоритм потребуется применять к разным фигурам.
S>У вас для размещения кругов и для размещения прямоугольников используется один и тот же алгоритм?
Алгоритм перемещения фигур по вертикали горизонтали будет один и тот же, а вот повороты будут использовть особенности фигур.
Логично присоединять стороны к сторонам а не стороны к углам?

S>Далее, использовать наследование при реализации этого контракта нужно только в том случае, если есть хоть какой-то полиморфизм.

S>Про отсутствие полиморфизма при вычислении площади и периметра криволинейных многоугольников мы уже поговорили, пожалуйста не пишите по данному вопросу больше ничего.
S>Про полиморфизм среди фигур по отношению к размещению я ничего не могу сказать, пока не увижу алгоритм. Очень может оказаться, что если и существует некий общий алгоритм размещения, работающий что для прямоугольников, что для кругов, то никаких иерархий фигур в его аргументах не будет. А просто фигура будет сразу описываться параметрами её симметрии (которые задаются в конструкторе, точно так же, как и список точек для произвольного полигона), и из них алгоритм будет автоматически определять варианты размещения для перебора.ю
Это твое мнение. Оно мне понятно. Наследование прямоугольника из квадрата для меня непонятно. А вот наследование прямоугольника от фигуры с определением частных случаев для меня понятны.
Прямоугольник это

фигура

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

И использовать данные этой фигуры в своих алгоритмах, например чтобы опустить конверт в почтовый ящик проще повернуть конверт с наименьшей стороной к щели ящика.
А эта сторона будет всего одна. Для других фигур для этого может потребоваться больше усилий.
и солнце б утром не вставало, когда бы не было меня
Re[34]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:40
Оценка:
Здравствуйте, Sinclair, Вы писали:



S>>А вот резать мы их будем по единому алгоритму.

S>Резать вы будете не те фигуры, которые воображались в процессе размещения, а те реальные, которые заказаны. В алгоритме реза никакого полиморфизма нет: это, грубо говоря, язык HP-GL — набор команд по перемещению режущего инструмента.
А называй это как хочешь. ООП это не только полиморфизм, но и наследование реализации. Ты сын своего отца и матери. Полиморфизму (мутации) подверглись набор генов, но по сути ты являешься агрегатом части генов своих родителей и это реальное наследование. Как ты это будешь приспосабливать в программировании это твои проблемы. Но от этого понятие наследования не изменилось.
и солнце б утром не вставало, когда бы не было меня
Re[34]: Наследование квадратов и прямоугольников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.04.13 07:43
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>> Вот кстати пример более сложного кроя, при том, что края материала криволинейной формы http://lemarse.spb.ru/products/cut_leather/

S>Это прекрасно. Видим, что алгоритм работает с одним примитивом — "лекало заданной формы". Что там у него внутри — ХЗ, но уж точно не то, о чём вы говорите — потому что прямоугольники размещаются под произвольными углами, а не с квантом в 90 градусов.
S>Восхищает ваша способность приводить нерелевантные аргументы.
Угу если ты посмотришь повнимательней, то прямоугольники располагаются в большей частью параллельно сторонами.
и солнце б утром не вставало, когда бы не было меня
Re[5]: Наследование квадратов и прямоугольников
От: Erop Россия  
Дата: 03.04.13 08:07
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну если ты отбрасываешь наследование реализации, и наследуешь прямоугольник от квадрата, значит что то неправильно в этом термине.


Я вообще считаю, что в этой задачи предлагаемая тобой иерархия не нужна...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.