2

特定の開始時間と、場合によっては持続時間を持つ楽譜内のオブジェクトを表す (Java) クラスを作成しています。このクラスにふさわしい名前が必要です。「Timed」や「TimedObject」などは適切ですか? 「-able」で終わるもの (Runnable など) を考え出そうとしましたが、良いものは思いつきません。「OnsetTimeable」はばかげているように聞こえます。「OnsetTime」は動詞ではないからです。私は「MusicalObject」もあまり好きではありません。オブジェクトに開始時間が含まれていることを意味するわけではないからです (「Musical Object」はスコアに関連するものであれば何でもかまいません)。

更新: 音楽的には、このクラスはスコアのある時点で発生する何かの抽象化を表します。これは、Note、KeyChange、MeterChange、DynamicMarking、TempoMark などのクラスのスーパークラスであると想定されています。

4

9 に答える 9

5

これは、MIDI ファイルのイベントのように聞こえます。

于 2008-11-17T20:24:58.210 に答える
1

それはクラスですか、それともインターフェースですか?インターフェイスは、その呼び出し元のニーズによって駆動される必要があります。OnsetTimeable を使って何ができるでしょうか (今のところそう呼んでいます)。-able で終わる名前を提案するあなたの傾向は、それをインターフェイスと考えていることを示唆しています。

楽譜を再生するプログラムを書くのではなく、楽譜を作成するだけの場合、楽譜内のほとんどのオブジェクトは、操作を伴う真のオブジェクトというよりも、単純なデータ構造または「値オブジェクト」に似ていると思います。これは、オブジェクト (譜表など) をレンダリングするときに、カプセル化が壊れる傾向があるためです。オブジェクトのレンダリングまたはシリアル化のポイントは、そのすべての状態をキャプチャすることであるため、これは理にかなっています。この場合、具体的な POJO を使用するだけでおそらく十分です。

于 2008-11-17T20:26:58.037 に答える
0

それは音楽的に何ですか?

メモですか?-> 良い名前: "Note"、または "TimedNote"
フレーズですか? -> 適切な名前: "MusicalPhrase"、または "Phrase"
など。

コンテキストからオブジェクトを抽象化しないでください (たとえば、"Timed" という名前を付けます)。オブジェクトが実際に何であるか、プログラムでの用途を考えて名前を選択してください。

于 2008-11-17T20:10:21.923 に答える
0

Section、またはおそらくMovementを説明しているように聞こえます。

于 2008-11-17T20:38:14.050 に答える
0

オブジェクトがシステムの残りの部分に提案することになっている主なサービスは何ですか?

その名前は、最初に設計することによって作成したい抽象化を表す必要があると思います。

これまでのところ、オブジェクトが何でできているか (開始時間など) はわかっていますが、何が機能しているかはわかりません。さらに重要なことに、baash05 が指摘しているように、それ何であるか、つまり、それが何を表しているかはわかりません。

質問で述べたように、クラスに名前を付けるための最良の方法は何ですか? 単一責任の原則も良いアプローチです。

スコアの特性の共通の構造を表す必要がある場合 (メモ、...)、ScoreAttributeのような名前が適切です。

于 2008-11-17T20:06:07.470 に答える
0

テンポラルはどうですか?または TimedFigure、TemporalFigure ?

于 2008-11-17T20:20:24.180 に答える
0

あなたのオブジェクトが何をするかを知る必要はありません..それ以上、「Cat」が何のクラスタイプをするかを知る必要があります
..それが「ある」ものです。
動詞はどこに必要ですか?ダイアログ、スタック、文字列、ペン...名前に動詞が含まれていませんか?

私はMusicNoteを使います..
すべての音符には時間要素があります.. 本当に。時間要素のない音符を聞いたことがありますか?

次に、MusicPhrase は MusicNotes の配列を持つことができ、MusicSong はフレーズの配列を持つことができます。MusicAlbam には MusicSongs の配列を含めることができます。
曲は定義上ミュージカルであることは知っていますが、名前はそれらをまとめるのに役立ちます。

于 2008-11-17T20:20:50.793 に答える
0

スコア項目? ミュージカルイベント?

于 2008-11-17T20:21:44.100 に答える
0

このスレッドに回答している他の人たちに同意します。一般化します。

「TimedAction」という名前のクラスを作成することを考えてください。これをパラメータ化して、指定した時間に何らかのアクションを実行できます。次に、「TimedAction」にその時点で何をするかを指示するだけです。これにより、アクションを変更できるようになり、配置する必要がある可能性のある他のアクションに柔軟に対応できます。

ここでの考え方は、特定の時間に何かを起こしてほしいということです。それを自分が起こしたいと考えるのではなく、何かが起こっていると考えてください。そのため、「TimedAction」というハプニングのクラスを作成し、何かをパラメータ化します。それは、起こっている何かのためにクラスを作成する最初の本能とは対照的です。

于 2008-11-17T20:22:32.880 に答える