Scratch中“面向对象”思想的体现——儿童积木编程与代码编程的联系

Scratch是MIT面向少年儿童设计的一款搭积木式的编程软件。对零基础的少年儿童(尤其针对8-16岁)及零基础的成年人普及编程、编程入门具有重大意义。对于教育者来说更多的应该思考学习Scratch对学习其他编程语言(指敲代码的编程语言)具有多大的帮助、具有什么意义。

经过思索,我发现Scratch很多方面体现了当下很火的"面向对象"编程思想。主要体现在封装、继承、多态等方面。

1.封装

在脚本面板中有一项"更多积木"的模块,允许使用者构建自己的”积木块“,相当于构建一个函数,可以增加各种参数及文本标签,如图1所示。这个功能极大地丰富了Scrarh的创造性,使这个软件变得强大,为使用者学习其他语言提供更多的准备工作。

当编辑好新的代码块之后,直接像其他积木块一样拖拽即可使用,体现了“”封装的特性。

图1 更多积木/制作新的积木

如下图添加并定义了一个积木块“沿着正方形跑”,并设置了一边长参数,将这个代码块加到角色身上,如图2所示,角色就会沿着给定边长的正方形路径跑步。

图2  定义新的代码块及调用举例

运行程序效果如图3,为了方便大家看清楚小猫的运动路径,代码中加入了画笔功能。

图3 调用自定义积木的效果图

2.继承

Scratch的“继承”特性主要体现在复制和克隆两个方面。

1)复制带代码的角色

复制角色,能够把代表一并复制。如图4所示。体现了面向对象“继承”的特点。

图4  复制体现“继承”特点举例

2)克隆

通过“克隆”功能能够实现角色的“继承”。这个功能很棒,能够实现丰富的效果,如游戏《飞机大战》中的各种飞机。如图5克隆对象,点击它还可以再次生成克隆对象。也就是说经点击被克隆的功能本身也被“继承了”。

图5 克隆模块举例

3.多态

1)复制带代码的角色——之后进行修改

如图6所示, 在复制的对象中体现多态,只需要添加或修改被复制对象的部分代码。

图6 在复制对象中体现多态

2)与发送消息事件结合,不同对象不同反应

复制对象,然后对复制的对象的代码进行个性化编辑,也能体现“多态”特点,如图7、图8、图9所示。

图7 消息事件体现多态效果图

图8  第一个复制角色代码图

图9  第二个复制角色代码

3)通过“克隆”功能体现

当作为克隆对象出现的时候执行不同的代码也体现了“多态”的特点,如图10所示。

图10  通过克隆体现“多态”特点

4.实例化

通过克隆、复制实现增加角色的做法也可以理解成对象实例化的过程。通过自定义新的积木块也可以完成实例化的过程,如图11所示。

图11 自定义代码块实例化举例

综上,Scratch在封装、继承、多态、实例化等方面体现了"面向对象"编程思想,能为使用者过度到其他语言学习(如Python)提供极大的帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏狮乐园

简单探索 js 中 something >> 0 的原理

关于这个问题是今天改公司项目小程序的一个bug时看到的,修复这个bug的解决方法是需要引入 String.prototype.padStart 的 polyfi...

1173
来自专栏chafezhou

小说python3的f_strings格式化字符串

1344
来自专栏吴柯的运维笔记

当前最火的编程语言-Python简介

7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。 ? Python , 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido ...

4367
来自专栏玄魂工作室

Hacker基础之Python篇:一、环境安装和基础知识

0x01. 前言 emmmmmmm...你只需知道这是一门用途很广的语言,上到大数据AI,下到Linux运维,都可以使用Python,当然,黑客也用Pyth...

3026
来自专栏C/C++基础

C++异常处理的开销

C++异常是C++有别于C的一大特性 ,异常处理机制给开发人员处理程序中可能出现的意外错误带来了极大的方便,但为了实现异常,编译器会引入额外的数据结构与处理机制...

942
来自专栏资深Tester

测试流程之如何设计测试用例

2043
来自专栏Golang语言社区

【翻译】为什么 goroutine 的栈内存无穷大?

一些 Go 语言的新学习者总是会对 goroutine 栈内存占用大小感到非常好奇。这一般是由于程序员进行无限的函数循环调用导致的。为了说明这个问题,请思考以下...

3626
来自专栏较真的前端

互动交流——第2期

小编:MDN是一个供Web开发者学习的网站,里面的知识点够全够深,个人觉得比W3cSchool强很多。。。

1093
来自专栏大史住在大前端

javascript基础修炼(7)——Promise,异步,可靠性

Promise技术是【javascript异步编程】这个话题中非常重要的,它一度让我感到熟悉又陌生,我熟悉其所有的API并能够在编程中相对熟练地运用,却对其中原...

1185
来自专栏葡萄城控件技术团队

C# 8.0的三个值得关注的新特性

1353

扫码关注云+社区

领取腾讯云代金券