OOPについて私が最も厄介だと思うのは、メンバー関数に新しい変数が必要であり、この変数がこの関数が呼び出されるオブジェクトを「アタッチ」する必要があるときはいつでも、基本的に新しいプライベートを作成する以外に選択肢がないということです。分野。これは私の意見では醜いです。これは、変数がオブジェクトのインスタンス化で初期化されることを意味し(そして、それを必要とするメソッドを呼び出さないと、変数を使用できない可能性があります)、他のエンティティから隠されていない可能性があります。オブジェクトのプライベートメンバーにアクセスすると、それに加えて、クラス定義が乱雑になる可能性があります(C ++クラスについて考えてみてください。ほとんどの場合、フィールドの定義全体を含むヘッダーが付属しています)。
C ++の用語で言えば、static
グローバル関数の変数に対する修飾子の動作が必要ですが、メンバー関数では、ストレージはオブジェクト内にある必要があります。
多くの言語はわかりませんが、動的計画法の言語の方が簡単だと感じています。Luaについて考えることができます。現在のテーブルに新しいインデックスを追加するだけです。これは、新しい「フィールド」を他の世界から隠すことはありませんが、メタテーブルを改ざんしない限り、Luaのすべてが公開されているため、Luaの考え方では実際には問題になりません。しかし、初期化の問題は解決されています。
だから、私の質問は、これが可能な静的プログラミング言語(つまり、コンパイル時にオブジェクトのレイアウトがわかっている言語)はありますか?
ちなみに、同様の結果を得るためのC ++の適切な回避策はありますか?