アルゴリズムとOOPは2つの異なる用語であり、CS用語であることだけが共通しています。単に-アルゴリズムは料理レシピのようなものです。xを実行するには、次の材料が必要で、ステップ1、2、3、4、5、6を実行します。その後、食事を準備します。
とはいえ、手続き型の方法でアルゴリズムを記述することは自然なことのようです。手続き型とは、まずxを実行し、次にyを実行することを意味します。
一般的な問題は次のとおりです。» xのセットをソートする方法?«。理解しやすいソリューションはbubble-sort
次のとおりです。
- 最初の要素に到達していない限り、反復中に、最後の要素からセットを反復します
- 最初から2番目の反復を開始し、最初の反復の現在の要素まで
- (2)の現在の要素をその後続要素と比較する
- 大きい場合は、位置を入れ替えます
これは、アルゴリズムのアルゴリズム/言語による説明ですbubblesort
。
手続き型/疑似コードの実装が登場
bubbleSort(Array A)
for (n=A.size; n>1; n=n-1){
for (i=0; i<n-1; i=i+1){
if (A[i] > A[i+1]){
A.swap(i, i+1)
}
}
}
それは簡単でした。
それはどのようにOOPに関係していますか?このアルゴリズムを使用して、オブジェクトのコレクション(オブジェクト自体)を処理できます。
Javascriptの例(クリーンなOO-Lingoはありませんが、ボイラープレートはほとんどなく、理解しやすいです)
objects =[{"name":"Peter"}, {"name":"Paul"}, {"name":"Mary"}]
compareObjects=function(x,y){ return x.name>y.name };
sorted = objects.sort(compareObjects)
console.log(sorted)
我々は持っている)の収集objects
、b)は、このコレクションにメソッドの共通sort
/ソートアルゴリズムと抽象化が含まc)を、当社のオブジェクトピーター、ポールとメアリー。ソートの仕様はここにあります。
アルゴリズムとOOPの関係は何ですか?2つの独立したトピックですか?
言われたことから、それは明確でなければなりません、答えはそうであるべきです:はい、彼らは独立しています。
OOPはアルゴリズムにどのように役立ちますか?それともどの方向に影響を与えることができますか?
OOPはプログラミングスタイルの1つにすぎません。それはどんな種類にも役立ちません。それ以外の場合は、オブジェクトに何かを行うためにアルゴリズムをオブジェクト指向言語で実装できます(図のように)
OOPでしか表示および解決できない問題はありますか?
私はそれを考えることができません(しかし、それが不可能だという意味ではありません)。しかし、逆に見ると、OOPは、いくつかの問題をモデル化して適切なアルゴリズムでそれを解決したい場合に役立ちます。あなたはの記録があるだろうfriends
としてモデル化することができますobjects
としproperties
て、あなたがしたい場合list
のfriends
ソートどのような方法では、あなたが正確に行うために上記の例コードを使用することができます。
なぜアルゴリズムの教科書はより手続き指向であるのですか?
前述のとおり、手続き型はアルゴリズムの特性であるため、より自然です。