Как я могу улучшить свое Объектно-ориентированное программирование?

Я понимаю процедурное программирование (хорошо, кто не делает), и хотят получить хорошее понимание ООП и после этого функциональный. Я - просто человек, увлеченный своим хобби, таким образом, это возьмет мне возраст и день, но его забава.

У кого-либо есть какие-либо идеи для того, что я могу сделать для помощи? Идеи проекта? Пример хорошо зарегистрировал код, это отсутствует их?

Я в настоящее время использую C++, но C# выглядит намного более хорошим работать с.

8
задан Dennis Williamson 10 January 2011 в 07:50
поделиться

12 ответов

Есть несколько замечательных книг по ООП из Head First , охватывающих Объектно-ориентированный анализ и дизайн и Шаблоны объектно-ориентированного проектирования .

10
ответ дан 3 November 2019 в 13:09
поделиться

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.

6
ответ дан 3 November 2019 в 13:09
поделиться

Я рекомендую вам прочитать Объектное мышление Дэвида Уэста . В книге очень мало кода, но много разговоров о том, как моделировать.

Я бы хотел, чтобы кто-нибудь сказал мне, когда я только начинал, следующее:

  1. При моделировании объектов вы должны сосредоточиться на поведение больше, чем форма данных.
  2. Хотя многие учебные пособия по объектно-ориентированному программированию моделируют объекты реального мира, такие как животные и транспортные средства, многие из вещей, которые мы моделируем в программном обеспечении, являются концепциями и конструкциями (вещами, которые не имеют физического представления в реальном мире ).
6
ответ дан 3 November 2019 в 13:09
поделиться

Чтобы по-настоящему освоить объектно-ориентированное программирование, вы можете сделать несколько вещей.

  1. Заставьте себя смоделировать реальную проблему с объектами. Создавайте классы для представления объектов и методы для представления того, что они могут делать.

  2. Используйте язык и / или фреймворк, которые действительно навязывают вам ООП. Только когда я взял класс Java и начал интенсивно использовать Swing, я действительно ощутил интерес к ООП. В последнее время я мало играл с C #, но я думаю, что C # или Java были бы хорошим вариантом.

4
ответ дан 3 November 2019 в 13:09
поделиться

Try learning Smalltalk - best way to improve your OO programming.

2
ответ дан 3 November 2019 в 13:09
поделиться

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:

2
ответ дан 3 November 2019 в 13:09
поделиться

Я недавно перешел с PHP на C # и люблю каждую минуту этого! Я бы сказал, найдите себе новый проект с гибкими временными рамками и просто погрузитесь в него. Также возьмите пару книг, особенно по концепциям ООП и шаблонам проектирования.

1
ответ дан 3 November 2019 в 13:09
поделиться

Это зависит от того, какие языки вы знаете. Лично я бы порекомендовал какой-нибудь язык сценариев объектно-ориентированного программирования. IE PHP или Python, я считаю, что это поможет вам полу плавный переход.

0
ответ дан 3 November 2019 в 13:09
поделиться

Один совет, который я хотел бы получить давным-давно:

Не переусердствуйте с наследованием.

Это действительно легкая ошибка для новичка (имхо), так как это одно из больших понятий в ООП, о котором все говорят.

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

Не поддавайтесь искушению просто определить нагрузку абстрактных методов и переопределить несколько раз, чтобы реализовать их по-другому, когда вы можете иметь один класс и вставить (аргумент в конструктор) объект, реализующий интерфейс, который вы вызываете, чтобы сделать любую переменную функциональность, которую вы в противном случае поместили бы в абстрактные методы. Это приведет к гораздо более простому и многоразовому коду (по моему опыту), а также к более тестируемому.

.
0
ответ дан 3 November 2019 в 13:09
поделиться

Я думаю, вы можете провести исследования по разработке Test Driven Development. Это автоматически ориентирует вас на подчинение правилам Объектно-ориентированных принципов. Это практичный способ, но он работает. Вы также можете поддержать этот процесс изучением теоретических вопросов, таких как принципы SOLID и шаблоны дизайна. Чтение исходных кодов больших проектов также является хорошей идеей для улучшения ваших навыков объектно-ориентированной работы

.
0
ответ дан 3 November 2019 в 13:09
поделиться

Для того, чтобы овладеть Вашими Объектно-ориентированными навыками, Вам необходимо много практики.

Попробуйте думать "объектными терминами" обо всем, что Вы делаете с кодом.

Применяйте это :

  • на Вашем серверном языке
  • держите Ваш Объектно-ориентированный код Java Script
  • думайте о том, чтобы Ваш CSS код был легко доступен для повторного использования и содержал малое количество дубликатов.
1
ответ дан 3 November 2019 в 13:09
поделиться

Читайте OOSC2 Бертранда Мейера . Наверное, это лучшая книга о программировании OOO.

1
ответ дан 3 November 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: