欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

敲响OO时代的丧钟——一种新的语言(1) OO数据结构算法 

程序员文章站 2022-07-12 17:15:03
...

DynamicJava——DJ

一种新的语言

 

一、数据结构

  要定义数据类型,首先需要明确数据的概念。在我看来,数据,就是在数据就是在内存的数据区里存放的内容。那么如何才能决定这块内存中的数据的具体类型呢?说实话,精确定、规范的定义一种语言,我并不擅长,还是让我们举当初的OO失败案例,来看看新的DJ,会如何处理这个难题吧。

 敲响OO时代的丧钟——一种新的语言(1)
            
    
    
        OO数据结构算法 

 

为了定义一个几何图形,我们首先要定义点的概念:

 

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肯定一看就能明白的敲响OO时代的丧钟——一种新的语言(1)
            
    
    
        OO数据结构算法 

 

这里新增加了两个概念: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。

 

(未完待续)