Rarestyleへようこそ
C#,デザインパターン,UML,オブジェクト指向,Webサービス,iPAQ(モバイル) アクセス数: Number_0Number_1Number_3Number_9Number_3Number_0Number_8Number_9
インデント OCPとデザインパターン
インデント サンプルコードについて
インデント デザインパターン ひとくちメモ
インデント FactoryMethodパターン
インデント AbstractFactoryパターン
インデント Builderパターン
インデント Prototypeパターン
インデント Adapterパターン
インデント Bridgeパターン
インデント Compositeパターン
インデント Decoratorパターン
インデント Facadeパターン
インデント Flyweightパターン
インデント Proxyパターン
インデント TemplateMethodパターン
インデント Chain of Responsibilityパターン
インデント Commandパターン
インデント Iteratorパターン
インデント Mediatorパターン
インデント Mementoパターン
インデント Observerパターン
インデント Stateパターン
インデント Strategyパターン
インデント Visitorパターン
インデント 速習!デザインパターン第一回
インデント 速習!デザインパターン第二回
インデント 速習!デザインパターン第三回
インデント UMLとは
インデント UML入門
インデント オブジェクト指向
インデント クラス図
インデント アクティビティ図
インデント インタラクション図
インデント ユースケース図
インデント Rarestyle証明書サービス
インデント QRコード発行WSDL
インデント QRコード発行サンプル
インデント J2EE覚書
インデント FreeMind実践レポート
インデント モバイル情報
インデント Homeページ
インデント イベント&デジタルファッション
インデント ごあいさつ・免責情報
インデント お問い合わせ
デザインパターンでキャリアアップ

Iteratorパターン (デザインパターン)

Iteratorパターン 導入

Iteratorパターンは、集合要素に順番にアクセスする機構を提供するパターンです。 C#,Javaなどの標準クラスライブラリでCollectionに関するインターフェース(IEnumerable,Iterator)などがすでに実装されており、汎用性の高いインターフェースとして機能します。このインタフェースを実装したクラスは、配列のように複数の要素を持ち、その要素を列挙可能になります。

Iteratorパターン ポイント

各集合体にたいして個々にアクセス方法を実装するのではなくて、集合体へのアクセスを共通のインターフェースで置き換えるようにすることで、アクセス方法に関して個々のクラスの実装に依存しないようになる。

UML Iteratorパターン

C#ソースコード Iteratorパターン

Sample.cs

using System;
using System.Collections;
namespace Iterator
{
   //-----------------------------------------------------------------
   //  デザインパターン 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 +"です!"+" はあい!!!");
       }
   }
   /// <summary>
   /// Class1 の概要の説明です。
   /// </summary>
   class Class1
   {
       /// <summary>
       /// アプリケーションのメイン エントリ ポイントです。
       /// </summary>
       [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);

           //JavaではIteratorの実装がこれに相当します。
           IEnumerator e =nomiya.GetEnumerator();

           //会場にきている全ての人に順次アクセス
           while(e.MoveNext())
           {
               //会場に入っている全ての皆さん カラオケする人、返事してえ!!
               if (((Onechan)e.Current).Profile=="カラオケ")
               {
                   ((Onechan)e.Current).Ohenji();
               }
               //--------------------------------------------------------
               //<全ての要素にアクセスできる>
               //また、上記if文により検索条件を変えることにより
               //身長、体重などの検索で取り出し可能となる
               //ArrayListがIEnumeratorを継承しているからなせる技なのよね。
               //やれやれ、まったく、便利になったもんだ
               //--------------------------------------------------------
           }
       }
   }
}

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
大阪府 大阪 - 明日の天気
- リンク先
最高 最低
気温 11 5
湿度 51.8 41
取得日:2012/02/05 17:00:00  ST: True
大阪府 大阪 - あさっての天気
曇時々晴 - リンク先
最高 最低
気温 7 3
湿度 44.6 37.4
取得日:2012/02/05 17:00:00  ST: True
livedoorのWebサービスより提供
【工事中】お天気配信 ユーザー登録
rarestyle
Copyright 2006 Rarestyle このページへのリンクは確認不要です。
Programming by Xenon Project Team     postmaster@rarestyle.net
免責事項について
レアスタイルサイト内検索