学习过 Objective-C 的基础概念之后,想必读者们一定跃跃欲试,想要测试看看自己的实力吧!在第二次作业里面增加了物件导向的练习以及 iPhone 的 MVC 操作,让我们一起来看看吧!
作业 2A -- What the Tool在上一週的作业中,我们曾经实做过 What the Tool 这个工具程式的前四项功能,而在第二部份的作业中,我们将开始撰写自己的 Objetive-C 类别,并且建立类别的实体、列印相关资讯。
这次要建立的类别是 PolygonShape,也就是多边形的类别。这个类别将会在作业 2B 中被使用在 iPhone 软体开发练习上,所以在设计上要特别用心。
根据作业要求,在 PolygonShape 中会有 6 个 property,分别是:
前三个 property 在物件中会有相对应的变数储存,而后三个则是在使用 property 时的时候透过前面三个变数动态计算出来,并且回传值。要注意的是,作业中有要求要自己实做 setter 方法并且加入一些限制,在作业的公告中有详细的规定。
此外,你也需要宣告、实做以下 init 方法:
- initWithNumberOfSides:sides minimumNumberOfSides:min maximumNumberOfSides:max;
注意,你应该会先设定 minimumNumberOfSides 和 maximumNumberOfSides,最后在设定 numberOfSides,这样才能确定多边形的边数有介于最大值和最小值中间。
此外你也要重新实做通用的 - init 方法,并在方法中呼叫你刚刚建立的 initWithNumberOfSides,并且使用初始值建立一个 5 边的多边形,最大跟最小分别是 3 到 12。
至于 angleInDegrees 和 angleInRadians 这两个 property 所回传的角度计算公式,可以参考 Wikipedia 上的条目 ,而 name 这个 property 所需要回传的名称也一样可以在 另外一个条目 中找到。
你也需要实做-description 方法,範例输出如下:
Hello I am a 4-sided polygonwith angles of 90 degrees .
为了能够确定你有正确的记忆体观念,也要实做 dealloc 方法,并且在物件被从记忆体移除前加入一行 NSLog 作为纪录。
最后,在 What A Tool 的程式当中,加入 PrintPolygonInfo 这个 function,就如同上次作业般一样。记得在档案开始的地方加入:
#import "PolygonShape.h"
而在 PrintPolygonInfo 当中,你需要建立一个 NSMutableArray 并且加入数个 PolygonShape 物件,测试 setter 的限制是否有发挥作用,并且列印出 description 的内容。
这个作业内容略为複杂了点,不过笔者相当鼓励各位能够练习看看,一定可以获得很多收穫。而且此作业实做的 PolygonShape 类别也将在作业 2B 中使用。
作业 2B -- Hello Poly
这个作业以及下次的作业中,我们将撰写一个 iPhone 程式来显示多边形,使用者可以在使用者介面上设定多边形的边数,并且使用 custom view 在 iPhone 上画出对应的多边形的图案。
或许听到这边你已经开始担心这次作业複杂度了,不过别担心,在课程网站上有提供额外的 walkthrouh 讲义下载,也就是一步步的教学以及说明。
在第四次的上课录影当中,最后的三分钟中也有介绍关于 Hello Poly 的架构,以及其相对应的 MVC 架构。
结论这次的两个作业乡对于上週比起来困难度增加不少,不过却是一个熟悉 Objetive-C 的物件机制和记忆体机的很好机会,也能让我们能够初步的了解 iPhone 程式的 MVC 架构。
两个作业笔者也已经完成,有兴趣的读者,欢迎在这篇文章留言,我会一一寄给各位提供参考。
下次的连载内容将再度回到课堂上,针对第五堂课程的内容做心得整理,还请大家继续支持!
参考资源