CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

一对多对象的类设计

楼主ymli(阿立)2005-06-01 16:52:58 在 .NET技术 / C# 提问

背景是要操作关系数据库中的表,表A与表B是一对多关系;  
  为了实现OO   Style,设计两个类A与B相对应;但如何表现两者的一对多关系?  
  ---------------------------------------------------  
  public   class   B     //表B中Aid、Bid联合主键  
  {  
          private   int   _Aid;  
          private   int   _Bid;  
           
          public   B{}  
          ...  
  }  
   
  public   class   A  
  {  
          private   int   _Aid;  
          //private   ArrayList   _B;     ???用集合实现?  
   
          public   A{}  
          ...  
  }  
  ---------------------------------------------------  
  这样写行吗?应该如何实现并进行各种写、读数据库的操作?初学OO,最好有详细代码教我,感谢!  
  问题点数:100、回复次数:10Top

1 楼meixiaofeng(yesmsn)回复于 2005-06-01 16:59:43 得分 2

楼主写的对,用数组表示对象集合Top

2 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-06-01 17:00:54 得分 1

又来晚了Top

3 楼thinkingforever(努力学习)回复于 2005-06-01 17:03:18 得分 5

可以啊!把B表中的每一个字段对应B类中的一个属性,A也一样.  
  把B的对象放到ArrayList中  
  操作是在遍历ArrayList,从ArrayList读出来再转换为B,然后从属性中拿到数据再更新Top

4 楼mba9001(两年不见,csdn变肥了)回复于 2005-06-01 20:28:44 得分 2

this[]Top

5 楼ymli(阿立)回复于 2005-06-07 10:02:59 得分 0

谢谢,那么private   ArrayList   _B;这样写可以的了?  
  能否举例如何实例化class   A,class   B?  
  To   thinkingforever(努力学习)   (   )   信誉:105   :能给个遍历class   B集合的代码吗?  
  初学,望赐教!Top

6 楼zeusvenus()回复于 2005-06-07 10:28:52 得分 1

帮你顶一下,thinkingforever的方法是对的.Top

7 楼liuzxit(dotnetRGB.com)回复于 2005-06-07 10:36:06 得分 80

A.cs  
  ==============  
  using   System;  
  using   System.Collections;  
   
  namespace   Gardener  
  {  
  public   class   A  
  {  
  private   ArrayList   _objB=new   ArrayList();  
   
  public   ArrayList   objB  
  {  
  get{return   _objB;}  
  }  
  public   A()  
  {  
  }  
   
  public   void   addB(B   obj)  
  {  
  this.objB.Add(obj);  
  }  
  }  
  }  
   
  B.cs===================  
  using   System;  
   
  namespace   Gardener  
  {  
  ///   <summary>  
  ///   Summary   description   for   B.  
  ///   </summary>  
  public   class   B  
  {  
  private   string   _title;  
   
  public   string   title  
  {  
  set{_title=value;}  
  get{return   _title;}  
  }  
   
  public   B()  
  {  
  //  
  //   TODO:   Add   constructor   logic   here  
  //  
  }  
  }  
  }  
   
   
  ============  
  .......  
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  A   clsA=new   A();  
  B   clsB=new   B();  
  clsB.title="abc";  
  clsA.addB(clsB);  
  clsB=new   B();  
  clsB.title="efg";  
  clsA.addB(clsB);  
  for(int   i=0;i<clsA.objB.Count;i++)  
  {  
  MessageBox.Show(((B)(clsA.objB[i])).title);  
  }  
  }  
  .....Top

8 楼ghchen()回复于 2005-06-07 11:21:24 得分 1

楼上详细啊Top

9 楼Seeko0(阿 枫(终点又回到起点,到现在我才发现))回复于 2005-06-07 12:54:03 得分 4

实际在可以使A类直接继承ArrayList这个类  
  这样A类中就有了Items的属性  
  class   A:ArrayList{  
   
  }Top

10 楼lionqun(兔子)回复于 2005-06-07 13:08:13 得分 4

也可以考虑考虑用HashTable阿,可以把B的主键作为HashTable的key  
   
  如果需要遍历相关的操作,可以考虑迭代子模式Top

相关问题

  • 设计一个类,只能有一个该类的对象!!
  • 大家在做PetShop式N层式设计的时候,对于汲及到多个表的对象的类怎么做设计?
  • 面向对象设计中,对象划分到多细合适?谢谢
  • 对象的STYLE设计
  • 软件界面的MainFrame类的设计问题?(面向对象设计讨论一)
  • 我现在想学面向对象设计(主要是类的设计),应该看什么书啊?
  • 多个非常相似的对象,做设计时应该怎么处理啊?
  • 多个非常相似的对象,做设计时应该怎么处理啊?
  • 谈论面向对象设计
  • 请问基于对象设计和面向对象设计有什么区别

关键词

  • clsb
  • clsa
  • objb
  • addb
  • arraylist
  • aid
  • 实现
  • title
  • 关系
  • private

得分解答快速导航

  • 帖主:ymli
  • meixiaofeng
  • zhongwanli
  • thinkingforever
  • mba9001
  • zeusvenus
  • liuzxit
  • ghchen
  • Seeko0
  • lionqun

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo