我想问一个关于如何处理简单的面向对象设计问题的问题.我对自己处理这种情况的最佳方法有一些想法,但我有兴趣听听Stack Overflow社区的一些意见.还赞赏相关在线文章的链接.我正在使用C#,但问题不是语言特定的.
假设我写一个视频商店应用程序,其数据库中有一个Person表,其中PersonId,Name,DateOfBirth和Address领域.它还有一个Staff表,其中包含指向a的链接PersonId,以及一个Customer也链接到的表PersonId.
一个简单的面向对象的方法是说Customer"是一个" Person,因此创建类有点像这样:
class Person {
public int PersonId { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
public string Address { get; set; }
}
class Customer : Person {
public int CustomerId { get; set; }
public DateTime JoinedDate { get; set; }
}
class Staff …Run Code Online (Sandbox Code Playgroud) 最近我听说OOP(Java)有9条规则.我只知道四个是抽象,多态,继承和封装.OOP还有更多规则吗?
我最近阅读了一个关于OOP相关问题的有趣评论,其中一个用户反对创建"Manager"类:
在谈论课程名称时,请从词汇表中删除单词manager.该类的名称应该描述其目的.经理只是倾销的另一个词.任何功能都适合那里.这个词一直是许多极端糟糕设计的原因
这个评论体现了我努力成为一个优秀的面向对象的开发人员.我一直在一个只有程序编码人员的组织里做过程序代码.看起来我们生成的相对较少的OO代码背后的主要策略是将问题分解为易于识别为离散单元的类,然后将左侧/广义位放在"Manager"类中.
我怎样才能打破我的程序习惯(比如Manager类)?大多数OO文章/书籍等使用本质上易于转换为对象组的问题的示例(例如,车辆 - >汽车),因此不提供用于分解更复杂系统的大量指导.