悪OOデザイン問題が必要である一般的な機能性をJavaなどのプロジェクトを実施する
質問
私に亘り、小さなUMLクラスのエディタでJavaを中心に個人的なプロジェクトは、この後SourceForgeを発見した場合は、時間をプロジェクトを作成します。
のプロジェクトが進:を作成しますクラスに移動してをタをリンク等について
どのようにするためのダイアログボックスが設定クラス/インターフェースプロパティを新しいクラス/インタフェース
例えば、クラスを拡張JDialog.この"ウィンドウの"編集のためのクラスおよびインタフェース、あるクラスです。も含まれ、JTabbedPaneを含JPanels.
このJPanelを実際にカスタムです。作成した抽象クラスを拡張JPanel.このクラス用部品によって定義されているサブクラス)を追加その値をJTableものに含まれるJPanel).
例えば、私を編集したいクラス属性は、JPanelが含まれまJTextFieldの入力属性の名前なども入タイプです。また、セットボタンのデータ処理に入れます。私が"保存"ボタンをクリックし、データ入力のJTextFields追加され、JTable(à la Enterprise Architect).の激クラスを拡張の概要については責任を定義するための制御にどのようなないのデータがラインが追加または削除されJTable.JTableで管理し、responsabilityのabstractクラスです。
ここでは私の問題:にOO、クラスのメソッドを、インターフェース方法です。私自:使うことがで同じコンクリートカスタムJPanel(AttributesPanel(に抽象JPanelクラスで作成した))保存の方法のためのクラスは、インターフェース。
しかし、このクラスのニーズのコピーを保存しておく(属性としてのクラスまたはインタフェースしました。その場合、メソッドが追加され、これまでお電話editedClass.addMethod()(やeditedInterface.addMethod()).問題は、私がうかどうかに働いているクラスとインターフェース。
の溶液または醜い:保属性editedClassおよび属性editedInterfaceのAttributesPanelクラスです。るか否かによって私は編集クラスaまたはインタフェースは、これらの属性はnullが他になくてはなりません。
くろだった。実際、私も聞くことができる私のソフトウェア工学の先生方は私の頭の絶叫に苦しみながら燃える(もっとも凍結の九輪地獄である。
のタイミングよくタップ固定この設計の問題にするインタフェースを作成する"ObjectWithMethods"は、私のクラスおよびインタフェースの授業実行します。そのようにしてくObjectWithMethodsパラメータの私のAttributesPanelクラスです。
ができないというクラスを作成する"ObjectWithAttributes"、"ObjectWithBlahBlah"?あい"TheDailyWTF"可能性はこちら---また、思修私のドメインのオブジェクト(クラス、インターフェイス、ノとの関係(私のUMLエディタ))の作成新しいインターフェースの一部のUIへの配慮....
いかがですか?
ますが、その必要性をより明確化で私はとても疲れがそれが右かなりひどい(特に英語を母はフランス)がこの状態での心---)かそもそもの私の回答の編集この質問です。
声で
ギ.
解決
を読んでいたらお問い合わかるようにいるかのような記述する場所での使用 お客様のパターン.
その理由は、お客様のパターンはこちらのアイデアとして知られdoubleを派遣。おUIコードのまま電話をかけるとパスへの参照は、そのクラスまたはインタフェースの終了までの呼び出し元の呼び出し側に返します。以来、クラスまたはインタフェースは、メソッド呼び出すことを知って独自のタイプ、どのように特定のそのタイプです。
もちろん、私の説明が不十分な実用化技術というのを読みたいにします。と思うのですが記録されている。例えば、この約2秒間にはjavaは使った: http://www.javaworld.com/javaworld/javatips/jw-javatip98.html
他のヒント
通常、うな最も直截なのは、このような背景の下で、のことをよく考えるようになファクタリングインターフェイス、だんだん見も多くの if( .. instanceof ..)
-のように構築しまった。な費用いて多くの近代的なIDEのコードリファクタリングの力です。
にお客様の特定の場合は、検討の実施図の提供 UML仕様, っていないシステムだからで指定しUMLをUML-表記!
しています。このアプリです。様の表現と編集が必要です。
そのデータを表すプログラミング言語のクラスまたはプログラミング言語インタフェース。
いただいた場合にのエディタのためのデータも追加すの追加/補完的な情報、例えば、各クラス図と異なっていてラインカラーのない属性または方法のクラスです。
でも同じようなことがありますの財産を示す良い編集、クラスまたはインターフェース。
い提案をいいます。
別に代表されるデータからのコードの論理プログラム:
いようなもの:
// all code, classes, mixed up
public class JCustomPanel: {
protected ChartClass Charts;
protected ArrayList<String> MyClassAttributes;
protected ArrayList<String> MyClassMethods;
void PanelDoSomeThing();
void ClassDoSomeThing();
void InterfaceDoSomeThing();
// ...
} // class JCustomPanel
変更す:
// things related to a single class or interface,
// nothing to do with the chart
public class JClassRepresentation: {
ArrayList<String> Attributes;
ArrayList<String> Methods;
bool IsInterface;
void ClassDoSomeThing();
void InterfaceDoSomeThing();
// ...
} // class JCustomPanel
// things related to the editor,
// contains the classes and interfaces,
// but, as separate stuff
public class JCustomPanel: {
ArrayList<JClassRepresentation> Classes;
int PagesCount;
void InterfaceDoSomeThing();
// ...
} // class JCustomPanel
ございます!