`
庄表伟
  • 浏览: 1150554 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

敲响OO时代的丧钟——一种新的语言(1)

阅读更多

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。

 

(未完待续)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics