Questions tagged «object-oriented»

一种使系统能够建模为一组对象的方法论,这些对象可以模块化方式进行控制和操作

2
在执行DDD时是否应该模拟实体和值对象?
阅读后几 文章约Newable VS 注射对象以及如何将这些概念涉及到DDD的服务,实体和值对象,我留下了有关使用我的代码newables尤其是在我的单元测试的一些疑虑。 可更新项的主要候选对象是Entities和Value对象,这意味着与其将这些依赖项注入其他对象中,还应该只是new这些对象的一个​​实例,并直接在代码中使用它们。 但是,良好的DDD做法主张将责任分配给实体和价值对象(如果认为合适的话)。因此,实体和价值对象将最终在其中包含一些严肃的业务逻辑。 现在,如果服务在实体或值对象上运行,我应该模拟该实体或值对象并将该模拟传递给该服务(模拟将要求interface对似乎被提倡的价值对象或实体使用)? 还是我应该只是new一个实体/值对象,并将具体实现传递给服务,从而违反仅测试一个单元的单元测试原理?

4
跟踪类的所有对象
我是面向对象编程的新手,并且一直遇到这个问题。(我正在用Java编程)我一直不太愿意问这个问题,因为它看起来像是一个基本问题,但是我找不到关于它的任何信息,也没有关于它的问题,而且都没有我读过的教科书(在相当基本的水平上)已经涉及到这个问题: 我经常需要跟踪已创建的类的所有对象,以出于各种目的遍历它们。我目前编写程序的方式是这样的,许多对象仅从其他对象中引用,这意味着我没有数组或集合来引用它们。 我认为,由于这似乎是OOP中非常基本的必要,因此应该有一种相当制度化且简单的方法来解决此问题吗?保留一个类的所有对象的单独列表是通常的做法吗? 我想到了一个静态数组或集合,通过其构造函数,将添加创建的每个新对象。但是,这将不适用于子类,因为构造函数没有继承吗? 我意识到这个问题可能没有一个简单的答案。我只是希望有人能启发我一些关于这个问题的知识。我感觉好像我在这里缺乏核心知识。


4
Perl中的编程风格
我使用Java工作,因此基本上我在编码过程中使用OOP范例。我即将开始在Perl中工作,我想知道Perl开发人员遵循的范式是什么。在Wiki中,它提到它支持许多范例,但是由于它是一种脚本语言,因此我不确定我是否理解这一点。 所以我的问题是:是Perl中Java惯用语言中我熟悉的面向对象模式,还是我需要对设计风格进行重大更改才能编写有效的Perl? 注意:这不是批评Perl的问题。我实际上必须在Perl中工作,并且想了解我编程的当前方式将如何改变。

3
有关方法参数类型,返回类型和属性类型的具体性的规则
前一段时间,我读到一种关于方法参数类型,返回类型和属性类型的具体性的“经验法则”,但我只是不记得了。 它说了一些有关使返回类型尽可能具体,而参数类型尽可能抽象的事情……反之亦然。 我不知道这实际上是一个好建议还是坏建议,因此,如果您对此有自己的想法,请发表评论。 干杯。

2
如何结合“命令”和“复合”来模拟时间延迟?
作为一项学习练习(我不在学校,只是一个试图学习新东西的老家伙),我正在尝试编写一个包含传播延迟的逻辑门模拟。用户还应该能够将门组合在一起以创建更高级别的对象。 我想将设计模式应用于我的问题,但是我很难过。 我正在阅读Head First设计模式,并且我看到Command模式是一种通过延迟来模拟通过电路的电脉冲的好方法。我还看到Composite模式是模拟嵌套单元的好方法。我只是不知道如何混合两者。 换句话说,当我循环通过门时,我看到门“ x”应该开火。它具有15纳秒的延迟,因此我创建了一个距当前游戏时间15 ns的时间戳的命令。调度员在哪里?在晚餐的示例中,命令为“ Order”,女服务员和厨师分别发送命令并可以选择引入延迟。如果我有一个“综合”门,它也有自己的调度程序吗?我是否需要使用Singleton来管理队列? 我阅读了可以找到的内容,但仍然需要朝着正确的方向努力: /programming/2015549/using-command-design-pattern /programming/12016314/client-server-command-design-pattern-with-variable-delays /programming/10560892/composite-of-commands-design-pattern /programming/8874705/how-can-i-calculate-propagation-delay-through-series-of-combinational-circuits-u

2
是否有“只问您需要”的界面原则?
我已经成长为使用一种设计和使用接口的原理,该原理基本上说:“只问您需要什么”。 例如,如果我有一堆可以删除的类型,我将创建一个Deletable接口: interface Deletable { void delete(); } 然后,我可以编写一个通用类: class Deleter<T extends Deletable> { void delete(T t) { t.delete(); } } 在代码的其他地方,我总是要求最小的责任来满足客户代码的需求。因此,如果我只需要删除一个File,我仍然会要求一个Deletable,而不是一个File。 这个原则是常识并且已经有公认的名称吗?有争议吗?在教科书中讨论过吗?

11
图像应该能够在OOP中调整大小吗?
我正在编写一个具有Image实体的应用程序,并且在确定每个任务应由谁负责方面已经遇到了麻烦。 首先我Image上课。它具有路径,宽度和其他属性。 然后,我创建了一个ImageRepository类,用于通过一个经过测试的方法来检索图像,例如:findAllImagesWithoutThumbnail()。 但是现在我还需要能够createThumbnail()。谁应该处理?我当时正在考虑开设一个ImageManager类,该类将是特定于应用程序的类(还可以选择第三方图像处理可重用的组件,而我并不是在重新发明轮子)。 还是让Image自身调整大小为0K ?还是让ImageRepository和ImageManager成为同一个类? 你怎么看?

5
什么时候停止继承?
很久以前,我在Stack Overflow上问了一个关于继承的问题。 我说过我以OOP方式设计国际象棋引擎。因此,我继承了Piece抽象类的所有片段,但继承仍然存在。让我按代码显示 public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} 程序员发现我的设计超出了工程学,建议删除有色块类,并保留色块作为属性成员,如下所示。 public abstract class Piece { public Color Color { get; set; } public abstract void MakeMove(); public abstract void …

2
我可以从哪个开放源代码PHP项目中学习“完美的” OOP设计?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我是OOP的新手,以身作则,我学得最好。 您可以说这个问题类似于我应该学习哪个Scala开源项目以学习最佳编码实践 -但使用PHP。 我曾经听说过Symfony具有最佳的“架构”(我不会假装我确切地知道这是什么意思),还有教义ORM。花数月时间阅读这些项目的源代码,试图推断出所使用的模式并学习新的技巧是否值得? 我看到相同数量的网页在分解和喜欢Zend的代码库(如果认为必要,将提供链接)。 您是否知道任何其他项目会使资深OOP开发人员流下喜悦的眼泪? 请让我补充一点,在这里根本不关心实用性和使用范围-我只想这样做: 选择一个开发人员认为比我更好,更强大的代码库的项目。 编写实现项目功能的代码。 比较结果并尝试了解我不知道的内容。 基本上是学术兴趣代码库。有什么建议吗?


7
检查方法是否返回false:将结果分配给临时变量,还是直接将方法调用置于条件中?
调用在if语句中返回true或false值的方法是一种好习惯吗? 像这样: private void VerifyAccount() { if (!ValidateCredentials(txtUser.Text, txtPassword.Text)) { MessageBox.Show("Invalid user name or password"); } } private bool ValidateCredentials(string userName, string password) { string existingPassword = GetUserPassword(userName); if (existingPassword == null) return false; var hasher = new Hasher { SaltSize = 16 }; bool passwordsMatch = hasher.CompareStringToHash(password, existingPassword); return …

4
从公共方法返回哈希表有什么问题,什么时候才有意义?
当您要返回多个项目而不是创建一个类并返回该对象时,从公共方法返回哈希表有哪些设计问题? 如果确实有问题,那么在什么情况下才有意义? 这个问题的答案如何根据语言是否动态而变化? 编辑:这是为了澄清键将是常量,并且是代码而不是数据的一部分。我们通常为之创建类的东西。问题是,如果创建类确实确实是正确的选择,那么为什么使用哈希表却会出错呢?

7
面向对象需要哪些功能?
我只是想知道,语言或库必须提供什么功能才能将其定义为“面向对象”。是否可以在具有适当功能的任何通用编程语言中或多或少地实现对象定向?还是只能通过专门宣传它们支持面向对象编程的语言才能实现? 例如,看下面的C代码: SDL_Surface* screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE); SDL_FreeSurface( screen ); 或此处讨论的代码。 现在,上面的代码不使用继承,运行时多态性(?),虚函数等。但是对我来说,它似乎是非常面向对象的。 面向对象是否只是在编写基于不需要对象或编程语言或库提供的特殊模式或功能的可创建和可破坏的数据结构(例如对象,类,结构等)的代码?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.