面向对象技术
面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
面向?qū)ο髲?qiáng)調(diào)問(wèn)題域的要領(lǐng)直接映射到對(duì)象和對(duì)象之間的接口上,是用符合常規(guī)思維的方式來(lái)處理客觀世界的問(wèn)題。
面向過(guò)程方法強(qiáng)調(diào)的則是過(guò)程的抽象化和模塊化,是以過(guò)程為中心構(gòu)造或處理客觀世界問(wèn)題的。
面向?qū)ο蠓椒ㄒ詫?duì)象的集合類作為處理問(wèn)題的基本單位。面向?qū)ο蠓椒ㄊ怯妙惖膶哟谓Y(jié)構(gòu)來(lái)體現(xiàn)類之間的繼承和發(fā)展。用計(jì)算機(jī)邏輯來(lái)模擬現(xiàn)實(shí)世界中的物理存在。
面向過(guò)程方法處理問(wèn)題的基本單位是能清晰準(zhǔn)確地表達(dá)過(guò)程的模塊,用模塊的層次結(jié)構(gòu)概括模塊或模塊間的關(guān)系與功能,把客觀世界的問(wèn)題抽象成計(jì)算機(jī)可以處理的過(guò)程。
面向?qū)ο蠓椒▽?shù)據(jù)與對(duì)應(yīng)的代碼封裝成一個(gè)整體,對(duì)象的修改只能由自身的成員函數(shù)完成,控制程序方式上是通過(guò)“事件驅(qū)動(dòng)”來(lái)激活和運(yùn)行程序。
面向過(guò)程方法是直接通過(guò)程序來(lái)處理數(shù)據(jù),處理完畢后可顯示數(shù)據(jù)結(jié)果,在控制程序方式上是按照設(shè)計(jì)調(diào)用或返回程序,各模塊之間存在者控制與被控制、調(diào)用與被調(diào)用的關(guān)系。
面向?qū)ο蠓椒ㄘ灤┯谲浖芷诘姆治觥⒃O(shè)計(jì)及編碼中,是一種平滑過(guò)程,從分析到設(shè)計(jì)再到編碼是采用一致性的模型表示,即實(shí)現(xiàn)的是一種無(wú)縫的連接。
面向過(guò)程方法強(qiáng)調(diào)分析、設(shè)計(jì)及編碼之間按規(guī)則進(jìn)行轉(zhuǎn)換,貫穿于軟件生命周期的分析、設(shè)計(jì)及編碼中,實(shí)現(xiàn)的是一種有縫的連接。
舉一個(gè)對(duì)象和過(guò)程的例子。
人:人的身高體重性別年齡,會(huì)直立行走會(huì)讀書(shū)吃飯。
電腦開(kāi)機(jī)的過(guò)程。
組合和繼承的區(qū)別
組合和繼承都是面向?qū)ο笾写a復(fù)用的方式。
組合是指在新類里面創(chuàng)建原有類的對(duì)象,重復(fù)利用已有類的功能。
繼承是面向?qū)ο蟮闹饕匦灾?#xff0c;可以根據(jù)類的實(shí)現(xiàn)來(lái)定義一個(gè)類的實(shí)現(xiàn)。
組合和繼承都允許在新的類中設(shè)置子對(duì)象,只是組合是顯式的,繼承則是飲食的。
組合和繼承存在著對(duì)應(yīng)關(guān)系:組合中的整體類和繼承中的子類嘴硬,組合中的局部類和繼承中的父類對(duì)應(yīng)。
二者的區(qū)別通過(guò)分析一個(gè)實(shí)例來(lái)說(shuō)明:Car表示汽車對(duì)象,Vehicle表示交通工具對(duì)象,Tire表示輪胎對(duì)象。Car是Vehicle的一種,是繼承(is-a關(guān)系);而Car包含了多個(gè)Tire,因此是一種組合關(guān)系(has-a關(guān)系)。
寫代碼的時(shí)候,選擇原則:
(1)除非是“is-a”的關(guān)系,否則不要輕易選擇繼承,因?yàn)檫^(guò)多地使用繼承會(huì)破壞代碼的可維護(hù)性,當(dāng)父類被修改時(shí),會(huì)影響所有繼承它的子類,從而增加程序的維護(hù)難度與成本。
(2)如果類沒(méi)有“is-a”的關(guān)系,可以通過(guò)實(shí)現(xiàn)接口與組合的方式來(lái)達(dá)到相同的目的,采用接口與組合的方式具有更好的可擴(kuò)展性。
由于Java語(yǔ)言只支持單繼承,如果想同時(shí)繼承兩個(gè)類或多個(gè)類,在Java 中是無(wú)法直接實(shí)現(xiàn)的。同時(shí),如果繼承太多,在一個(gè)class里會(huì)顯得臃腫不堪。所以,能用組合就盡量不要用繼承。
多態(tài)
同一個(gè)操作,在不同的對(duì)象時(shí),會(huì)有不同的意義,產(chǎn)生不同的效果。
例如,同樣是“+”的操作,“3+4”用來(lái)實(shí)現(xiàn)整數(shù)相加,“3”+“4”用來(lái)實(shí)現(xiàn)字符串連接。
多態(tài)有兩種表現(xiàn)形式:
- 方法的重載,是一種編譯時(shí)多態(tài)。重載是同一個(gè)類中可能有多種同名的方法,在編譯時(shí)可能會(huì)選擇不同的方法。重載可看成一個(gè)類中方法的多態(tài)性。
- 方法的覆蓋,是一種運(yùn)行時(shí)多態(tài)。子類可以覆蓋父類的方法,同樣的方法在子類和父類中有不同的表現(xiàn)形式
總結(jié)
- 上一篇: 原神金团雀在哪刷新
- 下一篇: 谁有如何关闭底部滑动切换app