
通过创建同一个对象的不同实例,让我们一起更加深入的开始我们的面向对象的程序设计吧。
案例1:设计一座宠物的房子,有斜的屋顶和垂直转角的房间
思路分析:我们根据每个墙面的情况来进行设计,采用模块化的设计思路,首先设计出一面墙并有一扇窗户的单一模块。然后创建不同的模块并采用旋转和移动的方法将其“摆放”在合适的位置上,最终形成简易房子的外观。房屋的屋顶采用普通的斜顶。
设计步骤:
1、设计单一模块。建立一面有窗户的墙面。
2、重复和复制单一模块。直到复制完所有需要的墙面,并移动到需要的位置。
3、设计斜顶,修改大小和颜色,并旋转和移动到位。
宠物小屋参考链接:https://www.tinkercad.com/things/ghcahMPGMJG
【提示】
这种在模块里面添加对象副本的方法称为创建对象的实例,如果对创建的实例不进行操作(如移动、旋转、缩放等)则实例与对象会重叠在一起,并成指数式倍增。
(也就是最初是1个对象,然后是2个对象,4个对象,8个对象,16个对象……)好像没有创建一样。但是程序会很快提示出错信息,即积木块的总数超过了200个错误信息。这里我们将创建的实例移动一定的距离,就可以看到上图所示的结果。
【拓展练习】
用这样的方法可以建立很多非常复杂的模型,尤其是不同的楼层有不同的平面结构。我们可以使用CODEBLOCKS建立好模型,导出成零件,然后在TINKERCAD内部进行组合,最终得到我们需要的模型。
由于CODEBLOCKS最多建立200个积木块程序,所以能够用CODEBLOCKS建立的模型也相对简单,场景也不太复杂,而用CODEBLOCKS导出零件的功能,再借助TINKERCAD的零件库功能,我们可以将CODEBLOCKS和TINKERCAD建立的模型整合在一起,合成更大更复杂的场景模型。
比如我们经常在一些学校看到的大楼,这里仅给出大楼的大概外观模型效果。我们可以根据这些外观,建立自己需要的模型,将所有编程的思路使用到位,发现不同的编程方法,收获不同的喜悦。
建立一座大楼参考链接:https://www.tinkercad.com/things/eawy3eN7xFE
总结:
不同的编程方法会有不同的耗时,这体现在效率上,我们应该尽可能的发挥自己的能力编写出效率最高的程序。
房子的外观复杂度越高,实现起来就越需要我们考虑周全,耗时也就越多,发现其中能够用于编程实现的循环结构也就越难,这是一个非常耗时的过程,是需要我们认真构思的编程思路的梳理过程。
注:(完成宠物小屋内容耗时约30分钟。)
拓展部分难度较大,但是个非常好的练习,通过这个大楼模型的建立,会给我们今后设计类似的房屋带来新的灵感和启发。拓展部分耗时约220分钟。
说明:此学习资料中的积木中文翻译源自于TINKERCAD,可能将来发生变动,以TINKERCAD最新版翻译为准。