Objective-C基础之面向对象编程(OOP)——快速扩展程序
程序员文章站
2022-05-08 16:45:47
...
如果要添加一个绘制三角形的功能,
按过程式编程的做法:了解过程式编程
必须先修改ShapeType枚举类型,添加drawTriangle()函数,在形状列表中添加三角形并修改drawShape()函数。这其中步骤繁多,一个不小心就会出现遗漏造成错误。
但是用面向对象(OOP)的思维来解决,情况就好很多了。
接上一篇的内容
观察我们需要创建的Triangle类,碰巧与已经存在的Circle类几乎完全相同。
所以我们只需要简单的把Circle改成Triangle即可。
当然这里要忽略掉复杂的绘图代码,用简单的打印输出代替。
@interface Triangle : NSObject
{
ShapeColor fillColor;
ShapeRect bounds;
}
- (void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end // Triangle
@implementation Triangle
- (void) setFillColor: (ShapeColor) c
{
fillColor = c;
} // setFillColor
- (void) setBounds: (ShapeRect) b
{
bounds = b;
} // setBounds
- (void) draw
{
NSLog (@"drawing a triangle at (%d %d %d %d) in %@",
bounds.x, bounds.y,
bounds.width, bounds.height,
colorName(fillColor));
} // draw
@end // Triangle
接下来,修改main()函数来创建三角形。
首先,将shape数组大小改为4,用来装下三角形对象:
id shapes[4];
然后,向Triangle类发送new消息,创建新三角形对象实例:
ShapeRect rect3 = { 47, 32, 80, 50 };
shapes[3] = [Triangle new];
[shapes[3] setBounds: rect3];
[shapes[3] setFillColor: kRedColor];
最后,再次调用drawShape()来输出:
drawShapes (shapes, 4);