Что предназначено ориентацией объекта “верного” термина

Попробуйте cd в папку iOS вашего каталога проектов флаттера и запустите

pod install
8
задан Avdi 30 October 2008 в 14:18
поделиться

8 ответов

Это - субъективный термин, использованный для продвижения языков. Я видел, что это раньше говорило, что C# и Java являются истинными объектно-ориентированными языками по сравнению с C++, потому что все должно быть в классе (никакие глобальные функции или переменные), и все объекты наследовались одному Классу объекта.

Для Ruby это может относиться к тому, как Ruby рассматривает все как объект, таким образом, Вы могли записать 1.to_s, вместо чего-то как str(1) или String.valueOf(1). Это вызвано тем, что Ruby не делает различия между значением и ссылочными переменными. В JavaScript нет никаких классов, и Вы просто создаете расширяемые объекты, которые могли быть клонированы для повторного использования, этот стиль программирования известен как Основанное на прототипе программирование.

C++, с другой стороны, рекламируется как язык мультипарадигмы, который позволяет Вам использовать несколько подходов, таких как объектно-ориентированное, универсальное и процедурное программирование. Это не придерживается одной парадигмы.

Но да, это - просто субъективный термин, который мог означать что-либо. Обычно это относится к тому, ставит ли язык больше акцента на объектах в противоположность другим элементам языка как функции, шаблоны, и т.д. статья Википедии о SmallTalk называет это 'чистым' объектно-ориентированным языком, и описание относится к Ruby также:

Smalltalk является 'чистым' языком OO, подразумевая что, в отличие от Java и C++, нет никакого различия между значениями, которые являются объектами и значениями, которые являются типами примитивов. В Smalltalk примитивные значения, такие как целые числа, булевские переменные и символы являются также объектами, в том смысле, что они - экземпляры соответствующих классов, и операции на них вызываются путем отправки сообщений. Программист может изменить классы, которые реализуют примитивные значения, так, чтобы новое поведение могло быть определено для их экземпляров - например, для реализации новых управляющих структур - или несмотря на это что их существующее поведение будет изменено. Этот факт кратко изложен в обычно слышимой фразе "В Smalltalk, все - объект" (который был бы более точно выражен, поскольку "все значения являются объектами", поскольку переменные не).

14
ответ дан 5 December 2019 в 08:01
поделиться

Проблема C++ следующая. Классы C++ существуют только в исходном синтаксисе. Нет никакого объекта класса среды выполнения с атрибутами и методами.

В Python все - объект. Класс объекта является другим объектом со своими собственными методами и атрибутами. Это верно для smalltalk среды, также, который является своего рода сравнительным тестом объектной ориентации.

Я думаю, что "истинная" объектная ориентация относится к тем средам, где все - объект.

[Java далек от этого, потому что он имеет типы примитивов.]

2
ответ дан 5 December 2019 в 08:01
поделиться

Я думаю, что это может относиться к основанному на прототипе Программированию, Парадигме программирования в который:

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

См. также одноэлементные методы Ruby.

2
ответ дан 5 December 2019 в 08:01
поделиться

"Истинный" или "Чистый" объектно-ориентированный язык обычно относится к языкам, на которых все - первоклассный объект включая типы примитивов. В C++ и Java, например, интервал типов примитивов, символ, и т.д. не является объектами. В Ruby, например, все - объект. Иногда дополнительные критерии подразумеваются с определением в зависимости от того, с кем Вы говорите.

1
ответ дан 5 December 2019 в 08:01
поделиться

Проблема C++ следующая. Классы C++ существуют только в исходном синтаксисе. Нет никакого объекта класса среды выполнения с атрибутами и методами.

Конечно, по тому правилу нет такой вещи как объектно-ориентированное программирование на стандартной архитектуре машины, так как нет никакого объекта класса среды выполнения с атрибутами и методами на уровне машинного кода. (Или, по крайней мере, нет за исключением специализированных архитектур как старая Система/38 или AS/400.)

То, что "объектно-ориентированный" означает, было улажено давно как являющийся тремя вещами: абстрактные типы данных, с наследованием и полиморфизмом. (Связанная статья Wikipedia путает свойства OO с преимуществами в некоторой степени. Но важное различие между OO и "основанными на объектах" системами.)

Обычно то, что "X не действительно объектно-ориентировано, в отличие от Y" действительно означает, "я пытаюсь продать Вам Y".

2
ответ дан 5 December 2019 в 08:01
поделиться

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

typedef struct foo_ {
    T1 (*getA)(foo * self);
    void (*setA)(foo * self, T1 a_);

/* private: */
    T1 a_;
} foo;

T1 foo_getA(foo * self) {
    return self->a_;
}

void foo_setA(foo * self, T1 a_) {
    self->a_ = a_;
}

foo * foo_create() {
    foo * f = malloc(sizeof(foo));
    f->getA = foo_getA;
    f->setA = foo_setA;
    return f;
}

void foo_destroy(foo * f) {
    free (f);
}

void doSomething(T1 a) {
    foo * f = foo_create();
    f->setA(f, a);
    foo_destroy(f);
}

Методы для реализации наследования и полиморфизма использовались долгое время. Один пример GObject платформа, используемая в качестве основания для gtk +.

Теперь, в то время как можно программировать объектно-ориентированным способом, C не поддерживает объектную ориентацию, но просто позволяет Вам моделировать ее до определенной степени. Таким образом, у Вас нет истинной объектной ориентации. Смотря на C++/Java/C#, у Вас есть поддержка всех этих видов вещей как наследование/скрытие данных и материал на собственном опыте.

1
ответ дан 5 December 2019 в 08:01
поделиться

Термин "истинная объектная ориентация" имеет то же значение как неукрашенный термин "объектная ориентация".

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

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

Объектная ориентация, как используется человеком, который выдумал фразу, кажется, включает следующие свойства:

  • Инкапсуляция (данные + поведение) в (объекты), связывающиеся с помощью одних только (сообщений).
  • Автоматическое восстановление памяти раньше представляло (возражает),
    когда упомянутый, больше (возражает) не ссылаются.
  • Задержанная привязка (значения) на (представление) объектов.
  • Отражение во время выполнения от (объекта) до (свойства объекта).

Практика и опыт преподавали,
равно как и необходимо, включение

  • Закрытия (иногда называемый "истинными закрытиями",
      значение (закрытий) в формальном смысле,
      и следование примеру закрытий в (шепелявости).
    )
0
ответ дан 5 December 2019 в 08:01
поделиться

Не уверенный в различии Вы после от обеспеченных примеров. Но я знаю, каково это не! Когда OO соединяется болтом на языке машинально, например, Perl OO.

-1
ответ дан 5 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: