ちょうど大学の外で、カップリングを減らす必要のあるコードが出てきています。しかし、私は完全にすべての概念を理解していないし、私を助けるための簡単な例が欲しいです。あなたを始めさせるために、私は1つのフィールド、名前を持つ人のクラスを持っています。そのクラス内にテキストを連結するメソッドがあります。カップリングの低減シンプルな例が初心者のために必要
私はこれが馬鹿げた例であることを知っています。ほとんどの人は、これほどシンプルな状況でカップリングを減らすことは絶対に考えませんが、コードと概念を完全に理解するための簡単な例がほしいだけです。
メインウィンドウの背後にあるコードには、テキストボックスとボタンがあります。ウィンドウがロードされると、person x nameフィールドの現在の値が表示されます。ボタンがクリックされると、x.PersonAddTextメソッドが呼び出されます。現在、この例では8で計算された結合があります。ボタンクリックイベントの場合は3、ウィンドウロードイベントの場合は3となります。
この例では、どちらか一方または両方についてこれよりも少なくすることができます。
マイ者クラス::
public class Person
{
//Fields
private string name;
//Properties
public string Name
{
get { return name; }
set { name = value; }
}
//Constructors
public Person()
{
name = "joe";
}
//Methods
public string PersonAddText(string text)
{
return name += " - " + text;
}
//Interfaces (or additional code below here please to aid understanding)
}
マイコードの後ろ:以下
はすべて私のコードです
Person x = new Person();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtname.Text = x.Name;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
txtname.Text = x.PersonAddText(txtname.Text);
txtname.Text = x.Name;
}
私の単純なXAML:私が午前
<Grid>
<TextBox Name="txtname" Margin="12,12,12,0" Height="23" VerticalAlignment="Top" />
<Button Content="Add Text" Margin="12,41,12,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" />
</Grid>
大きな困難これを説明しているインターネットのチュートリアルに目を通してください。
- サービスロケータ
- 依存性注入
- 反転:私はこれを行うには3つの方法があります表示されるものと(3つすべての例に変換された上記の私のコードを持つことが可能ならば、それはいいだろう)私が読んでいるものを説明する制御(IOC)
articleで優れているが、彼はデータベース接続文字列でVBとASP.Netを使用しているような例は私には関係ありません。これは私が必要とするものとはまったく反対であり、コードを翻訳する方法を考えたり、概念を学んだり、関連するものにそれをどのように適用するかについて考えることは考えたくありません。例は良いですが、それはあまりにも多く、私は本当に余分な助けに感謝します。
編集履歴:綴りが訂正されました。私の質問を明確にするために以下を追加しました:
私はカップリングとコヒェションの背後にある理論を理解しています。しかし、大学での例は決してコード化する必要はありませんでした。また、大学ではカバーされていませんが、私はインターフェイスを理解しています。しかし、私はカップリングを減らすためにそれらを使用する方法を理解していません。
the article I refrenced aboveへのリンクが追加されました。
編集2:これまでのところ、私が今持っているものを以下の通りです:
public interface IPerson
{
string Name { get; set; }
string PersonAddText(string text);
}
public class Person : IPerson
{
//The code from the person class above
}
どのように私は今の背後にあるメイン・ウィンドウのコードでこれを使うのですか?私は、この正しいですし、もしそうなら、私がする必要がある何かがある
IPerson x = new Person();
で
Person x = new Person();
を交換する必要があります推測しています。私が依頼する理由は、ビジュアルスタジオで報告されたコード結合数の減少はまだ見られないからです(実際には、メインウィンドウのコードの後ろに1つ増えます)。
あなたは何を理解していますか?あなたはどのコンセプトに問題がありますか? – Oded
私は、クーペルと結束が理論的に何を意味するのか知っています。しかし、私はそれをコード化する方法を理解していません。特に、私たちは決して大学でのインターフェースをカバーしていなかったので(確かに、私は偉大な大学です)。私はインターフェイスも理解していますが、私はそれらを使用してクーペルを減らす方法を知りません。 –