|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
告诉你了一个方式,但是缺少努力这一环节,那也是白搭。对象|设计|使用实例 本文次要论述若何在PHP中完成画图对象的布局设计。
在PHP中小型的数据布局可由复杂类来完成,即由复杂的数据和操作来界说。但跟着数据布局的庞杂化,复杂类不克不及知足完全表现全部数据布局的需求,由此需求利用类的布局,一句话来描写就是类中的成员也由类来组成。这是面向对象设计办法完成对数据封装、信息埋没及代码重用的扩大体例,而另外一种体例就是类的承继。
本文次要会商类的布局。
以画图为例,咱们来看关于几何图形的复杂例子。
几何图形包括一系列的点,线,面等,而由一些几何正义可知点是个中最根基的组成元素。所以,咱们以点作为设计的根基对象,由此来描写线和面临象。用来举例申明类布局的完成体例。
剖析
假定点位于某一立体内,在肯定了坐标系以后(即给定了原点和坐标轴及其正偏向),咱们即可以用坐标地位来描写这个点,如图:
直线是由两点来肯定的,所以由肇端和终止两点即可肯定一条线段。如图:
面 ――(无妨举例)矩形,由两条平行对边组成,且相邻双方夹角为90度。画图时发明,矩形可由对角的两点独一肯定。如图:
基于上述剖析,咱们入手下手设计:点类,线类,面类。线和面类中的数据成员包括点类,这就是类的布局,从而由复杂类组成庞杂类。
设计以下:
从另外一个角度思索,假如不采取类的布局设计办法,一个没有条理的类多是如许的,以Line为例:
一个复杂类,设法是:成员变量代表肯定此线段的两个点的坐标(x1,y1),(x2,y2)。
对照两种设计,Line_Bad带来的了局是保护和更改方便,由于没有条理。起首需求保护的成员变量多,四个;若需求设置线段中点的色彩,Line_Bad则需求增添成员函数;若需求将这直线改成三维空间的,Line_Bad则需求增添成员变量,然后修正一切的成员函数。而用Line类则防止了如许的费事,设置色彩只需挪用Point的办法就能够完成;而改成三维空间,只需增添Point的属性(z坐标)就能够了。而Line类自己几近不必做任何修改(与PHP的画图函数有关),省了很多保护修正的力量吧 :)。
如今画图的基本有了,咱们就来举一个实践的使用例子。
在很多统计中常需求用图例来显示各类统计了局,咱们就用下面设计的画图类来完成柱状图的显示。
剖析:
柱状图次要由坐标轴和柱体组成。坐标轴可由Line类显示,柱体可由Rectangle类显示。
显示坐标轴以下:
function DrawAxes()
{
$vertspan=200;
$p1=new Point(10,$vertspan+2.5);
$p2=new Point(10,2.5);
$VerticalAxis=new Line($p1,$p2);
$VerticalAxis->Draw();
$p1=new Point(7.5,$vertspan);
$p2=new Point(370,$vertspan);
$HorizontalAxis=new Line($p1,$p2);
$HorizontalAxis->Draw();
}
显示柱体以下:
function Plot($arr_barTotal)
{
$vertspan=200;
//显示比例
$scaleHeight=190;
//肯定柱状中最大值
$maxTotal=Max1(&$arr_barTotal);
//肯定柱体个数
$total=count($arr_barTotal);
//轮回显示柱状体
$dx=15;
$x=10+$dx;
for($i=0;$i<$total;$i++)
{
$rectHeight=($arr_barTotal[$i]/$maxTotal)*$scaleHeight;
$p1=new Point($x,$vertspan-$rectHeight);
$p2=new Point($x+$dx,$vertspan);
$CurrRect= new Rectangle($p1,$p2);
$CurrRect->Draw();
$x+=2.0*$dx;
}
}
主法式:
1) 肯定显示数据。
2) 显示坐标轴。
3) 显示柱状体。
//main
$arr_barTotal=array('1','3','34','23','5','25','7'); //显示数据
DrawAxes(); //画坐标轴
Plot($arr_barTotal); //画柱状体
如许主法式框架就完成了:D
后果以下。
如需进一步丑化任务,人人可自行添加基本显示类中响应的属性及响应的成员函数,这里就不多述了。
附:由于篇幅成绩,没有附上源码。
本文中一切代码可在http://10.31.172.7/cgi-bin/cvsweb.cgi/kai/graph/中取得,并已在php4.0.2+Gd1.62情况下调试经由过程。
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。 |
|