--/--/-- (--) スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 |


2011/05/30 (Mon) JAVA 10日目 復習用(._.)φ

prog10.jpg

実行結果

車を作成しました。
車のナンバーは0です。
車のガソリン量は0.0です。
車を作成しました。 (ここがthis()で呼び出した文)
ナンバー4545、ガソリン量69.1の車を作成。
車のナンバーは4545です。
車のガソリン量は69.1です。

◆publicメンバ
◆カプセル化
◆メソッドのオーバーロード
◆コンストラクタ
◆コンストラクタの機能
◆コンストラクタのオーバーロード
◆別のコンストラクタを呼び出す
◆コンストラクタを省略
◆コンストラクタに修飾子をつける

扱いやすいクラスを作るために



◆抽象化とカプセル化

◇抽象化

抽象化とはさまざまな性質の一部分に注目してグループ化(要約)すること。

   抽象化  抽象化
此ぬし → 男性 → 人間
太郎  ←    ←
   具体化  具体化

太郎クラスに「太郎」
次郎クラスに「次郎」

→抽象化すると→

人間クラスに箱(変数)を作る。

◇カプセル化

カプセル薬は中身を知らなくても効能は知っている。

Javaのカプセル化も情報と処理を隠し扱いやすくする。
さらに抽象化することで分かりやすくする。

身近なところでのカプセル化の例:パソコンの起動

電源を入れる→BIOSを読み込む→OSを読み込む→起動

BIOSの読み込みとOSの読み込みを見えなくする。
→それらの知識がなくても扱いやすいようにする。


クラスの機能(作業の効率化のための仕組み)


◆privateメンバ(メンバへのアクセスを制限する)

class Car
{
private int num;
privete double gas;
}

このように記述するとクラス外からアクセスすることが出来なくなる。

◆publicメンバ

public int num;

クラスの外からアクセスすることが出来る。

※publicを省略すると異なるフォルダ間の参照が出来なくなる。
※privateやpublicを修飾子と呼ぶ。

◆カプセル化

クラスを設計する人がメンバに適切なprivateとpublicの記述をしておけば、あとからほかの人間がそのクラスを利用した場合に誤りの起こりにくいプログラムが出来る。保護したいメンバにprivateを指定してアクセスできなくすることを「カプセル化」という。

フィールド→private
メソッド→public

と指定するのが一般的。

◆メソッドのオーバーロード

メソッドの場合変数とは異なり同じ名前のメソッドを複数作ることが出来る。
ただし、各メソッドの引数の型・個数(並び)が異なるようにしなければならない。

setCar(int n)
setCar(double g)
setCar(int n, double g)
↑ 自動的に振り分けられる
setCar(引数(,引数))

※多態性(ポリモーフィズム)という。

◆コンストラクタ

クラスの中にはフィールドとメソッドのほかにコンストラクタを書くことが出来る。
コンストラクタの名前は必ずクラスの名前と同じにする。
コンストラクタは戻り値を指定することが出来ない

修飾子 クラス名(引数リスト)
{
文;
・・・
}

public Car()
{
num = 0;
gas = 0.0;
System.out.println("車を作成しました");
}

※戻り値の指定は出来ない。

◆コンストラクタの機能

クラスのオブジェクトが作成されたとき、
定義したコンストラクタ内の処理が自動的に行われる。

オブジェクトのメンバに自動的に初期値を設定する場合などに使う。

オブジェクトを作成(↓)したときに処理が実行される。
Car car1 = new Car();


◆コンストラクタのオーバーロード

コンストラクタも引数の数や型が異なっていればオーバーロードできる。

◆別のコンストラクタを呼び出す

this();

を使えばコンストラクタを別のコンストラクタ内で呼び出すことが出来る。

引数2つのコンストラクタは、

this(xxxx,yyyy)

で呼び出すことが出来る。

※this()は必ずコンストラクタ内の先頭につける

◆コンストラクタを省略

引数のないコンストラクタが自動的に定義される。

「デフォルトコンストラクタ」という。

◆コンストラクタに修飾子をつける

コンストラクタにもフィールドやメソッド同様修飾子(public、private)をつけることが出来る。



オマケ
前日分内容の応用プログラム

//三角形の面積を求める
//(キーボードから高さと底辺を入力する)

import java.io.*;

class Triangle
{
//フィールド
double takasa;
double teihen;

//メソッド(高さを設定)
void setTakasa(double t){
takasa = t;
}

//メソッド(底辺を設定)
void setTeihen(double t2){
teihen = t2;
}

//メソッド(面積を取得)
double getMenseki(){
return (takasa*teihen/2);
}
}

class SampleTri
{
public static void main(String[] args) throws IOException
{
System.out.println("高さと底辺を入力してください。");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));

String input1 = br.readLine();
String input2 = br.readLine();
double inputtaka = Double.parseDouble(input1);
double inputtei = Double.parseDouble(input2);

Triangle sankaku = new Triangle();

sankaku.setTakasa(inputtaka);
sankaku.setTeihen(inputtei);

double menseki = sankaku.getMenseki();

System.out.println("面積は"+menseki+"です。");
}
}

プログラミング | trackback(0) | comment(0) |


<<5年後の私 | TOP | みなとみらい>>

comment











管理人のみ閲覧OK


trackback

trackback_url
http://kononushi.blog46.fc2.com/tb.php/500-8160bea0

| TOP |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。