java - 什么是object oriented?
巴扎黑
巴扎黑 2017-04-17 11:13:09
0
4
598

我目前在英国读大一计算机,是个超级菜鸟,我不太明白什么是object oriented。。。中文翻译过来似乎是面向对象(有可能翻译错了)。 我搜索过有关于他的解释,但是还是不是很明白,都解释的太专业了,请问又问能够很简单明了并且完整的给我解释一下什么是object oriented么? 谢谢大家了

巴扎黑
巴扎黑

全部回复 (4)
左手右手慢动作

什么是面向对象?

我们在看待现实世界的问题时,会发现任何一个事物有自身的属性,标志了TA是什么,还有这个事物的行为,用来和其他事物进行交互。
面向对象就是这么一种思想,建模时,将问题抽象成很多对象。通过对象之间的交互将问题解决。

为什么要面向对象?

面向对象的优点主要在两个方面:

  1. 我们日常生活的思维模式也是面向对象的,我们常常会说,谁谁谁能做什么,给TA相应的需求,TA就是个对象。在需求分析时,比较容易建模。

  2. 程序实现之后,具有比较好的可维护性,可重用性和可扩展性。
    因为对象是独立的,所以A项目中用TA可以,B项目也可以用TA,我们也可以通过继承来对对象进行扩展改变。
    因为对象是封装的,所以除非接口发生变化,否则对象内部实现的变化并不会影响与外部的交互。

怎么学习面向对象?

  • 掌握封装,继承,多态这几个基本概念,从日常生活中去思考理解
  • 学习设计模式
    洪涛

    object oriented,面向對象,簡單來說,是一種編程的套路。

    什麼是編程的套路

    編程(programing),就是利用已有的信息產生新的信息。

    具體來說,我們首先將已有的信息轉化成數據(Data),然後通過操作這些數據,得出新的數據,新的數據就包含了新的信息。操作這些數據的方法,我們稱之爲函數(Function)。

    從這個角度來說,程序(program)就是一堆數據和函數,編程就是設計和組織數據和函數。

    不同的設計和組織的方式,就叫做編程的套路,或者說,範式(paradigm)。其中,面向對象就是範式之一。

    面向對象的基本原理

    面向對象的核心,就是將某些數據和用於操作這些數據的函數封裝(encapsulate)在一起。

    被封裝進對象的函數,稱爲該對象的方法(method)。

    因爲數據和函數都被封裝進對象了,所以當我們需要操作某些數據的時候,我們就向相應的對象傳遞一個消息(pass a message),要求這個對象返回我們需要的答案。對象收到消息後,調用封裝在自身內部的方法,計算出答案,然後回傳給我們一個包含答案的消息。

    以上就是「面向對象」的基本原理。

    面向對象的好處

    「面向對象」的好處把數據和相應的函數封裝在一起,達到界面和實現的分離。這樣的話,下層的改動不會影響上層。我們前面已經說了,對象內部的方法,本質上是函數,這個函數的定義,我們稱爲方法的實現。只要這個方法對外提供的接口沒有變,那麼對對象內部的方法的實現(也就是函數定義)的改變,不會影響程序的其他部分。

    當然,面向對象也有壞處。最突出的是,如果一味強調「一切都是對象」,強迫所有的編程都按照面向對象的套路來,完全不允許其他套路,就會導致一些繁瑣的設計。

    面向對象的其他概念

    理解了基本原理,再理解其他概念就容易了。

    如果有一些對象是相似的,那麼相應地,操作它們的函數(方法)應該也是相似的。這時如何共享方法,避免重複?

    一種思路是引入類(class)這個概念,就是將相似的對象都作爲一類。然後類也是對象,也有綁定的函數或者方法。這些類的方法,可以被屬於該類的對象們共享。同理,相似的類,還可以歸到更大的類去。這就形成了父類和子類的概念。子類可以繼承父類的方法,同理,可以繼承爺爺類(父類的父類)的方法。

    上面是單線的繼承,就是說一個類只能從自己的祖先那裏繼承方法。這有時不方便。一種思路是允許一個類有多個父類,這是多重繼承。另一種思路是允許類從其他類借用方法,這是mixin。

    和類相對的思路,是引入原型(prototype)的概念。如果A對象和B對象相似,用類來處理,那就是構造一個類C,然後將A和B作爲類C的兩個實例。如果用原型來處理,那就是以A作爲原型,構造一個B。

    在這兩條思路的基礎上,又形成了更多的概念,以及相應的一些編程的慣例,這裏就不介紹了。

    至於具體的編程語言,是否提供機制可以實現面向對象編程,是否原生支持面向對象,以何種方式支持,是否只支持面向對象編程,那是另一個問題。

      黄舟

      继续抛砖引玉……

      就是面向对象的意思。区别于面向过程等编程模式。可以参看百度百科

      可以参看Head First Java/Head First C#

        伊谢尔伦

        面向对象,复杂而准确的说法相信你应该已经看到过了,我就不贴维基百科的链接了。它是一种编程范式

        简单地说,就是你先想好系统里有哪些对象,它们有哪些数据和行为。比如你做个问答网站,那么「问题」就是一个类,「问题」会有「标题」、「描述」等数据,「回答」、「删除」、「关闭」、「顶」、「踩」、「修改」等行为可以在它的实例身边发生。围绕这个基本思路开展的编程活动就叫做「面向对象程序设计」。

        当然,面向对象的内容远不止这么多。比如继承啦、重载啦、多态啦等等。

        PS: 台湾地区叫「物件導向」。

          最新下载
          更多>
          网站特效
          网站源码
          网站素材
          前端模板
          关于我们 免责声明 Sitemap
          PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!