LINUX.ORG.RU

Вопрос по ООП в CL

 , ,


0

3

Много раз слышал, что в CL очень мощная модель ООП. И вот, когда наконец дошли руки почитать об этом подробней, с удивением обнаружил, что в CL НЕ все есть объект. Тогда непонятно, что же в ней сильного? В смолтоке, джаваскрипте, ио, селфе и во многих других языках все есть объект. А в CL, получается, урезанная модель ООП, близкая к плюсовой? А как с этим, кстати, обстоят дела в схемах?

Ответ на: комментарий от anonymous

делегирование это один из способов реализации полиморфизма, наследование

Я, таки, где-то читал, что делегирование, таки, принято считать частным случаем наследования.

linux-101
() автор топика
Ответ на: комментарий от anonymous

наследование словарей объектов (прототипов), а не самих объектов, тогда уж.

Не согласен. Объект — это более широкая и абстрактная сущность, чем словарь.

linux-101
() автор топика
Ответ на: комментарий от anonymous

Вон настоящее, строгое, дисциплинированное, жесткое ООП для настоящих сильных, накаченных, мужественных мужчин:

без монад и единичного отображения в лямбдах низачод.

anonymous
()
Ответ на: комментарий от linux-101

потому и разделяй «объект в общем смысле» и конкретный подвид, реализацию.

например, прототипное как одна из реализаций ООП, «симула-67» (и С++/Java/C#/D/Delphi/...тысячи их...) — другое, смоллток — третье, CLOS (ILOS, Dylan, Goo, Nimrod, COS, ...тысячи их...) — четвёртое, тайпклассы зигохистоморфных препроморфизмов какой-то НЁХ в хаскелле — пятое, и т.п.

anonymous
()
Ответ на: комментарий от anonymous

потому и разделяй «объект в общем смысле» и конкретный подвид, реализацию (объект в смысле прототипного ООП)

anonymous
()
Ответ на: комментарий от anonymous

свой вариант

public static final int ONE = 1;
StringUtils.toString(ONE);

anonymous
()
Ответ на: комментарий от anonymous

Нет, я немного не об этом. Я о разделении реализации объекта и абстракции объекта. Так, например, мы вызываем object.property. Мы не знаем, и не должны знать, где находится property, в этом ли словаре, или в прототипе, или в прототипе прототипа, мы должны об этом забыть, а говорить именно то, что объект имеет свойство, и не важно, как он его получает. Если мы будем наследовать от этого объекта, мы унаследуем не поля словаря, а ИМЕННО объект, как абстрактную сущность. Мне кажется, Алан Кей именно это имел в виду, когда говорил о том, что в ООП надо фокусировать внимание не на объектах, а на сообщениях.

linux-101
() автор топика
Ответ на: комментарий от vurdalak

для не осиливших школу, поясняю:

int a, b = 8, c = 3;
a = b/c;

в результате, в а запишется 2, что неверно с т.з. математики

double a, b = 8, c = 3;
a = b/c;

в результате, в a запишется 2,666666666666666,

что также неверно с т.з. математики, ибо правильный ответ — (2 2/3), ну или, хотя бы 2,6(6) — такая запись означает «6 в периоде».

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

next_time ★★★★★
()
Ответ на: комментарий от next_time

в результате, в а запишется 2, что неверно с т.з. математики

С точки зрения математики это верно, потому что в данном случае / означает целочисленное деление.

vurdalak ★★★★★
()
Ответ на: комментарий от anonymous

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

next_time ★★★★★
()

Ну если тут кому-то ещё нужны ответы.

Да, в CL всё объект. Объектная система очень сильно встроена в язык и в систему типов. Даже значения базовых типов тоже объекты. Причём тип объекта можно узнать в рантайме, иначе реализация просто не узнает, как и какие операции с ним можно делать. Но это не значит, что от базовых типов можно унаследоваться.

anonymous
()

anonimous, привет

anonymous
()
Ответ на: комментарий от next_time

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

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Математика это наука, в ней нет чётко определённого набора операций.

если бы я ставил подписи к аккаунтам, это был бы как раз тот случай...

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

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

next_time ★★★★★
()

anonimous, ты вернулся под другим ником?

Aswed ★★★★★
()
Ответ на: комментарий от jtootf

Таким образом, результатами деления с остатком являются два целых числа: q называется неполным частным от деления, а r — остатком от деления.

next_time ★★★★★
()
Ответ на: комментарий от jtootf

и чем же она отличается от результата неопределённой операции?

всем! если хотите найти неполное частное, так и скажите. только это 2 операции уже. можете, если хотите, дать им своё определение и назвать хоть волком, хоть целочисленным делением.

next_time ★★★★★
()
Ответ на: комментарий от next_time

А, ну да,

$ diff -u <(echo "результат целочисленного деления") <(echo "неполное частное")
--- /dev/fd/63  2014-10-04 11:36:39.000000000 +0300
+++ /dev/fd/62  2014-10-04 11:36:39.000000000 +0300
@@ -1 +1 @@
-результат целочисленного деления
+неполное частное
совершенно отличаются!

ilammy ★★★
()

два петушка спорят о математике

лал

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.