Я понимаю процедурное программирование (хорошо, кто не делает), и хотят получить хорошее понимание ООП и после этого функциональный. Я - просто человек, увлеченный своим хобби, таким образом, это возьмет мне возраст и день, но его забава.
У кого-либо есть какие-либо идеи для того, что я могу сделать для помощи? Идеи проекта? Пример хорошо зарегистрировал код, это отсутствует их?
Я в настоящее время использую C++, но C# выглядит намного более хорошим работать с.
Есть несколько замечательных книг по ООП из Head First , охватывающих Объектно-ориентированный анализ и дизайн и Шаблоны объектно-ориентированного проектирования .
I'd recommend working mainly with a strongly-typed language like C# or Java, as so many of the design patterns and general OOP principles are geared towards strong typing (GOF, Refactoring, Uncle Bob). Ruby is wonderful but a lot of common OOP principles like coding to interfaces won't apply.
Spend some time with Uncle Bob's SOLID principles. Go slowly, paying particular attention to Single Responsibility. If you don't get anything else from Uncle Bob, get SRP in your head and apply it early and often.
I also like Uncle Bob's idea of code katas. I'd recommend working through the bowling game kata.
Я рекомендую вам прочитать Объектное мышление Дэвида Уэста . В книге очень мало кода, но много разговоров о том, как моделировать.
Я бы хотел, чтобы кто-нибудь сказал мне, когда я только начинал, следующее:
Чтобы по-настоящему освоить объектно-ориентированное программирование, вы можете сделать несколько вещей.
Заставьте себя смоделировать реальную проблему с объектами. Создавайте классы для представления объектов и методы для представления того, что они могут делать.
Используйте язык и / или фреймворк, которые действительно навязывают вам ООП. Только когда я взял класс Java и начал интенсивно использовать Swing, я действительно ощутил интерес к ООП. В последнее время я мало играл с C #, но я думаю, что C # или Java были бы хорошим вариантом.
Try learning Smalltalk - best way to improve your OO programming.
After getting a basic idea for the fundamentals, the best way is to learn by example. Download popular open source projects and dig your way through them. Some projects I've learned a lot from:
Я недавно перешел с PHP на C # и люблю каждую минуту этого! Я бы сказал, найдите себе новый проект с гибкими временными рамками и просто погрузитесь в него. Также возьмите пару книг, особенно по концепциям ООП и шаблонам проектирования.
Это зависит от того, какие языки вы знаете. Лично я бы порекомендовал какой-нибудь язык сценариев объектно-ориентированного программирования. IE PHP или Python, я считаю, что это поможет вам полу плавный переход.
Один совет, который я хотел бы получить давным-давно:
Не переусердствуйте с наследованием.
Это действительно легкая ошибка для новичка (имхо), так как это одно из больших понятий в ООП, о котором все говорят.
В основном, вы должны использовать наследование только там, где оно действительно имеет смысл - думайте о типах данных, некоторых иерархиях виджетов, вещах, где отношения так очевидны, что кто угодно мог бы использовать его. Иначе вы должны впрыскивать объекты в другие и вызывать их, чтобы изменить функциональность (состав).
Не поддавайтесь искушению просто определить нагрузку абстрактных методов и переопределить несколько раз, чтобы реализовать их по-другому, когда вы можете иметь один класс и вставить (аргумент в конструктор) объект, реализующий интерфейс, который вы вызываете, чтобы сделать любую переменную функциональность, которую вы в противном случае поместили бы в абстрактные методы. Это приведет к гораздо более простому и многоразовому коду (по моему опыту), а также к более тестируемому.
.Я думаю, вы можете провести исследования по разработке Test Driven Development. Это автоматически ориентирует вас на подчинение правилам Объектно-ориентированных принципов. Это практичный способ, но он работает. Вы также можете поддержать этот процесс изучением теоретических вопросов, таких как принципы SOLID и шаблоны дизайна. Чтение исходных кодов больших проектов также является хорошей идеей для улучшения ваших навыков объектно-ориентированной работы
.Для того, чтобы овладеть Вашими Объектно-ориентированными навыками, Вам необходимо много практики.
Попробуйте думать "объектными терминами" обо всем, что Вы делаете с кодом.
Читайте OOSC2 Бертранда Мейера . Наверное, это лучшая книга о программировании OOO.