2009-08-10 74 views
0

这个问题似乎很简单,答案也是如此。我是最近开始工作的开发人员。到目前为止,我还没有参加面向对象的本科和硕士课程。然而,我对OOP的概念并不满意和自信。最近,我在寻找就业机会,我发现很多雇主都很想知道我对OOP概念有多么自信。OOP概念的重要性?他们是否充分使用了?

我对OOP概念有很强的理论知识。虽然这个理论知识帮助我清除访谈和找工作,但是当谈到实施时,我变得愚蠢。如果你问我什么是反思,那么你会从我这里得到一个完美的答案,但如果有人问我为什么,我们在哪里使用它,那么我会感到失望。

现在我真的很想知道当我没有机会在我的项目中实现全部或大部分面向对象概念时该怎么做。我也非常喜欢所有最新的开发工具和编程环境,许多程序员都喜欢使用已经构建好的组件,框架和库,这可能会给优秀的架构师带来空虚。

我想成为一名成功的建筑师,为此,我认为我必须在这方面非常强大。

然后我想到了学习NHibernate,你将完全处理对象。

现在我需要的是几个有价值的提示,可以帮助我掌握所有或大部分OOP概念。

回答

2

听起来就像你错过了真正的编程经验。没有什么会取代。

去工作,锻炼,阅读,向你更有经验的同事学习。最终你会得到它。

至于非常先进的工具,你是正确的。他们生产的代码猴数量不断增加。如果你现在看到它,那么你的开局不错。只要保持路径。优秀的建筑师将永远需要和重视。

0

有趣的问题。在某种程度上,我已经与Object编程一起成长,随着各种框架的发展,我已经发展起来了,我从未想过如何来到一个已经存在这么多复杂框架的景观。他们的存在往往会抑制这种程度的摸索和磕磕绊绊,并且一般会导致错误,导致更深入的理解。

虽然我认为严肃的发展仍然是一个很好的设计问题,但这并不仅仅是填补空白,嘿国际奥委会framwork告诉我该怎么做,编程。

您可以通过研究您使用的框架的“如何”来增强您的理论知识。但我想你需要的是实践经验,不能评论你工作场所对你的开放性,但如果你不能在那里得到它,你可能需要做一些“业余爱好者”或开源开发。

我会建议的一件事是尝试参与设计讨论,尝试让有经验的开发人员审查您的设计。如果运气好的话,他们甚至会说:“嘿,你为什么没有在那里使用反射......”

1

你想开始寻找设计模式。了解使用OOP的时间,方式和原因比知道OOP本身更有价值。

框架是伟大的,我不会错误的人使用它们。但是,这个领域还有很多伟大的建筑师的空间。利用程序员知道如何使用它们的差距,但不知道为什么或何时。框架很快成为寻找许多开发人员钉子的锤子。开源是你的朋友 - 深入了解源代码并从内到外学习它们,以便你真正理解正在做什么和为什么。

1

根据我的经验,您将从学校学习发展的“概念性”一面,从实际体验学习“应用程序”一面。没有工作的替代工作;不管我接受多少学校教育,它都不会像我学到的那样从事真正的工作。这就是为什么如果你能够在大学实习,也是一个好主意。

至于OOP本身的价值,我发现它在大型项目和团队项目中最有用。整个观点是将解决方案分解成可行的“概念性”元素,这使得团队成员之间的交流更加容易,并且使解决方案可视化。可视化是面向对象的另一个大的专业人员。

有一点需要注意的是OOP恕我直言,就是入门级开发人员倾向于过度使用大量的OOP概念。并非所有事情都需要继承。设计模式是非常有用的,但也不应该被过度应用。看看你的问题,首先尝试自己想一个解决方案,然后将其与已知模式进行比较,看看它们是否提供了更好的答案。简单不能被高估。另外,使用UML编辑器和Mind Mappers等工具(如XMind)有助于进入正确的思维框架。

检查并看看你周围是否有编程组;我觉得这是一个很好的方式来认识可以和编程进行交流的人,而OOP的另一个优点是与编程思想交流更容易。

-1

重要的是“思考”,在OOP中需要改变思考 而在oop环境中进行编程/开发或使用OOP 范例。

我自己面对过很多次这个问题:为什么要使用OOPL或者 当我可以在程序中开发软件时使用面向对象编程语言 编程语言?为什么要使用面向对象方法?它有什么好处 什么其他非OOP不?

我从许多来源看(许多书籍和文章的主题来命名!) 跟踪的真正原因,打的基本基本思想或原则 其在那里作为软件工程的一个范例。我认为我发现 很简单,这就是为什么我建议改变思维。

如果我们环顾四周,我们会看到围绕着我们的事物以及我们直接或间接与 互动的事物。我们用姓名来识别他们,我们给他们。 不管事物是什么,它们或者存在于真实平面或者概念平面 中,并且我们“知道”它们“识别”它们并与它们相互作用。而重要的是我们 '名字'他们。这个命名非常重要,因为我们需要'姓名'来了解这种互动的“事物”和 。

