オブジェクト指向とは
•
プログラム部品を組み合わせることでプ ログラム全体を作成する•
プログラムを自動車に例えると・・–
自動車は様々な部品から構成される車体・エンジン・タイヤ・ヘッドライト
–
最終製品は部品の組み合わせ–
それぞれの部品の内部構造を知らなくても、組み合わせ方(使い方)がわかればよい
–
部品単位でアップデートできるオブジェクト指向とクラス
•
プログラムの部品=オブジェクト と考える•
オブジェクトがどのようなものか記述したも のが「クラス(class
)」• Java
によるプログラミング=
class
を定義すること複雑なプログラムは多くの
プログラム部品から構成される
クラスとインスタンス
• クラス
– オブジェクトに共通する属性(情報・機能)を抽象化した もの
• インスタンス
– 具体的な個々のオブジェクト
クラス インスタンス
自動車 私の愛車、そこにある車
犬 私の飼っているポチ、隣の家のクロ
人 私、私の父、私の母
2次元平面上の点 (x=2,y=5)の点、(x=-1,y=3)の点
円 中心(0,0)半径1の円、中心(3,4)半径5の円
演習
日常を見まわして、クラスとインスタンスの関係 で表されるものを挙げてみましょう。
簡単なクラスの宣言とインスタンスの生成
•
例として2
次元の座標(x,y)
を持つ「点」を 扱うためのクラスは、次のように宣言する。class Point { int x;
int y;
}
•
クラスの名前は自由に決められる。今回はPoint
とした。• x
とy
という名前のint
型の変数をクラスの中 に定義した。これをフィールドと呼ぶ。• x
とy
という2
つの値をセットにして扱える。フィールド(Pointクラスがもつ情報)
演習
日常を見まわして、クラスの定義をしてみましょ う。日本語を使ってかまいません。
例:
class 本 { タイトル 著者
出版社 }
class 賃貸ルーム { 広さ
家賃 住所 }
インスタンスの生成
•
インスタンスを生成するにはnew
を使用する。new Point();
• 生成したインスタンス を後で参照するために 変数に(参照を)代入 できる。
Point p = new Point();
クラス名
•
インスタンスが持つ 変数に値を代入でき る。Point p = new Point();
p.x = 10;
p.y = 5;
インスタンス変数へのアクセス
•
インスタンスが持つ変数(クラスのフィールド に定義された変数)のことを「インスタンス変 数」と呼ぶ。• Point
クラスでは変数x
とy
がインスタンス変数。•
インスタンス変数にアクセスするには「インスタンスを代入した変数+ドット+イン スタンス変数名」
とする。
例:
Point p = new Point();
p.x = 10;
(ドットを「の」に置き換えて「pのx」と読むとわかり やすい)
Point クラスの使用例
class Point {
int x; // x座標値 int y; // y座標値 }
class PointInstanceExample {
public static void main(String[] args) { Point p1 = new Point();
p1.x = 10;
p1.y = 5;
Point p2 = new Point();
p2.x = 5;
p2.y = 2;
System.out.println("p1のx座標は" + p1.x);
System.out.println("p1のy座標は" + p1.y);
System.out.println("p2のx座標は" + p2.x);
System.out.println("p2のy座標は" + p2.y);
} }
参照型
• Java
で使用できる変数の型–
基本型(int, double, boolean
など)–
参照型(インスタンスへの参照)•
変数にインスタンスそのものは代入され ない。参照の代入
• Point p = new Point();
としたとき、変数
p
には、Point
クラスの インスタンスの参照が代入される。演習
次のプログラムコードの意味を考えてみましょう。
class Dog {
String name;
}
class Example {
public static void main(String[] args) { Dog dog1 = new Dog();
dog1.name = "Taro";
Dog dog2 = new Dog();
dog2.name = "Pochi";
Dog dog3 = dog2;
System.out.println(dog3.name);
dog3.name = "Jiro";
System.out.println(dog2.name);
} }
参照の例
Point p1 = new Point();
Point p2 = new Point();
Point p3 = p2;
p1.x = 0;
p1.y = 0;
p2.x = 5;
p2.y = 10;
参照の配列
•
基本型の配列と同じように、参照の配列 も作成できる。Point[] points = new Point[5];
points[0] = new Point();
points[1] = new Point();
points[2] = new Point();
points[3] = new Point();
points[4] = new Point();
配列を生成
何も参照しないことを表す null
•
参照型の変数に、何も参照が入っていな い状態をnull
という。Point[] points = new Point[5];
points[0] = new Point();
points[1] = new Point();
points[2] = new Point();