相关疑难解决方法(0)

面向对象的最佳实践 - 继承v组合v接口

我想问一个关于如何处理简单的面向对象设计问题的问题.我对自己处理这种情况的最佳方法有一些想法,但我有兴趣听听Stack Overflow社区的一些意见.还赞赏相关在线文章的链接.我正在使用C#,但问题不是语言特定的.

假设我写一个视频商店应用程序,其数据库中有一个Person表,其中PersonId,Name,DateOfBirthAddress领域.它还有一个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 inheritance composition

39
推荐指数
5
解决办法
2万
查看次数

OOP有什么规则吗?

最近我听说OOP(Java)有9条规则.我只知道四个是抽象,多态,继承和封装.OOP还有更多规则吗?

oop rules solid-principles package-design

20
推荐指数
3
解决办法
8448
查看次数

我如何打破程序编码习惯?

我最近阅读了一个关于OOP相关问题的有趣评论,其中一个用户反对创建"Manager"类:

在谈论课程名称时,请从词汇表中删除单词manager.该类的名称应该描述其目的.经理只是倾销的另一个词.任何功能都适合那里.这个词一直是许多极端糟糕设计的原因

这个评论体现了我努力成为一个优秀的面向对象的开发人员.我一直在一个只有程序编码人员的组织里做过程序代码.看起来我们生成的相对较少的OO代码背后的主要策略是将问题分解为易于识别为离散单元的类,然后将左侧/广义位放在"Manager"类中.

我怎样才能打破我的程序习惯(比如Manager类)?大多数OO文章/书籍等使用本质上易于转换为对象组的问题的示例(例如,车辆 - >汽车),因此不提供用于分解更复杂系统的大量指导.

oop class-design

18
推荐指数
7
解决办法
1652
查看次数