【lit leaders】android0309

17
Android開発講座 030913312日火曜日

Upload: ryo-yamamoto

Post on 14-Jul-2015

134 views

Category:

Education


1 download

TRANSCRIPT

Android開発講座03月09日

13年3月12日火曜日

§前回のおさらい

・Androidとは何か?

・Androidアプリ開発

・アプリ開発の流れ

∟開発環境

∟開発から実行の流れ

∟企画

∟デザイン

∟実装

→Googleの開発した汎用OS。様々なメーカーから 様々なバージョンの製品が作られている。高い自由度 が特徴

→Java,Android SDK, Eclipseなど様々なソフト の複合環境→プロジェクトの作成、レイアウト構築(XML) とプログラミング(JAVA)、実行とデバッグ

→コンセプトを考え、要素を組み立てる

→画面デザインなどUI設計(レイアウトの編集) デザインソフトによるパーツの作成 イラストレーターの使用方法

→・アルゴリズムの理解(ボタンイベント、条件分岐、繰り返し処理など) ・プログラムの文法理解(“=”,if文,purasuメソッドなど) ・プログラム的な落とし込み(アプリ、それを使う人の動作から)

13年3月12日火曜日

§アプリ開発方法のまとめ・アプリ作成の流れ →コンセプト、デザイン、コーディング・アルゴリズム →入出力、演算、条件分岐、ループetc

・オブジェクト指向プログラミング →クラス(フィールド、メソッド)

13年3月12日火曜日

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

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

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

13年3月12日火曜日

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

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

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

13年3月12日火曜日

§オブジェクト指向について・オブジェクト指向プログラミング →クラス(フィールド、メソッド)

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

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

13年3月12日火曜日

§本日の学ぶ事項・Androidコンポーネント

・Acticityのライフサイクル

・画面遷移とIntent

・Android Manifest

・イベント処理について

・エラーの対処方法

13年3月12日火曜日

§本日のおさらい

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

・Androidコンポーネント

・Acticityのライフサイクル

・画面遷移とIntent

・Android Manifest

・イベント処理について

・エラーの対処方法

→Activity, Service,Broadcast receiver, Content Providerの4つが存在。一つの画面に対して一つのActivityが対応

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

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

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

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

13年3月12日火曜日

オブジェクト指向説明補足

13年3月12日火曜日

§オブジェクト指向とは??◆抽象的な概念オブジェクト…”データ”と”処理方法”をまとめた集合メッセージ…オブジェクト同士が受け渡す情報

→オブジェクトという、相互に連絡しあう構成単位でプログラムを組み立てる設計思想の事

◆具体的な形式クラス…”フィールド”と”メソッド”を指定するオブジェクトの定義(みたいなもの)インスタンス…クラスを基に生成される具体的なデータの集合(”データ”と”処理方法”を持っているので、オブジェクトとなる)

分かりやすさ重視で正確な定義などからは外れています。ご留意下さい

フィールド

メソッド

オブジェクトフィールド

メソッド

オブジェクト

フィールド

メソッド

オブジェクト

フィールド

メソッド

オブジェクトメッセージのやり取り

プログラムに落としこむと…

◆メッセージの内容値の読み取り、書き込みメソッドの実行命令

etc

13年3月12日火曜日

具体例

TextViewクラス

public final void setText

(CharSequence text)

・・・

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

メソッドの形式(アクセス修飾子) (戻り値の型) メソッド名 (引数の型 引数名){    メソッドの内容}

フィールドの形式(アクセス修飾子) (型) フィールド名;

フィールド

メソッド

android:text

Javaの場合

Javaの場合

コードを理解するために(メソッド内の変数)メソッドの中で宣言された変数などは、メソッド内のみ有効→クラスの変数(フィールド)とは区別されるので注意

13年3月12日火曜日

TextViewクラス

public final void setText

(CharSequence text)

・・・

フィールド

メソッド

android:text

インスタンスの作成、関連付け

private TextView mTextNumber; private TextView mTextAho; private TextView mTextRatio;

mTextNumber = (TextView)findViewById(R.id.textView_number);mTextAho = (TextView) findViewById(R.id.textView_aho);mTextRatio = (TextView) findViewById(R.id.textView_ratio);

Javaのフィールド XMLのオブジェクト

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

int型メソッド名キャストint型からTextView型へ

クラス名 インスタンス名;と書くことでインスタンスを

作成する

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

13年3月12日火曜日

Carクラス(設計図)

int number

フィールド、メソッドへのアクセス◆インスタンスのフィールド、メソッドの使用方法

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

Car1(インスタンス)メソッドの形式

Car1.number = 20130212;フィールドの形式

String setText()

int numberString setText()

TextView text1;text1.setText( Car1.setText() );

このコードが書かれているオブジェクトからCar1オブジェクト(インスタンス)に値書き込みのメッセージが渡っている

13年3月12日火曜日

親クラス

クラスの継承◆super, Extends, Implementsとは??

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

コードを理解するために(アクセス修飾子)

public, private, protectedなどはアクセス修飾子という物です。そのデータに対して、のアクセス(読み込み書き込みなど)の制限を行なっている

子クラスA 子クラスB

Java.lang.Object

MethodA()

MethodA() @overrideMethodA(int number)

MethodB() オーバーライド親メソッドの使用

メソッドの新規作成

コードを理解するために(オーバーライド)

親クラス(スーパークラス)から継承したメソッドの内容を、変更して、新しいメソッド内容を作成すること。

親クラスは一つしか持つことができない。それゆえ、クラスは全て樹形図の様に繋がっている

Javaの全ての親クラス

13年3月12日火曜日

コードを実際に読んでみよう(ex:カウントアプリ)

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

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

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

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

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

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

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

クラス

フィールド

メソッド

13年3月12日火曜日

クラスの宣言

§参考:Objective-cでの表現

@interface クラス名:スーパークラス{メンバ変数}メソッド宣言@end

クラスの実装 #import “hoge.h”@implementation 各種実装

@end

hファイル

mファイル

13年3月12日火曜日

文字列 @”文字列”

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

メッセージ式 [オブジェクト名 メソッド名]

cf) オブジェクト名.メソッド名()

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

13年3月12日火曜日