2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
 Re: Свойства и их абстракции.
Сообщение09.12.2010, 13:55 
Заслуженный участник
Аватара пользователя


06/10/08
6422
kolas в сообщении #385260 писал(а):
А что такое здравый смысл?
Здравый смысл в данном случае - естественное математическое включение множества квадратов в множество прямоугольников.
kolas в сообщении #385260 писал(а):
правило подстановки Лискоу, который говорит, что потомок не должен расширять контракт абстракции, а лишь его реализовывать
Проблема в том, что реализация с модифицирующими методами в данном случае затруднительна.
kolas в сообщении #385260 писал(а):
Это реализуется с помощью делегатов и событий, довольно специфический прием, но и довольно распространенный. Можно вместо него использовать паттерн - шаблонный метод. Вообще странный Вы выбрали термин - двойное наследование, я сначала его понял как множественное наследование, но ниже был описан именно шаблонный метод.
Да, перепутал термин. Это называлось "обратное наследование" в той статье, что я читал. Понятно, что есть паттерны, без паттернов не обойтись в такой ситуации.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение09.12.2010, 14:30 


18/11/10
381
Мюнхен
Xaositect в сообщении #385278 писал(а):
Здравый смысл в данном случае

Да, все правильно, но бывают и более запутанные случаи, по этому и придумали как из них выпутываться.
Паттерны конечно полезно знать, это, так сказать, поваренная книга разработчика.

И все же ооп, как мне кажется, хороший кандидат в методы формализации физики, можете меня пинать, просто его надо еще понять до конца, в принципе он наследует логику.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение09.12.2010, 15:10 
Заслуженный участник


27/04/09
28128
Определите "метод формализации". Что вы под этим понимаете?

-- Чт дек 09, 2010 18:18:40 --

kolas в сообщении #385294 писал(а):
наследует логику
И вот это определите тоже.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение09.12.2010, 15:55 
Заслуженный участник


09/09/10
3729
kolas в сообщении #385294 писал(а):
в принципе он наследует логику.

Т.е. кое-где он от логики отходит?

Xaositect
Кстати, к таким же выводам пришли и Дейт с Дарвеном (одни из ведущих теоретиков по реляционной модели данных), когда разбирались с тем, как объектно-реляционные БД соотносятся с чисто реляционными. В результате появилась такая вот статья по модели наследования: Towards an Agreeable Model of Type Inheritance (Названо "Type Inheritance" потому, что они предпочитают всегда явно различать типы, значения и переменные, что, на мой взгляд, стоит бы делать и апологетам ООП).

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение09.12.2010, 18:16 
Заслуженный участник
Аватара пользователя


30/01/06
72407
kolas в сообщении #385197 писал(а):
А пока в физике существуют титаны, которые и двигают ее в перед, а метода как такового нет.

Предлагаю данного участника забанить за лженауку.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 08:45 


18/11/10
381
Мюнхен
Munin в сообщении #385376 писал(а):
Предлагаю данного участника забанить за лженауку.

Поддерживаю, но это не лженаука! Повторяю, Munin, поберегите свои нервные клетки, не вникайте в топики и не вмешивайтесь, если не считаете это нужным, Вас кто-то заставляет?

Joker_vD в сообщении #385318 писал(а):
Т.е. кое-где он от логики отходит?

Это одна из реализаций логики.

Joker_vD в сообщении #385318 писал(а):
как объектно-реляционные БД соотносятся с чисто реляционными


Очень хорошо относятся и сейчас везде используются, так называемые ORM движки, типа hibernate, entity framework и куча других. Мы немного склонны думать что ооп это язык, платформа, программа, база данных и т.д. На самом деле это не так, ооп это метод, мы можем на любом языке спроектировать систему методами ооп, ооп применяется не только в компьютерных программах, но и при проектировании кораблей, машин, ракет, электроники и др. Один из примеров методов ооп - классификация типов в биологии.

arseniiv в сообщении #385309 писал(а):
Определите "метод формализации". Что вы под этим понимаете?


Я под этим понимаю формальную запись физических законов и принципов, на ооп языке это будут диаграмма классов физических свойств объектов и обобщения этих свойств (абстракций).

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 10:40 
Заслуженный участник
Аватара пользователя


06/10/08
6422
kolas в сообщении #385629 писал(а):
Joker_vD в сообщении #385318 писал(а):
как объектно-реляционные БД соотносятся с чисто реляционными


Очень хорошо относятся и сейчас везде используются, так называемые ORM движки, типа hibernate, entity framework и куча других. Мы немного склонны думать что ооп это язык, платформа, программа, база данных и т.д. На самом деле это не так, ооп это метод, мы можем на любом языке спроектировать систему методами ооп, ооп применяется не только в компьютерных программах, но и при проектировании кораблей, машин, ракет, электроники и др. Один из примеров методов ооп - классификация типов в биологии.
Вы статью-то прочитали? Она не про ORM (способ работы с реляционными базами с использованием ОО-парадигмы), она про ORD (системы баз данных с поддержкой объектов). И даже не про ORD, а про то, каким должна быть хорошая система типов для ORD. И Дэйт-Дарвен говорят, что принцип подстановки не должен выполняться для переменных (т.е. в случае изменения объектов, напр. присваивания и модифицирующих методов: мы можем изменить горизонтальную ось у эллипса, но не можем этого сделать у круга, несмотря на то, что он отнаследован.)

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 11:55 


18/11/10
381
Мюнхен
Xaositect в сообщении #385650 писал(а):
мы можем изменить горизонтальную ось у эллипса, но не можем этого сделать у круга, несмотря на то, что он отнаследован.

