タグ付けされた質問 「class-design」

18
__init __()が常に__new __()の後に呼び出されるのはなぜですか?
私はクラスの1つを合理化しようとしているだけで、フライウェイトデザインパターンと同じスタイルでいくつかの機能を導入しています。 ただし、__init__が常に後に呼び出される理由については、少し混乱してい__new__ます。私はこれを期待していませんでした。なぜこれが起こっているのか、そしてこの機能を別の方法で実装するにはどうすればよいですか?(実装をに入れるのは別として、__new__かなりハックに感じます。) 次に例を示します。 class A(object): _dict = dict() def __new__(cls): if 'key' in A._dict: print "EXISTS" return A._dict['key'] else: print "NEW" return super(A, cls).__new__(cls) def __init__(self): print "INIT" A._dict['key'] = self print "" a1 = A() a2 = A() a3 = A() 出力: NEW INIT EXISTS INIT EXISTS INIT どうして?

23
オブジェクト指向プロジェクトをどのように設計しますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 この質問を改善する 多くのクラスがあり、拡張可能である必要がある大規模なプロジェクト(私にとって)に取り組んでいますが、プログラムをどのように計画するか、およびクラスがどのように相互作用する必要があるかわかりません。 私は数学期前にOODコースを受講し、そこから多くを学びました。UMLの作成や、要件ドキュメントのオブジェクトやクラスへの変換などです。シーケンス図も学びましたが、どういうわけか講義を逃したり、なかなか私にこだわりませんでした。 以前のプロジェクトでは、コースから学んだ方法を使用してみましたが、通常は「ええ、私が考えていたもののように見えます」と言えるとすぐに、マックを掘って追加したくありません。新機能。 Steve McConnellのコードコンプリートのコピーを手に入れました。これは、ここや他の場所で素晴らしいと絶えず聞いています。デザインの章を読みましたが、探している情報が得られなかったようです。彼はそれがカットアンドドライプロセスではなく、主にヒューリスティックスに基づいていると彼が言っているのを知っていますが、私は彼のすべての情報を取得して私のプロジェクトに適用することはできないようです。 では、高レベルの設計段階(プログラミングを始める前)で、必要なクラス(特に、「実世界のオブジェクト」に基づいていないクラス)を決定し、それらがどのように相互に作用するかを判断するにはどうすればよいでしょうか。 具体的には、どのような方法を使用することに興味がありますか?通常、最終製品を厳密に表す優れたクリーンなデザインを実現するプロセスはどのようなものですか?

24
インターフェイスを作成するタイミングを知るにはどうすればよいですか?
開発学習の途中で、インターフェイスについてもっと学ぶ必要があると感じています。 よく読んでいますが、なかなか理解できないようです。 私は次のような例を読みました:「基本」、「歩く」、「実行」、「GetLegs」などのIAnimalインターフェースを備えたもの-しかし、何かに取り組んだことがなく、「インターフェースを使用する必要がありますここに!" 何が欠けていますか?なぜ私が理解するのが難しいのですか?私はそれを具体的に必要としていることに気づかなかったかもしれないという事実に驚かされました。開発者という点で最高のものが足りないように感じます。もし誰かがこのような経験をしていて画期的な経験をしたなら、私はこの概念を理解する方法に関するいくつかのヒントに感謝します。ありがとうございました。


6
Pythonでクラスを設計するにはどうすればよいですか?
私は以前の質問に対して本当に素晴らしい助けをしてきました で、足内の足と足の指を検出するが、これらのソリューションはすべて、一度に1つの測定でしか機能しません。 今私はオフで構成されるデータを持っています: 約30匹の犬; それぞれに24の測定値があります(いくつかのサブグループに分割されます)。 各測定には少なくとも4つの接点(各足に1つ)があり、 各接点は5つの部分に分かれており、 接触時間、位置、総力などのいくつかのパラメータがあります。 明らかに、すべてを1つの大きなオブジェクトに固執してもそれを切り取ることはできないため、現在の大量の関数の代わりにクラスを使用する必要があると考えました。しかし、クラスについてのPythonの学習の章を読みましたが、自分のコード(GitHubリンク)には適用できません。) すべてのデータを毎回処理するのは奇妙だと思う、情報を取得するています。各足の位置がわかったら、これを再度計算する理由はありません。さらに、同じ犬のすべての足を比較して、どの接触がどの足に属するか(前/後ろ、左/右)を判別したいと思います。機能だけを使い続けると、これはめちゃくちゃになります。 それで、私は私のデータ(1匹の犬の圧縮されたデータへのリンク)を賢明な方法で処理できるようにするクラスを作成する方法についてのアドバイスを探しています。
143 python  oop  class-design 

30
UMLは実用的ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 大学では、設計とUML指向のコースを数多く受けてきましたが、UMLを使用してソフトウェアプロジェクト、特にユースケースマッピングに利益をもたらすことができることを認識していますが、本当に実用的ですか?私はいくつかの協同作業の作業を行いましたが、UMLは業界であまり使用されていません。プロジェクト中にUML図を作成する価値はありますか?また、クラスのヘッダーファイルを見たほうが速いので、クラス図は一般的に役に立たないことがわかります。具体的には、どの図が最も役立ちますか? 編集:私の経験は、10未満の開発者プロジェクトに限定されています。 編集:多くの良い答え、そして最も冗長ではありませんが、選択されたものが最もバランスが取れていると思います。

10
ベストプラクティス:クラス定義内でのパブリック/保護/プライベートの順序付け?
私はゼロから新しいプロジェクトを始めており、それがクリーンである/良いコーディング標準を持っていることを望んでいます。ここのベテラン開発者は、クラス内でどのような順序でレイアウトを行いますか? A:1)パブリックメソッド2)プライベートメソッド3)パブリック変数4)プライベート変数 B:1)パブリック変数2)プライベート変数3)パブリックメソッド4)プライベートメソッド C:1)パブリック変数2)パブリックメソッド3)プライベートメソッド4)プライベート変数 私は一般にパブリック静的変数を一番上に置きたいのですが、パブリック静的メソッドをコンストラクターの前にリストするのでしょうか、それともコンストラクターを常に最初にリストする必要がありますか?そういうこと... 私はそれが微妙だと知っていますが、私はただ疑問に思いました:これのためのベストプラクティスは何ですか? PS:いいえ、Cc#は使用しません。知っている。私はラディットです。


10
クラスを使用するすべてのファイルにコード行を追加せずに、C#でクラス名のエイリアスを作成するにはどうすればよいですか?
クラス名のエイリアスを作成したい。次の構文は完璧です。 public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName { ... } public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName; しかし、それはコンパイルされません。 例 注この例は、便宜上提供されています。システム全体の設計を変更することを提案して、この特定の問題を解決しようとしないでください。この例の存在または欠如は、元の質問を変更しません。 一部の既存のコードは、静的クラスの存在に依存しています。 public static class ColorScheme { ... } この配色は、Outlook2003の配色です。Outlook 2003の配色を維持しながら、Outlook2007の配色を導入したいと思います。 public static class Outlook2003ColorScheme { ... } public static class Outlook2007ColorScheme { ... } しかし、私はまだコードがと呼ばれる静的クラスの存在に依存しているという事実に直面していColorSchemeます。私の最初の考えは、次のColorSchemeいずれOutlook2003かから継承するクラスを作成することでしたOutlook2007。 public static class ColorScheme : Outlook2007ColorScheme { } ただし、静的クラスから継承することはできません。 私の次の考えは静的ColorSchemeクラスを作成することでしたが、makeOutlook2003ColorSchemeとOutlook2007ColorSchemeclassesは非静的です。次に、静的ColorSchemeクラスの静的変数は、次のいずれかの「真の」配色を指すことができます。 …
87 c#  class-design 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.