学生がOOPを学ぶときに尋ねる可能性のある一般的な質問は?
この質問を読むソフトウェアの複雑さを管理するために、本当にオブジェクト指向言語が必要ですか?SEサイトや教育オブジェクト指向の概念の私自身の経験の1つ、例えば上でいくつかの本当の実用的な例ティーチオブジェクト指向の概念と(Pythonで)プログラミングに私は思って保管している一般的な質問の学生が何をしている彼らが最初にOOPを学ぶ際に求めることができますか?
たとえば、その質問で著者は尋ねました、
私はCSの初心者です...最初の学期に、カプセル化、データ隠蔽、モジュール性などのOOPの概念を紹介しました...
しかし、モジュール性、カプセル化、データ隠蔽などの複雑さを管理するために使用されるすべての原則は、手続き型言語によって非常に簡単に実装できると思います。では、それなしで複雑さを管理できるのに、なぜ本当にOOPなのか?
また、私自身の苦労があることも認めなければなりません。たとえば、この質問をしました。OOPは名詞の重要性を強調しすぎているため、そのサイトでもアクション/動詞を重要度の低い位置に配置していますか?(ただし、この質問をした学生はいません)。私の質問は閉じられ、2票の削除票を獲得しましたが、それは常に私の懸念事項です。
javascriptの経験があり、OOPを学びたいと思っている学生や同僚の場合、momentjsとdate-fnsを常に比較させます。どちらも日付を処理し、同様の機能を提供しますが、どちらも良い仕事をしますが、momentjsはOOPライブラリです。 date-fnsは関数ライブラリです。
私の目的は、物事を行うには複数の方法があることを彼らに理解させることです。
では、生徒がよく尋ねる質問は何ですか?
回答
私はsoftwareengineering.stackexchange.comとstackoverflow.comに向けられたオブジェクトにタグ付けされたほとんどの投票された質問を読み通しました。ソフトウェアエンジニアリングサイトでのいくつかの質問は、OOPを学ぶときに非常に一般的であると感じますが、stackoverflowでの質問は、専門家によって尋ねられる可能性が高い実際のプログラミングの質問に関連しています。
だから私はソフトウェアエンジニアリングサイトからいくつかの質問をリストしました、
- プログラムを複数のクラスに分割するのが良いのはなぜですか?。この質問は確かに高校生によって尋ねられました。
- OOPのオブジェクトはエンティティを表す必要がありますか?。私の学生は私にこの質問をします。
- 手続き型プログラミングに対するオブジェクト指向プログラミングの利点は何ですか?これは私の質問の「ソフトウェアの複雑さの管理」の質問にいくらか関連しています。Cがオブジェクト指向言語でない場合、Linuxはどのようにしてこのような大きなコードベースを維持するのでしょうか。コードベースはすべて台無しになっていますか?
- OOPはコードの再利用の約束を果たしていますか?コードの再利用を実現するための代替手段はありますか?学生がこの質問をするかどうかはわかりませんし、私自身も質問に二重に答えています。
- オブジェクト指向コードを書くとき、私は常にデザインパターンに従うべきですか?。このサイトには、デザインパターンについての質問もあります。デザインパターンを教えていないコンピュータサイエンスコースはどれほど悪いですか?
- 「教えて、聞かないで」が良いオブジェクト指向と見なされる方法についての説明。コーディングの経験を積んだ後で初めて、質問をしたり、評価したりできます。しかし、それは良いものです。
- 関数が複雑で変数が多い場合、クラスを作成する必要がありますか?「クラスを使用するだけでなく、オブジェクトを作成し、メソッドを呼び出して結果を返す、独立した関数も提供する」という質問がある場合は、生徒に私の推奨事項もありました。これは、内部で実際に使用するクラスです。パブリック関数の実装の詳細になります」
Quoraには、OOPを最初に学んだときに人々が尋ねると思う興味深い質問もいくつかあります。ここにいくつかリストします。
- 誰もが(プログラマーの立場で)OOPなしで現代のテクノロジー業界(ソフトウェアまたはソフトウェアなし)で生き残ることができますか?
- ソフトウェア開発者はどのくらいの頻度でOOPを使用しますか?。Kurt Guntherothによる1つの答えは興味深いものです。「約1,000行より長いプログラムを作成するときは、OOPを使用する必要があります。1000行ですか?それはなぜですか...?」
- オブジェクト指向プログラミングが適切でないのはいつですか?
うまくいけば、私はいくつかの他の答えを得ることができます。
これは本当にいい質問です!あなたの答えは多くの分野もカバーしています。
これらの質問の動機となる可能性のあるものについて考察したいと思います。
私の経験では、旅の早い段階でOOPに遭遇した学習者は、次のようないくつかの異なる課題に取り組む必要があります。
- 彼らは、OOPが解決する問題をまだ経験していません。
- 彼らは、発見されるのを待っているすべてのプログラミングの課題に対する完璧な解決策があると信じています。
これらは、多くの質問、混乱、そして場合によっては不安を引き起こします。