Общие вопросы, которые студенты могут задать при изучении ООП?

Jan 19 2021

Читая этот вопрос: Действительно ли нам нужны объектно-ориентированные языки для управления сложностью программного обеспечения? на одном из сайтов SE и мой собственный опыт преподавания объектно-ориентированной концепции, например. Некоторые реальные практические примеры обучения объектно-ориентированным концепциям и программированию (на Python) заставили меня задуматься, какие общие вопросы могут задать студенты, впервые изучающие ООП ?

Например, в этом вопросе автор спросил:

Я начинающий студент CS ... В первом семестре мы познакомились с такими концепциями ООП, как инкапсуляция, скрытие данных, модульность ...

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

Я также должен признать, что у меня есть собственная борьба, например, я задал этот вопрос. Не придает ли ООП слишком большое значение важности существительного и, таким образом, помещает действие / глагол в менее важную позицию? на этом сайте (хотя ни один студент не задавал мне этот вопрос). Мой вопрос был закрыт, и я даже получил 2 голоса за удаление, но это всегда меня беспокоит.

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

Моя цель - дать им понять, что есть несколько способов делать что-то.

Итак, какие общие вопросы задают ваши ученики?

Ответы

4 Qiulang Jan 20 2021 at 11:01

Я прочитал большинство проголосованных вопросов с тегами объектно-ориентированных на softwareengineering.stackexchange.com и stackoverflow.com . Я чувствую, что некоторые вопросы на сайте программной инженерии довольно часто встречаются при изучении ООП, в то время как вопросы о stackoverflow больше связаны с практическими вопросами программирования, которые, скорее всего, задают профессионалы.

Итак, я перечислил несколько вопросов с сайта разработки программного обеспечения,

  1. Почему хорошо разбить программу на несколько классов? . Этот вопрос действительно задал старшеклассник.
  2. Должны ли объекты в ООП представлять сущность? . Мои ученики задают мне этот вопрос.
  3. В чем преимущество объектно-ориентированного программирования перед процедурным программированием? этот вопрос в некоторой степени связан с вопросом «управлять сложностью программного обеспечения» в моем вопросе, и я обсуждаю с моими коллегами еще один интересный вопрос, который был задан на сайте quora. Как Linux поддерживает такую ​​большую базу кода, когда C не является объектно-ориентированным языком? Кодовая база испорчена?
  4. Выполняет ли ООП обещание повторного использования кода? Какие есть альтернативы для повторного использования кода? Я не уверен, зададут ли студенты этот вопрос, и у меня тоже есть свой ответ на этот вопрос.
  5. Должен ли я всегда при написании объектно-ориентированного кода следовать шаблону проектирования? . На этом сайте также есть вопрос о шаблонах дизайна: насколько плох курс компьютерных наук, в котором не преподаются шаблоны дизайна?
  6. Объяснение того, что «говори, а не спрашивай» считается хорошим ОО . Только после того, как они приобретут некоторый опыт программирования, они смогут задать / оценить вопрос. Но он хороший.
  7. Должен ли я создавать класс, если моя функция сложна и имеет много переменных? Одним из ответов была также моя рекомендация моим студентам, когда у них возникает такой вопрос: «Используйте класс, но также предоставьте отдельную функцию, которая только конструирует объект, вызывает метод и возвращает результат, класс, который вы действительно используете для внутреннего использования. становится просто деталью реализации вашей публичной функции "

У Quora также есть несколько интересных вопросов, которые, как мне кажется, люди задают, когда впервые изучат ООП, я перечисляю некоторые здесь:

  1. Может ли кто-нибудь (на позиции программиста) выжить в современной технологической индустрии (программное обеспечение или никакое программное обеспечение) без ООП?
  2. Как часто разработчики программного обеспечения используют ООП? . Один ответ Курта Гюнтерота интересен: «Каждый раз, когда вы пишете программу длиной более 1000 строк, вы должны использовать ООП. 1000 строк? Почему это ...?»
  3. Когда объектно-ориентированное программирование не подходит?

Надеюсь, я смогу получить другие ответы.

1 Eddie Feb 06 2021 at 17:23

Это действительно хороший вопрос! Ваш ответ тоже охватывает многое.

Я хотел бы предложить размышления о том, что может мотивировать эти вопросы.

По моему опыту, учащимся, которые сталкиваются с ООП на раннем этапе своего пути, приходится решать несколько различных задач, в том числе:

  1. Они еще не сталкивались с проблемами, которые решает ООП.
  2. Они верят, что есть идеальное решение для всех задач программирования, которые еще предстоит обнаружить.

Это порождает массу вопросов, недоразумений и, в некоторых случаях, неуверенности.