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

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
復習ー I (General Review I) クラスとオブジェクトの概念 Concepts of class and object クラスの宣言とオブジェクトの生成 Definition of a class and creation of an object コンストラクタとメソッドのオーバーロー.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
アルゴリズムとプログラミング (Algorithms and Programming)
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
第20章 Flyweight ~同じものを共有して無駄をなくす~
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
~手続き指向からオブジェクト指向へ[Ⅱ]~
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
JAVA入門後期⑩ 情報処理試験例題解説.
アルゴリズムとプログラミング (Algorithms and Programming)
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
第11週:super/subクラス、継承性、メソッド再定義
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2005年7月5日
アルゴリズムとデータ構造 2010年6月21日
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト・プログラミング 第8回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
アルゴリズムとデータ構造1 2006年6月23日
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
アルゴリズムとデータ構造1 2009年6月15日
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月17日
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

クラスの宣言 UML におけるクラス 図 猫 尾の長さ 体重 ひげの本数 鳴く () 食べる () 歩く () 属性 (attribute) 操作 (operation) Java におけるクラスの宣言 class クラス名 { } class クラス名 { } フィールド の宣言 ..... ; メソッド の宣言 ..... ; クラス 名

猫 (Cat) クラスの宣言 猫 (Cat) 尾の長さ (length) : double 体重 (weight) : double ひげの本数 (whisker):int クラス名を決める フィールド名とその型、可視性を決める メソッドを定義する(やり方は後述) クラス名、フィールド名は識別子なので 命名規則は変数と同じ

識別子の命名規則 使える文字は半角文字の英字・数字・アンダースコア 「 _ 」に限定(例外は多いが避けた方が無難) 半角英字の大文字・小文字は区別される 数字で始まる識別子は認めない キーワード (keyword) と呼ばれる Java の予約語と、 true ・ false ・ null の3単語は使用できない。(他の語句と組み 合わせれば可) 長さに制限はない 変数名,クラス名など

Java における可視性 猫 (Cat) + 尾の長さ (length) : double # 体重 (weight) : double - ひげの本数 (whisker):int UML では3種類だが Java では4種類 修飾子アクセス可能な範囲 指定無し 同じパッケージに属するクラス のみ private 同一クラス内のみ protected 同一クラスおよびサブクラスの み public 全てのクラスからアクセス可能

Cat クラスの宣言 class Cat { public double length; protected double weight; private int whisker; } class Cat { public double length; protected double weight; private int whisker; } 猫 (Cat) + 尾の長さ (length) : double # 体重 (weight) : double - ひげの本数 (whisker):int クラス図 Java におけるクラスの宣言文 (とりあえずフィールドのみの 例)

Box クラスの宣言 Box -id_number: long -width : double #depth : double +height:double クラス図 class Box { } class Box { } クラス宣言文

Box クラスの宣言 Box -id_number: long -width : double #depth : double +height:double クラス図 class Box { private long id_number; private double width; protected double depth; public double height; } class Box { private long id_number; private double width; protected double depth; public double height; } クラス宣言文

インスタンスの生成 まず、インスタンスを格納する変数を定義 する. 変数を定義するには、変数名と型が必要 変数名:識別子の命名規則に従って決める 型:クラス名がそのまま型になる Cat クラスのインスタンスを格納するための変数 p を 定義 Cat p; (まだ実際のインスタンスは存在しない) オブジェクト参照型変数

インスタンスの生成 (II) new キーワード p = new Cat(); まず、 Cat クラスのインスタンスを格納す るために必要なメモリ領域を新たに確保 する (new) 。 確保したメモリ領域に、初期値を代入す る そのメモリ先頭番地を変数 p に格納する 変数 p にはインスタンスの中身は格納され ておらず、その先頭番地のみが格納され ている プログラマは、変数 p を通してインスタン スの中身を参照したり変更したりする p 012 番地 変数の中に先頭番地が 格納される p Java VM が内部でやっていること 標識が立っているようなもの これで新たにインスタンスが 生成された! メモリ領域を確保 データ 012 番地 データ

Cat p; p = new Cat(); Cat p = new Cat(); 変数の宣言と代入は1行でも書ける new キーワードの使い方

フィールドの値を参照する書式 オブジェクト参照型変数. フィールド名 ピリオド 実際に参照できるかどうかは アクセス制限に依存する p.length 書式 例)

フィールドへのアクセス(例) class Cat { public double length; protected double weight; private int whisker; } class Cat { public double length; protected double weight; private int whisker; } weight フィールドに 値 を代入する p.weight= ; ピリオドの後にフィールド名を指定する length フィールドの値を表示 System.out.println( p.length ) ;

メソッドの定義と利用 クラス図 猫 尾の長さ 体重 ひげの本数 鳴く () 食べる () 歩く () 属性 (attribute) 操作 (operation) Java におけるクラスの宣言 class クラス名 { } class クラス名 { } フィールド の宣言 ..... ; メソッド の宣言 ..... ; クラス 名

メソッドの定義 メソッドは引数と、戻り値を持つ 型は厳しくチェックされる 複数の戻り値は持てない 書式: 戻り値の型 メソッド名(型 引数, 型 引 数,... ) { メソッドの処理の記述 return 戻り値 ; } 戻り値の型 メソッド名(型 引数, 型 引 数,... ) { メソッドの処理の記述 return 戻り値 ; } C 言語の「関数」と類似だが、型のチェックはずっと厳しい

int addValue ( int a, int b ) { return a+b ; } int addValue ( int a, int b ) { return a+b ; } 2 つの引数を受け取ってその和 を戻り値として返すメソッド 戻り値 仮引数 必ずしも ( ) で囲う必要はない 戻り値の 型

戻り値が不要の場合 戻り値の型を void と記述する return 文は省略可 void printValue ( int a, int b ) { System.out.println( "a=" + a ); System.out.println( "b=" + b ); } void printValue ( int a, int b ) { System.out.println( "a=" + a ); System.out.println( "b=" + b ); }

引数も不要の場合 引数の記述は省略可 void printHello () { System.out.println( "Hello!" ); } void printHello () { System.out.println( "Hello!" ); }

class Cat { public double weight; private int whisker; void printField() { System.out.println(" 体重は "+weight+"g"); System.out.println(" ひげは "+whisker+" 本 "); } void setValue(double w, int n ) { weight = w; whisker = n ; } int getWeightKg(){ return (weight * ) ; } class Cat { public double weight; private int whisker; void printField() { System.out.println(" 体重は "+weight+"g"); System.out.println(" ひげは "+whisker+" 本 "); } void setValue(double w, int n ) { weight = w; whisker = n ; } int getWeightKg(){ return (weight * ) ; } 例) フィール ド メソッド

this キーワード あるクラス宣言の中で使用され、そのク ラスから生成されたオブジェクト自身を 指す this.weight this.whisker などが厳密な書き方 だが普通は省略される

class Cat { public double weight; private int whisker; void printField() { System.out.println(" 体重は "+weight+"g"); System.out.println(" ひげは "+whisker+" 本 "); } void setValue(double w, int n ) { weight = w; whisker = n ; } int getWeightKg(){ return (weight * ) ; } class Cat { public double weight; private int whisker; void printField() { System.out.println(" 体重は "+weight+"g"); System.out.println(" ひげは "+whisker+" 本 "); } void setValue(double w, int n ) { weight = w; whisker = n ; } int getWeightKg(){ return (weight * ) ; } 例) 厳密には this.weight だが通常は this を省略 同一クラス内なら private でも参照可

class SampleCat { public static void main(String[] args) { Cat p = new Cat(); p.setValue( , 8 ); p.printField(); int w_kg = p.getWeightKg(); System.out.println(" 体重は "+ w_kg +"kg"); } class SampleCat { public static void main(String[] args) { Cat p = new Cat(); p.setValue( , 8 ); p.printField(); int w_kg = p.getWeightKg(); System.out.println(" 体重は "+ w_kg +"kg"); } メソッドの呼び出し方 先の Cat クラス宣言文の後に追加して SampleCat.java とする 引数がある場合 戻り値がある場合

メソッドの呼び出し方 オブジェクト参照型変数. メソッド名 ( 引数, 引数,...) ピリオド 実際に呼び出せるかどうかは アクセス制限に依存する

まとめ クラスの宣言  アクセス修飾子  フィールドの定義  メソッドの定義 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの使用例 クラスの宣言  アクセス修飾子  フィールドの定義  メソッドの定義 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの使用例