オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
オブジェクト指向プログラミング(4) 静的分析(2)
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとプログラミング (Algorithms and Programming)
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
オブジェクト指向入門.
プログラミング演習3 第2回 GUIの復習.
~手続き指向からオブジェクト指向へ[Ⅱ]~
第11回 アプリケーションの構成 ~CUI自動販売機の完成!~.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
コンパイラの解析 (3) クラスとインスタンスの初期化.
第11週:super/subクラス、継承性、メソッド再定義
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとプログラミング (Algorithms and Programming)
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也

クラスとインスタンス クラスはモノの概念,種類. インスタンスは個々のモノ,個体. public class Main { インスタンスの生成×2 public class Main { public static void main(String[] args) { List l = new List(); l.add(11); l.add(22); List l2 = new List(); l2.add(33); l2.add(44); int v1 = l.get(1); int v2 = l2.get(1); System.out.println("v1 = " + v1); System.out.println("v2 = " + v2); } lとl2はListクラスの 別のインスタンスなので その内容も異なる

クラスとインスタンスの例(1/2) 人(Person)クラスを作成する. public class Person { String name; double height; double weight; double getBMI() { return weight / (height * height); }

クラスとインスタンスの例(2/2) main()メソッド内で Person クラスのインスタンスを2つ生成する. 1つのクラスに対してインスタンスはいくつでも作成できる. インスタンスの生成×2 public static void main(String[] args) {    Person p1 = new Person();    p1.height = 1.7;    p1.weight = 65;    Person p2 = new Person();    p2.height = 1.6;    p2.weight = 55;    double bmi1 = p1.getBMI();    double bmi2 = p2.getBMI();    System.out.println(bmi1);    System.out.println(bmi2); } p1とp2はPersonクラスの 別のインスタンスなので その内容も異なる

よりオブジェクト指向っぽく (セッタ,ゲッタの追加)(1/2) 一般にフィールドの値を設定するメソッドをセッタ,値を取得するメソッドをゲッタと呼ぶ. public class Person { String name; double height; double weight; void setHeight(double h) { height = h; } double getHeight() { return height; double getBMI() { return weight / (height * height);

よりオブジェクト指向っぽく (セッタ,ゲッタの追加)(2/2) main()メソッドも以下のように書き換える. public static void main(String[] args) {    Person p1 = new Person();    p1.setHeight(1.7);    p1.setWeight(65);    Person p2 = new Person();    p2.setHeight(1.6);    p2.setWeight(55);    double bmi1 = p1.getBMI();    double bmi2 = p2.getBMI();    System.out.println(bmi1);    System.out.println(bmi2); }

クラスとインスタンスの他の例(1/2) ウィンドウを表す Jframe クラス(標準クラス)を使ってみよう. public static void main(String[] args) {    JFrame f1 = new JFrame();    f1.setTitle("f1の方です。");    f1.setVisible(true);    JFrame f2 = new JFrame();    f2.setTitle("f2の方です。");    f2.setVisible(true); } JFrame: ウィンドウを表すJavaの標準クラス Jframe.setTitle(Stinrg s): ウィンドウのタイトルを s に設定する Jframe.setVisible(boolean b):ウィンドウの表示/非表示状態を切り替える

クラスとインスタンスの他の例(2/2) いろんなメソッドを呼び出して(メッセージを送って)みよう. public static void main(String[] args) {    JFrame f1 = new JFrame();    f1.setTitle("f1の方です。");    f1.setSize(100, 500);    f1.setLocation(100, 100);    f1.setVisible(true);    JFrame f2 = new JFrame();    f2.setTitle("f2の方です。");    f2.setSize(500, 100);    f2.setLocation(300, 100);    f2.setVisible(true); }

Eclipseのコード補完機能 プログラムを途中まで打ち込んだときに,次の候補を提示してくれる機能. public static void main(String[] args) {    JFrame f1 = new JFrame();    f1.setTitle("f1の方です。");    f1.setSize(100, 500);    f1.setVisible(true);    JFrame f2 = new JFrame();    f2.setTitle("f2の方です。");    f2.setSize(500, 100);    f2.setVisible(true); }

戻り値の受け方 メソッドを呼び出すと戻り値(メッセージの返信)を返してくれる場合がある. public static void main(String[] args) {    JFrame f1 = new JFrame();    f1.setTitle("f1の方です。");    f1.setSize(100, 500);    f1.setVisible(true);    JFrame f2 = new JFrame();    f2.setTitle("f2の方です。");    f2.setSize(500, 100);    f2.setVisible(true);    int x = f2.getWidth();    int y = f2.getHeight();    System.out.println("f2の横幅は" + x +"です。");    System.out.println("f2の高さは" + y +"です。"); } 受け取った 戻り値を 変数に 代入する

より複雑な例 ボタンを作成して追加してみよう. public static void main(String[] args) {    JFrame f1 = new JFrame();    f1.setTitle("ウィンドウテスト");    f1.setSize(100, 500);    f1.setLocation(100, 100);    JButton b = new JButton();    b.setText("PUSH!!");    f1.add(b);    f1.setVisible(true);       : } ボタンbの作成 ボタン b を ウィンドウ f に追加

コンストラクタ(1/2) インスタンスを作成する際に初期化のために呼ばれるメソッドの一種. メソッド名をクラス名と同じにする.戻り値はなし. public class Person { String name; double height; double weight; Person(double h, double w) { height = h; weight = w; } :

コンストラクタ(2/2) 呼び出し側では,インスタンスを生成するときに引数を渡せるようになる. public static void main(String[] args) {    Person p1 = new Person(1.7, 65);    Person p2 = new Person(1.6, 55);    double bmi1 = p1.getBMI();    double bmi2 = p2.getBMI();    System.out.println(bmi1);    System.out.println(bmi2); }

課題提出 課題提出先: http://bit.ly/2A8hCSy 講義時間内に提出すること. 提出後に訂正はできないが,講義時間内なら再提出可能. 学籍番号は半角の数字で.