C ++ - это не только язык ООП. Это мультипарадигма (процедурная, ООП, функциональная, общая ...)
Так что, если вы хотите изучать только ООП, возможно, это не лучший выбор.
Подойдет любой язык, если вы выучите его по хорошей книге. Я изучил и C ++, и Java, начиная с книг Брюса Эккеля .
После того, как вы познакомитесь с некоторыми основами ООП, я предлагаю прочитать Объектно-ориентированное программирование с помощью ANSI-C . Это даст вам глубокое понимание того, как работают языки ООП, поскольку он реализует язык ООП из C.
Это очень похоже на бронирование билетов в театр или подобное онлайн, и да, как вы описываете, это, как правило, то, как это работает. В какой-то момент предмет «зарезервирован» в системе и либо клиент завершает транзакцию, либо предмет деблокируется через некоторое время для покупки другими.
Конечно, в какой пункт вы резервируете предмет (когда он добавляется в корзину, когда вы отправляете его для оплаты и т.д.) зависит от вас. Я ожидаю, что положить его в корзину будет лучшим выбором, поскольку это делает его менее вероятным, что кто-то создаст корзину вещей только для того, чтобы найти половину из нее, которая больше не доступна при оформлении заказа.
-121--4055818-Проверьте мой ответ на аналогичную проблему:
По существу, используйте cvWarpAffine - я описал, как получить матрицу преобразования 2x3 из угла в моем предыдущем ответе.
-121--1483344-Я бы сказал, начните с Java. В руководстве Java содержится множество примеров, с которыми можно (следует) запускать и экспериментировать. Приходя к книгам, я бы сказал, что проверьте Head First Java и Head First Object Oriented Analysis and Design из серии Head First. После того, как вы намочите ноги Java и получите справедливое представление об объектно-ориентированных концепциях, вы неизбежно столкнетесь с узорами дизайна, и для которых книга Head First Design Patterns дает хорошее начало. Все это, я думаю, послужит хорошей базовой отправной точкой для вашего исследования объектно-ориентированного программирования.
Для ознакомления с Java я настоятельно рекомендую Head First Object Oriented Analysis and Design из превосходной серии "Head First" автора O «Рейли.
Я нашел книгу очень доступной и легкой для понимания, независимо от того, откуда вы идете. Хотя в книге используется Java, концепции ООП, обсуждаемые в книге, применимы к любому языку ООП.
Я бы сказал, Java. Хорошая книга, которая помогла мне, - это эта.
-121--2835507-Возможно, потребуется выполнить проверку на стороне сервера. Ознакомьтесь с этой статьей.
Решение проблем ASP.NET валидации
Также существует несколько хороших онлайн-инструментов для создания или интерпретации выражений Regex. но я подозреваю, что проблема не в выражении.
-121--4213375-Я с другими комментаторами, в C++ это слишком легко проскочить обратно в C. Структурно Java и C # похожи на C, и основные языки почти идентичны друг другу. Как только вы научитесь думать, что OO, C++ придет гораздо легче.
После года чтения книг и самостоятельных пробных примеров я сломался и пошел на курс "Объектно-ориентированное программирование на Java" в местном общественном колледже. Я смог учиться в классной комнате там, где не смог самостоятельно. (Это необычно для меня - мне удалось самостоятельно освоить множество технологий). Я думаю, что обстановка в классе с реальным преподавателем, который мог все объяснить, другими студентами, с которыми можно было все обсудить, и небольшими, но полезными заданиями и классными проектами для отработки только что выученного материала - это хорошая комбинация.
Многие из других студентов были профессионалами в области информационных технологий. Я завел несколько хороших знакомств. Увы, это было 18 лет назад, и я потерял связь почти со всеми из них.
Недостаток - это стоило денег, но это было доступно, и когда через год меня сократили, я смог найти работу программиста на Java.
Как уже упоминалось здесь, 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 ++) будет правильным выбором, независимо от того, кто на самом деле «говорит» на этом языке и с какой целью.
Я изучал ООП как на Ada95, так и на C ++, а также на простом C и Ada83. Я не думал, что так сложно изучить концепции ООП с C ++, потому что я уже был знаком с синтаксическими элементами и указателями.
Какова ваша цель? Чтобы стать хорошим разработчиком C ++ или просто понять ООП?
Если это последнее, то выберите язык, который вы понимаете, и переходите оттуда. Java, C # или даже C ++ были бы хорошим выбором. Если это первое, вам придется взять себя в руки и много узнать о C ++ и о том, как он работает под капотом. Чтобы стать хорошим разработчиком на C ++, нужно время и практика.
Даже если я думаю, что многие из этих критических замечаний в адрес C++ справедливы, в конце концов, Java и C# не так уж сильно расходятся с C++ в парадигме ООП, которая, несомненно, оказала огромное влияние на них обоих. Говорить, что вы будете неправильно изучать ООП, изучая C++ вместо Java, довольно глупо, поскольку их модели ООП чрезвычайно похожи.
А говорить о куче приемов, которые используют программисты на этом языке (программирование по шаблонам), и вести себя так, как будто это что-то, что вы должны использовать - глупо. Говорить, что вы можете "вернуться в C" - еще одна глупая причина - вы можете избежать ООП в ЛЮБОМ языке (например, в Java вы можете написать программу в рамках одного класса).
Хотите узнать одну из лучших причин изучать C++ вместо Java или C#? Существует гораздо больше интересных проектов на C++, чем на двух других языках. Это меняется со временем, но посмотрите на SourceForge, и кажется, что C и C++ все еще являются преобладающими языками для тех типов проектов, которые я нахожу интересными (игры, веб-браузеры и т.д.).
Я бы предложил C # . Синтаксис похож, но достаточно отличается, чтобы вы не вернулись к старым привычкам C. В C ++ я всегда обнаруживал, что пишу C, иногда добавляя туда объект.
Изучите C ++ только в том случае, если вы хотите работать над ним, над проектами, которые его используют, на рабочих местах, поддерживающих код C ++ (который будет существовать в течение многих лет). C ++ - далеко не мертвый язык.
Но в наши дни его, вероятно, следует считать нишевым языком для тех, кто начинает новый проект и делает что-то вроде веб-приложения, богатого клиентского графического интерфейса и т. Д. Для большинства типичных приложений C ++ был бы провальным выбором, например, намеренно усложняя себе задачу.
Но если вам нравится настоящий вызов, дерзайте.
Я гораздо больше отвечу на похожие темы:
Фундаментальная идея C ++ состоит в повторном использовании синтаксических идиом C путем применения к ним семантики ООП. Это приводит к объектам «в стеке», использованию ++
для итераторов и так далее. Синтаксис C был разработан в основном для простоты реализации компилятора C, а не для ООП, и в результате C ++ является довольно сложным языком и плохо подходит для обучения.
Java и C # намного проще изучить, но при этом все еще придерживаются основанного на классах подхода ООП, который использует C ++. Java немного проще, чем C #, потому что разработчики C # знали Java и решили использовать аналогичный синтаксис с кучей дополнительных синтаксических преимуществ. Эти преимущества делают синтаксис C # немного более сложным, а значит, менее подходящим для изучения.
Существует еще один структурный подход ООП - Smalltalk. «Современный» и широко используемый язык, использующий этот подход, - это Javascript. Вы можете попробовать это. Javascript - это круто, потому что вам нужен только веб-браузер, чтобы попробовать его, и через браузер он имеет доступ к богатой графической среде. В том же семействе вы можете попробовать Lua , который считается простым и довольно популярным.
Да. Если ваше намерение - «глубокое и глубокое понимание современного языка ООП», выберите современный язык ООП. C # определенно соответствует «современному» уровню и гордится тем, что является ООП. Что-то вроде Smalltalk было бы языком ООП , но он менее современный. Вы всегда можете узнать и то, и другое.
Что касается C ++, то это вряд ли язык ООП. Есть много веских и веских причин изучать C ++, но не в том случае, если вас интересует только ООП.
Сегодня C ++ характеризуется не ООП, а такими функциями, как универсальное программирование и в некоторой степени вдохновлено функциональными языками.
Из C ++ можно извлечь много полезных уроков.Вот некоторые из них:
Если вы спрашиваете, следует ли вам изучать C ++, я отвечу утвердительно (наряду с 5-8 другими языками. C ++ никоим образом не является "особенным". Это один из многих языков, изучение которых может быть полезно для программистов) .
Если вы спрашиваете, станет ли C ++ хорошим введением в ООП, я бы сказал НЕТ . Именно поэтому этому стоит научиться.
Я бы сказал Java. Хорошая книга, которая мне помогла - вот эта.