Лучшее изучение направляет в Объектно-ориентированное программирование от C? [закрытый]

12
задан 2 revs, 2 users 96% 28 August 2013 в 14:32
поделиться

15 ответов

C ++ - это не только язык ООП. Это мультипарадигма (процедурная, ООП, функциональная, общая ...)

Так что, если вы хотите изучать только ООП, возможно, это не лучший выбор.

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

Подойдет любой язык, если вы выучите его по хорошей книге. Я изучил и C ++, и Java, начиная с книг Брюса Эккеля .

После того, как вы познакомитесь с некоторыми основами ООП, я предлагаю прочитать Объектно-ориентированное программирование с помощью ANSI-C . Это даст вам глубокое понимание того, как работают языки ООП, поскольку он реализует язык ООП из C.

1
ответ дан 2 December 2019 в 20:40
поделиться

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

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

-121--4055818-

Проверьте мой ответ на аналогичную проблему:

Поворот изображения в C/C + +

По существу, используйте cvWarpAffine - я описал, как получить матрицу преобразования 2x3 из угла в моем предыдущем ответе.

-121--1483344-

Я бы сказал, начните с Java. В руководстве Java содержится множество примеров, с которыми можно (следует) запускать и экспериментировать. Приходя к книгам, я бы сказал, что проверьте Head First Java и Head First Object Oriented Analysis and Design из серии Head First. После того, как вы намочите ноги Java и получите справедливое представление об объектно-ориентированных концепциях, вы неизбежно столкнетесь с узорами дизайна, и для которых книга Head First Design Patterns дает хорошее начало. Все это, я думаю, послужит хорошей базовой отправной точкой для вашего исследования объектно-ориентированного программирования.

1
ответ дан 2 December 2019 в 20:40
поделиться

Для ознакомления с Java я настоятельно рекомендую Head First Object Oriented Analysis and Design из превосходной серии "Head First" автора O «Рейли.

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

0
ответ дан 2 December 2019 в 20:40
поделиться

Я бы сказал, Java. Хорошая книга, которая помогла мне, - это эта.

-121--2835507-

Возможно, потребуется выполнить проверку на стороне сервера. Ознакомьтесь с этой статьей.

Решение проблем ASP.NET валидации

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

-121--4213375-

Я с другими комментаторами, в C++ это слишком легко проскочить обратно в C. Структурно Java и C # похожи на C, и основные языки почти идентичны друг другу. Как только вы научитесь думать, что OO, C++ придет гораздо легче.

-1
ответ дан 2 December 2019 в 20:40
поделиться

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

Многие из других студентов были профессионалами в области информационных технологий. Я завел несколько хороших знакомств. Увы, это было 18 лет назад, и я потерял связь почти со всеми из них.

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

0
ответ дан 2 December 2019 в 20:40
поделиться

Как уже упоминалось здесь, C ++ поддерживает более одной парадигмы программирования. Вероятно, наиболее заметным является смешивание классов и объектов вместе с «глобальными» функциями, что легко возможно в одном файле и в одном контексте.

Но, на мой взгляд, в C ++ достаточно парадигмы ООП, чтобы использовать этот язык для изучения ООП. Гораздо важнее иметь хорошее руководство по самому ООП. Такое руководство научит вас использовать объектно-ориентированные элементы в C ++, а также как и для каких целей, и ничего не расскажет о функциях в стиле C, которые вы также можете создать на C ++.

Чтобы решить, какой язык выбрать, я бы порекомендовал немного заглянуть в будущее, чем вы действительно хотите заниматься в программировании. Если это веб-разработка или разработка полнофункционального пользовательского интерфейса для настольных ПК, вы будете больше использовать Java или C #, это что-то более близкое к разработке системы, C ++ может быть лучшим выбором. ООП вы также можете изучать на C ++ и Java, C # или других языках.

Для меня это немного похоже на вопрос: «Я хочу научиться переводить тексты с моего родного языка на другие языки.Какой второй язык мне выучить? Исландский или суахили? »Для этого решения может быть важнее, ненавидите ли вы холодный или жаркий климат. (По крайней мере, я считаю это более важным, чем аргументы, которые некоторым лингвистам, вероятно, придется предпочесть одному из языков)

. Я думаю, это правда, что, например, C # заставит вас гораздо больше, чем C ++ писать код ООП, но он делает это только с точки зрения языка SYNTAX. Но ООП больше касается семантики и не зависит от языка. Нет семантической разницы между sin (0.5) (функция без контекста класса в C / C ++) и Math.Sin (0.5) (метод класса в C #). Если вы в конечном итоге используете C # для создания множества статических классов, что-то пошло не так с изучением ООП, хотя вы следуете (обязательно) объектно-ориентированному синтаксису.

Итак, мои два цента: попробуйте найти дополнительные цели программирования, которые у вас есть помимо изучения ООП, и добавьте эти цели к своему выбору для языка, в который вы хотите погрузиться. Только для изучения ООП C ++ в качестве примера язык подойдет, а какой-то другой язык s тоже.

Я должен добавить: я сказал это с «прагматической» точки зрения, исходя из предположения, что вы действительно хотите работать и создавать программное обеспечение на основе того, что вы узнали. Если у вас чисто научный, структурный интерес, мои аргументы могут оказаться неверными. Тогда, возможно, самый чистый из всех объектно-ориентированных языков (Smalltalk ?, возможно, не C ++) будет правильным выбором, независимо от того, кто на самом деле «говорит» на этом языке и с какой целью.

0
ответ дан 2 December 2019 в 20:40
поделиться

Я изучал ООП как на Ada95, так и на C ++, а также на простом C и Ada83. Я не думал, что так сложно изучить концепции ООП с C ++, потому что я уже был знаком с синтаксическими элементами и указателями.

Какова ваша цель? Чтобы стать хорошим разработчиком C ++ или просто понять ООП?

Если это последнее, то выберите язык, который вы понимаете, и переходите оттуда. Java, C # или даже C ++ были бы хорошим выбором. Если это первое, вам придется взять себя в руки и много узнать о C ++ и о том, как он работает под капотом. Чтобы стать хорошим разработчиком на C ++, нужно время и практика.

0
ответ дан 2 December 2019 в 20:40
поделиться

Даже если я думаю, что многие из этих критических замечаний в адрес C++ справедливы, в конце концов, Java и C# не так уж сильно расходятся с C++ в парадигме ООП, которая, несомненно, оказала огромное влияние на них обоих. Говорить, что вы будете неправильно изучать ООП, изучая C++ вместо Java, довольно глупо, поскольку их модели ООП чрезвычайно похожи.

А говорить о куче приемов, которые используют программисты на этом языке (программирование по шаблонам), и вести себя так, как будто это что-то, что вы должны использовать - глупо. Говорить, что вы можете "вернуться в C" - еще одна глупая причина - вы можете избежать ООП в ЛЮБОМ языке (например, в Java вы можете написать программу в рамках одного класса).

Хотите узнать одну из лучших причин изучать C++ вместо Java или C#? Существует гораздо больше интересных проектов на C++, чем на двух других языках. Это меняется со временем, но посмотрите на SourceForge, и кажется, что C и C++ все еще являются преобладающими языками для тех типов проектов, которые я нахожу интересными (игры, веб-браузеры и т.д.).

0
ответ дан 2 December 2019 в 20:40
поделиться
2
ответ дан 2 December 2019 в 20:40
поделиться

Я бы предложил C # . Синтаксис похож, но достаточно отличается, чтобы вы не вернулись к старым привычкам C. В C ++ я всегда обнаруживал, что пишу C, иногда добавляя туда объект.

3
ответ дан 2 December 2019 в 20:40
поделиться

Изучите C ++ только в том случае, если вы хотите работать над ним, над проектами, которые его используют, на рабочих местах, поддерживающих код C ++ (который будет существовать в течение многих лет). C ++ - далеко не мертвый язык.

Но в наши дни его, вероятно, следует считать нишевым языком для тех, кто начинает новый проект и делает что-то вроде веб-приложения, богатого клиентского графического интерфейса и т. Д. Для большинства типичных приложений C ++ был бы провальным выбором, например, намеренно усложняя себе задачу.

Но если вам нравится настоящий вызов, дерзайте.

Я гораздо больше отвечу на похожие темы:

0
ответ дан 2 December 2019 в 20:40
поделиться

Фундаментальная идея C ++ состоит в повторном использовании синтаксических идиом C путем применения к ним семантики ООП. Это приводит к объектам «в стеке», использованию ++ для итераторов и так далее. Синтаксис C был разработан в основном для простоты реализации компилятора C, а не для ООП, и в результате C ++ является довольно сложным языком и плохо подходит для обучения.

Java и C # намного проще изучить, но при этом все еще придерживаются основанного на классах подхода ООП, который использует C ++. Java немного проще, чем C #, потому что разработчики C # знали Java и решили использовать аналогичный синтаксис с кучей дополнительных синтаксических преимуществ. Эти преимущества делают синтаксис C # немного более сложным, а значит, менее подходящим для изучения.

Существует еще один структурный подход ООП - Smalltalk. «Современный» и широко используемый язык, использующий этот подход, - это Javascript. Вы можете попробовать это. Javascript - это круто, потому что вам нужен только веб-браузер, чтобы попробовать его, и через браузер он имеет доступ к богатой графической среде. В том же семействе вы можете попробовать Lua , который считается простым и довольно популярным.

2
ответ дан 2 December 2019 в 20:40
поделиться

Да. Если ваше намерение - «глубокое и глубокое понимание современного языка ООП», выберите современный язык ООП. C # определенно соответствует «современному» уровню и гордится тем, что является ООП. Что-то вроде Smalltalk было бы языком ООП , но он менее современный. Вы всегда можете узнать и то, и другое.

Что касается C ++, то это вряд ли язык ООП. Есть много веских и веских причин изучать C ++, но не в том случае, если вас интересует только ООП.

Сегодня C ++ характеризуется не ООП, а такими функциями, как универсальное программирование и в некоторой степени вдохновлено функциональными языками.

Из C ++ можно извлечь много полезных уроков.Вот некоторые из них:

  • несколько очень хороших методов управления временем жизни ресурсов, которым «современные» языки, такие как C # и Java, могут многому научиться из
  • общей парадигмы программирования и степени, в которой она может полностью сделать ООП бессмысленно. Сама идея думать о типах с точки зрения характеристик и концепций, а не того, какой интерфейс они реализуют, и предпочтение действительно многократно используемых функций, не являющихся членами, интересна тем, кто все еще считает ООП святым Граалем программирования.

Если вы спрашиваете, следует ли вам изучать C ++, я отвечу утвердительно (наряду с 5-8 другими языками. C ++ никоим образом не является "особенным". Это один из многих языков, изучение которых может быть полезно для программистов) .

Если вы спрашиваете, станет ли C ++ хорошим введением в ООП, я бы сказал НЕТ . Именно поэтому этому стоит научиться.

3
ответ дан 2 December 2019 в 20:40
поделиться

Я бы сказал Java. Хорошая книга, которая мне помогла - вот эта.

0
ответ дан 2 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

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