Android開発講座
              2月12日

13年2月13日水曜日
§本日の学ぶ事項
 ・Androidコンポーネント


 ・Acticityのライフサイクル


 ・画面遷移とIntent


 ・Android Manifest


 ・イベント処理について


 ・エラーの対処方法




13年2月13日水曜日
§本日のおさらい
                       →Activity, Service,Broadcast receiver, Content
 ・Androidコンポーネント       Providerの4つが存在。一つの画面に対して一つのActivity
                       が対応

 ・Acticityのライフサイクル →Activityが生成されてから、消滅するまでには一定の流れが
                   存在。その中で、onCreate(), onPause()などはライフサイク
                       ルの中で自動的に呼び出されるメソッド

 ・画面遷移とIntent        →IntentはAndroidにおける連絡役。画面遷移やデータの受け渡
                     しなどに使用する。アプリ間での使用も可能


 ・Android Manifest   →プロジェクトの情報を管理している。画面を増や
                     したらManifestへも記載する


 ・イベント処理について →代表例:ボタンのクリックについても複数
                     の処理が存在。

                     →R.javaが存在しない時はXMLファイルのエラー。
 ・エラーの対処方法




13年2月13日水曜日
アプリ開発講座
              ポイント復習

13年2月13日水曜日
§アプリ開発方法のまとめ
   ・アプリ作成の流れ
    →コンセプト、デザイン、コーディング
   ・アルゴリズム
    →入出力、演算、条件分岐、ループetc
   ・オブジェクト指向プログラミング
    →クラス(フィールド、メソッド)




13年2月13日水曜日
§構想から製作まで
   ・アプリ作成の流れ
    →コンセプト、デザイン、コーディング

 作りたいアプリのアイデアは人に説明出来ますか?
 アプリのデザイン、画面遷移は図にできますか?
 必要な処理について洗い出しができますか?


              コンセプト、デザイン、コーディングは
              順番に進めていきましょう


13年2月13日水曜日
§プログラムの実際の処理内容
   ・アルゴリズム
    →入出力、演算、条件分岐、ループetc

 if, switch, for, while文は正しく書けますか?
 処理させたい内容をプログラムに落とし込めますか?

              具体的な処理の実現方法、それらを組み
              合わせて複雑な処理を行わせる方法、両
              方とも出来る必要があります


13年2月13日水曜日
§アプリ開発方法のまとめ
   ・オブジェクト指向プログラミング
    →クラス(フィールド、メソッド)

   オブジェクト指向とは何か?
   オブジェクト、クラス、インスタンスとは何?
   インスタンスのメンバへのアクセス方法は?


              目標:これまで作ってきたアプリのコー
              ドを読めるようにしよう


13年2月13日水曜日
オブジェクト指向とは??                                   分かりやすさ重視で正確な定義などから
                                                    は外れています。ご留意下さい



 ◆抽象的な概念                                   ◆具体的な形式          プログラムに落としこむと…



 オブジェクト… データ と 処理方法 をまとめた集合                クラス… フィールド と メソッド を指定する
 メッセージ…オブジェクト同士が受け渡す情報                     オブジェクトの定義(みたいなもの)
                                           インスタンス…クラスを基に生成される具体的
 →オブジェクトという相互に連絡しあう構成単位で                   なデータの集合( データ と 処理方法 を持っ
 プログラムを組み立てる設計思想の事                         ているので、オブジェクト)


                   オブジェクト
                              メ
                               ッ
                   フィールド          セ
                                   ー
                                      ジ
                                       の
                                          や      オブジェクト
                                           り
      オブジェクト                                取
                    メソッド                     り
                                                 フィールド
       フィールド                                                ◆メッセージの内容
                                                           値の読み取り、書き込み
                                                 メソッド
                                                            メソッドの実行命令
        メソッド
                                                                etc
                            オブジェクト

                            フィールド


                            メソッド




13年2月13日水曜日
クラス:フィールドとメソッド
 ◆クラス
 クラスはオブジェクトの設計図として考えることができます。大きく分けてフィールド
 (メンバ変数)とメソッドから成り立ちます。
 実際にオブジェクトを使用する時はクラス(設計図)から、インスタンス(実物)を作成
 して、使用します

                具体例

  TextViewクラス                  メソッドの形式          Javaの場合
                               (アクセス修飾子) (戻り値の型) メソッド名 (引数の型 引数名){
              フィールド                メソッドの内容
                               }
          android:text
                               コードを理解するために(メソッド内の変数)
                               メソッドの中で宣言された変数などは、メソッド内のみ有効
               メソッド            →クラスの変数とは区別されるので注意
    public final void setText

     (CharSequence text)       フィールドの形式            Javaの場合
    ・・・                        (アクセス修飾子) (型) フィールド名;




