Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【LiT Leaders】Android0309

303 views

Published on

Android研修3月9日補足スライドです。

Published in: Education
  • Be the first to comment

  • Be the first to like this

【LiT Leaders】Android0309

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

×