|
Rarestyleへようこそ
|
|
|
|
|
|
デザインパターンでキャリアアップ
|
Iteratorパターン (デザインパターン)
Iteratorパターン 導入
Iteratorパターンは、集合要素に順番にアクセスする機構を提供するパターンです。 C#,Javaなどの標準クラスライブラリでCollectionに関するインターフェース(IEnumerable,Iterator)などがすでに実装されており、汎用性の高いインターフェースとして機能します。このインタフェースを実装したクラスは、配列のように複数の要素を持ち、その要素を列挙可能になります。
Iteratorパターン ポイント
各集合体にたいして個々にアクセス方法を実装するのではなくて、集合体へのアクセスを共通のインターフェースで置き換えるようにすることで、アクセス方法に関して個々のクラスの実装に依存しないようになる。
UML Iteratorパターン
C#ソースコード Iteratorパターン
|
Sample.cs
|
|
using System;
using System.Collections;
namespace Iterator
{
public class
Onechan
{
private
string strName;
private
int intShinchou;
private
int intTaiju;
private
string strProfile;
public Onechan(
string strName,
int intShinchou,
int intTaiju,
string strProfile)
{
this.strName=strName;
this.intShinchou=intShinchou;
this.intTaiju=intTaiju;
this.strProfile=strProfile;
}
public
string Name
{
get{return this.strName;}
}
public
int Shinchou
{
get{return this.intShinchou;}
}
public
int Taiju
{
get{return this.intTaiju;}
}
public
string Profile
{
get{return this.strProfile;}
}
public
void Ohenji()
{
Console.WriteLine(this.Name
+"です!"+" はあい!!!");
}
}
class Class1
{
[STAThread]
static
void Main(string[] args)
{
Onechan haru =new Onechan("はる",160,45,"グルメ");
Onechan natu =new Onechan("なつ",160,45,"グルメ");
Onechan aki
=new Onechan("あき",150,45,"カラオケ");
Onechan fuyu =new Onechan("ふゆ",155,60,"カラオケ");
Onechan syoka
=new Onechan("初夏",175,70,"グルメ");
ArrayList nomiya =new ArrayList();
nomiya.Add(haru);
nomiya.Add(natu);
nomiya.Add(aki);
nomiya.Add(fuyu);
nomiya.Add(syoka);
IEnumerator e =nomiya.GetEnumerator();
while(e.MoveNext())
{
if
(((Onechan)e.Current).Profile=="カラオケ")
{
((Onechan)e.Current).Ohenji();
}
}
}
}
}
|
Iterator 実行結果
UMLプラグインによる描画 Iteratorパターン
Javaソースコード Iteratorパターン
| Onechan.java |
1: package iterator;
2:
3: //おねーちゃんクラス
4: public class Onechan {
5:
6: private String Name;
7:
8: private int Shinchou;
9:
10: private int Taiju;
11:
12: private String Profile;
13:
14: public String getName() {
15: return Name;
16: }
17:
18: public void setName(String Name) {
19: this.Name = Name;
20: }
21:
22: public int getShinchou() {
23: return Shinchou;
24: }
25:
26: public void setShinchou(int Shinchou) {
27: this.Shinchou = Shinchou;
28: }
29:
30: public int getTaiju() {
31: return Taiju;
32: }
33:
34: public String getProfile() {
35: return Profile;
36: }
37:
38: public void setProfile(String Profile) {
39: this.Profile = Profile;
40: }
41:
42: public void Ohenji() {
43: System.out.println(this.Name +"です! はあい!!!");
44: }
45:
46: Onechan() {
47: }
48:
49: //コンストラクタ
50: public Onechan(
51: String strName,
52: int intShinchou,
53: int intTaiju,
54: String strProfile) {
55:
56: this.Name=strName;
57: this.Shinchou=intShinchou;
58: this.Taiju=intTaiju;
59: this.Profile=strProfile;
60: }
61:
62: public void setTaiju(int Taiju) {
63: this.Taiju = Taiju;
64: }
65:
66: }
|
| StartClass.java |
1: package iterator;
2:
3: import java.util.ArrayList;
4: import java.util.Collection;
5: import java.util.Iterator;
6:
7: public class StartClass {
8:
9:
10:
11: public static void main(String[] args) {
12:
13: Collection onechans =new ArrayList();
14: //女性人登場
15: onechans.add(new Onechan("はる",160,45,"グルメ"));
16: onechans.add(new Onechan("なつ",160,45,"グルメ"));
17: onechans.add(new Onechan("あき",150,45,"カラオケ"));
18: onechans.add(new Onechan("ふゆ",155,60,"カラオケ"));
19: onechans.add(new Onechan("初夏",175,70,"グルメ"));
20:
21: Iterator itr =onechans.iterator();
22:
23: while (itr.hasNext()){
24:
25: Onechan onechan = (Onechan)itr.next();
26: if (onechan.getProfile().equals("カラオケ"))
27: {
28: onechan.Ohenji();
29: }
30: }
31: }
32: }
|
デザインパターン「ひとくちメモ」へ
Homeへもどる
|
|
| お天気情報 |
|
東京都 東京 - 今日の天気
|
曇り
-
|
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
|
東京都 東京 - 明日の天気
|
晴のち雨
-
|
|
|
最高
|
最低
|
| 気温
|
9 |
3 |
| 湿度
|
48.2 |
37.4 |
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
|
東京都 東京 - あさっての天気
|
晴時々曇
-
|
|
|
最高
|
最低
|
| 気温
|
11 |
4 |
| 湿度
|
51.8 |
39.2 |
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
|
大阪府 大阪 - 今日の天気
|
晴のち曇
-
|
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
|
大阪府 大阪 - 明日の天気
|
雨
-
|
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
|
大阪府 大阪 - あさっての天気
|
曇時々晴
-
|
|
|
最高
|
最低
|
| 気温
|
7 |
3 |
| 湿度
|
44.6 |
37.4 |
|
|
|
|
取得日:2012/02/05 17:00:00
ST:
True |
|
| livedoorのWebサービスより提供 |
|
【工事中】お天気配信 ユーザー登録 |
|
|
|
|
|
Internet Explorer5.0以上のご利用を推奨いたします。
|
 |
Copyright 2006 Rarestyle
このページへのリンクは確認不要です。
Programming by Xenon Project Team
postmaster@rarestyle.net
免責事項について
|