這次說一說面向對象與面向過程的區別以及面向對象的優點。
聽一聽用面向過程思想編程的程序員寫程序時的心聲:What are the things this program has to do? What procedures do we need?
啊哈,作為一名合格的准java程序員的我的想法是:What are the things in this program......who are the key players?
從中,可以形象的體現出面向對象與面向過程的區別。面向過程寫程序時,關心的是程序按什麼順序做哪些事情,而面向對象的程序是關注程序中有哪些事物(正規叫法是類)。
比如,項目經理要給你個需求,要求寫個圖形(三角形,正方向,圓形)旋轉同時播放音樂(mp3格式)的程序(你在播放器中常看到的,播放音樂時,歌手的頭像在轉動)。
作為一個資深的C語言玩家的小碼同學,稍加思索就找到啦這個程序的兩個重要過程:圖形旋轉,播放音樂。so his program is:
rotate(shapeNum) {
// make the shape rotate 360º
}
playSound(shapeNum) {
// use shapeNum to lookup which
// AIF sound to play, and play it
}
我思考很久,也找到了其中的類:圖形。(哈哈)
繼續按著面向對象的思想思索,這個類有什麼屬性呢?需求裡沒提吧。類的行為呢?有旋轉,和放音樂的行為。嗯,分析完就寫程序啦。
class cirlce {
ratate() {
//code to ratate a circle
}
playSound() {
//code to ratate a circle
}
}
class Square {
ratate() {
//code to ratate a circle
}
playSound() {
//code to ratate a circle
}
現在項目經理說需求有變
面向對象三大特性中的:繼承,多態,讓代碼的復用率提高了老多。
面向對象優點非常非常的多,自己可以去深深體驗一下,編程學習中自己嘗試是非常非常重要的。
一個小建議:
If you’re stuck on an exercise, try talking about it out loud. Speaking (and hearing) activates a different part of your brain. Although it works best if you have another person to discuss it with, pets work too. That’s how our dog learned polymorphism.