一个面向对象的模型设计问题

shangwei97 2011-05-04 04:47:32
现在要实现一种模型,一个父类派生多个子类的问题,子类中的属性值多不相同,只有少数属性值可以继承,在设计父类的时候,父类是否要包含所有子类的属性?
我觉得不应该包括,可是他们之间确有继承关系该如何处理?
如果写接口多重继承吧,接口里面写属性不是很舒服?而且要写接口会有很多接口,麻烦?有没有更好的办法?
谢谢大家帮忙
...全文
142 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangwei97 2011-05-05
  • 打赏
  • 举报
回复
我就是想实现一个windows的控件的模型,类似于C#里面的Element接口或者父类——button,TextBlock等等子类
父类里面可能会在以后添加其他的共有属性。

应该是用接口比较好。我再想想
threenewbee 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 shangwei97 的回复:]
我就是想实现一个windows的控件的模型,类似于C#里面的Element接口或者父类——button,TextBlock等等子类
父类里面可能会在以后添加其他的共有属性。

应该是用接口比较好。我再想想
[/Quote]
建议你不要用什么类,直接使用 Dictionary,键值对集合保存属性。
xuStanly 2011-05-04
  • 打赏
  • 举报
回复
一般建议多用接口,慎用父类。
threenewbee 2011-05-04
  • 打赏
  • 举报
回复
具体问题,具体分析。

一方面你的问题已经描述了你解决问题的倾向,另一方面别人不知道你的问题是什么。
cloudtian101 2011-05-04
  • 打赏
  • 举报
回复
如果没有继承多个属性为什么要继承?没有明显的继承关系非要强加父子关系,当然别扭。
qw_zr 2011-05-04
  • 打赏
  • 举报
回复
如上所述,根本不需要所谓的“多重继承”和接口。
qw_zr 2011-05-04
  • 打赏
  • 举报
回复

public class Father
{
private string _id;
public string Id
{
get { return _id; }
set { _id = value; }
}
}

public class Son1 : Father
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}

public class Son2 : Father
{
private int _width;
public int Width
{
get { return _width; }
set { _width = value; }
}
}

public class TestClass
{
public void Test()
{
Father son1 = new Son1();
Father son2 = new Son2();
string son1_Id = son1.Id;
string son2_id = son2.Id;
string son1_Name = ((Son1)son1).Name;
Son2 son2xxxx = son2 as Son2;
int width = son2xxxx.Width;
}
}

CShareMySide 2011-05-04
  • 打赏
  • 举报
回复
不要依赖反了,不然的话没发设计了

你说的,应该是把ID当着基类,别的类继承ID

应该理解为那个id有高度

那个id的高度要居中

那个id的名字和值是多少

而高度、居中、名字和值之间没任何关系
wlf535944903 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vrhero 的回复:]

当然别扭...你那些所谓“子类”除了ID压根儿就没关系,不要滥用继承...

你只需要声明个有ID属性的接口...那些个所谓“子类”各玩儿各的,哪来的什么父类...
[/Quote]

请问如果声明有ID属性的父类 可以么?
遥望那些年 2011-05-04
  • 打赏
  • 举报
回复
可以在对象浏览器中,查看一下WebControls.TextBox WebControls.Panel等等WebControl的子类,看看他们和父类WebControl的关系
vrhero 2011-05-04
  • 打赏
  • 举报
回复
当然别扭...你那些所谓“子类”除了ID压根儿就没关系,不要滥用继承...

你只需要声明个有ID属性的接口...那些个所谓“子类”各玩儿各的,哪来的什么父类...
shangwei97 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
不同的属性为什么要包含?父类吃饱了撑的?接口里面写属性哪里让你不舒服了?
[/Quote]
我现在父类里只有一个ID属性,
有一个子类要name和value属性,我就要写一个接口包括name和value,还有个子类是high和widht,那么又要写一个接口;如果一个子类是有是否居中和hight和width的属性,那么我是再写一个接口呢,还是继承原有的接口做扩充?
感觉这么用很别扭
xuexiaodong2009 2011-05-04
  • 打赏
  • 举报
回复
子类中的属性值多不相同,所以不要再父类里写,可以通过虚方法实现
vrhero 2011-05-04
  • 打赏
  • 举报
回复
不同的属性为什么要包含?父类吃饱了撑的?接口里面写属性哪里让你不舒服了?
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