欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Objective-C基础之面向对象编程(OOP)——快速扩展程序

程序员文章站 2022-05-08 16:45:47
...

如果要添加一个绘制三角形的功能,

按过程式编程的做法:了解过程式编程

必须先修改ShapeType枚举类型,添加drawTriangle()函数,在形状列表中添加三角形并修改drawShape()函数。这其中步骤繁多,一个不小心就会出现遗漏造成错误。


但是用面向对象(OOP)的思维来解决,情况就好很多了。

接上一篇的内容

观察我们需要创建的Triangle类,碰巧与已经存在的Circle类几乎完全相同。

Objective-C基础之面向对象编程(OOP)——快速扩展程序

所以我们只需要简单的把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);