Как лучше всего выучить концепции / принципы ООП практически? [закрыто]

12

Я хотел выучить объектно-ориентированный язык программирования, я не хочу ни для чего просто знать всю концепцию ООП. Так кто-нибудь может сказать мне, какой язык я должен начать изучать?

Caffeinatedwolf
источник
1
Какие языки вы уже знаете?
MCHL
C, VB.NET и C ++, но не часть ООП
Caffeinatedwolf
1
затем выберите VB.NET
Винот Кумар CM
Нет, я не хочу VB.NET. Я хочу, чтобы вы, ребята, помогли мне выбрать между Java, C ++, Python и т. Д.
Caffeinatedwolf,
3
Вы хотите чему-то научиться практически без цели?
JeffO

Ответы:

13

Некоторые дальнейшие предложения:

  • Самая лучшая книга , которую я когда - либо читал на OOP ни один бар является Бертрана Мейера объектно - ориентированного программного обеспечения строительства . Это не «легкое» чтение, в котором вам нужно будет хорошо подумать. Но это лучшее, что я видел, объясняя принципы ОО.

  • Что касается языков: я бы держался подальше от C ++. Просто слишком большой для учебных целей. Если вам нужен язык, который действительно поможет вам понять ОО (в отличие от того, на котором вы будете писать основные приложения / использовать работу), посмотрите на Smalltalk. Или Эйфель (язык в книге Мейера выше).

  • Если вам нужен язык, который немного более распространен, но все еще верно поддерживает принципы ОО, тогда Python - хорошая ставка. Java и C # тоже неплохие, если вы хотите статическую типизацию.

Одно слово предостережения, хотя: язык не научит вас ОО. Он может только помочь (или помешать) тому, насколько хорошо он поддерживает концепции ОО. Изучение ОО на самом деле означает обучение мыслить в терминах ОО. Для этого я вернусь к книге Мейера.

НТН.

sfinnie
источник
1
Другие вещи в C ++ важны . Это важно знать о виртуальном наследовании. Это важно знать о сильной компиляции общей поддержки, и это важно знать о значении против ссылки. Стремление к чему-то похожему на Java - это просто движение "ЛА ЛА ЛА ЛА, Я НЕ СЛЫШАЮ, ЧТО ЭТО ЕДИНСТВЕННЫЙ СПОСОБ ЭТОГО ДЕЛАТЬ"
DeadMG
2
да и нет. Вопрос ОП был об обучении, которое подразумевает основы в первую очередь. Я не уверен, что C ++ является одним из претендентов в качестве наиболее подходящего языка обучения . Тем не менее, Мейер в любом случае рассматривает дженерики и ценность против ссылок, хотя и как более сложные темы. Он также входит в ко-и противоречие, в последних частях книги. Но он излагает основы в первую очередь. (И, кстати, Эйфелева статически набрана).
сфинни
1
Я не собираюсь соглашаться или не соглашаться с рекомендацией Эйфелевой, поскольку я никогда не использовал и даже не видел и не читал об этом ничего. Однако я абсолютно не согласен с любой рекомендацией для Java и C #, как я уже сказал.
DeadMG
12

Вы можете изучить любой из объектно-ориентированных языков, таких как C ++, Java, C # и т. Д., Чтобы попробовать OOPS.

Если вы действительно хотите изучать ООП, вам нужно думать не только о языках и понимать, что это парадигма, которая помогает сложным мангам, вовлеченным в программы, точно так же, как мы управляем ими в этом реальном мире. Затем изучите основные понятия в ОО, такие как полиморфизм, наследование, инкапсуляция (PIE) и т. Д.

Есть хорошие книги о слишком объектно-ориентированном анализе и проектировании с приложениями (2-е издание) Грэди Буча

Кроме того , вы можете попробовать блоги , как это , которое я нашел просто достаточно , чтобы начать с- fascinatingoops.com

WinW
источник
3

Вы хотите узнать ООП? Один ответ - Smalltalk.

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

Smalltalk побеждает. И есть несколько хороших бесплатных электронных книг (см .: Stephane Ducasse )

Саймон Найтс
источник
3

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

Не учите Java или язык .NET, такой как C #. Когда вы изучаете такой язык, как Java, вы изучаете такие вещи, как «Объекты всегда в куче и всегда являются ссылками», что верно только для Java и абсолютно не верно для ООП в целом. Такое смешение понятий (объектная ориентация, управление памятью, ссылка на ценность) очень опасно для первого языка, потому что, как только вы запутаете их в своей голове, может быть очень трудно вернуть их обратно. C # несколько лучше в этом отношении, но не намного. Кроме того, они могут иметь высокую склонность учить «Наследование - это молот, а все - гвоздь» при слабой общей поддержке программирования.

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

Лучший способ изучить концепции ООП - это писать все больше и больше кода и регулярно его пересматривать. Практика делает хорошего программиста.

Думайте о реальных сценариях, определяйте формулировку проблемы - решайте ее в коде и проверяйте. Вы всегда можете получить помощь от /codereview// для отзывов :)

Удачного кодирования !!!

karthiks
источник
0

меры

  1. Узнайте, что они имеют в виду.
  2. Узнайте, как их реализовать.
  3. Возьмите проект для разработки, выберите ваш язык [который должен иметь интегрированный принцип OOPS, такой как VB.NET или C # или C ++ или Java и т. Д.]
  4. Подумайте, как вы можете упростить логику проекта с помощью OOPS. [Примечание: не просто внедрите OOPS, потому что вы хотели их получить, они должны решить вашу цель]
  5. Не забывайте: вы тоже учитесь на своих ошибках .
Крис
источник
0

Моим первым знакомством с миром OO был C ++, что было неплохим началом. Но я сильно улучшился при изучении Python. Разница заключается в языках: для проверки идей («как я могу решить эту проблему в ОО-стиле?») В C ++ требуется больше кода для написания и в нем гораздо больше подводных камней, чем в той же идее в Python. Поэтому я бы порекомендовал Python.

rocksportrocker
источник
0

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

Вы можете начать с любой ООП книги. Опять же, я бы получил один на моем языке по выбору. Чтение книги по рефакторингу (стиль ООП) помогло мне в применении ООП. Я взял существующий проект (не отвлекаясь от сбора требований) и нашел новые способы его улучшения. Это было не просто ООП ради ООП. Затем вы можете научиться делать это от начала до конца в новом проекте. Логика здесь в том, что вы не всегда поймете это с самого начала. Если вы можете узнать, где это уместно, вам будет лучше. Как и большинство вещей, это не решит всех проблем.

Есть определенные ограничения с некоторыми языками. Если ваша цель состоит в том, чтобы стать мастером многократного наследования, .NET отсутствует.

JeffO
источник
0

Я пойду против традиционного мышления и предположу, что самые простые языки для использования ООП не обязательно являются лучшими языками для изучения . Сначала я познакомился с ООП с C ++, но я не «понял» его, пока не прочитал главу книги Ларри Уолла о верблюдах ООП с Perl. По какой-то причине мне было трудно понять разницу между классами и объектами, пока я не получил явное благословение объекта в классе. Я действительно не понимал основную реализацию ООП, пока не сделал это в C с GObject, где ни одна из этих деталей не скрыта от вас. Я действительно не понимал лучшие практики, пока не взял корпоративный класс, который был независим от языка. Это очень большая тема,,

Карл Билефельдт
источник