今天吃了什么?巧克力和咖啡。所以你已经与 巧克力和咖啡“互动”。现在巧克力和咖啡都是我们拥有的食物(人类) 已经给出了名字,并且我们认出了这些名字。而且,我们在我们的 了解我们与他们的互动 - 可以说保持我们的 与巧克力和咖啡的互动记录,知道他们的名字与 交互。

交互是我在这里使用的一个通用术语。其实在我们的例子中,在 的例子中,你已经执行了一个“行动” - 吃东西。通过“吃”行动,你已经与巧克力和咖啡相互作用。现在想想这种方式,通过互动中的行动,咖啡是现实世界中的实体。 你可能会说'流程'。

Alice注册了什么课程?计算机科学。 计算机科学在世界上并不存在真正的存在,因为存在一个人 或存在树木或房子,或咖啡杯或其他'有形的东西'。它 是一个主题,'概念的东西'。计算机科学的研究有一些需要研究(或通过我们的智力 教师/过程进行交互)的'主题',例如离散数学,算法设计和分析,数据结构等。它们一起被命名为学习主题'计算机 科学'。现在爱丽丝'学习'(互动)计算机科学。这里发生了什么 ?好的,如果我们现在想这样说,并说爱丽丝是一件东西,对象。 计算机科学是一件东西,对象

咖啡是对象。巧克力是对象。你再次是对象。我们发现 即对象对象相互作用。太棒了!有人可能会惊叹!这就是 真实世界的场景!其实它是通过 抽象达成的概括。

这只不过是 - 在表面水平至少 - 命名与 的含义。或者你可以说'有意义的命名'。这是一个过程。这是非常自然的 ,对我们来说很明显,我们只是忽略它。

在OOP中,我们只需要将自己带入这种思维过程,知道并提醒自己“对象与对象互动”。哦! 只有这个想法。你必须记住,一个对象 可能会与自己交互!想想你,当你想到 时,你在做什么?是啊!还有一件非常重要的事情我会在适当的时候来到 。虽然我认为这很明显。但在适当的时候。好。我们 真的用电脑吗?其实我们解决问题。特别是那些我们试图在我们的脑海中解决的问题。从广义上说,我们是 模拟机器中的心理过程,这是我们设计的。记住AI是 在现实中仍然是一件遥远的事情,并且存在哲学上的辩论和科学,关于计算机是否可以变得聪明。另一种方式是把它放在计算机上是否真的可以模拟真实的心智过程。但那不是我们要去的地方。别管它!

如果我们想通过我们 想在代表现实生活中possible.There 尽可能接近去计算设备来解决现实生活中的问题进来OOP“现实生活中的造型”一词。可以看出,在解决 现实生活中遇到的问题,无论是发射航天飞机,还是保留客户和产品销售信息进行处理,我们都做抽象,做了 计算,这是另一种形式的抽象过程,反过来我们处理与我们的思想精神上的对象 。因此,我们在抽象中表示真实的生活对象(概念 数字等对象),并使用抽象 过程处理它们,如数学中那样。在计算机中,我们也希望代表对象,并且还希望以对象的形式表示进程。所以这里 是面向对象,可以说是软件工程。现在来到 这是'适时'来处理面向对象的另一个方面。

回到我们的例子,你吃了什么?吃是一种行动,一种形式的互动。可以认为这是一个过程,它可以被认为是一个对象,就像一个进程在Non-OOPL中被认为是'函数'或'例程'或'过程'一样。在OOP中,我们可以表示(抽象) 饮食作为一个过程体现为一个对象。同样的学习是一个对象。在 中,思考“事物”和“过程”的思路都被认为是对象 ,并在计算机内存的虚拟平面中表示。因此, Alice-an Object-Studies-an object-Computer Science-an Object is based on OOP saying,据我们的论点。

我们可以在这里写一段代码吗?咱们试试吧。

class Alice { 
    private String name; 
    private String address; 
    private String stdID; 
    private Course courseOfStudy; 
    ... other codes... 
    public void studies(Course sub) { 
     courseOfStudy=sub; 
    } 
    ... 
    public Course getStudyCourse() { 
     return courseOfStudy; 
    } 
} 
class Course { 
    codes.... 
} 

这种方法在OOP(这里是Java代码)中可以写代码。我给了一个简单的编码 。人们可以想出更好的编码和设计方法,这取决于要编写的软件。在OOP设计中很重要的是 。所以我认为在开始时应该提到 。这很重要!当谈到OOPL 或OOAD时,我更喜欢这样,“一切都是对象”。

那么这就是我想说的。你可能会也可能不会喜欢它,但评论和 说出你的想法。

+2

你打我“GIANT WALL OF TEXT”!这不是很有效......我打了“Downvote”!这是超级有效! – Puppy 2014-09-09 21:48:50