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_Object Oriented Analysis - Fatal编程技术网

Oop 面向对象设计中的数据库?

Oop 面向对象设计中的数据库?,oop,object-oriented-analysis,Oop,Object Oriented Analysis,数据库在哪里适合面向对象设计?比如说,我有一个简单明了的文章数据库,我的用例图有搜索文章、查看文章和创建文章的场景 我应该有一个与类中的数据库连接的文章类,还是只有一个全局数据库类,以便其他类说用户类可以访问相同的连接 我还应该使用表作为对象,比如article作为它自己的数据对象,然后使用类似ArticleApi的类进行CRUD操作吗 另外,如果有人能够开始完成面向对象的分析和设计教程,那就太好了 对于这样一个新手问题,我很抱歉,我来自过程编程实践,并试图进入软件开发的面向对象部分。没有一个单

数据库在哪里适合面向对象设计?比如说,我有一个简单明了的文章数据库,我的用例图有搜索文章、查看文章和创建文章的场景

我应该有一个与类中的数据库连接的文章类,还是只有一个全局数据库类,以便其他类说用户类可以访问相同的连接

我还应该使用表作为对象,比如article作为它自己的数据对象,然后使用类似ArticleApi的类进行CRUD操作吗

另外,如果有人能够开始完成面向对象的分析和设计教程,那就太好了


对于这样一个新手问题,我很抱歉,我来自过程编程实践,并试图进入软件开发的面向对象部分。

没有一个单一的正确答案-所有这些都取决于您正在构建的应用程序。对于最简单的应用程序,您可以使用这种方法(相当程序化)

然后您可以发展到一种方法,该方法对数据库中的每个表使用类,该类负责管理表中的所有数据


对于更复杂的应用程序,您将拥有(通常甚至在拥有数据库之前)。并且您需要将域模型类映射到数据库中的表(您可以将单个类映射到多个表,反之亦然)。随着现代能力的增强,域模型的使用变得更加容易,因为大部分映射都是自动完成的。有些工具,如.NET,甚至允许您从数据库表生成域模型。

您没有指定任何特定的平台,因此这不是一个非常准确的答案

数据库在哪里适合面向对象设计

我想我们是在谈论,对吧?嗯,他们没有。这就是为什么我们需要,像或

我应该有一个与类中的数据库连接的文章类,还是只有一个全局数据库类,以便其他类说用户类可以访问相同的连接

我还应该使用表作为对象,比如article作为它自己的数据对象,然后使用类似ArticleApi的类进行CRUD操作吗

ORM体系结构基本上有两种常用方法:

  • ,其中您的域对象只是普通的旧对象,对ORM/数据库没有任何依赖关系。您应该以面向对象的方式对模型进行建模,然后将其映射到数据库中。您有一组单独的对象(EntityManager)用于处理实际的持久性
  • ,其中域对象与ORM紧密耦合,它们自己提供了一组方法来处理与数据库相关的操作
在我个人看来,数据映射器方法优于活动记录,因为它遵循原则。但活动记录也可能非常有用



你应该记住,你的领域模型(面向对象)和数据库模型(rdbms)是两个不同的东西,必须用不同的准则来建模。

我现在可以拥抱你了,非常有用,是的,我说的是RDBMS MySQLspecific@Crozin我可以确认吗?您是否建议应用程序的数据应使用ERD数据模型单独设计和构建为RDBMS数据库,并使用ORM将OO设计的应用程序映射到数据库?没有其他方法吗?@AJF是的,如果你处理的是非平凡的系统,这通常比试图以某种方式合并这两个不同的模型更有益。@Crozin谢谢你的回答。一致同意,若系统足够简单,可以将类映射到表,那个么很好,否则需要另一层操作。林克呢?