|
|
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNкакая ф-я принимающая целые числа не может принимать ноль?деление? ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 15:23 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudioZyK_BotaNrstudio Нужно ему предложить класс Ноль пронаследовать от класса ЦелыеЧисла, а потом сидеть и удивляться, а как это не все методы можно применить к классу Ноль, многие не имеют из них смысла какая ф-я принимающая целые числа не может принимать ноль? а какая ф-я принимающая прямоугольник не может принимать квадрат ? вот и я о том же. мой вопрос возник в связи с этой фразой : rstudioа потом сидеть и удивляться, а как это не все методы можно применить к классу Ноль, многие не имеют из них смысла и "прямоугольник с квадратом" здесь не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 17:32 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudioZyK_BotaNrstudio Нужно ему предложить класс Ноль пронаследовать от класса ЦелыеЧисла, а потом сидеть и удивляться, а как это не все методы можно применить к классу Ноль, многие не имеют из них смысла какая ф-я принимающая целые числа не может принимать ноль? а какая ф-я принимающая прямоугольник не может принимать квадрат ? для юмористов Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 18:25 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
egorychZyK_BotaNкакая ф-я принимающая целые числа не может принимать ноль?деление? ;-)) в случае целых все будет ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 18:38 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNв случае целых все будет ок?если в качестве делимого будет не ноль? - конечно. А что, есть сомнения в этом? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 18:53 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingizrstudioZyK_BotaNrstudio Нужно ему предложить класс Ноль пронаследовать от класса ЦелыеЧисла, а потом сидеть и удивляться, а как это не все методы можно применить к классу Ноль, многие не имеют из них смысла какая ф-я принимающая целые числа не может принимать ноль? а какая ф-я принимающая прямоугольник не может принимать квадрат ? для юмористов Код: plaintext 1. 2. 3. 4. 5. Опять у когото потеют ладошки пронаследовать квадрат от прямоугольника. Я же выше сказал что прямоугольник не может быть базовым классом для квадрата. Что же он делает в параметрах твоей функции ? Там должен торчать нормальный базовый класс. вот так вот другое дело Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 19:41 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
Но вообще проблемы ООП прекрасно понимаю вот здесь я несколько раскрываю свое виденье проблем. Классы это нечто что должно "лепиться" к данным опираясь на свойства данных. Тоесть одна группа данных может мигрировать от одного класса к другому. В RS я это уже реализовываю. Мои классы это динамические группы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 19:47 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNtchingizкстати, императивную часть и параметризацию схем в рсл не зачем читать для аксиом. ZyK_BotaN так мы с функциональным стилем покончили? или так написать наследование прямоугольников из квадратов? покончили, и наследования не надо. меня интересует альтернативное решение(ф-му решению с наследованием), решение проблемы с выполнением контракта, что у прямоугольника, передаваемого в качестве параметра, все стороны равны. вот аксиоматика для обоих типов. http://www.sql.ru/forum/actualthread.aspx?tid=756625&pg=-1#9543464 аксиома из версии Ректангле Код: plaintext 1. 2. 3. чтобы не задал в высоте, взятие ширины работает одинаково. аксиома из версии Сквере Код: plaintext 1. 2. Взять ширину вернет заданную высоту. эти две аксиомы не совместимы в принципе -- То есть, записав их вместе, получаем следующую аксиому: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. Возьмем в $UReal$ значение $w$, причем $w != h$, после этого, используя аксиому $gw\_sw$, из любого $f$, у которого ширина была задана равной $w$, то есть, равного $SetWidth(f1, w)$ извлечем это $w$ Код: plaintext 1. выполняться вместе. Отсюда следует, что нет никакой возможности в принципе считать $Square$ подтипом $Rectangle$. Так же как нельзя считать $Rectangle$ подтипом $Square$. Можно считать их 'братьями', являющимися подтипом некоторого неполного, неоднозначного типа. --------- раз под subtyping - выделение типа понимается добавление аксиомы в спецификацию, то выбрасывание аксиомы из спецификации - это создание надтипа. выбросив из спецификации противоречивые аксиомы получим тип Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. вот к нему можно преобразовывать и объекты Ректангла и объекты Сквере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 20:24 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudiotchingizrstudioZyK_BotaNrstudio Нужно ему предложить класс Ноль пронаследовать от класса ЦелыеЧисла, а потом сидеть и удивляться, а как это не все методы можно применить к классу Ноль, многие не имеют из них смысла какая ф-я принимающая целые числа не может принимать ноль? а какая ф-я принимающая прямоугольник не может принимать квадрат ? для юмористов Код: plaintext 1. 2. 3. 4. 5. Опять у когото потеют ладошки пронаследовать квадрат от прямоугольника. Я же выше сказал что прямоугольник не может быть базовым классом для квадрата. Что же он делает в параметрах твоей функции ? Там должен торчать нормальный базовый класс. вот так вот другое дело Код: plaintext 1. 2. 3. 0) это был ответ на твой вопрос, какая функция не может принять. Вот приведенная и не может принять. 1) дла особо наблюдательных - может быть базовым классом , ибо есть программа на с++ которая его так наследует. 2) о нежелательности такой программы, лет 15 уже как сообщил Роберт Мартин и это было до того, как ты сказал Более того, многие прочитали его мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 20:30 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
egorychZyK_BotaNв случае целых все будет ок?если в качестве делимого будет не ноль? - конечно. А что, есть сомнения в этом? )) к чему тогда было замечание про деление? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 20:38 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudio Опять у когото потеют ладошки пронаследовать квадрат от прямоугольника. Я же выше сказал что прямоугольник не может быть базовым классом для квадрата. Что же он делает в параметрах твоей функции ? Там должен торчать нормальный базовый класс. вот так вот другое дело Код: plaintext 1. 2. 3. 1 так вот такая функция, принимающая квадрат, не будет принимать прямоугольник при динамическом связывании Код: plaintext 1. 2. 3. 4. 5. во вторых, при наследовании Ректангла от Сквере, просто нельзя подставлять большую часть объектов от ребенка в переменные от родителя, ибо у них изначально нарушен инвариант с равенством сторон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 20:42 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingiz 0) это был ответ на твой вопрос, какая функция не может принять. Вот приведенная и не может принять. Как же не может если может, чингиз, я тебя не узнаю. Если на вход подадут ректенгл с одинаковыми сторонами, она что бросит эксепшин и свернется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 20:58 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingiz 1 так вот такая функция, принимающая квадрат, не будет принимать прямоугольник при динамическом связывании Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Разделяй что относится к квадрату, а что к ректенглу. У базового класса квадрат может быть определен только r.SetWidth(5). У ректенгла пронаследованого может быть определен еще r.SetHeight(4);. У куба SetLength и тд. Функционал наращиваем а не шпаклюем унивесальный базовый класс а у потомков только его подрезаем. [src] 2 во вторых, при наследовании Ректангла от Сквере, просто нельзя подставлять большую часть объектов от ребенка в переменные от родителя, ибо у них изначально нарушен инвариант с равенством сторон Открой для себя виртуальные функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 21:06 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
с тегами чтото поломалось, вот сообщение Слушай, если ты так будешь писать квадраты они у тебя будут падать без всякого наследования и ректенглов [src]Square& r = new Square(); r.SetWidth(5); r.SetHeight(4); Разделяй что относится к квадрату, а что к ректенглу. У базового класса квадрат может быть определен только r.SetWidth(5). У ректенгла пронаследованого может быть определен еще r.SetHeight(4);. У куба SetLength и тд. Функционал наращиваем а не шпаклюем унивесальный базовый класс а у потомков только его подрезаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 21:07 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
Если бы ты читал, не только то, что ты пишешь, то уже знал бы, что квадраты и прямоугольники уже написаны Мартином. Обсуждаются трудности наследования на примере тех, которые уже написаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 21:16 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
авторУ базового класса квадрат может быть определен только r.SetWidth(5). У ректенгла пронаследованого может быть определен еще r.SetHeight(4); угу. а у целых можно определить только сложение, а у пронаследованных вещественных уже умножение ибо автор"Функционал наращиваем, а не шпаклюем унивесальный базовый класс а у потомков только его подрезаем" пысы это был сарказм, если что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 21:22 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingizЕсли бы ты читал, не только то, что ты пишешь, то уже знал бы, что квадраты и прямоугольники уже написаны Мартином. Обсуждаются трудности наследования на примере тех, которые уже написаны. чтото я не понял, кто-то коряво написал а вы тут обсуждаете что с этим делать ? Понятное дело - переписывать по нормальному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2010, 21:46 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudiotchingizЕсли бы ты читал, не только то, что ты пишешь, то уже знал бы, что квадраты и прямоугольники уже написаны Мартином. Обсуждаются трудности наследования на примере тех, которые уже написаны. чтото я не понял, кто-то коряво написал а вы тут обсуждаете что с этим делать ? Понятное дело - переписывать по нормальному.начальный топик прочитай, в первом сообщении есть ссылка, а то выглядишь сейчас глуповато ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 02:16 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNк чему тогда было замечание про деление?там специально было отцитировано, к чему. Функция, принимающая целые, но не принимающая ноль - это деление. Что именно осталось не понятым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 02:18 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
rstudio Граждане а как это у вас квадрат наследовал прямоугольник. Сам по себе класс прямоугольника прекрасно выполняет функции квадрата. Наследование обычно идет в сторону расширения возможностей, тоесть прямоугольник может расширить квадрат. оффтопик Если отвлечься от обсуждаемого примера, и на секундочку глянуть в начало ооп, то можно вспомнить, что пытались добиться того, что множество объекта класса ребенка входило бы подмножеством в множество объектов класса родителя. ссылка на лекцию Мейера, где он наследовал квадраты от прямоугольников http://www.intuit.ru/department/se/oopbases/14/1.html и картинка (если кто читать не может) наследовать квадраты от прямоугольников это теоретически правильно. А наоборот - нет, ибо прямоугольники не входят подмножеством во множество квадратов. Только сумашедший начнет наследовать прямоугольники от квадратов. (равно как и рациональные от целых ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 03:58 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingizнаследовать квадраты от прямоугольников это теоретически правильно. А наоборот - нет,ибо прямоугольники не входят подмножеством во множество квадратов. Только сумашедший начнет наследовать прямоугольники от квадратов. (равно как и рациональные от целых ) Не согласен.И Мейер об это не писал. Наследовать прямоугольник от квадрата можно, Наследовать рациональные от целых можно. И то и то ослабляет инвариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 08:29 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
tchingiz наследовать квадраты от прямоугольников это теоретически правильно. А наоборот - нет, ибо прямоугольники не входят подмножеством во множество квадратов. Только сумашедший начнет наследовать прямоугольники от квадратов. (равно как и рациональные от целых ) Я чето не понял твой репертуар чингиз. Ты говоришь что в теории от прямоугольника можно пронаследовать квадрат, очевидно руководствуясь этой логикой от квадрата по логике пронаследуешь линию, а от линии точку ?Где такое пишут, дай почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 12:46 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
От прамоугольника можно наследоваться квадрату: углы прямые. В качестве расширения добавляется ещё и свойство равенства сторон. Но не наоборот. Квадрат - по определению прамоугольник с равными сторонами. При чём здесь линия, у которой даже углов нет, не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 12:57 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
ShSergeОт прамоугольника можно наследоваться квадрату: углы прямые. В качестве расширения добавляется ещё и свойство равенства сторон. а ничо что тогда класс ректенгл у тебя будет абстрактным ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 13:02 |
|
||
|
Re: Выгоды контрактного программирования (design by contract) квадратосрач2 +
|
|||
|---|---|---|---|
|
#18+
Siemargltchingizнаследовать квадраты от прямоугольников это теоретически правильно. А наоборот - нет,ибо прямоугольники не входят подмножеством во множество квадратов. Только сумашедший начнет наследовать прямоугольники от квадратов. (равно как и рациональные от целых ) Не согласен.И Мейер об это не писал. Наследовать прямоугольник от квадрата можно, Наследовать рациональные от целых можно. И то и то ослабляет инвариант. в этом и проблема, что расслабляет, а должно быть наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2010, 15:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36938418&tid=1341820]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 480ms |

| 0 / 0 |
