1

これは、長い間私を悩ませてきた質問です。

プロシージャとグローバル変数のみを使用して、C のような非 OO 言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか? そのために、低レベルの抽象化から特別な処理が必要ですか?

この質問はまったく意味がありますか?!

4

3 に答える 3

1

もちろん、C のような言語をオブジェクト指向的に使用することも可能です。ポリモーフィズムは、関数へのポインターでエミュレートできます (ただし、この方法で簡単に管理可能なコードを取得できるとは思わないでください)。たぶんこの議論

http://ootips.org/oop-in-c.html

より多くの洞察を得るのに役立ちます。

于 2011-05-28T21:58:36.617 に答える
1

C のような OO 以外の言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか?

はい、しかしそれを正しく行うにはいくつかの作業が必要であり、C でそれを行うライブラリはFoo、インスタンス内の関数ポインターへの引数として渡されるすべてのポインターのために、使用するのが非常に面倒になる可能性がありFooます。Berkeley DB と GTK+ を調べてください。(GTK+ にプログラムしたことがないことを認めなければなりません。)

より一般的には、手続き型言語はオブジェクト指向を行うことができます。クロージャーがあるものは特にそれを作ります。オブジェクトは貧乏人の閉鎖なので簡単です。

于 2011-05-28T21:59:58.260 に答える
0

それは間違いなく可能です。同じトピックに関する Mark Dominus によるこの記事をチェックしてください。Mark は、オブジェクト指向プログラミングの基本原理を C だけでエミュレートする方法を示しています。

理論的には、チューリング完全言語を使用して OO をエミュレートできるはずです。そのために必要な労力は、言語の機能によって異なる場合があります。宇宙船やその他のいくつかの重要なシステムでまだ C を使用していることを考えると、OO のエミュレートはかなり些細な問題のようです。

于 2011-05-28T22:10:13.313 に答える