LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое перекрытый-виртуальный да
  возврат 1
кнм

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть q -- да-нет = (: Экземпляр.М() == 0 :)
  печать q
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния

2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20.

3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не значит, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что принцип Лисков не соответствует практике применения ООП.

Исправление den73, :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое виртуальный да
  возврат 1
кнм

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть q -- да-нет = (: Экземпляр.М() == 0 :)
  печать q
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния

2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20.

3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не значит, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что принцип Лисков не соответствует практике применения ООП.

Исправление den73, :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое виртуальный да
  возврат 1
кнм

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть q -- да-нет = (: Экземпляр.М() == 0 :)
  печать q
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния

2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20.

3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не знает, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что принцип Лисков не соответствует практике применения ООП.

Исправление den73, :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое виртуальный да
  возврат 1
кнм

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть q -- да-нет = (: Экземпляр.М() == 0 :)
  печать q
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния 2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20. 3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не знает, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что принцип Лисков не соответствует практике применения ООП.

Исправление den73, :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое виртуальный да
  возврат 1
кнм

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть q -- да-нет = (: Экземпляр.М() == 0 :)
  печать q
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния 2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20. 3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не знает, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что это не соответствует практике применения ООП.

Исходная версия den73, :

Вот именно «подстановка тела» и делает определение q(x) бесполезным.

На самом деле первоисточник вот Я неоднозначно написал, исправляюсь. В Яре нет ООП, но я напишу, как будто оно есть:

о.класс Родитель ()
  метод М() -- целое виртуальный да
кнк
  
о.класс Ребёнок (Родитель)
  метод М() -- целое перекрытый-виртуальный да
кнк

о.метод Родитель.М() -- целое виртуальный да
  возврат 0
кнм

о.метод Ребёнок.М() -- целое виртуальный да
  возврат 1
кнм

о.функ q(икс) // наше свойство
  возврат икс.М()
кнф

выполнить-при-загрузке
  пусть Экземпляр = н.Родитель; // или н.Ребёнок
  пусть Выполняется-ли -- да-нет = (: q(Экземпляр) == 0 :)
  печать Выполняется-ли
кнв
Свойство q(x) - «метод М объекта x возвращает 0». Я даже не буду тебя спрашивать, релевантно ли это, я процитирую первоисточник, стр. 16:

First, properties of an object's behavior in a particular program must be preserved: to ensure that a program continues to work as expected, calls of methods made in the program that assume the object belongs to a supertype must have the same behavior when the object actually belongs to a subtype.

Теорию про инварианты и констрейнты я не читал, но в статье рассмотрено три примера «правильного» создания подтипа:

1. Добавление методов без добавления состояния 2. Сужение типа, т.е. вместо стека рассматривается стек глубиной 20. 3. Виртуальный базовый класс, у которого нет собственного поведения.

Т.е., типичная ситуация, когда Widget превращается в WidgetWithFrame путём наследования, скорее всего, не соответствует принципу Лисков.

Я теперь уже не так уверен, потому что понял, что в Википедии принцип сформулирован вне соответствия с первоисточником. В первоисточнике понятие о q сужено. Но это не знает, что ты (автор класса) можешь выбирать q. Множество возможных q автоматически следует из выбранного языка программирования и определения базового класса.

И так скажем, на 95% я уверен, что это не соответствует практике применения ООП.