13年2月13日水曜日
インスタンスの作成、関連付け
   TextViewクラス                          クラス名 インスタンス名;
                                       と書くことでインスタンスを
               フィールド                        作成する


              android:text

                                      	 private TextView mTextNumber;
                                      	 private TextView mTextAho;
                メソッド
     public final void setText
                                      	 private TextView mTextRatio;

      (CharSequence text)                  コードを理解するために(基本型と参照型)
                                           変数には基本型(int doubleなど)と参照型という物が存在する。
     ・・・                                   基本型は 値(フィールド) のみ!
                                           参照型はクラスから作られるインスタンスなので、 値 と メソッド を
                                           持っている。どちらもフィールドとして使用可能


       コードを理解するために(インスタンスとXMLオブジェクトの関連付け)

    Javaのフィールド                                XMLのオブジェクト
     mTextNumber = (TextView)findViewById(R.id.textView_number);
     mTextAho = (TextView) findViewById(R.id.textView_aho);
     mTextRatio = (TextView) findViewById(R.id.textView_ratio);
                             キャスト           メソッド名            int型
                        int型からTextView型へ
13年2月13日水曜日
フィールド、メソッドへのアクセス
 ◆インスタンスのフィールド、メソッドの使用方法

 インスタンスはクラス(設計図)が持つフィールド、
 メソッドを使用することができます。


     Carクラス(設計図)
                     フィールドの形式
       int number     Car1.number = 20130212;
  String setText()
                              このコードが書かれているオブジェクトから
                     Car1オブジェクト(インスタンス)に値書き込みのメッセージが渡っている




                     メソッドの形式
     Car1(インスタンス)
                     TextView text1;
       int number
                     text1.setText( Car1.setText() );
  String setText()
13年2月13日水曜日
クラスの継承
◆super, Extends, Implementsとは??

クラスは親子関係をもたせる事が可能です。
子供に親の持つ機能を使わせる事ができるようになります

                                    Javaの全ての親クラス
                                     Java.lang.Object
コードを理解するために(アクセス修飾子)
                                                         コードを理解するために(オーバーライド)
public, private, protectedなどはアクセス
                                                         親クラス(スーパークラス)から継承したメ
修飾子という物です。そのデータに対して、
のアクセス(読み込み書き込みなど)の制限
                                    親クラス                 ソッドの内容を、変更して、新しいメソッド
                                                         内容を作成すること。
を行なっている
                                     MethodA()




              子クラスA           親クラスは一つしか持つこ
                              とができない。それゆえ、                 子クラスB
                              クラスは全て樹形図の様に
          super.MethodA()                               @override
                              繋がっている
           親メソッドの使用                                     MethodA(int number)
             MethodB()                                     オーバーライド
          メソッドの新規作成
13年2月13日水曜日
コードを実際に読んでみよう(ex:カウントアプリ)

                           import:使用するクラスがSDKの中のどこにあるのかを指定


                                        class クラス名 extends 親クラス:Activityクラスを基に
                                        カウントアプリで表示されるActivityを作成する

                           Activityクラスのフィールドを指定:他のクラス(TextView)からインスタンス
                           を作成して、このクラスの変数としている。

                                           onCreate():このActivityのインスタンスが作られ
                                           た時に呼ばれるメソッド


                                           findViewById():Activityの変数とXMLを関連付け


                                purasu():このクラスが持つメソッド。ボタンからのイベントが引数
                                (この場合は実行条件の意味合い)となり、void型なので、戻り値を出
                                さない。



              setText():Text1はこのクラスの変数と同時に、TextViewクラスのインスタンスな
              ので、そのメソッドを呼び出している。表示内容はStringクラスの静的メソッド
              format()によって、int型のnumberから変換した文字列




13年2月13日水曜日
参考:Objective-cでの表現

  クラスの宣言      @interface クラス名:スーパークラス{
               メンバ変数
      hファイル    }
               メソッド宣言
              @end

  クラスの実装      #import hoge.h
              @implementation
    mファイル        各種実装
              @end

