私は学習のプロセスを開始していC++
ますobject oriented design
。手続き型コードをオブジェクト指向コードに変換するための既知の/一般的な手法は何ですか?次のコードでは、どのような設計上の選択が意味がありますか?
typedef struct
{
int sector;
int sectorPos;
}EndPosition;
typedef struct
{
int rotateAngles;
double brakingFactor;
}WheelStop;
WheelStop stops[][6] =
{
/* data removed for brevity */
};
typedef struct
{
int numImages; /* Number of images in win amount string */
int pixWidth;
int indexes[7]; /* indexes into NumberImages[] */
}WinAmountData;
typedef struct
{
int xOffset; /* pixel count offset before next digit */
std::string fileName;
//char fileName[20];
cairo_surface_t *image;
}ImageInfo;
ImageInfo NumberImages[] =
{
/* data removed for brevity */
};
enum { DOLLAR = 10, EURO, POUND, YEN };
double DegreesToRadians( double degrees )
{
return((double)((double)degrees * ( (double)M_PI/(double)180.0 )));
}
int InitImages( void )
{
/* uses NumberImages */
}
void DestroyNumberImages( void )
{
/* uses NumberImages */
}
int ParseWinAmountString( char *string, WinAmountData *amtData )
{
/* uses WinAmountData and enum */
}
gboolean rotate_cb( void *StopPos )
{
/* uses EndPosition and stops */
}
static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
/* uses CairoImage class */
}
static void destroy (GtkWidget *window, gpointer data)
{
/* cleanup GTK stuff */
}
私はそれにいくつかの考えを与えました、そして私は多分2つのクラスを見ることができます:
CWinAmount
これには、「スピニングホイール」に配置される通貨額を処理するデータ構造と関数が含まれます。CWheel
これは、ホイールアニメーションの仕組みを制御するホイールデータ構造と関数をカプセル化します。
しかし、これが良いデザインかどうかはわかりません。