!!必看!!面向对象的数据库设计问题!(100分)

  • 主题发起人 主题发起人 laobeli
  • 开始时间 开始时间
L

laobeli

Unregistered / Unconfirmed
GUEST, unregistred user!
请问大家在做数据库编程时怎么运用面向对象的知识啊。我的意思是说怎样将*界面逻辑与业务逻辑分开描述*。
例如
有一Student表 有三个字段 Name ,Sex ,Birthday这里都是字符型的;
Unit1(Form1)主窗体中有三个Label和Edit分别来对应各个字段,增、删、改按钮等。
Unit2(所谓的业务逻辑) 定义一个TStudent的类,结构大致如下:
...
private
FAdoquery:TAdoquery;//用来传递Adoquery控件的查询
FName:String;//以下分别对应三个字段
FSex:String;
FBirthday:String;
function GetName:String;
function GetSex:String;
function GetBirthday:String;
...
public
function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
//用来执行查询的函数
function GetSqls(Index:Integer):String;//用来返回Sql语句
...
published
property Name:String Read GetName Write FName;
property Sex...
property Birthday...
end;

function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
begin
FAdoquery:=Adoquery;
with Adoquery do
begin
close;
sql.clear;
sql.add(Sqls);
// Open是一个Boolean型的参数,用来判断是查询(Open)还是更新(ExecSql)
if open then
open
else
ExecSql;
end;
result:=true;
end;

function GetSqls(Index:Integer):String;
var s:string;
begin
case index of
1:s:='select * from student';
2:...
3:...
end;
result:=s;
end

function GetName:String;
begin
FName:=FAdoquery.FieldByName('Name').AsString;
result:=FName;
end;
...
不知道我这样做对不对,还请高手指教。还有,我不知道,增、删、改操作该怎么样进一步的封装,还有其它的操作大家也一起说了吧,我不嫌多哦,谢谢了。
 
这样可以。
 
推荐你本书<企业应用架构模式>
 
还不错嘛,有些像关健词的如OPEN最好换个名字
 
个人想法,总觉得function GetSqls(Index:Integer)没有必要,因为调用时要了解函数里面索引和查询串的对应关系
 
To:JH_HL
那么这样的对应关系应该如何实现呢,请继续...还有对表的更新操作怎么样封装啊?
 
你是不是老玻璃(安...)?
 
这么写程序还不累死。
你可以把数据各个操作抽象出来(刷新,添加,修改,删除,保存,查询,提取等),做到一个父窗体里,
子窗体继承于它,在子窗体中完成具体数据的操作。
 
其实系统的抽象化越高,代码越多,但可维护复用的价值就越高。这并不是说代码代码多少决定程序的好坏,如果全使用绑定,可以几乎不用写多少代码,但能说这是一个好的系统吗?
个人认为,如果系统简单,可以简化,不必事事非要弄出个多层,弄出几个模式。如果系统较大,并且后期会有改进、升级,还是要继续好好规划的。但也可以考虑开发速度和代码优化相结合。像你的TStudent,这样就可以,如果要进一步处理的化,可以引入持久化等,比如再分离数据处理层,引入代理或其他模式。
具体情况具体定,无需拘于一格。
纯属个人拙见。
 
嗯,可以。
 
动作:从家里到街上
第一种方法:出门口直接打的或乘公车上街
这个叫上街
第二种方法:出门口打的去机场,坐飞机在天上飞了一圈再降落,然后再从机场打的上街
这个叫坐飞机上街
 
哎,大概你们以后就会明白了
自己动手做做吧
 
To:Defo_XYF 别TM直呼我啊,
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部