iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

介紹

Java三大特性之一 : 封裝(Encapsulation),是廣泛被應用於各個領域的工具手段。

以程式設計者的角度來說,使用此方法目的會是控制非內部成員能看到資訊的範圍,提高被封裝程式的可靠性和可維護性,與客戶的使用端介面做出區隔

對於使用者或企業端來說,只要能提供一個好用的網站或應用程式,其他多餘的細節資訊程式設計者可以將其放置於封包內,讓使用端簡潔,又可以保護機密資料難以被讀取駭入。

綜合以上,封裝好處特性可以細分為以下 :

  1. 唯讀唯寫增加資料安全性,內部成員更好定期修改檢查。
  2. 使用端與後台有區隔的作用,能隱藏細節和不必要資訊,維持前後一致的方便性。
  3. 程式內屬性、函數會更好控制,降低程式設計師被bugs干擾,提升可靠性與開發效率。

簡單來說,只要規格或內容不改變,就不會影響到使用者使用。可以定期進行關機維護封包內的各項資訊。


封裝實作

接下來我們假設要設計一台ATM提款機中的封包設定與測試之實作。
首先,我們會需要先設定一些變數,如 : 性名、密碼核對等資訊。

/*File : ATM.java*/

public class ATM{
	private String name;

	private boolean password(int pwd){
		if(pwd == 12345678 )
			return true;
		else
			return false;
	}

	public String getName(){
		return name;
	}
	
	public void setName(String UserName){
		this.name = UserName;
	}
	
	public boolean confirm_pwd(int pwd){
		boolean information;
		information = password(pwd);
		return information;
	}
}
  • 程式解析 :
  1. 在這支程式中,我們可以看到簡單使用了封包的概念。名字與密碼皆是設為隱私權限,內容要靠使用者書的方式存取或確認是否正確,像是密碼我們先定義在此,表示將這個函數作封包保護起來,使用者無法讀入。
  2. 而下面3個函數就是封包內與前端連結的一個管道,透過輸入名字與密碼,而後台進行審核以使用ATM服務。

接著就是設定ATM使用者會接觸到的介面功能 :

/*File : Interface.java*/
import java.util.Scanner;

public class Interface{
	public static void main(String[] args){
        ATM user = new ATM();
        Scanner input = new Scanner(System.in);
		String user_name;
        int user_pwd;
        boolean confirm_info;
        
		System.out.println("請輸入使用者姓名 : ");
		user_name = input.nextLine();                    /*使用者輸入String類型的語法*/
		System.out.println("請輸入使用者密碼(8位數) : ");
		user_pwd = input.nextInt();                      /*使用者輸入Int類型的語法*/

		user.setName(user_name);
		confirm_info = user.confirm_pwd(user_pwd);
		System.out.println("Your name is : " + user.getName);
		System.out.println("Your password confirmation : " + confirm_info);
	}
}
  • 程式解析 : 我們透過輸入的模式,將資訊傳到封包內做儲存確認,最後回傳資訊到我們ATM的螢幕上。

結果呈現

https://ithelp.ithome.com.tw/upload/images/20221005/20151216z6OD3zpV5R.png

以上就是簡單的ATM封包實作,因為內容及篇幅需求,此實作如果真的要實行,那觀念一定是更複雜且有很多資訊需要被考慮的,這邊僅是透過此介紹封包的好處與實用性!!!


以上內容若有錯誤或任何問題,煩請不吝嗇更正,謝謝您!!!/images/emoticon/emoticon56.gif


上一篇
Day 19 : 前置修飾詞
下一篇
Day 21 : 類別繼承 ( 1 )
系列文
30天Java由淺入深30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言