I am writing an application for creating musical friezes, but I am a little worried about the structure of classes and interfaces inside the code. Here are the signatures of some classes that I wrote:
Interface IGuidoFormattable
Class Note : IGuidoFormattable, ICloneable
Class Pause : IGuidoFormattable, ICloneable
Class Chord : List<Note>, IGuidoFormattable, ICloneable
Class Key : IGuidoFormattable, ICloneable
Class Tempo : IGuidoFormattable, ICloneable
Class Meter : IGuidoFormattable, ICloneable
Class FretPiece : List<IGuidoFormattable>, ICloneable
Class Fret : List<FretPiece>
FretPiece is a mousse phrase, part of a complete scatter. It provides Key, Tempo, and Meter properties that are homonymous to their types. More pronounced phrases create the scatter represented by the Fret class. Each element within a single phrase must be formatted in accordance with the standard GUIDO nomenclature, so it must implement the IGuidoFormattable interface. In another namespace, certain mutation classes are defined and they all inherit from one of two abstract classes:
Class FretMutation
Class LambdaFretMutation : FretMutation
, FretMutationGenerator, freize Fret.
FretPiece (, ), , , : GUIDO , , ; . , , ICloneable, . IGuidoFormattable , , Clone IGuidoFormattable.
-, , . FretMutation "", . , :
FretPiece Apply(FretPiece originalTheme)
FretPiece , , . , . - , , , (, , ) .
, FretPiece IGuidoFormattable, , , , : , "" (, 3), . -.
, ?