敲响OO时代的丧钟——一种新的语言(1) OO数据结构算法
DynamicJava——DJ
一种新的语言
一、数据结构
要定义数据类型,首先需要明确数据的概念。在我看来,数据,就是在数据就是在内存的数据区里存放的内容。那么如何才能决定这块内存中的数据的具体类型呢?说实话,精确定、规范的定义一种语言,我并不擅长,还是让我们举当初的OO失败案例,来看看新的DJ,会如何处理这个难题吧。
为了定义一个几何图形,我们首先要定义点的概念:
datatype Point{
double x;
double y;
}
一个点需要有x和y两个座标,x和y都是系统的基本类型:double。
然后是线:
datatype Line{
Point p1;
Point p2;
}
一条线需要有两个端点,p1和p2
然后是多边形:
datatype Polygon:ValueList{
Line item;
check:
this.size()>2;
closeLines(this)==true;
checkMethods:
boolean closedLines(this){
}
}
因为Polygon里存放的是一组直线,因此它属于ValueList型的数据,而之前定义的数据类型,其实也可以写成:datatype Point:ValueObj。以表明Point内的每一个数据是肯定不重名的。
类似的:datatype Polygon:ValueList。则表明Ploygon中的每一个数据,都是同样的名字,同样的类型,即Line item;
还有一种类型:ValuePackage,这里就先不展开说了,因为很少会用到。相信buaawhl肯定一看就能明白的
这里新增加了两个概念:check和checkMethod。check中的条件表达式,必须被满足,这个数据才能被认为是多边形:直线数量大于2;连线必须封闭。而判断连线封闭的算法比较复杂,因此定义了一个closedLines的check方法。
datatype Triangle as Polygon{
check:
lines.size()==3;
}
datatype Quadrangle as Polygon{
check:
lines.size()==4;
}
三角形与四边形,都是多边行的一种,因此,他们可以as Polygon。也就是表明:他们成立的条件,在满足所有多边形判据的基础上,再加上直线数量为3或者为4。
(未完待续)
上一篇: 加密算法的java实现源码