13年2月13日水曜日
文字列 @ 文字列
                       cf) オブジェクト名.メソッド名()


  メッセージ式       [オブジェクト名 メソッド名]
                    オブジェクト間でメッセージを送っている事を表現している
                           ([メッセージの宛先 内容])




  メソッド
 -(戻り値の型) メソッド名 : (引数の型) 引数名 ラベル名 : (引数の型) 引数名




13年2月13日水曜日

LITメンター研修_Android0212

  • 1.
    Android開発講座 2月12日 13年2月13日水曜日
  • 2.
    §本日の学ぶ事項 ・Androidコンポーネント ・Acticityのライフサイクル ・画面遷移とIntent ・Android Manifest ・イベント処理について ・エラーの対処方法 13年2月13日水曜日
  • 3.
    §本日のおさらい →Activity, Service,Broadcast receiver, Content ・Androidコンポーネント Providerの4つが存在。一つの画面に対して一つのActivity が対応 ・Acticityのライフサイクル →Activityが生成されてから、消滅するまでには一定の流れが 存在。その中で、onCreate(), onPause()などはライフサイク ルの中で自動的に呼び出されるメソッド ・画面遷移とIntent →IntentはAndroidにおける連絡役。画面遷移やデータの受け渡 しなどに使用する。アプリ間での使用も可能 ・Android Manifest →プロジェクトの情報を管理している。画面を増や したらManifestへも記載する ・イベント処理について →代表例:ボタンのクリックについても複数 の処理が存在。 →R.javaが存在しない時はXMLファイルのエラー。 ・エラーの対処方法 13年2月13日水曜日
  • 4.
    アプリ開発講座 ポイント復習 13年2月13日水曜日
  • 5.
    §アプリ開発方法のまとめ ・アプリ作成の流れ  →コンセプト、デザイン、コーディング ・アルゴリズム  →入出力、演算、条件分岐、ループetc ・オブジェクト指向プログラミング  →クラス(フィールド、メソッド) 13年2月13日水曜日
  • 6.
    §構想から製作まで ・アプリ作成の流れ  →コンセプト、デザイン、コーディング 作りたいアプリのアイデアは人に説明出来ますか? アプリのデザイン、画面遷移は図にできますか? 必要な処理について洗い出しができますか? コンセプト、デザイン、コーディングは 順番に進めていきましょう 13年2月13日水曜日
  • 7.
    §プログラムの実際の処理内容 ・アルゴリズム  →入出力、演算、条件分岐、ループetc if, switch, for, while文は正しく書けますか? 処理させたい内容をプログラムに落とし込めますか? 具体的な処理の実現方法、それらを組み 合わせて複雑な処理を行わせる方法、両 方とも出来る必要があります 13年2月13日水曜日
  • 8.
    §アプリ開発方法のまとめ ・オブジェクト指向プログラミング  →クラス(フィールド、メソッド) オブジェクト指向とは何か? オブジェクト、クラス、インスタンスとは何? インスタンスのメンバへのアクセス方法は? 目標:これまで作ってきたアプリのコー ドを読めるようにしよう 13年2月13日水曜日
  • 9.
    オブジェクト指向とは?? 分かりやすさ重視で正確な定義などから は外れています。ご留意下さい ◆抽象的な概念 ◆具体的な形式 プログラムに落としこむと… オブジェクト… データ と 処理方法 をまとめた集合 クラス… フィールド と メソッド を指定する メッセージ…オブジェクト同士が受け渡す情報 オブジェクトの定義(みたいなもの) インスタンス…クラスを基に生成される具体的 →オブジェクトという相互に連絡しあう構成単位で なデータの集合( データ と 処理方法 を持っ プログラムを組み立てる設計思想の事 ているので、オブジェクト) オブジェクト メ ッ フィールド セ ー ジ の や オブジェクト り オブジェクト 取 メソッド り フィールド フィールド ◆メッセージの内容 値の読み取り、書き込み メソッド メソッドの実行命令 メソッド etc オブジェクト フィールド メソッド 13年2月13日水曜日
  • 10.
    クラス:フィールドとメソッド ◆クラス クラスはオブジェクトの設計図として考えることができます。大きく分けてフィールド (メンバ変数)とメソッドから成り立ちます。 実際にオブジェクトを使用する時はクラス(設計図)から、インスタンス(実物)を作成 して、使用します 具体例 TextViewクラス メソッドの形式 Javaの場合 (アクセス修飾子) (戻り値の型) メソッド名 (引数の型 引数名){ フィールド     メソッドの内容 } android:text コードを理解するために(メソッド内の変数) メソッドの中で宣言された変数などは、メソッド内のみ有効 メソッド →クラスの変数とは区別されるので注意 public final void setText (CharSequence text) フィールドの形式 Javaの場合 ・・・ (アクセス修飾子) (型) フィールド名; 13年2月13日水曜日
  • 11.
    インスタンスの作成、関連付け TextViewクラス クラス名 インスタンス名; と書くことでインスタンスを フィールド 作成する android:text private TextView mTextNumber; private TextView mTextAho; メソッド public final void setText private TextView mTextRatio; (CharSequence text) コードを理解するために(基本型と参照型) 変数には基本型(int doubleなど)と参照型という物が存在する。 ・・・ 基本型は 値(フィールド) のみ! 参照型はクラスから作られるインスタンスなので、 値 と メソッド を 持っている。どちらもフィールドとして使用可能 コードを理解するために(インスタンスとXMLオブジェクトの関連付け) Javaのフィールド XMLのオブジェクト mTextNumber = (TextView)findViewById(R.id.textView_number); mTextAho = (TextView) findViewById(R.id.textView_aho); mTextRatio = (TextView) findViewById(R.id.textView_ratio); キャスト メソッド名 int型 int型からTextView型へ 13年2月13日水曜日
  • 12.
    フィールド、メソッドへのアクセス ◆インスタンスのフィールド、メソッドの使用方法 インスタンスはクラス(設計図)が持つフィールド、 メソッドを使用することができます。 Carクラス(設計図) フィールドの形式 int number Car1.number = 20130212; String setText() このコードが書かれているオブジェクトから Car1オブジェクト(インスタンス)に値書き込みのメッセージが渡っている メソッドの形式 Car1(インスタンス) TextView text1; int number text1.setText( Car1.setText() ); String setText() 13年2月13日水曜日
  • 13.
    クラスの継承 ◆super, Extends, Implementsとは?? クラスは親子関係をもたせる事が可能です。 子供に親の持つ機能を使わせる事ができるようになります Javaの全ての親クラス Java.lang.Object コードを理解するために(アクセス修飾子) コードを理解するために(オーバーライド) public, private, protectedなどはアクセス 親クラス(スーパークラス)から継承したメ 修飾子という物です。そのデータに対して、 のアクセス(読み込み書き込みなど)の制限 親クラス ソッドの内容を、変更して、新しいメソッド 内容を作成すること。 を行なっている MethodA() 子クラスA 親クラスは一つしか持つこ とができない。それゆえ、 子クラスB クラスは全て樹形図の様に super.MethodA() @override 繋がっている 親メソッドの使用 MethodA(int number) MethodB() オーバーライド メソッドの新規作成 13年2月13日水曜日
  • 14.
    コードを実際に読んでみよう(ex:カウントアプリ) import:使用するクラスがSDKの中のどこにあるのかを指定 class クラス名 extends 親クラス:Activityクラスを基に カウントアプリで表示されるActivityを作成する Activityクラスのフィールドを指定:他のクラス(TextView)からインスタンス を作成して、このクラスの変数としている。 onCreate():このActivityのインスタンスが作られ た時に呼ばれるメソッド findViewById():Activityの変数とXMLを関連付け purasu():このクラスが持つメソッド。ボタンからのイベントが引数 (この場合は実行条件の意味合い)となり、void型なので、戻り値を出 さない。 setText():Text1はこのクラスの変数と同時に、TextViewクラスのインスタンスな ので、そのメソッドを呼び出している。表示内容はStringクラスの静的メソッド format()によって、int型のnumberから変換した文字列 13年2月13日水曜日
  • 15.
    参考:Objective-cでの表現 クラスの宣言 @interface クラス名:スーパークラス{ メンバ変数 hファイル } メソッド宣言 @end クラスの実装 #import hoge.h @implementation mファイル 各種実装 @end 13年2月13日水曜日
  • 16.
    文字列 @ 文字列 cf) オブジェクト名.メソッド名() メッセージ式 [オブジェクト名 メソッド名] オブジェクト間でメッセージを送っている事を表現している ([メッセージの宛先 内容]) メソッド -(戻り値の型) メソッド名 : (引数の型) 引数名 ラベル名 : (引数の型) 引数名 13年2月13日水曜日