Общие вопросы, которые студенты могут задать при изучении ООП?
Читая этот вопрос: Действительно ли нам нужны объектно-ориентированные языки для управления сложностью программного обеспечения? на одном из сайтов SE и мой собственный опыт преподавания объектно-ориентированной концепции, например. Некоторые реальные практические примеры обучения объектно-ориентированным концепциям и программированию (на Python) заставили меня задуматься, какие общие вопросы могут задать студенты, впервые изучающие ООП ?
Например, в этом вопросе автор спросил:
Я начинающий студент CS ... В первом семестре мы познакомились с такими концепциями ООП, как инкапсуляция, скрытие данных, модульность ...
Но я думаю, что все принципы, используемые для управления сложностью, такие как модульность, инкапсуляция, скрытие данных и т. Д., Могут быть очень легко реализованы с помощью процедурных языков. Так зачем же ООП, если без него можно справиться со сложностью?
Я также должен признать, что у меня есть собственная борьба, например, я задал этот вопрос. Не придает ли ООП слишком большое значение важности существительного и, таким образом, помещает действие / глагол в менее важную позицию? на этом сайте (хотя ни один студент не задавал мне этот вопрос). Мой вопрос был закрыт, и я даже получил 2 голоса за удаление, но это всегда меня беспокоит.
Если мои студенты или мои коллеги, которые имеют опыт работы с javascript и любят изучать ООП, я всегда позволю им сравнивать momentjs с date-fns , оба имеют дело с датой и предоставляют аналогичные функции, оба делают хорошую работу, но momentjs - библиотека ООП а date-fns - это библиотека функций.
Моя цель - дать им понять, что есть несколько способов делать что-то.
Итак, какие общие вопросы задают ваши ученики?
Ответы
Я прочитал большинство проголосованных вопросов с тегами объектно-ориентированных на softwareengineering.stackexchange.com и stackoverflow.com . Я чувствую, что некоторые вопросы на сайте программной инженерии довольно часто встречаются при изучении ООП, в то время как вопросы о stackoverflow больше связаны с практическими вопросами программирования, которые, скорее всего, задают профессионалы.
Итак, я перечислил несколько вопросов с сайта разработки программного обеспечения,
- Почему хорошо разбить программу на несколько классов? . Этот вопрос действительно задал старшеклассник.
- Должны ли объекты в ООП представлять сущность? . Мои ученики задают мне этот вопрос.
- В чем преимущество объектно-ориентированного программирования перед процедурным программированием? этот вопрос в некоторой степени связан с вопросом «управлять сложностью программного обеспечения» в моем вопросе, и я обсуждаю с моими коллегами еще один интересный вопрос, который был задан на сайте quora. Как Linux поддерживает такую большую базу кода, когда C не является объектно-ориентированным языком? Кодовая база испорчена?
- Выполняет ли ООП обещание повторного использования кода? Какие есть альтернативы для повторного использования кода? Я не уверен, зададут ли студенты этот вопрос, и у меня тоже есть свой ответ на этот вопрос.
- Должен ли я всегда при написании объектно-ориентированного кода следовать шаблону проектирования? . На этом сайте также есть вопрос о шаблонах дизайна: насколько плох курс компьютерных наук, в котором не преподаются шаблоны дизайна?
- Объяснение того, что «говори, а не спрашивай» считается хорошим ОО . Только после того, как они приобретут некоторый опыт программирования, они смогут задать / оценить вопрос. Но он хороший.
- Должен ли я создавать класс, если моя функция сложна и имеет много переменных? Одним из ответов была также моя рекомендация моим студентам, когда у них возникает такой вопрос: «Используйте класс, но также предоставьте отдельную функцию, которая только конструирует объект, вызывает метод и возвращает результат, класс, который вы действительно используете для внутреннего использования. становится просто деталью реализации вашей публичной функции "
У Quora также есть несколько интересных вопросов, которые, как мне кажется, люди задают, когда впервые изучат ООП, я перечисляю некоторые здесь:
- Может ли кто-нибудь (на позиции программиста) выжить в современной технологической индустрии (программное обеспечение или никакое программное обеспечение) без ООП?
- Как часто разработчики программного обеспечения используют ООП? . Один ответ Курта Гюнтерота интересен: «Каждый раз, когда вы пишете программу длиной более 1000 строк, вы должны использовать ООП. 1000 строк? Почему это ...?»
- Когда объектно-ориентированное программирование не подходит?
Надеюсь, я смогу получить другие ответы.
Это действительно хороший вопрос! Ваш ответ тоже охватывает многое.
Я хотел бы предложить размышления о том, что может мотивировать эти вопросы.
По моему опыту, учащимся, которые сталкиваются с ООП на раннем этапе своего пути, приходится решать несколько различных задач, в том числе:
- Они еще не сталкивались с проблемами, которые решает ООП.
- Они верят, что есть идеальное решение для всех задач программирования, которые еще предстоит обнаружить.
Это порождает массу вопросов, недоразумений и, в некоторых случаях, неуверенности.