【发布时间】:2012-07-24 20:03:29
【问题描述】:
我正在开始学习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 */
}
我已经考虑过了,我可能会看到两个类:
-
CWinAmount将包含处理要放置在“纺车”上的货币金额的数据结构和函数。 -
CWheel将封装车轮数据结构和控制车轮动画机制的函数。
但我只是不确定这是否是一个好的设计。
【问题讨论】:
-
所以这是一个“相当小”的应用程序:)
-
我想知道为什么 SO 用户认为适合对任何需要计划而不是编写代码的东西投反对票。似乎违反直觉。
-
@Desolator 我想是的。不到 400 行代码。我应该删掉一些示例代码吗?
-
是的。这是一个 GiantWallOCode。我们通常不接受这一点。此外,无需为您的类添加前缀。
-
@JimNorton 是的,你应该 :)。大多数用户更喜欢阅读您遇到问题的代码片段。如果您真的想阅读所有代码,请将其放在 stackexchange.codereview 中。
标签: c++ c oop design-patterns