Это называется полиморфизмом.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 12:04 
Заслуженный участник
Аватара пользователя


06/10/08
6422
kolas в сообщении #385661 писал(а):
Это называется полиморфизмом.
Нет, это не называется полиморфизмом. Полиморфизм - это когда мы можем делать одни и те же вещи, не оглядываясь на конкретные типы значений, с которыми мы работаем. А то, о чем я говорю - это как раз ограничение subtype polymorphism'а. Мы не можем растянуть круг вдоль оси $x$, если у нас нет возможности изменить тип его на эллипс. Надо создавать новый объект.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 12:34 


18/11/10
381
Мюнхен
Xaositect в сообщении #385666 писал(а):
Нет, это не называется полиморфизмом. Полиморфизм - это когда мы можем делать одни и те же вещи, не оглядываясь на конкретные типы значений, с которыми мы работаем. А то, о чем я говорю - это как раз ограничение subtype polymorphism'а. Мы не можем растянуть круг вдоль оси $x$, если у нас нет возможности изменить тип его на эллипс. Надо создавать новый объект.

Это обыкновенный полиморфизм, у эллипса есть длина и высота, мы их меняем, эллипс меняется как мы задумали. Теперь с помощью полиморфизма мы переопределяем в круге сеттер высота, и меняем там и высоту и длину на одно и тоже значение, тоже самое делаем с сеттером длина. Теперь чтобы мы у круга не меняли высоту или длину, они будут меняться синхронно. Но если мы сделаем кастинг круга в эллипс, то сеттеры - высота и длина будут взяты из класса эллипса.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 13:14 
Заслуженный участник
Аватара пользователя


06/10/08
6422
В этом-то вся проблема, что если нужно растянуть круг, а не увеличить, то его нужно кастить к эллипсу. То есть нужно в программе явно различать круг как круг и круг как эллипс. А это как раз отход от полиморфизма.
Т.е., наследование, соответствующие отношению "тип A есть подмножество типа B с некоторым ограничением на значения его полей" (в нашем случае полуоси эллипса равны), несовместимо с тем, что мы можем менять поля независимо.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 13:19 
Заслуженный участник


09/09/10
3729
kolas в сообщении #385629 писал(а):
Это одна из реализаций логики.

Я, увы, матлогику строго не изучал, поэтому не знаю — может, "реализация логики" и не является бессмысленным словосочетанием...

kolas в сообщении #385676 писал(а):
Но если мы сделаем кастинг круга в эллипс, то сеттеры - высота и длина будут взяты из класса эллипса.

То есть мы-таки сможем сделать некруглый круг. Здорово, правда? Вот только в унаследованном круге нету ни сеттера высоты, ни сеттера длины, только сеттер радиуса. Это идея — по умолчанию сеттеры не наследуются — в статье выражена не очень ярко.

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

Xaositect в сообщении #385685 писал(а):
В этом-то вся проблема, что если нужно растянуть круг, а не увеличить, то его нужно кастить к эллипсу. То есть нужно в программе явно различать круг как круг и круг как эллипс. А это как раз отход от полиморфизма.

Операция растяжения к переменной-кругу не применима... если, конечно, это не функция, берущая значение-эллипс и возвращающая значение-эллипс.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 13:24 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Joker_vD в сообщении #385689 писал(а):
Операция растяжения к переменной-кругу не применима... если, конечно, это не функция, берущая значение-эллипс и возвращающая значение-эллипс.
Вот и я о том же. И Дэйт с Дарвеном то же самое говорят. Надо либо разрешить кругу превращаться в эллипс в runtime, либо не наследовать такие операции.

-- Пт дек 10, 2010 13:25:36 --

Joker_vD в сообщении #385689 писал(а):
Я, увы, матлогику строго не изучал, поэтому не знаю — может, "реализация логики" и не является бессмысленным словосочетанием...
Я не думаю, что оно здесь в какой-то связи с матлогикой употреблено. В матлогике такого термина нет.

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 13:33 


18/11/10
381
Мюнхен
Xaositect в сообщении #385685 писал(а):
В этом-то вся проблема, что если нужно растянуть круг, а не увеличить, то его нужно кастить к эллипсу.

А в чем проблема? Если мы растянем круг, он перестанет быть кругом, и это явно нужно описать, никакой магии.
Xaositect в сообщении #385685 писал(а):
тип A есть подмножество типа B с некоторым ограничением на значения его полей

Не обязательно ограничение, это может быть реализация абстрактных свойств, либо переопределение этих свойств, в нашем случае переопределение было в ограничении степеней свободы свойств. Никакого отхода от полиморфизма, а прямое использование.
Joker_vD в сообщении #385689 писал(а):
То есть мы-таки сможем сделать некруглый круг. Здорово, правда? Вот только в унаследованном круге нету ни сеттера высоты, ни сеттера длины, только сеттер радиуса.

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

 Профиль  
                  
 
 Re: Свойства и их абстракции.
Сообщение10.12.2010, 13:38 
Заслуженный участник
Аватара пользователя


06/10/08
6422
kolas в сообщении #385697 писал(а):
А в чем проблема? Если мы растянем круг, он перестанет быть кругом, и это явно нужно описать, никакой магии.
Правильно, но если у эллипса был такой метод, и он отнаследуется, то он будет неправильно работать у круга: либо нарушать семантику круга(полуоси равны), либо нарушать subtyping (у круга как круга и того же круга как эллипса будет работать по-разному)

-- Пт дек 10, 2010 13:39:55 --

Это конкретная проблема, связанная с конкретным видом наследования, который я описал: "тип A есть подмножество типа B с некоторым ограничением на значения его полей". В других случаях все может быть хорошо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 114 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group