Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 数据库人问:面向对象设计理论?_Oop_Solid Principles_Package Design - Fatal编程技术网

Oop 数据库人问:面向对象设计理论?

Oop 数据库人问:面向对象设计理论?,oop,solid-principles,package-design,Oop,Solid Principles,Package Design,我长期从事数据库设计工作,这些天我也在C#工作。OO对我来说很有意义,但我觉得我在OO设计的深层理论方面没有很好的基础 在数据库领域,有很多关于如何设计数据库结构的理论,主要概念是规范化。规范化直接控制数据库的结构,并在某种程度上决定如何在数据库中排列实体 在如何设计面向对象程序的结构背后,有没有类似的概念 我要达到的是一个或多个基本的理论原则,这些原则自然会引导开发人员为解决给定问题而进行“正确”的设计 我在哪里可以找到更多信息? 有去上班的书我应该读吗 更新: 谢谢大家的回答。 我所读到的似

我长期从事数据库设计工作,这些天我也在C#工作。OO对我来说很有意义,但我觉得我在OO设计的深层理论方面没有很好的基础

在数据库领域,有很多关于如何设计数据库结构的理论,主要概念是规范化。规范化直接控制数据库的结构,并在某种程度上决定如何在数据库中排列实体

在如何设计面向对象程序的结构背后,有没有类似的概念

我要达到的是一个或多个基本的理论原则,这些原则自然会引导开发人员为解决给定问题而进行“正确”的设计

我在哪里可以找到更多信息?
有去上班的书我应该读吗

更新: 谢谢大家的回答。 我所读到的似乎是说,没有“面向对象设计的伟大理论”,但有一系列重要的原则——这些原则在很大程度上是由设计模式所体现的


再次感谢您的回答:)

您应该看看UML,它是一个提供给OOD的完整过程


我建议买一本书(或几本),因为理论非常庞大,大多数人都会选择最适合手头项目的技术

检查测试结果。从每个问题中学习。

开始阅读来自say Martin Fowler的设计模式:

它们是OOP最实用的用法

你的下一步是《设计模式》一书。


但是,您不必对所有事情都使用面向对象的方法。别那么虔诚。如果一个更程序化的方法感觉更困难,那么就这样做。刚接触OO的人往往会拖延一段时间。

我非常喜欢,这是非常平易近人的,而且Arthur J.Riel的优秀作品

如果你习惯于构建规范化的数据库,那么面向对象的设计应该会自然而然地出现在你面前。您的类结构最终将看起来非常像您的数据结构,只有一个明显的例外,即关联表变成了类中的列表,而查找表变成了类中的枚举


总之,我想说的是,在关系数据库背景下进行OO设计要比在另一个方向上进行OO设计好得多。

如果你想真正掌握O-O,那就去玩吧。ST是一种纯粹的OO语言,在你看来是非常真实的。一旦你克服了范式障碍,你就学会了OO,因为没有它你就不能真正地进行Smalltalk。这就是我第一次学习OO的方式。

我想你指的是数据库世界中的OO


存储对象的面向对象数据库从未真正捕获对象,因此您目前正在寻找将对象映射到关系数据库的方法。ORM或对象关系映射是用于描述执行此映射的软件的术语。理想情况下,这将为您提供两个方面的最佳效果,即开发人员可以与对象交互,并且在数据库中,所有内容都存储在关系表中,在关系表中可以进行标准调整。

请阅读David West的《对象思考》。有趣的阅读..
但是你是黑暗面的。。根据这本书;)数据库思维一直是全世界OO程序员的诅咒。它们是光谱的两端。比如说

  • 数据库思维重视数据在其他方面的属性。。根据类型与DB模式或ER图的匹配程度进行规范化和创建类型。。OO思维基于行为和协作创建类型,并不认为数据属性非常重要
  • 数据库来自重视形式化和方法的科学人士。OO来自使用启发式和经验法则的人,他们在一个艰难而快速的过程中重视个性和社会互动
关键是COBOL程序员即使在使用OO语言之后也可以编写COBOL程序。在第一部分中,请阅读任何类似Java的思考书籍,该部分总是详细介绍OO(学徒)的原则。。在适当的时候,用对象思维(熟练工)跟进。。大师。

。。。设计模式、重构和其他。。。看一看。。这将是一个很好的起点…

我认为很好

它提供了许多关于OO原则的深入讨论,如下所示:

  • 面向对象设计原理与依赖关系管理
  • SRP——单一责任原则
  • OCP——开闭原理
  • LSP——李斯科夫代换原理
  • 倾角依赖反演原理
  • ISP——接口隔离原则
  • REP-重用发布等效原则
  • CCP——共同封闭原则
  • CRP-通用重用原则
  • ADP-非循环依赖原理
  • 稳定相依性原理
  • SAP——稳定抽象原则

记住真实世界的对象,为对象建模

我们目前正在为机器开发自动化软件。其中一台机器有两个装载口,用于向其输送原料,而所有其他机器只有一个装载口。到目前为止,在所有模块中,我们都将端口信息(当前设置、当前分配给它的批号等)作为代表机器的类中的成员


我们决定创建一个保存端口信息的新类,并向这个MachineXY类添加两个LoadPort成员。如果我们以前考虑过的话,我们会对所有这些单端口机器做同样的事情…

小心一些设计模式文献

有几种广泛的类别定义。持久对象(类似于关系表中的行)和集合(类似于表本身)的类