Java 物件導向程式設計概念

物件導向程式設計是一種程式設計概念,其工作原理是物件是程式中最重要的部分。它允許使用者建立他們想要的物件,然後建立處理這些物件的方法。操作這些物件以獲得結果是物件導向程式設計的目標。

物件導向程式設計通常稱為 OOP(Object Oriented Programming),用於 Java 等現代程式語言。

物件導向程式設計核心概念

  1. 類是一組類似的實體。它只是一個邏輯元件,而不是物理實體。例如,如果你有一個名為 auto 的類,它可能是梅賽德斯、寶馬、豐田等例項。它的屬性(資料)可以是這些汽車的價格或速度,也可以使用這些車輛進行駕駛、倒車、制動等方法。

  2. 物件 物件可以定義為類的例項,並且程式中可以有多個類的例項。物件包含資料和函式,它們對資料進行操作。例如 - 椅子、自行車、筆、桌子、汽車等。

  3. 繼承 繼承是一種物件導向程式設計概念,其中一個物件獲取父物件的屬性和行為。它在兩個類之間建立父子關係。它為組織和構建任何軟體提供了強大而自然的機制。

  4. 多型性 多型性是指變數、物件或函式採用多種形式的能力。例如,在英語中,動詞 run 具有不同的含義,如果你將它用於膝上型電腦,足球競賽和業務。在這裡,我們理解 run 的含義基於其他詞語與它一起使用。這同樣也適用於多型性。

  5. 抽象 抽象是表示基本特徵而不包括背景細節的行為。這是一種建立適合特定應用程式的新資料型別的技術。例如,在駕駛汽車時,你不必關心其內部工作。在這裡你只需要關注方向盤、齒輪、加速器等零件。

  6. 封裝 封裝是一種包裝資料和程式碼的物件導向程式設計技術。在這個物件導向程式設計概念中,類的變數總是對其他類隱藏。它只能使用當前類的方法訪問。例如 - 在學校裡,沒有類,學生就不可能存在。

  7. 關聯 關聯是兩個物件之間的關係。它定義了物件之間的多樣性。在這個 OOP 概念中,所有物件都有其獨立的生命週期,並且沒有所有者。例如,許多學生可以與一位教師聯絡,而一名學生也可以與多位教師聯絡。

  8. 聚合 在這種技術中,所有物件都有其獨立的生命週期。但是,所有權使得子物件不能屬於另一個父物件。例如,想一下類/物件部門和教師。在這裡,單個教師不能屬於多個部門,但即使我們刪除了部門,教師物件也永遠不會被銷燬。

  9. 組合 組合是聚合的一種特殊形式。它也被稱為死亡關係。子物件沒有生命週期,因此當父物件刪除時,所有子物件也將自動刪除。為此,我們舉一個房子和房間的例子。任何房子都可以有幾個房間。一個房間不能成為兩個不同房屋的一部分。所以,如果刪除房屋,房間也將被刪除。

物件導向程式設計的優點:

  • 物件導向程式設計為程式提供易於理解和清晰的模組化結構。
  • 為物件導向程式建立的物件可以在其他程式中重用。因此它節省了大量的開發成本。
  • 大型程式很難編寫,但如果開發和設計團隊遵循 OOPS 概念,那麼他們可以更好地設計並且具有最小的缺陷。
  • 它還增強了程式模組性,因為每個物件都是獨立存在的。

比較 OOPS 與其他程式設計風格

讓我們通過示例來理解 OOP 與其他程式設計方法的不同之處。

程式語言可以分為 3 種主要型別

  1. **非結構化程式語言:**所有程式語言中最原始的,具有順序控制流。程式碼在整個程式經常重複
  2. **結構化程式語言:**具有非順序控制流。函式的使用允許重用程式碼。
  3. 物件導向程式設計:將資料和動作結合在一起。

讓我們通過一個例子來理解這三種型別。

假設你要建立具有類似功能的銀行軟體

  1. 存款
  2. 取款
  3. 餘額查詢

非結構化程式語言

所有程式語言中最早的都是非結構化程式語言。非結構化程式語言中的銀行應用程式的基本程式碼將具有兩個變數,一個是帳號,另一個用於帳戶餘額

int account_number=20;
int account_balance=100;

假設存入 100 美元。

account_balance=account_balance+100

接下來,你需要顯示帳戶餘額。

printf(Account Number=%d,account_number)
printf(Account Balance=%d,account_balance)

現在取出 50 美元的金額。

account_balance=account_blance-50

同樣,你需要顯示帳戶餘額。

printf(Account Number=%d,account_number)
printf(Account Balance=%d,account_balance)

對於任何進一步的存款或取款操作 - 你將重複相同的程式碼。

結構化程式設計

隨著結構化程式設計的到來,程式碼上的重複行被放入諸如函式或方法之類的結構中。只要需要,就可以簡單地對函式進行呼叫。

void showData(){ 
    printf "Account Number = %d", account_number 
    printf("Account Balance = %d", account_balance)
}
int account_number = 20; 
int account_balance = 100; 
account_balance = account balance+100 
showData();
account_balance = account balance-50
showData();

物件導向的程式設計

在我們的程式中,我們處理資料或對資料執行特定操作。事實上,在任何軟體程式中擁有資料並對該資料執行某些操作是非常基本的特徵。

軟體程式設計專家就想著去結合資料和操作。

OOPS 中的相同程式碼將具有相同的資料,並對該資料執行某些操作。

Class Account{
    int account_number;
    int account_balance;
public void showdata(){
    system.out.println("Account Number"+account_number)
    system.outprintln("Account Balance"+ account_balance)
}
}

通過結合資料和行動,我們將獲得比結構程式設計更多的優勢,即

  • 抽象
  • 封裝
  • 繼承
  • 多型性

在後續教程中將更詳細地討論它們。