MVC (Model, View, Controller) に分けるくらいは学んでおきましょう。
MVC以外に MVP, MVVM といった分け方もあります。
「オブジェクト指向設計」でネット検索すればいろいろ学べますよ。
以下の用語に関しても検索して学んでみるといいです。
- ヘキサゴナルアーキテクチャ
- クリーンアーキテクチャ
- SOLID原則
- DDD (Domain Driven Desing、ドメイン駆動設計)
- UML (Unified Modeling Language)
今まで、変数や関数だけでコーディングをしていましたが、
可読性が悪く、クラスを作って可読性が向上できないかと思い、クラス設計にチャレンジしているのですが
いまいち、どのようにクラスを設計すればよいかわかりません。
よく、車を例に以下のような説明があります。車に関しては
すでに現実世界にある概念なのでクラスのイメージがしやすいです。
class car{
constructor(name,ridingNunmberOfPeople){
this.name=name;
this.ridingNunmberOfPeople=ridingNunmberOfPeople
}
run(speed){
console.log('最高速度'+speed+'km/hで走行');
};
}
const car1 = new car("トラック",3);
const car2 = new car("軽自動車", 5);
console.log(car1);//{name: 'トラック', ridingNunmberOfPeople: 2}
console.log(car2);//{name: '軽自動車', ridingNunmberOfPeople: 5}
car1.run(100);//最高速度100km/hで走行
car2.run(80);//最高速度80km/hで走行
私が作りたいクラスは、車のような分かりやすいものではなく
「グラフを切り替えるための機能がまとまったもの」をクラスにしたいと考えております。
【イメージ】
①「期間」というテキストボックスに数値をinput。
② ①の数値の単位が年単位なのか月単位なのか日にち単位なのかをinput。
③ 「期間」がどこからスタートなのかを選ぶ。
④ グラフのX軸の表示を更新
みたいな処理をクラスで作りたいと思っております。
車のようなわかりやすい概念ではないため、どのようにクラスを設計すればよいか困っております。
この場合、皆様はどのようにしてクラスを設計しますか?
そもそも、「処理をまとめるために」処理にフォーカスしてクラスを作る考え方が違うのでしょうか?
「もの」という概念をまず固めて、概念に対しフォーカスしてクラスを設計し、
その概念からあぶれた処理はクラス内に記載せず、別途関数で定義するみたいな感じなのでしょうか?
質問が冗長で申し訳ありません。
ご教授いただけると幸いです。
(クラス設計とテーブ設計は似ている?)
MVC (Model, View, Controller) に分けるくらいは学んでおきましょう。
MVC以外に MVP, MVVM といった分け方もあります。
「オブジェクト指向設計」でネット検索すればいろいろ学べますよ。
以下の用語に関しても検索して学んでみるといいです。
@aono1234
Questioner作りたいものの全体像が見えないので、適切なアドバイスになるかわからないですが、以下のことをされてはいかがでしょうか?
おそらく、「グラフに表示する源泉データを、様々な条件で絞り込みたい」といったものだと思います。例えば以下のような。
例えば、期間で絞り込むであれば、「開始日時」「終了日時」「対象列」が属性で、「絞り込む」が機能になります。
とすると、オブジェクトは「日付フィルター」というオブジェクトが考えらます。
このオブジェクトの責任は対象データを日付で絞り込む責任を負います。数値や文字列などの絞り込みは負わない。
そして、他の絞りこみについても、同様に数値フィルター、文字列フィルターみたいになります。
そうすると、グラフから見て個々のフィルターは「フィルター」という抽象的なオブジェクトとしてとらえることができます。
グラフは、フィルターに表示用のデータを渡し、フィルター内で設定された条件にそって、表示用のデータが戻され、グラフはそのデータを使って再描画する。(再描画はフィルタの責任ではない)
といった、考えでいかがでしょう?
@aono1234
Questioner