电子表格应用程序详解
1. 电子表格的类结构
电子表格应用程序主要由Cell、CellMatrix和TSetMatrix这几个类来表示。
-Cell类:处理单个单元格,每个单元格可以包含表示数值、公式或(可能为空的)纯文本的信息。单元格的值可能会影响其他单元格的值,并且每个单元格都有一个源集(依赖的单元格集合)和一个目标集(依赖于该单元格值的单元格集合)。
-CellMatrix类:处理整个电子表格。
-TSetMatrix类:处理所有单元格的目标集。
为什么有目标集矩阵而没有源集矩阵呢?原因是单元格自身决定其源集,只有公式才有源集,文本和值没有源集,且源集是公式中所有引用的并集。而目标集更复杂,单元格自身不能决定其目标集,它是由其他单元格的公式间接设置的。将目标集从单元格中分离出来并存储在单独的目标集矩阵中可以简化问题,特别是在进行剪切和粘贴操作时。
从数学角度看,单元格及其集合构成一个有向图。当用户输入公式时,需要检查公式是否会产生循环引用,这意味着该图必须是无环的。例如,在某个电子表格中,c2的源集包含b1和a2,因为c2的公式包含b1和b2;b3的源集包含a2