2009-04-17 99 views
2

作为了解OOP和过程语言之间差异的一种方法,我正在寻找用C和C++或C#或Java编写的示例程序。我只想看到针对同一问题的不同方法,以帮助我了解真正的差异。有谁知道我在哪里可以找到这样的教程?寻找使用不同语言编写的程序示例

+1

作为一个冷嘲热讽的建议,请考虑http://golf.shinh.org/中的条目:-) – 2009-04-17 13:28:34

回答

4

您可以随时查看Project Euler。人们用许多不同的语言解决了同样的问题。大多数人会在解决问题后发布他们可以访问的解决方案。

+2

这不会真正显示OOP和程序方法之间的差异。大多数在Java中遇到问题的人只需在主要方法中写几行。这些并不是真正涉及很多......好的......对象的问题。 – 2009-04-17 13:59:18

+0

但它仍然很有趣! – 2009-12-20 13:02:01

1

Rosetta Code有丰富的数据,但很少涉及程序/面向对象的区别。你还应该看到他们收集的related sites

1

Black Scholes in multiple languages有很多Black-Scholes公式的实现。该公式在Objective-C/iPhone,F#,Autoit,Fortress,Lua,APL,SAS,Mathcad,J,MEL,Postscript,VB.NET,Clean,Ruby,Lisp,Prolog,PL/SQL,LyME, ColdFusion,K,C#,HP48,Transact SQL,O'Caml,Rebol,Real Basic,Icon,Squeak,Haskell,JAVA,JavaScript,VBA,C++,Perl,Maple,Mathematica,Matlab,S-Plus,IDL,Pascal, Python,Fortran,Scheme,PHP,GNU,gnuplot。

9

我不认为这可能会教你很多。在不同的编程范例之间的差异真正表现出来之前,程序必须具有一定的规模。如果相同的程序使用不同的语言,人们不可能写出相同的副本,除非该程序是微不足道的。

大多数现实生活中的例子也会受到很多额外噪音的污染,这些噪音可以在一种语言的标准库中完成,但需要另一种语言的第三方库。编写它的程序员可能比其他语言更熟悉一种语言,所以他在某些语言中的实现并不代表它应该如何完成。

你更有可能通过常见方式了解这些范例之间的区别。通过了解每种方法的意义,以及如何使用它。

0

考虑的蛇和梯子游戏

在程序设计中实现,我们可以写一个对象的设计语言如

function move(int n) { 
    pos += n; 
    switch(pos) { 
     case 6: pos = 10; break; 
     case 12: pos = 4; break; 
     case 15: pos = 32; break; 
     case 16: pos = 8; break; 

     // ... 

    } 
} 

的功能,我们将创建Square实例的链接列表,一些LadderSnake实例分支到其他方块。

class Square 
    def initialize(next) 
    @tokens = [] 
    @next = next 
    end 
    def next(n) 
    n == 0 ? self : next.next(n-1) 
    end 
    def move(token,n) 
    tokens.remove(token) 
    target = self.next(n) 
    target.tokens << token 
    end 
end 

class SnakeOrLadder < Square 
    def initialize(next,branch) 
    super(next) 
    @branch = branch 
    end 
    def next(n) 
    # goes to branch when landing on this square! 
    n == 0 ? @branch : next.next(n-1) 
    end 
end 

,你可以看到,我们实现了目标游戏规则以及他们是构成方式(而不是在一个开关case语句)。这样做的优点是

  • 它是简单的在开发时添加新的游戏规则,你只写广场
  • 它是简单的改变游戏的布局在运行时(威力的一个新的子类对于一款游戏听起来很奇怪,但对于你的普通商业应用,这是你想要的)

这种灵活性是什么让OO如此强大。