Як краще практично засвоїти поняття / принципи ООП? [зачинено]


12

Я хотів вивчити об'єктно-орієнтовану мову програмування, я не хочу, щоб вона з будь-якою метою просто знала всю концепцію OOP. Тож хтось може сказати мені, якою мовою я повинен почати вивчати?


1
Які мови ви вже знаєте?
Mchl

C, VB.NET і C ++, але не частина OOP
Caffeinedwolf

1
виберіть VB.NET тоді
Vinoth Kumar CM

Ні, я не хочу VB.NET, я хочу, щоб ви, хлопці, допомогли мені вибрати між Java, C ++, Python тощо ...
Caffeinedwolf

3
Ви хочете практично навчитися чомусь безцільно?
JeffO

Відповіді:


13

Ще кілька пропозицій:

  • Найкраща книга, яку я коли-небудь читав на панелі OOP - жодна - « Об’єктно-орієнтована побудова програмного забезпечення Бертрана Мейєра» . Це не просто "читання" в тому, що вам потрібно буде добре подумати місцями. Але це найкраща робота, яку я бачив, - пояснення принципів ОО.

  • Щодо мов: я б тримався подалі від C ++. Просто занадто великий для цілей навчання. Якщо ви хочете мову, яка дійсно допоможе вам зрозуміти OO (на відміну від мови, яку ви писали б основними програмами в / влаштували на роботу), то подивіться на smalltalk. Або Ейфеля (мова в книзі Мейєра вище).

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

Хоча одне слово обережності: мова не навчить вас ОО. Він може лише допомогти (або перешкодити) у тому, наскільки добре він підтримує концепції ОО. Навчання ОО - це насправді навчитися думати в термінах ОО. За це я повернувся до книги Мейєра.

чт.


1
Інші речі в C ++ важливі . Це важливо знати про віртуальному спадкуванні. Це важливо знати про сильну компіляції загальної підтримки, і це важливо знати про значення проти посилання. Виконати щось на кшталт Java - це просто "LA LA LA Я НЕ МУЖУТЕ СПОСУБИТИ ВАС ЦЕ Є ТОЛЬКИЙ ШЛЯХ ДЛЯ ЗРАБИТИ".
DeadMG

2
так і ні. Питання ОП стосувалося навчання, яке в першу чергу передбачає основи. Я не переконаний, що C ++ є серед претендентів як найбільш підходяща мова для вивчення . Це сказало: Мейєр так чи інакше охоплює генеричні показники та цінність порівняно з посиланням, хоча і як більш розвинені теми В останніх частинах книги він також переходить до спів-та контра-дисперсії. Але він спочатку викладає основи. (І Ейфель статично набраний btw).
sfinnie

1
Я не збираюся погоджуватися або не погоджуватися з рекомендацією Ейфеля, оскільки я ніколи нічого не використовував і не бачив і не читав про це. Однак я абсолютно не погоджуюся з будь-якими рекомендаціями щодо Java та C #, як я вже говорив.
DeadMG

12

Ви можете вивчити будь-яку з об'єктно-орієнтованих мов, таких як C ++, Java, C # тощо, щоб спробувати OOPS.

Якщо ви дійсно хочете вивчити ООП, вам потрібно думати за межами мов і розуміти, що це парадигма, яка допомагає складності мангів, що беруть участь у програмних програмах так само, як ми ними керуємо в реальному світі. Потім вивчіть основні поняття в ОО як поліморфізм, спадкування, інкапсуляція (PIE) тощо

Існують хороші книги навколо занадто об'єктно-орієнтованого аналізу та дизайну з додатками (2-е видання) від Grady Booch

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


3

Ви хочете навчитися OOP? Одна відповідь - Smalltalk.

Це елегантна мова і є основним принципом. Ви дізнаєтесь OOP з самого початку і не будете перешкоджати всім іншим відволіканням, які інші мови встигають включити.

Виграє Smalltalk. Також є кілька хороших безкоштовних електронних книг (див.: Стефан Дукас )


3

Вам слід було б вивчити C ++, а може, когось із предків, як Smalltalk. C ++ пропонує чіткий поділ між такими поняттями, як орієнтація на об'єкти, управління пам’яттю та посилання на значення, і він має сильну загальну підтримку.

Не вивчайте Java або мову .NET, як C #. Коли ви вивчаєте таку мову, як Java, то ви дізнаєтесь такі речі, як "Об'єкти завжди в купі і завжди є посиланнями", що справедливо лише для Java і зовсім не відповідає дійсності для OOP. Таке співвідношення понять (орієнтація на об'єкти, управління пам'яттю, посилання на значення) є дуже небезпечною для першої мови, тому що, як тільки ви їх застрягнете в голові, це може бути дуже важко повернути їх назад. C # дещо кращий у цьому плані, але не набагато. Крім того, вони можуть мати високу тенденцію викладати "Успадкування - це молоток, і все - цвях" зі слабкою загальною підтримкою програмування.


Це дуже правда. Я ніколи цього не розумів, насправді, маючи справу з мовою, яка дуже орієнтована на OOP, і намагається вирішити все з OOP, ти ніколи не дізнаєшся, які проблеми насправді не підходять для OOP.
daramarak

1

Найкращий спосіб вивчити поняття OOP - це писати все більше і більше кодів і часто їх переглядати. Практика - це хороший програміст.

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

Щасливого кодування !!!


0

Кроки

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

0

Першим моїм контактом у світі OO був C ++, що було не поганим початком. Але я багато покращився, вивчаючи Python. Різниця походить від мов: для випробування ідей («як я можу вирішити цю проблему в рамках OO?») В C ++ потрібно більше коду для написання і включає набагато більше підводних каменів, ніж тестування тієї самої ідеї в Python. Тому я б рекомендував Python.


0

Я не думаю, що вам слід шукати іншу мову, намагаючись вивчити OOP. Мені легше зрозуміти теорію, а потім навчитися її застосовувати, якщо я можу пов'язати щось, що я вже знаю. З'ясування нового синтаксису просто перешкоджає.

Ви можете почати з будь-якої книги OOP. Знову я отримаю цю мову на мою вибір. Читання книги про рефакторинг (стиль OOP) допомогло мені у застосуванні OOP. Я взяв існуючий проект (Не відволікаючись на збір вимог) і знайшов нові шляхи його вдосконалення. Це був не просто ООП заради ООП. Тоді ви можете навчитися робити це від початку до кінця над новим проектом. Логіка тут полягає в тому, що ви не завжди зможете зрозуміти це з самого початку. Якщо ви зможете розпізнати, де це підходить, вам буде краще. Як і більшість речей, це не вирішить кожну проблему.

Для деяких мов існують певні обмеження. Якщо ваша мета - стати господарем багаторазового успадкування, .NET не працює.


0

Я заперечуватимуться тут проти звичайного мислення і припускаю, що найпростіші мови для використання OOP не обов'язково є найкращими мовами для його вивчення . Мене вперше виставили на OOP з C ++, але я не "дістав" його, поки не прочитав главу книги верблюда Ларрі Уолла про OOP з Perl. Чомусь у мене виникли проблеми з розумінням різниці між класами та об’єктами, поки не довелося явно благословити об'єкт у клас. Я по-справжньому не розумів основної реалізації OOP, поки не робив це в C за допомогою GObject, де жодна з цих деталей не прихована від вас. Я по-справжньому не розумів кращих практик, поки не взяв корпоративний клас, який був мовним. Це дуже велика тема,.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.