Поиск чистого [закрытого] объектно-ориентированного языка

Я думаю, что объектно-ориентированное программирование переоценено, однако я хочу изучить эту парадигму. Я пытался сделать это в PHP 5 и C++ с QT 4. К сожалению, я склонен программировать структурированным способом, я не использую большую часть наследования, ни нескольких экземпляров. Я думаю, что должен выучить чистый объектно-ориентированный язык, которые вынуждают меня использовать выше функций.

Я думаю, что наилучший вариант состоит в том, чтобы, вероятно, изучить Ruby. Вы могли подтвердить или назвать лучшую альтернативу?

Я работаю главным образом над x86-64 Linux.

17
задан Max Galkin 27 January 2010 в 16:32
поделиться

11 ответов

Объектно-ориентированное программирование не о синтаксисе. Это парадигма программирования.

Язык может заставить вас использовать объекты (если все является объектом, например, объектом), но Использование одного из этих языков не собирается «заставить» вы изучить объектно-ориентированные на объект Программирование .

Я не использую большую часть наследования, ни нескольких экземпляров

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

33
ответ дан 30 November 2019 в 09:57
поделиться

Если вы это сделаете, вы не сможете создать контейнеры STL Const PsoMeStruct, поскольку компилятор читает:

list<const pSomeStruct> structs;

как

list<SomeStruct * const> structs;

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

См. В этом вопрос .

-121--888360-

Попробуйте общую систему объекта Lisp (Black). Это не «чистый» Ооп, как SmallTalk, но иерархия типа в Lisp по крайней мере завершена (что больше, чем можно сказать для Java), а также большинство других языков, даже языков OO, не имеют общих методов, MultiDispatch, метод Комбинации, ESP: до,: после и: вокруг. ОБЪЕКТЫ ВРЕМЯ КЛАССА ИЛИ РИНИТИАЛИЗИЗАЮТ-ИНКЛЮЧЕНИЕ, ВСЕ КАК ПРЕДОСТАВЛЯЕТСЯ.

1
ответ дан 30 November 2019 в 09:57
поделиться

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

Учинение языка «чистого» оо даст вам ощущение . Как использовать функции oO, но, поскольку вы не будете вынуждены выбрать, какую парадигму использовать для любого данного куска кода, это не даст вам хорошего чувства , когда использовать их. Я думаю, что гораздо лучший способ выучить практическую ОО, в отличие от ОО как религию, состоит в том, чтобы выучить многопараметрический язык, такой как D, Python или Ruby (или палка с C ++ и PHP, хотя функции OO этих языков очень слоются На «), прочитайте на рисунках дизайна, чтобы понять« почему »OO, и постепенно пытаются интегрировать больше проектирования OO в свои программы, благодаря возможность сравнивать результаты к тому, что вы бы написали процедуру на одном языке. Версия OO часто будет лучше, но не всегда.

2
ответ дан 30 November 2019 в 09:57
поделиться

Проблема не является языком. Независимо от того, на каком языке вы используете язык, вы все равно можете кодировать все в одном классе или использовать методы уровня класса и в конечном итоге написание структурированного кода. В то время как чистый язык OO сделает его сложнее, я оценил множество студентов, которые пытаются обучить структурированные программирование в Java и C #.

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

6
ответ дан 30 November 2019 в 09:57
поделиться

Многие люди предлагают Smalltalk, поэтому я Буду другим и предложить Эйфелева . ;)

Хороший язык для изучения принципов OO включен, также имеет аккуратные вещи, такие как DBC (проектирование по договору).

7
ответ дан 30 November 2019 в 09:57
поделиться

Для чистого объекта ориентированный язык, посмотрите SmallTalk . Я читаю это в данный момент.

Надеюсь, это поможет.

9
ответ дан 30 November 2019 в 09:57
поделиться

Я должен был сделать это раньше (в .NET), и вам в основном придется разместить браузер, получить его, чтобы нажать кнопку, а затем опросить DOM (модель объекта документа) браузера, чтобы получить сгенерированный HTML.

Это, безусловно, один из недостатков веб-приложений, движущихся к подходу Ajax/Javascript к созданию HTML-клиента.

-121--1668955-

Для получения информации о чистом объектно-ориентированном языке см. Smalltalk . Я читаю это в данный момент.

Надеюсь, это поможет.

-121--2288450-

Если требуется чистый язык OO, попробуйте Smalltalk . Всё является объектом в Smalltalk. Это не так для Java, где примитивные типы (int, float) сами по себе не являются объектами.

Если это не должен быть «чистый» язык OO, Java является хорошим выбором, потому что он более массовый.

22
ответ дан 30 November 2019 в 09:57
поделиться

Попробуй Java или C# на Mono.

Обоснование:

  1. Я уважаю Smalltalk, и, конечно, нужно знать его понятия , чтобы лучше понимать ООП, но изучение самого языка является непрактичным IMHO.

  2. Хотя Java и C# могут и не быть "абсолютно чистыми" ООП (например, они включили в себя некоторые из функциональных подходов к программированию), по своей сути они основаны на ООП, они являются мейнстримовыми (таким образом, имеют гораздо более крупные сообщества), и их легче изучать, чем Smalltalk IMHO.

7
ответ дан 30 November 2019 в 09:57
поделиться

Я предлагаю Python. Он проходит «все объект => чистый язык OO» критерии, упомянутые несколькими другими для выбора SollTalk. Функции и даже нулевое значение Python ( Нет ) - все объекты.

Это больше oO, чем Java (Java INT и целое число ). И более важно, он очень популярен, чем SollTalk, поэтому вы, скорее всего, сможете получить помощь с ним.

Python также делает полиморфизм без наследства («набрав уток») и функциональное программирование, оба из которых становятся более распространенными в «основных» языках.

4
ответ дан 30 November 2019 в 09:57
поделиться

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

Мы используем возможности OO не потому, что они причудливые, а потому, что мы выигрываем время (включая, конечно, длительный период) с ними.

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

8
ответ дан 30 November 2019 в 09:57
поделиться
Другие вопросы по тегам:

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