class LimitedBox<T> extends Box<T> {
private final int maxAddCount;
private int currentAddCount;
public LimitedBox(int maxAddCount) {
this.maxAddCount = maxAddCount;
this.currentAddCount = 0;
}
@Override
public void addItem(T item) {
if (currentAddCount < maxAddCount) {
super.addItem(item);
currentAddCount++;
} else {
System.out.println("Cannot add more items. Limit reached.");
}
}
}
public class Main {
public static void main(String[] args) {
// Integeråž‹ã®ãƒªãƒŸãƒ†ãƒƒãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚’作æˆï¼ˆè¦ç´ è¿½åŠ å›žæ•°ã®ä¸Šé™ã‚’3ã¨ã™ã‚‹ï¼‰
LimitedBox<Integer> intLimitedBox = new LimitedBox<>(3);
// è¦ç´ を追åŠ
intLimitedBox.addItem(1);
intLimitedBox.addItem(2);
intLimitedBox.addItem(3);
intLimitedBox.addItem(4); // 4回目ã®è¿½åŠ ã¯ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れる
// Stringåž‹ã®ãƒªãƒŸãƒ†ãƒƒãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚’作æˆï¼ˆè¦ç´ è¿½åŠ å›žæ•°ã®ä¸Šé™ã‚’2ã¨ã™ã‚‹ï¼‰
LimitedBox<String> strLimitedBox = new LimitedBox<>(2);
// è¦ç´ を追åŠ
strLimitedBox.addItem("A");
strLimitedBox.addItem("B");
strLimitedBox.addItem("C"); // 3回目ã®è¿½åŠ ã¯ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れる
}
}
ã“ã®ä¾‹ã§ã¯ã€LimitedBox クラス㌠Box クラスを拡張ã—ã€è¦ç´ ã®è¿½åŠ å›žæ•°ã®ä¸Šé™ã‚’制é™ã—ã¦ã„ã¾ã™ã€‚main メソッドã§ã€æ•´æ•°åž‹ã¨æ–‡å—列型ã®ãƒªãƒŸãƒ†ãƒƒãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚’作æˆã—ã€è¦ç´ ã®è¿½åŠ ã‚’è©¦ã¿ã¦ã„ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µ
ジェãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µã¯ã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã‚„メソッドをジェãƒãƒªã‚¯ã‚¹å¯¾å¿œã«ã™ã‚‹ã“ã¨ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦ã‚‚åŒã˜æ©Ÿèƒ½ã‚’æä¾›ã§ãã€åž‹ã®å®‰å…¨æ€§ãŒå‘上ã—ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µã«ã¯ä»¥ä¸‹ã®æ‰‹é †ãŒã‚りã¾ã™ï¼š
- ジェãƒãƒªã‚¯ã‚¹ã‚¯ãƒ©ã‚¹ã®ä½œæˆ: ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹æ–°ã—ã„クラスを作æˆã—ã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ã¯é€šå¸¸ã€
<T>ã®ã‚ˆã†ã«åž‹ãƒ‘ラメータを使ã£ã¦å®šç¾©ã•れã¾ã™ã€‚ - ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã®ä½œæˆ: ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å˜ä¸€ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦å‹•作ã§ãるよã†ã«ã™ã‚‹ã‚‚ã®ã§ã™ã€‚メソッド内ã§ä½¿ç”¨ã™ã‚‹åž‹ã‚‚ã¾ãŸã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã§æŒ‡å®šã•れã¾ã™ã€‚
- æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã‚„ãƒ¡ã‚½ãƒƒãƒ‰ã®æ‹¡å¼µ: æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã‚„メソッドをジェãƒãƒªã‚¯ã‚¹å¯¾å¿œã«æ‹¡å¼µã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚¯ãƒ©ã‚¹ã‚„メソッドãŒç•°ãªã‚‹åž‹ã«ã‚‚対応ã§ãã¾ã™ã€‚
以下ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µã®ä¾‹ã¨ã—ã¦ã€å˜ç´”ãªãƒšã‚¢ï¼ˆ2ã¤ã®è¦ç´ ã‚’ä¿æŒã™ã‚‹ã‚¯ãƒ©ã‚¹ï¼‰ã‚’ジェãƒãƒªã‚¯ã‚¹åŒ–ã™ã‚‹å ´é¢ã‚’示ã™ä¾‹ã§ã™ï¼š
class Pair<T, U> {
private T first;
private U second;
public Pair(T first, U second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public U getSecond() {
return second;
}
// ä»–ã«ã‚‚ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ä»–ã®æ©Ÿèƒ½ã‚’è¿½åŠ ã§ãã‚‹
}
public class Main {
public static void main(String[] args) {
// Integeråž‹ã¨Stringåž‹ã®ãƒšã‚¢ã‚’作æˆ
Pair<Integer, String> pair = new Pair<>(1, "One");
// ペアã®è¦ç´ ã‚’å–å¾—ã—ã¦è¡¨ç¤º
System.out.println("First: " + pair.getFirst());
System.out.println("Second: " + pair.getSecond());
}
}
ã“ã®ä¾‹ã§ã¯ã€Pair クラスをジェãƒãƒªã‚¯ã‚¹åŒ–ã—ã€Integer 型㨠String åž‹ã®ãƒšã‚¢ã‚’作æˆã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Pair クラスã¯ç•°ãªã‚‹åž‹ã®è¦ç´ ã‚’æŒã¤ãƒšã‚¢ã‚’扱ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚
ジェãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æŸ”軟性ã¨åž‹ã®å®‰å…¨æ€§ã‚’å‘上ã•ã›ã‚‹é‡è¦ãªæ‰‹æ®µã§ã™ã€‚ç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦ä¸€è²«ã—ã¦æ©Ÿèƒ½ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’記述ã™ã‚‹ã“ã¨ã§ã€å†åˆ©ç”¨æ€§ãŒå‘上ã—ã€å†—é•·ãªã‚³ãƒ¼ãƒ‰ã®å‰Šæ¸›ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ã‚ˆã‚Šå …牢ã§ã€ä¿å®ˆæ€§ãŒé«˜ã¾ã‚Šã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚„アルゴリズムã€ãƒ‡ãƒ¼ã‚¿æ§‹é€ ãªã©ã®å¹…広ã„é ˜åŸŸã§åˆ©ç”¨ã•れã¦ãŠã‚Šã€ãã®æœ‰ç”¨æ€§ã¯å¤šå²ã«ã‚ãŸã‚Šã¾ã™ã€‚åž‹å®‰å…¨æ€§ã‚’ç¶æŒã—ãªãŒã‚‰ã€æŸ”軟性を確ä¿ã™ã‚‹ãŸã‚ã«ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’効果的ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
プãƒã‚°ãƒ©ãƒ ã®å“質å‘上やメンテナンス性ã®å‘上を考ãˆã‚‹ã¨ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã®æ‹¡å¼µã¯å¿…é ˆã®ã‚¹ã‚ルã¨ã„ãˆã‚‹ã§ã—ょã†ã€‚æ–°ã—ã„åž‹ã«å¯¾ã—ã¦ã‚‚åŒã˜æ©Ÿèƒ½ãŒæä¾›ã§ãã€ã‚³ãƒ¼ãƒ‰ã®é©ç”¨ç¯„囲ãŒåºƒãŒã‚‹ã“ã¨ã§ã€ã‚ˆã‚ŠæŸ”è»Ÿã§æ‹¡å¼µæ€§ã®ã‚るプãƒã‚°ãƒ©ãƒ を実ç¾ã§ãã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント