标签: ooad

如何避免吸气剂和二传手

我在很多地方都读过"吸气鬼和恶魔都是邪恶的".我理解为什么这样.但我不知道如何完全避免它们.Say Item是一个包含项目名称,数量,价格等信息的类......而ItemList是一个类,它有一个Items列表.要找到总计:

int grandTotal()
{
int total = 0;

for (Item item: itemList)
       total += item.getPrice();

return total;
}

在上面的例子中,如何避免getPrice()?Item类提供了getName,setName等....

我该如何避免它们?

oop ooad design-patterns properties accessor

25
推荐指数
5
解决办法
1万
查看次数

在构造函数中尝试/捕获 - 推荐的做法?

我一直很好奇的东西

public class FileDataValidator {

private String[] lineData;

public FileDataValidator(String[] lineData){

    this.lineData = lineData;
    removeLeadingAndTrailingQuotes();

    try
    {
        validateName();
        validateAge();
        validateTown();
    }
    catch(InvalidFormatException e)
    {
        e.printStackTrace();
    }

}

//validation methods below all throwing InvalidFormatException
Run Code Online (Sandbox Code Playgroud)

是不建议在我的构造函数中包含try/catch块?我知道我可以让Constructor将Exception抛回给调用者.你们在调用像我在构造函数中所做的方法时更喜欢什么?在调用类中,您更喜欢创建FileDataValidator的实例并在该实例上调用那里的方法吗?只是有兴趣听一些反馈!

java oop ooad exception try-catch

23
推荐指数
1
解决办法
3万
查看次数

什么是抽象与不稳定图?

我最近使用了NDepend,它为我的.net程序集和相关的pdbs提供了一个很好的报告.

我在报告中发现的最有趣的事情是抽象性与不稳定性图.我想要真正详细地理解这一点,我阅读他们的文档和在线metrices,但它只能在一定程度上有所帮助.

主要是我希望了解如何正确评估图形以及如何稳定地控制抽象性.

这里有一篇非常好的文章这个问题进行了讨论,但除此之外我还需要更多的内容是"如何控制它?[稳定控制抽象]'

替代文字

architecture ooad ndepend code-metrics

22
推荐指数
1
解决办法
5576
查看次数

C++:关联,聚合和组合

我开始研究OOAD,我很难找到一个C++即会说明如何代码示例Association,AggregationComposition通过编程来实现.(到处都有几个帖子,但它们与C#或java有关).我确实找到了一两个例子,但它们都与我的导师的指示相冲突,我很困惑.

我的理解是:

  • 关联: Foo有一个指向Bar对象的指针作为数据成员
  • 聚合: Foo有一个指向Bar对象的指针,Bar的数据被深度复制到该指针中.
  • 组成: Foo有一个Bar对象作为数据成员.

这就是我实现它的方式:

//ASSOCIATION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar* bar;
    void setBar(Bar* _bar)
    {
        bar=_bar;
    }
};

//AGGREGATION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar* bar;
    void setBar(Bar* _bar)
    {
        bar = new Bar;
        bar->baz=_bar->baz;
    }
};


//COMPOSTION
class Bar
{
    Baz baz;
};
class Foo
{
    Bar bar;
    Foo(Baz baz)
    {
        bar.baz=baz;
    }
};
Run Code Online (Sandbox Code Playgroud)

它是否正确?如果没有,那么应该怎么做呢?如果您还给我一本书中的代码参考(以便我可以与我的导师讨论),我们将不胜感激.

c++ oop ooad associations aggregation

21
推荐指数
1
解决办法
2万
查看次数

序列图(SD)和系统序列图(SSD)之间的区别?

我正在研究一个毕业班的项目,但仍然无法绕过他们.

序列图(SD)系统序列图(SSD)之间有什么区别?

在开发系统开发项目时,它们应以何种顺序开发?

uml modeling ooad

15
推荐指数
2
解决办法
3万
查看次数

OOAD书籍推荐:从理论到实践

我正在寻求成为一名优秀的OO开发人员.OO引起了我的兴趣,因为我理解了这些模式,知道为什么组合会给你更多的灵活性,然后继承,更多的是这样的智慧.但是,我得出的结论是,我知道如何实现单件工厂,但我不知道如何提出一个强大的OO设计.

我有一堆书

  1. GoF的设计模式
  2. AntiPatterns Brown等.
  3. 福勒重构
  4. 代码完成2

它们可能是非常好的书,但它们并不教你构建应用程序.我经常因一些非常基本的决定而瘫痪(例子).我正在寻找一本教导何时和为什么的书.有很多关于锤子和钉子的书籍,但我还没有找到一本书,告诉你一些他们的实际关系.

哪本书最能帮助你成为一名自信的OO建筑师/设计师?

architecture oop ooad

13
推荐指数
2
解决办法
9288
查看次数

如何发展*现实生活*oop技能?

我一直在研究OOP已经有一段时间了,我对这个理论有了很好的把握.我阅读了关于OOP 的Head First书,虽然它强化了很多理论,但我发现案例研究有点微不足道.

我发现我每天都会将OOP原则应用到我的代码中,但我不确定我是否正确应用它们.我需要到达能够查看我的代码并知道我是否正确使用继承,我的对象是否足够内聚等等.

有没有人有任何好的建议(书籍,在线指南,博客,演练等),以便在开发可靠的OOP技能方面迈出下一步?

我主要在.NET(visual basic)工作,但我欢迎包含各种平台的建议.

oop ooad

12
推荐指数
4
解决办法
3520
查看次数

对特定时间跨度有效的业务规则 - 如何以有序的方式进行管理

我刚开始为一个政府机构工作,我遇到了一个有趣的问题:业务规则取决于立法机关,因此他们必须尊重立法机关活跃的确切时间段.

举个例子,如果一个主题在某个特定日期申请了补贴,那么他必须根据该特定日期的血管有效标准进行评估.同样的补贴,适用于某些日后申请的人有不同的标准.我想知道是否有一种已知的模式来有序地处理这些依赖于时间的规则.目前,代码中散布着类似于以下内容的表达式:

if application.date >”July 17th, 2008”

管理此问题的最佳方法是什么?

oop ooad design-patterns business-rules

12
推荐指数
2
解决办法
310
查看次数

同时拥有抽象类和接口有什么好处?

我开始使用名为ILogin的通用接口.接口要求您实现两个属性:UserID和Password.我有许多实现此接口的登录类型.随着我的项目的成长和发展,我发现许多类重复了UserID和Password代码.现在我决定我需要一个基本的登录类.

创建一个实现ILogin接口的抽象基类Login类是否合适,并且所有具体类都是从抽象类继承并在必要时覆盖?最初我觉得这没问题.然后我开始认为ILogin可能不需要,因为它可能只能由我的抽象类实现.

保持抽象类和接口都有好处吗?

谢谢!

oop abstract-class ooad interface

11
推荐指数
1
解决办法
1686
查看次数

b/w设计和架构有什么区别?

b/w设计和架构有什么区别?

嗨,我问了很多老师这个问题,但没有人给我满意的答复.这两个术语非常分散..我没有正确地得到它们......等待准确答案......

任何可以详细说明这种差异的实时例子或场景?

architecture ooad

11
推荐指数
2
解决办法
9215
查看次数