我想学习面向对象的编程语言,我不想为了任何目的而仅仅为了了解OOP的整个概念。那么谁能告诉我应该开始学习哪种语言?
我想学习面向对象的编程语言,我不想为了任何目的而仅仅为了了解OOP的整个概念。那么谁能告诉我应该开始学习哪种语言?
Answers:
一些进一步的建议:
我从未在OOP栏上读过的最好的书是Bertrand Meyer的“ 面向对象的软件构造”。这不是一个“容易”的阅读,因为您需要在某些地方认真思考。但这是我所见过的解释OO原理的最佳方法。
至于语言:我会远离C ++。对于学习目的来说太大了。如果您想要一种能真正帮助您理解OO的语言(而不是您会在其中编写主流应用程序/使用它来工作的一种语言),那么请看一眼Smalltalk。或Eiffel(以上Meyer书中的语言)。
如果您想要一种更主流但仍忠实支持OO原则的语言,那么Python是一个不错的选择。如果要进行静态键入,Java和C#也很不错。
不过要提一个警告:该语言不会教您OO。它只能帮助(或阻碍)它对OO概念的支持程度。学习面向对象实际上就是学习以面向对象的方式思考。为此,我将回到梅耶的书中。
hth。
您可以学习任何面向对象的语言,例如C ++,Java,C#等,以尝试OOPS。
如果您真的想学习OOP,则需要超越语言范围进行思考,并了解它是一种范例,可以帮助简化软件程序中的漫画复杂性,就像我们在现实世界中如何管理它们一样。然后学习OO中的基本概念,例如多态,继承,封装(PIE)等
Grady Booch着有许多有关面向对象的分析和应用程序设计(第二版)的好书
另外,您可以尝试这样的博客,我发现这很简单,因此可以从fascinatingoops.com开始
您想学习OOP吗?一个答案-Smalltalk。
它是一种优雅的语言,是面向对象的。您将从一开始就学习OOP,而不会被其他语言设法吸收的所有其他干扰所困扰。
Smalltalk获胜。并且也有一些不错的免费电子书(请参阅:Stephane Ducasse)
您将必须学习C ++,或者像Smalltalk这样的先祖。C ++在面向对象,内存管理以及引用与值之类的概念之间提供了清晰的分隔,并且具有强大的通用支持。
不要学习Java或C#之类的.NET语言。当您学习Java之类的语言时,您将学习诸如“对象始终在堆上并且始终是引用”之类的知识,这仅适用于Java,而对于OOP则完全不适用。对于第一语言,这种概念的混合(面向对象,内存管理,引用与值)非常危险,因为一旦将它们卡在脑海中,很难将它们撤回。C#是有些更好的在这方面,但并不多。此外,他们在缺乏通用编程支持的情况下很容易教“继承是重锤,万事万能”。
学习OOP概念的最好方法是编写越来越多的代码并经常对其进行审查。实践成为一个好的程序员。
考虑现实世界中的场景,定义问题陈述-用代码解决它并进行审查。您可以随时从/codereview//获得帮助以获取评论:)
编码愉快!!!
我与OO世界的第一次接触是C ++,这不是一个糟糕的开始。但是学习Python时,我有了很大的进步。区别来自于语言:与在Python中尝试相同的想法相比,在C ++中尝试的想法('我如何以OO方式解决这个问题?')需要编写更多的代码,并且包含更多的陷阱。因此,我建议使用Python。
我认为您在尝试学习OOP时不应该使用另一种语言。对我来说,如果我可以与已经知道的东西联系起来,那么更容易掌握理论然后学习应用它。弄清楚新的语法就很麻烦。
您可以从任何OOP书开始。同样,我会选择一种语言。读一本关于重构(OOP风格)的书有助于我进行OOP的应用。我参加了一个现有项目(不分散需求收集),并找到了改进它的新方法。不仅仅是为了OOP而面向对象。然后,您可以学习如何在新项目中从头到尾进行操作。这里的逻辑是,您一开始就不一定总是正确。如果您知道合适的地方,那将更好。像大多数事情一样,它不能解决所有问题。
某些语言有一定的局限性。如果您的目标是成为多重继承的大师,那么.NET就是您了。