为了账号安全,请及时绑定邮箱和手机立即绑定

什么是object oriented?

什么是object oriented?

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

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

objectoriented,面向對象,簡單來說,是一種編程的套路。
什麼是編程的套路
編程(programing),就是利用已有的信息產生新的信息。
具體來說,我們首先將已有的信息轉化成數據(Data),然後通過操作這些數據,得出新的數據,新的數據就包含了新的信息。操作這些數據的方法,我們稱之爲函數(Function)。
從這個角度來說,程序(program)就是一堆數據和函數,編程就是設計和組織數據和函數。
不同的設計和組織的方式,就叫做編程的套路,或者說,範式(paradigm)。其中,面向對象就是範式之一。
面向對象的基本原理
面向對象的核心,就是將某些數據和用於操作這些數據的函數封裝(encapsulate)在一起。
被封裝進對象的函數,稱爲該對象的方法(method)。
因爲數據和函數都被封裝進對象了,所以當我們需要操作某些數據的時候,我們就向相應的對象傳遞一個消息(passamessage),要求這個對象返回我們需要的答案。對象收到消息後,調用封裝在自身內部的方法,計算出答案,然後回傳給我們一個包含答案的消息。
以上就是「面向對象」的基本原理。
面向對象的好處
「面向對象」的好處把數據和相應的函數封裝在一起,達到界面和實現的分離。這樣的話,下層的改動不會影響上層。我們前面已經說了,對象內部的方法,本質上是函數,這個函數的定義,我們稱爲方法的實現。只要這個方法對外提供的接口沒有變,那麼對對象內部的方法的實現(也就是函數定義)的改變,不會影響程序的其他部分。
當然,面向對象也有壞處。最突出的是,如果一味強調「一切都是對象」,強迫所有的編程都按照面向對象的套路來,完全不允許其他套路,就會導致一些繁瑣的設計。
面向對象的其他概念
理解了基本原理,再理解其他概念就容易了。
如果有一些對象是相似的,那麼相應地,操作它們的函數(方法)應該也是相似的。這時如何共享方法,避免重複?
一種思路是引入類(class)這個概念,就是將相似的對象都作爲一類。然後類也是對象,也有綁定的函數或者方法。這些類的方法,可以被屬於該類的對象們共享。同理,相似的類,還可以歸到更大的類去。這就形成了父類和子類的概念。子類可以繼承父類的方法,同理,可以繼承爺爺類(父類的父類)的方法。
上面是單線的繼承,就是說一個類只能從自己的祖先那裏繼承方法。這有時不方便。一種思路是允許一個類有多個父類,這是多重繼承。另一種思路是允許類從其他類借用方法,這是mixin。
和類相對的思路,是引入原型(prototype)的概念。如果A對象和B對象相似,用類來處理,那就是構造一個類C,然後將A和B作爲類C的兩個實例。如果用原型來處理,那就是以A作爲原型,構造一個B。
在這兩條思路的基礎上,又形成了更多的概念,以及相應的一些編程的慣例,這裏就不介紹了。
至於具體的編程語言,是否提供機制可以實現面向對象編程,是否原生支持面向對象,以何種方式支持,是否只支持面向對象編程,那是另一個問題。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 456 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信