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

L

laobeli

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#1
请问大家在做数据库编程时怎么运用面向对象的知识啊。我的意思是说怎样将*界面逻辑与业务逻辑分开描述*。
例如
有一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 Adoquerydo
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;
...
不知道我这样做对不对,还请高手指教。还有,我不知道,增、删、改操作该怎么样进一步的封装,还有其它的操作大家也一起说了吧,我不嫌多哦,谢谢了。
 
S

spidan

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#2
我最近也在做这个,现在还不理解这个东东,过两天再来和你讨论!
 
I

icc

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#3
这种封装结构简直就是垃圾!
不如不用的好
 
D

duhai_lee

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#6
你只是把业务处理与界面分离了。 你的业务类中 耦合了 数据库操作。 业务曾不应该考虑数据库的存取与结构。
 
R

Resume

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#7
真正的程序员不必考虑什么对不对象
什么分离
什么耦合
只要让代码可行 效率高 重用性强就成了
何必关心这些规则与教条呢
都解放了 还这么多人迷信 唉
 
C

colnew

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#8
每一个Student都执行SQL岂不是慢死.
应该做个Adapter批量更新啊(在对象中记录增删改状态).
TStudent = class
property Status: TRecordStatus;//Append,Delete,Modify
//property Name..........
end;
TStudents = class
property Items[Index: Integer]: TStudent read GetItems write SetItems;
end;
TDBAdapter = class
procedure Read(ADataSet: TDataSet;
AStudents: TSTudents);
procedure Write(ADataSet: TDataSet;
AStudents: TSTudents);
end;
 
A

Asen521

Unregistered / Unconfirmed
GUEST, post messages is not allowed!
#9
不明白你要干什么。。