Я хотів вивчити об'єктно-орієнтовану мову програмування, я не хочу, щоб вона з будь-якою метою просто знала всю концепцію OOP. Тож хтось може сказати мені, якою мовою я повинен почати вивчати?
Я хотів вивчити об'єктно-орієнтовану мову програмування, я не хочу, щоб вона з будь-якою метою просто знала всю концепцію OOP. Тож хтось може сказати мені, якою мовою я повинен почати вивчати?
Відповіді:
Ще кілька пропозицій:
Найкраща книга, яку я коли-небудь читав на панелі OOP - жодна - « Об’єктно-орієнтована побудова програмного забезпечення Бертрана Мейєра» . Це не просто "читання" в тому, що вам потрібно буде добре подумати місцями. Але це найкраща робота, яку я бачив, - пояснення принципів ОО.
Щодо мов: я б тримався подалі від C ++. Просто занадто великий для цілей навчання. Якщо ви хочете мову, яка дійсно допоможе вам зрозуміти OO (на відміну від мови, яку ви писали б основними програмами в / влаштували на роботу), то подивіться на smalltalk. Або Ейфеля (мова в книзі Мейєра вище).
Якщо ви хочете, що мова є трохи більш мейнстрімом, але все-таки сумлінно підтримує принципи ОО, то Python - це хороша ставка. Java та C # також пристойні, якщо ви хочете статичного набору тексту.
Хоча одне слово обережності: мова не навчить вас ОО. Він може лише допомогти (або перешкодити) у тому, наскільки добре він підтримує концепції ОО. Навчання ОО - це насправді навчитися думати в термінах ОО. За це я повернувся до книги Мейєра.
чт.
Ви можете вивчити будь-яку з об'єктно-орієнтованих мов, таких як C ++, Java, C # тощо, щоб спробувати OOPS.
Якщо ви дійсно хочете вивчити ООП, вам потрібно думати за межами мов і розуміти, що це парадигма, яка допомагає складності мангів, що беруть участь у програмних програмах так само, як ми ними керуємо в реальному світі. Потім вивчіть основні поняття в ОО як поліморфізм, спадкування, інкапсуляція (PIE) тощо
Існують хороші книги навколо занадто об'єктно-орієнтованого аналізу та дизайну з додатками (2-е видання) від Grady Booch
Крім того, ви можете спробувати такі блоги, які я знайшов досить простим для початку - fascinatingoops.com
Ви хочете навчитися OOP? Одна відповідь - Smalltalk.
Це елегантна мова і є основним принципом. Ви дізнаєтесь OOP з самого початку і не будете перешкоджати всім іншим відволіканням, які інші мови встигають включити.
Виграє Smalltalk. Також є кілька хороших безкоштовних електронних книг (див.: Стефан Дукас )
Вам слід було б вивчити C ++, а може, когось із предків, як Smalltalk. C ++ пропонує чіткий поділ між такими поняттями, як орієнтація на об'єкти, управління пам’яттю та посилання на значення, і він має сильну загальну підтримку.
Не вивчайте Java або мову .NET, як C #. Коли ви вивчаєте таку мову, як Java, то ви дізнаєтесь такі речі, як "Об'єкти завжди в купі і завжди є посиланнями", що справедливо лише для Java і зовсім не відповідає дійсності для OOP. Таке співвідношення понять (орієнтація на об'єкти, управління пам'яттю, посилання на значення) є дуже небезпечною для першої мови, тому що, як тільки ви їх застрягнете в голові, це може бути дуже важко повернути їх назад. C # дещо кращий у цьому плані, але не набагато. Крім того, вони можуть мати високу тенденцію викладати "Успадкування - це молоток, і все - цвях" зі слабкою загальною підтримкою програмування.
Найкращий спосіб вивчити поняття OOP - це писати все більше і більше кодів і часто їх переглядати. Практика - це хороший програміст.
Продумайте реальні сценарії, визначте проблему - вирішіть її в коді та перегляньте її. Ви завжди можете отримати допомогу на /codereview// для оглядів :)
Щасливого кодування !!!
Кроки
Першим моїм контактом у світі OO був C ++, що було не поганим початком. Але я багато покращився, вивчаючи Python. Різниця походить від мов: для випробування ідей («як я можу вирішити цю проблему в рамках OO?») В C ++ потрібно більше коду для написання і включає набагато більше підводних каменів, ніж тестування тієї самої ідеї в Python. Тому я б рекомендував Python.
Я не думаю, що вам слід шукати іншу мову, намагаючись вивчити OOP. Мені легше зрозуміти теорію, а потім навчитися її застосовувати, якщо я можу пов'язати щось, що я вже знаю. З'ясування нового синтаксису просто перешкоджає.
Ви можете почати з будь-якої книги OOP. Знову я отримаю цю мову на мою вибір. Читання книги про рефакторинг (стиль OOP) допомогло мені у застосуванні OOP. Я взяв існуючий проект (Не відволікаючись на збір вимог) і знайшов нові шляхи його вдосконалення. Це був не просто ООП заради ООП. Тоді ви можете навчитися робити це від початку до кінця над новим проектом. Логіка тут полягає в тому, що ви не завжди зможете зрозуміти це з самого початку. Якщо ви зможете розпізнати, де це підходить, вам буде краще. Як і більшість речей, це не вирішить кожну проблему.
Для деяких мов існують певні обмеження. Якщо ваша мета - стати господарем багаторазового успадкування, .NET не працює.
Я заперечуватимуться тут проти звичайного мислення і припускаю, що найпростіші мови для використання OOP не обов'язково є найкращими мовами для його вивчення . Мене вперше виставили на OOP з C ++, але я не "дістав" його, поки не прочитав главу книги верблюда Ларрі Уолла про OOP з Perl. Чомусь у мене виникли проблеми з розумінням різниці між класами та об’єктами, поки не довелося явно благословити об'єкт у клас. Я по-справжньому не розумів основної реалізації OOP, поки не робив це в C за допомогою GObject, де жодна з цих деталей не прихована від вас. Я по-справжньому не розумів кращих практик, поки не взяв корпоративний клас, який був мовним. Це дуже велика тема,.