delphi面向对象及数据库(300分)

  • 主题发起人 活化石
  • 开始时间

活化石

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI在数据库开发,如何灵活运用面向对象的思想,但又不失去固有的灵活,真正体现面向对象代码重用.现实中窗体继承,公用单元,属性赋值,虚方法及覆盖对我来说也只限与此.但如何真正体代码与界面分离(所谓MVC)方法,书海茫茫没有一本书提及,想看看真的您数据编程中的所采用的类,而不是让我一见到界面,就欣然一笑,啊它大概用了★★控件(这我不反对
我也是这样办的,直奔主题,不为表现形式所困扰,更何况这就在是DELPHI的专长)
废话少讲,抛分引玉吧.最高加到500,我才到2000分,这就叫越是穷人越大方
 
Q

Qv15

Unregistered / Unconfirmed
GUEST, unregistred user!
Y

yczjs

Unregistered / Unconfirmed
GUEST, unregistred user!
好经典的问题
这两天正在思索ing
搬个板凳先
 
Z

zhuoyuesky

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在是将有共性的做成类,各个模块做成dll或package
 
P

pandababy

Unregistered / Unconfirmed
GUEST, unregistred user!
这的确是个好话题,希望多一些高手来说一些经验!!!
to zhuoyuesky:
我也在整理类似你做的东西,只是我想把所有共享的方法属性之类都写成控件
但至与这里面的类如何组织,我还是没有比较好的思路,希望有好的这方面经验的人
多指点!!
 
A

abc_xp

Unregistered / Unconfirmed
GUEST, unregistred user!
兄弟,你还在呀,我好久没有来这里来了,挺怀念地
 

诸葛白痴

Unregistered / Unconfirmed
GUEST, unregistred user!
看看ALM里最近xwing的observer模式,数据库开发应该是如此,采用class、interface和
插件相加
 
C

caochen

Unregistered / Unconfirmed
GUEST, unregistred user!
我仅仅做了一些窗体继承,我也想做到代码共用,不知道怎么做
 

魔鬼大师

Unregistered / Unconfirmed
GUEST, unregistred user!
继承,
封装,
多态
 
W

wfzha

Unregistered / Unconfirmed
GUEST, unregistred user!
我的经验:不管好坏,尽量按自己的想法把自己的数据库程序封装起来
等下次再做类似的软件的时候,找出以前的代码来看看有多少可以重用
有多少需要修改,有多少需要重写。反复经历几次就明白了
 

畅雨

Unregistered / Unconfirmed
GUEST, unregistred user!
内部数据操作定义为统一的接口,例:
  Idboperate=interface
procedure Opendataset;
procedure Closedataset
procedure New;
procedure edit;
procedure delete;
procedure save;
      ...
end;
TBasedbObject=class(Tdatamodule,Idboperate)
...
end;
Tsalebill=class(TBasedbObject);
...
end;
再通过一个工厂来进行管理你的业务对象(利用dm封装业务对象),
毕竟对各种业务对象的操作也就无非增加,删除,保存等操作.
 

碧血剑

Unregistered / Unconfirmed
GUEST, unregistred user!
多积累一些通用的模块
 

活化石

Unregistered / Unconfirmed
GUEST, unregistred user!
abc_xp你好,稍有空闲,这不来提问吗
各位请继续,谢谢
 
D

delphi188

Unregistered / Unconfirmed
GUEST, unregistred user!
好题!大侠都出手啊
 
Z

zzsczz

Unregistered / Unconfirmed
GUEST, unregistred user!
请看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1061399
多围的对象和平面的关系数据库不是天然相容的。(object database除外)
可以用delphi的object mapping框架如bold很贵,
免费的有
http://sourceforge.net/projects/depo/
Delphi Persistent Object (DePO) is a Object Persistent Framework

出路:
1用java,有hibernate ,apache 的job开源的一大堆,
2用delphi 和bold,,我玩了的,bold非常爽,不用管database和gui,
只用设计object 之间的关系。当然,钱也很爽
3自己用把java的数据库相关类库框架用delphi写一遍
反正就是不能用delphi自带的控件
 

月亮河主人

Unregistered / Unconfirmed
GUEST, unregistred user!
学习一下postgresql数据库吧,这是一个对象-关系型数据库系统,在这个数据库里有“类”的概念,呵呵,相信你很快就会结束这个问题的。
 
D

dingbaosheng

Unregistered / Unconfirmed
GUEST, unregistred user!
asp.net 可以实现代码和界面分离
 

活化石

Unregistered / Unconfirmed
GUEST, unregistred user!
很感谢各位,不过今天才有空.还希望各位知无不言
 
W

woyaoying

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TMydate=class
private
MAdoTable: TAdoTable;
DAdoTable: TAdoTable;
FMTableName:string;
FDTableName:string;
procedure SetMTableName(Value:String);
procedure SetDTableName(Value:String);
public
property MTableName:string read FMTableName Write SetMTableName;
property DTAbleName:string read FDTableName write SetDTableName;
procedure RefreshData(var ADate: TAdoQuery);overload;
procedure RefreshData(var ADate: TAdoTable);overload;
procedure connection(var Aconn: TAdoConnection);
constructor Create;override;
destructor destroy;
end;
constructor Create;
begin
MAdoTable := TAdoTable.Create;
DAdoTable := TAdoTable.Create;
end;
procedure Connection(var AConn: TAdoconnection);
begin
MAdoTable.Connection := AConn;
DAdoTable.Connection := Aconn;
end;
destructor Destroy;
begin
MAdoTable.Free;
MAdoTable := nil;
DAdoTable.Free;
DAdoTable := nil;
end;
procedure SetMTableName(Value:string);
begin
MAdoTable.TableName := Value;
end;
procedure SetDTableName(Value:string);
begin
DAdoTable.TableName := Value;
end;
procedure RefreshData(var ADate: TAdoQuery);
begin
ADate.Close;
Adate.Open;
end;
procedure RefreshData(var ADate: TAdoTable);
begin
ADate.Close;
Adate.Open;
end;

其实上述的类,可以把AdoQuery,AdoTable,AdoConnection等等。一切封装得很严密。
我就不用多说了~~
很希望大家能够多写类~~~
 
W

woyaoying

Unregistered / Unconfirmed
GUEST, unregistred user!
尽心讨论
 
顶部