タグ付けされた質問 「oop」

オブジェクト指向プログラミングは、「オブジェクト」を使用したプログラミングパラダイムです。つまり、データフィールドとメソッド、およびそれらの相互作用で構成されるデータ構造です。

7
Pythonでインターフェイスを実装するにはどうすればよいですか?
public interface IInterface { void show(); } public class MyClass : IInterface { #region IInterface Members public void show() { Console.WriteLine("Hello World!"); } #endregion } このC#コードに相当するPythonを実装するにはどうすればよいですか? class IInterface(object): def __init__(self): pass def show(self): raise Exception("NotImplementedException") class MyClass(IInterface): def __init__(self): IInterface.__init__(self) def show(self): print 'Hello World!' これは良いアイデアですか?回答に例を挙げてください。
182 python  oop 

10
コンストラクターvsファクトリーメソッド[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する クラスをモデル化するとき、初期化の好ましい方法は何ですか? コンストラクタ、または ファクトリメソッド そして、それらのいずれかを使用するための考慮事項は何でしょうか? 特定の状況では、オブジェクトを構築できない場合にnullを返すファクトリメソッドを使用することを好みます。これにより、コードがきれいになります。コンストラクターから例外をスローするのとは対照的に、代替アクションを実行する前に、戻り値がnullでないかどうかを簡単に確認できます。(私は個人的に例外は好きではありません) たとえば、id値を期待するクラスにコンストラクターがあるとします。コンストラクターはこの値を使用して、データベースからクラスを生成します。指定されたIDのレコードが存在しない場合、コンストラクターはRecordNotFoundExceptionをスローします。この場合、そのようなすべてのクラスの構築をtry..catchブロックで囲む必要があります。 これとは対照的に、レコードが見つからない場合にnullを返すこれらのクラスに静的ファクトリメソッドを設定できます。 この場合、コンストラクタとファクトリメソッドのどちらのアプローチが優れていますか?
181 oop  ooad 


5
Pythonでクラスを使用する必要があるのはいつですか?
私は約2年間pythonでプログラミングしています。主にデータ関連(pandas、mpl、numpy)ですが、自動化スクリプトや小さなWebアプリも含まれます。私はより優れたプログラマーになり、Pythonの知識を増やしたいと思っています。そして、気になったことの1つは、クラスを使用したことがないということです(小さなWebアプリのランダムフラスココードをコピーする以外に)。私は一般的にそれらが何であるかを理解していますが、なぜ単純な関数でそれらを必要とするのかについて頭を抱えているようには思えません。 私の質問に具体性を追加するには:常に複数のデータソース(mongo、sql、postgres、apis)からデータを取得し、大量または少量のデータの変更とフォーマットを実行し、csv / excelにデータを書き込む、大量の自動レポートを作成します/ html、メールで送信します。スクリプトの範囲は〜250行から〜600行です。これを行うためにクラスを使用する理由はありますか?なぜですか?
175 python  oop 

6
多重継承で親クラス__init__を呼び出す、正しい方法は何ですか?
多重継承シナリオがあるとしましょう: class A(object): # code for A here class B(object): # code for B here class C(A, B): def __init__(self): # What's the right code to write here to ensure # A.__init__ and B.__init__ get called? 書き込みには、2つの典型的なアプローチがありますCのは__init__: (旧式) ParentClass.__init__(self) (新しいスタイル) super(DerivedClass, self).__init__() ただし、どちらの場合でも、親クラス(AとB)が同じ規則に従っていない場合、コードは正しく機能しません(一部が見つからないか、複数回呼び出される可能性があります)。 では、正しい方法は何でしょうか?「ただ一貫している、どちらか一方に従っている」と言うのは簡単ですが、サードパーティのライブラリからのものである場合、AまたはBサードパーティのライブラリからのものである場合はどうでしょうか。すべての親クラスのコンストラクターが(正しい順序で、1回だけ)呼び出されるようにする方法はありますか? 編集:私がそうしている場合、私が何を意味するかを確認するには: class A(object): def __init__(self): print("Entering …

11
可変オブジェクトと不変オブジェクト
私は、可変オブジェクトと不変オブジェクトの両方を理解しようとしています。可変オブジェクトを使用すると、多くの悪い結果(たとえば、メソッドから文字列の配列を返すなど)が発生しますが、これによる悪影響について理解できません。可変オブジェクトの使用に関するベストプラクティスは何ですか?可能な限り回避する必要がありますか?

13
クラスメソッドでのproperty()の使用
基本的に静的変数を取得および設定するための2つのクラスメソッド(classmethod()関数を使用)を持つクラスがあります。これらでproperty()関数を使用しようとしましたが、エラーになります。インタプリタで次のようにしてエラーを再現できました: class Foo(object): _var = 5 @classmethod def getvar(cls): return cls._var @classmethod def setvar(cls, value): cls._var = value var = property(getvar, setvar) クラスメソッドを示すことはできますが、プロパティとしては機能しません。 >>> f = Foo() >>> f.getvar() 5 >>> f.setvar(4) >>> f.getvar() 4 >>> f.var Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 'classmethod' …
173 python  oop 

20
「疎結合」とは何ですか?例を挙げてください
「ルーズカップリング」の概念を理解できないようです。「緩い」という言葉が通常否定的な意味を持つことは役に立たないと思うので、疎結合が良いことをいつも忘れますことであることます。 誰かがこの概念を説明する「前」と「後」のコード(または疑似コード)を見せてくれませんか?

17
継承とポリモーフィズムの主な違いは何ですか?
今日、モジュールの終わりに開かれた本の試験でこの質問が出され、私は迷っていました。私は読んでいてHead first Java、両方の定義がまったく同じであるように見えました。自分の心の中での主な違いは何だろうと思っていました。これと同様の質問がいくつかあることは知っていますが、決定的な答えを提供するものはありません。

15
単一のメソッドを持つクラス—最善のアプローチ?
たとえば、単一の機能を実行するためのクラスがあるとします。機能を実行した後、破棄することができます。これらのアプローチのいずれかを選ぶ理由はありますか? // Initialize arguments in constructor MyClass myObject = new MyClass(arg1, arg2, arg3); myObject.myMethod(); // Pass arguments to method MyClass myObject = new MyClass(); myObject.myMethod(arg1, arg2, arg3); // Pass arguments to static method MyClass.myMethod(arg1, arg2, arg3); さまざまな状況のガイドラインを取得しようとするために、詳細について意図的に漠然としていました。しかし、私はMath.random()のような単純なライブラリ関数を実際には考えていませんでした。特定の複雑なタスクを実行するクラスをもっと考えていますが、それを行うには1つの(パブリック)メソッドのみが必要です。
172 c#  java  oop  static-methods 

10
静的クラスとインスタンス化されたクラスを使用する場合
PHPは私の最初のプログラミング言語です。静的クラスとインスタンス化されたオブジェクトのどちらを使用するか、頭を悩ませることはできません。 オブジェクトを複製して複製できることを理解しています。しかし、phpを使用している間は常に、オブジェクトまたは関数は常に単一の戻り値(配列、文字列、整数)の値またはvoidとして返されていました。 私はビデオゲームのキャラクタークラスのような本の概念を理解しています。carオブジェクトを複製して新しいものをredにします。これはすべて理にかなっていますが、phpおよびwebアプリでのアプリケーションではありません。 簡単な例。ブログ。ブログのどのオブジェクトが静的またはインスタンス化されたオブジェクトとして実装されるのが最適ですか?DBクラス?グローバルスコープでdbオブジェクトをインスタンス化しないのはなぜですか?代わりにすべてのオブジェクトを静的にしないのはなぜですか?パフォーマンスはどうですか? それはすべてスタイルだけですか?これを行う適切な方法はありますか?
170 php  oop  class 

8
PHPメソッドの連鎖?
私はPHP 5を使用していますが、「メソッドチェーニング」と呼ばれるオブジェクト指向アプローチの新機能について聞いたことがあります。正確には何ですか?どうすれば実装できますか?
170 php  oop  method-chaining 

8
クラスコードをヘッダーとcppファイルに分離する
単純なクラスの実装と宣言のコードを新しいヘッダーとcppファイルに分離する方法について混乱しています。たとえば、次のクラスのコードをどのように分離しますか? class A2DD { private: int gx; int gy; public: A2DD(int x,int y) { gx = x; gy = y; } int getSum() { return gx + gy; } };
169 c++  oop  class 

16
Java多重継承
Javaの多重継承問題を解決する方法を完全に理解するために、私は明確にする必要のある古典的な質問をします。 私はクラスを持っているとしましょうAnimal、これはサブクラスを持っているBirdとHorse、私はクラスにする必要があるPegasusから延びBirdかつHorse以来、Pegasus鳥と馬の両方です。 これは古典的なダイヤモンドの問題だと思います。これを解決する古典的な方法を私が理解できることからAnimal、BirdとHorseクラスをインターフェイスにしてPegasus、それらから実装することができます。 まだ鳥や馬のオブジェクトを作成できるという問題を解決する別の方法があるのか​​と思っていました。動物を作成できる方法があれば、それも素晴らしいことですが、必須ではありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.