これは、長い間私を悩ませてきた質問です。
プロシージャとグローバル変数のみを使用して、C のような非 OO 言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか? そのために、低レベルの抽象化から特別な処理が必要ですか?
この質問はまったく意味がありますか?!
これは、長い間私を悩ませてきた質問です。
プロシージャとグローバル変数のみを使用して、C のような非 OO 言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか? そのために、低レベルの抽象化から特別な処理が必要ですか?
この質問はまったく意味がありますか?!
もちろん、C のような言語をオブジェクト指向的に使用することも可能です。ポリモーフィズムは、関数へのポインターでエミュレートできます (ただし、この方法で簡単に管理可能なコードを取得できるとは思わないでください)。たぶんこの議論
http://ootips.org/oop-in-c.html
より多くの洞察を得るのに役立ちます。
C のような OO 以外の言語でポリモーフィズムや継承などの OOP 原則を実装することは可能ですか?
はい、しかしそれを正しく行うにはいくつかの作業が必要であり、C でそれを行うライブラリはFoo
、インスタンス内の関数ポインターへの引数として渡されるすべてのポインターのために、使用するのが非常に面倒になる可能性がありFoo
ます。Berkeley DB と GTK+ を調べてください。(GTK+ にプログラムしたことがないことを認めなければなりません。)
より一般的には、手続き型言語はオブジェクト指向を行うことができます。クロージャーがあるものは特にそれを作ります。オブジェクトは貧乏人の閉鎖なので簡単です。
それは間違いなく可能です。同じトピックに関する Mark Dominus によるこの記事をチェックしてください。Mark は、オブジェクト指向プログラミングの基本原理を C だけでエミュレートする方法を示しています。
理論的には、チューリング完全言語を使用して OO をエミュレートできるはずです。そのために必要な労力は、言語の機能によって異なる場合があります。宇宙船やその他のいくつかの重要なシステムでまだ C を使用していることを考えると、OO のエミュレートはかなり些細な問題のようです。