public class Person {
private String name;
private int age;
// コンストラクタやメソッドãªã©ãŒã“ã“ã«ç¶šã...
// å•題1: nameフィールドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¨å®šã—ã¦ãã ã•ã„。
public String getName() {
return name;
}
public void setName(String newName) {
if (newName != null && !newName.isEmpty()) {
// ã‚‚ã—æ–°ã—ã„åå‰ãŒnullã§ãªãã€ç©ºã§ãªã„å ´åˆã«ã®ã¿è¨å®š
name = newName;
} else {
System.out.println("åå‰ã¯nullã¾ãŸã¯ç©ºã§ã¯ã‚りã¾ã›ã‚“。");
}
}
// å•題2: ageフィールドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¨å®šã—ã¦ãã ã•ã„。
public int getAge() {
return age;
}
public void setAge(int newAge) {
if (newAge >= 0) {
// ã‚‚ã—æ–°ã—ã„å¹´é½¢ãŒ0以上ã®å ´åˆã«ã®ã¿è¨å®š
age = newAge;
} else {
System.out.println("å¹´é½¢ã¯0以上ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚");
}
}
}
ã“ã®ä¾‹ã§ã¯ã€getName メソッド㨠setName メソッドを使用ã—㦠name フィールドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制御ã—ã¦ã„ã¾ã™ã€‚åŒæ§˜ã«ã€getAge メソッド㨠setAge メソッドを使用ã—㦠age フィールドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚‚制御ã—ã¦ã„ã¾ã™ã€‚セッターメソッド内ã§å¼•æ•°ã®å€¤ã‚’検証ã—ã€ä¸æ£ãªå€¤ãŒè¨å®šã•れãªã„よã†ã«ã—ã¦ã„ã¾ã™ã€‚
カプセル化
カプセル化ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ï¼ˆOOP)ã«ãŠã„ã¦é‡è¦ãªåŽŸå‰‡ã®ä¸€ã¤ã§ã‚りã€ãƒ‡ãƒ¼ã‚¿ã¨ãã®ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹æ“作を一体化ã•ã›ã‚‹ã“ã¨ã‚’指ã—ã¾ã™ã€‚具体的ã«ã¯ã€ã‚¯ãƒ©ã‚¹å†…ã®ãƒ‡ãƒ¼ã‚¿ï¼ˆãƒ•ィールド)やメソッドã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã«ã€å¤–部ã‹ã‚‰ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã›ãšã«ã€å…¬é–‹ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆã‚²ãƒƒã‚¿ãƒ¼ãƒ»ã‚»ãƒƒã‚¿ãƒ¼ãªã©ï¼‰ã‚’通ã˜ã¦è¡Œã†ã¨ã„ã†æ¦‚念ã§ã™ã€‚
カプセル化ã®åˆ©ç‚¹:
- æƒ…å ±éš è”½ï¼ˆãƒ‡ãƒ¼ã‚¿ã®éš 蔽):
- 内部ã®å®Ÿè£…ã‚„ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’å¤–éƒ¨ã‹ã‚‰éš ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å¤–部ã®ã‚¯ãƒ©ã‚¹ã‚„モジュールã¯ã‚ªãƒ–ジェクトã®å†…éƒ¨æ§‹é€ ã‚’çŸ¥ã‚‰ãšã«åˆ©ç”¨ã§ãã¾ã™ã€‚データã®è©³ç´°ãŒéš ã•れるã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒå¤‰æ›´ã•れã¦ã‚‚ä»–ã®éƒ¨åˆ†ã«å½±éŸ¿ã‚’与ãˆã«ãããªã‚Šã¾ã™ã€‚
- 外部ã¸ã®å…¬é–‹ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ˜Žç¢ºåŒ–:
- カプセル化ã«ã‚ˆã£ã¦å¤–部ã«å…¬é–‹ã•れるメソッドãŒåˆ¶å¾¡ã•ã‚Œã€æ˜Žç¢ºã«ãªã‚Šã¾ã™ã€‚公開ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’通ã˜ã¦ã‚ªãƒ–ジェクトã¨å¯¾è©±ã™ã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•れã€ç›´æŽ¥çš„ãªã‚¢ã‚¯ã‚»ã‚¹ãŒåˆ¶é™ã•れã¾ã™ã€‚
- ãƒ‡ãƒ¼ã‚¿ã®æ•´åˆæ€§ã®ç¶æŒ:
- ゲッターやセッターを使用ã—ã¦ãƒ‡ãƒ¼ã‚¿ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’制御ã™ã‚‹ã“ã¨ã§ã€ãƒ‡ãƒ¼ã‚¿ã«å¯¾ã™ã‚‹ä¸æ£ãªæ“ä½œã‚„ä¸æ•´åˆãŒç™ºç”Ÿã—ã«ãããªã‚Šã¾ã™ã€‚セッターメソッド内ã§ãƒ‡ãƒ¼ã‚¿ã®æ•´åˆæ€§ã‚’ç¶æŒã™ã‚‹ãŸã‚ã®æ¤œè¨¼ã‚’è¿½åŠ ã§ãã¾ã™ã€‚
- 柔軟性ã®å‘上:
- 内部ã®å®Ÿè£…を変更ã™ã‚‹ã“ã¨ãªãã€å¤–部ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹æ–¹æ³•を変更ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å®Ÿè£…ã®è©³ç´°ã‚’変更ã›ãšã«ã€å¤–部ã®ã‚³ãƒ¼ãƒ‰ã‚’ä¿®æ£ã™ã‚‹ã“ã¨ãªãプãƒã‚°ãƒ©ãƒ を進化ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
カプセル化ã®å®Ÿè·µ:
1.フィールドをprivateã«ã™ã‚‹:
クラス内ã®ãƒ•ィールドã¯åŽŸå‰‡çš„ã«privateã«ã—ã€å¤–部ã‹ã‚‰ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã•れãªã„よã†ã«ã—ã¾ã™ã€‚
private int age;
2.公開メソッドを介ã—ãŸã‚¢ã‚¯ã‚»ã‚¹:
フィールドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯å…¬é–‹ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’通ã˜ã¦è¡Œã„ã¾ã™ã€‚
public int getAge() {
return age;
}
public void setAge(int newAge) {
// è¿½åŠ ã®åˆ¶å¾¡ãŒå¿…è¦ãªå ´åˆã¯ã“ã“ã«è¿½åŠ ã™ã‚‹
age = newAge;
}
3.ãƒ‡ãƒ¼ã‚¿æ•´åˆæ€§ã®ç¢ºä¿:
セッターメソッド内ã§ãƒ‡ãƒ¼ã‚¿ã®æ•´åˆæ€§ã‚’確ä¿ã™ã‚‹ãŸã‚ã®æ¤œè¨¼ã‚’è¿½åŠ ã—ã¾ã™ã€‚
public void setAge(int newAge) {
if (newAge >= 0) {
age = newAge;
} else {
System.out.println("å¹´é½¢ã¯0以上ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚");
}
4.データã®éš 蔽:
クラス内ã®è©³ç´°ã‚’外部ã«éš 蔽ã—ã€å…¬é–‹ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’通ã˜ã¦ã®ã¿å¯¾è©±ã™ã‚‹ã‚ˆã†ã«å¿ƒæŽ›ã‘ã¾ã™ã€‚
カプセル化ã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿å®ˆæ€§ã€æ‹¡å¼µæ€§ã€å®‰å…¨æ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ä¸å¯æ¬ ãªåŽŸå‰‡ã§ã™ã€‚æƒ…å ±ã®éš 蔽ã«ã‚ˆã£ã¦ã€å„クラスãŒç‹¬ç«‹ã—ã¦å‹•作ã—ã€å¤‰æ›´ã«å¼·ã„プãƒã‚°ãƒ©ãƒ æ§‹é€ ã‚’æ§‹ç¯‰ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚
「009 メンãƒã¸ã®ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント