プログラミング入門1

Similar documents
プログラミング入門1

プログラミング入門1

プログラミング入門1

プログラミング入門1

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

GEC-Java

PowerPoint プレゼンテーション

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

PowerPoint プレゼンテーション

Prog2_9th

基本情報STEP UP演習Java対策

PowerPoint プレゼンテーション

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Microsoft PowerPoint ppt

Microsoft PowerPoint - prog03.ppt

Javaプログラムの実行手順

JAVA入門

JavaプログラミングⅠ

Microsoft PowerPoint - prog04.ppt

Prog1_6th

PowerPoint プレゼンテーション

Microsoft PowerPoint - chap10_OOP.ppt

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

プログラミング入門1

JavaプログラミングⅠ

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

レコードとオブジェクト

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

JavaプログラミングⅠ

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

プログラミング基礎I(再)

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

Java言語 第1回

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

Microsoft PowerPoint - OOP.pptx

Prog2_12th

JavaプログラミングⅠ

Prog1_15th

ToDo: 今回のタイトル

Make the Future Java FY13 PPT Template

プログラミング入門1

Microsoft Word - problem3.doc

IT プロジェクト

JavaプログラミングⅠ

Microsoft PowerPoint - lec06 [互換モード]

デザインパターン第一章「生成《

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

Java知識テスト問題

GEC-Java

PowerPoint プレゼンテーション

実行時のメモリ構造\(2\) Javaスタック内のフレーム間動作

PowerPoint プレゼンテーション

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Prog2_9th

2

プログラミング入門1

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

PowerPoint プレゼンテーション

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

データ構造とアルゴリズム論

ガイダンス

第1章 ビジュアルプログラミング入門

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

DVIOUT-exer

メソッドのまとめ

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

ガイダンス

JavaプログラミングⅠ

アスペクトの相互作用を解消するアスペクトの提案

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

プログラミング入門1

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

PowerPoint Presentation

Prog1_10th

JavaプログラミングⅠ

Microsoft PowerPoint - OOP.pptx

Microsoft Word - C言語研修 C++編 3.doc

Microsoft Word - Java3.DOC

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - prog09.ppt

ガイダンス

Microsoft PowerPoint - prog09.ppt

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Java講座

Prog1_2nd

GEC-Java

Microsoft PowerPoint ppt

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

レコードとオブジェクト

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

Java言語 第1回

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

オブジェクト指向プログラミング・同演習 5月21日演習課題

Microsoft PowerPoint - prog08.ppt

教材ドットコムオリジナル教材 0から始めるiアプリ (4) 0 から始める i アプリ (4) i アプリをプログラミングする際に必要なのは Java というプログラミング言語の基礎知識です 独自の命令や駆使してプログラミングをするわけですが Java というベースになっている言語を知らないでプログ

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

文字列操作と正規表現

Transcription:

プログラミング入門 2 第 6 回継承 コンストラクタ 1

講義資料について 新しい言語の機能 ( オブジェクト指向の機構 ) については 随時参考書などを参照するのがよい 過去の資料も参考になる http://java2005.cis.k.hosei.ac.jp/ 今回の範囲は 上記ページの 17 回に詳しい 2

テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承 メソッドの継承 メソッドのオーバーライド Super 呼び出し コンストラクタ ( 概要 ) 3

テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承 メソッドの継承 メソッドのオーバーライド Super 呼び出し コンストラクタ ( 概要 ) 4

継承の基本 ( 動機 (1)) クラス MyCircle x: y: diameter: x: 50 y: 50 diameter: 100 クラス ColoredCircle_Pre x: y: diameter: red: green: blue: x: 50 y: 50 diameter: 100 red: 255 green: 0 blue: 255 保持するデータのフォーマットが少しだけ異なるようなインスタンスを作成したい 5

継承の基本 ( 動機 (2)) public class MyCircle { int x = 50; int y = 50; int diameter = 100; クラスMyCircle x: y: diameter: クラス ColoredCircle_Pre public class ColoredCircle_Pre { int x = 50; int y = 50; int diameter = 100; int red = 255; int green = 0; int blue = 255; x: y: diameter: red: green: blue: 素朴な方法では 同じ内容をもう一度 新たに作成するクラスで定義する必要がある ( このやり方は望ましくない ) 6

継承の基本 ( 考え方 (1)) クラス MyCircle x: y: diameter: ColoredCircle cc = new ColoredCircle() x: 50 y: 50 クラスColoredCircle red: green: blue: diameter: 100 red: 255 green: 0 blue: 255 継承機構を用いると ゼロから作り直すのではなく もとのインスタンスを拡張 (extends) する形で 異なる部分 ( 差分 ) のみを定義するだけでよい 7

継承の基本 ( 考え方 (2)) 継承機構を用いると ゼロから作り直すのではなく もとのインスタンスを拡張 (extends) する形で 異なる部分 ( 差分 ) のみを定義するだけでよい public class MyCircle { int x = 50; int y = 50; int diameter = 100; クラスMyCircle x: y: diameter: ColoredCircle のインスタンスが保持するインスタンス変数は 6 種類 x: 50 y: 50 差分のみを記述する public class ColoredCircle extends MyCircle { int red = 255; int green = 0; int blue = 255; クラス ColoredCircle red: green: blue: diameter: 100 red: 255 green: 0 blue: 255 ColoredCircle ではインスタンス変数 red, green, blue しか 定義されていないように見えるが 実際は MyCircle クラスのインスタンス変数を引き継ぐ 8

インスタンス変数の継承 ( 定義の方法 ) public class 新しいクラス名 extends もとにするクラス { 新たに加わるインスタンス変数の宣言.. クラスMyCircle x: y: diameter: クラスColoredCircle public class ColoredCircle extends MyCircle { int red = 255; int green = 0; int blue = 255; スーパークラス ( 親クラス ) = もとにするクラス red: green: blue: サブクラス ( 子クラス ) = 新しいクラス 9

インスタンス変数へのアクセス ( 例 ) public class MyCircle { int x = 50; int y = 50; int diameter = 100; public class ColoredCircle extends MyCircle { int red = 255; int green = 0; int blue = 0; インスタンス cc ColoredCircle cc = new ColoredCircle(); System.out.println(cc.red); System.out.println(cc.x); 出力 255 50 cc のインスタンス変数 x は ColoredCircle クラス内では直接定義はされていないが スーパークラスである MyCircle クラス内で定義されている x: 50 y: 50 diameter: 100 red: 255 green: 0 blue: 255 10

メソッド群の継承 ( 例題 ) クラス MyCircle x: y: diameter: draw() { public class MyCircle { int x = 50; int y = 50; int diameter = 100; x: 50 y: 50 diameter: 100 draw() { draw メソッドの実行例 void draw() { Canvas.drawOval(x, y, diameter, diameter); 11

メソッド群の継承 ( 考え方 ) クラス MyCircle x: y: diameter: draw() { クラス ColoredCircle red: green: blue: fill() { 継承を利用することで スーパークラスのインスタンス変数をサブクラスに引き継がすことができた これと同様にインスタンスメソッドもサブクラスに引き継がすことができる x: 50 y: 50 diameter: 100 draw() { red: 255 green: 0 blue: 255 fill() { ColoredCircle クラスのインスタンスは MyCircle クラスのインスタンス変数 x, y, diameter とメソッド draw を引き継ぐ 12

メソッド群の継承 ( 定義の例 ) public class 新しいクラス名 extends もとにするクラス { 新たに加わるインスタンス変数 あるいは メソッドの定義.. public class ColoredCircle extends MyCircle { int red = 255; int green = 0; int blue = 255 void fill() { Canvas.setColor(red, green, blue); Canvas.fillOval(x, y, diameter, diameter); 13

クラス MyCircle x: y: diameter: draw() { クラス ColoredCircle red: green: blue: fill() { メソッドの起動 ColoredCircle cc = new ColoredCircle(); Canvas.show() cc.draw(); cc.fill(); インスタンス cc x: 50 y: 50 diameter: 100 draw() { red: 255 green: 0 blue: 255 fill() { インスタンスメソッドdraw は ColoredCircleクラス内には定義されていないが スーパークラスである MyCircleクラス内で定義されている 14

テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承 メソッドの継承 メソッドのオーバーライド Super 呼び出し コンストラクタ ( 概要 ) 15

public class MyCircle { int x = 50; int y = 50; int diameter = 100; メソッドのオーバーライド void draw() { Canvas.drawOval(x, y, diameter, diameter); public class ColoredCircle extends MyCircle { int red = 255; int green = 0; int blue = 255; void fill() { Canvas.setColor(red, green, blue); Canvas.fillOval(x, y, diameter, diameter, diameter); void draw() { Canvas.setColor(red, green, blue); Canvas.drawOval(x, y,diameter, diameter, diameter); スーパークラスで定義されているものと同じ名前 引数の数 型を持つメソッドを サブクラスで定義することを スーパークラスのメソッドを オーバーライドする と言う これを用いることで スーパークラスで実装されている機能を 新たにサブクラスで実装し直すことができる MyCircle クラスの draw メソッドをオーバーライドしている このメソッドは 色付きで円をキャンバスで表示する 16

オーバーライドしたメソッドの起動 x: 50 y: 50 diameter: 100 draw() { drawoval(x, y, diameter, diameter) red: green: blue: fill() { draw() { setcolor(red, green, blue); drawoval(x, y, diameter, diameter); ColoredCircle cc = new ColoredCircle(); cc.draw(); ColoredCircle の draw インスタンスメソッドが スーパークラスで定義されている draw メソッドに代わって起動される ColoredCircle クラスの draw メソッドでは 色を指定できるよう実装し直されている 17

スーパークラスで定義されたメソッドを呼ぶ Super 呼び出し (Super Call) x: 50 y: 50 diameter: 100 draw() { drawcircle(x, y, diameter, diameter) red: green: blue: fill() { draw() { setcolor(red, geen, blue); super.draw(); void draw() { Canvas.setColor(red, green, blue); Canvas.drawOval(x, y,diameter, diameter); void draw() { Canvas.setColor(red, green, blue); super.draw(); オーバーライドされたメソッドは 消える訳ではなく 隠されているだけである インスタンスメソッド内で super. メソッド名 ( 引数 ) の形で 起動することができる 18

テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承 メソッドの継承 メソッドのオーバーライド Super 呼び出し コンストラクタ ( 概要 ) 19

コンストラクタ これまで インスタンスを生成し初期値を与えるまでの一連の流れを呼び出す側のクラスのメソッドによって単純化してきた MyCircle c = Ex00.create(50, 50, 100); 以下では コンストラクタ の概要を説明する 一番単純なコンストラクタは 既に下記の形で利用してきた MyCircle c = new MyCircle(); Java 言語におけるコンストラクタは インスタンスの生成時に初期値を指定するなどの処理を行わせるための記述である MyCircle c = new MyCircle(50, 50, 100); 初期値 x=50, y=50, diameter=100 で MyCircle インスタンスを生成 20

コンストラクタ ( 定義と呼び出し ) public class MyCircle { int x; int y; int diameter; public class Ex00{ MyCircle create(int x, int y, int d) { MyCircle newobj = new MyCircle(); newobj.x = x; newobj.y = y; newobj.diameter = d; return newobj; メソッド ( ファクトリメソッド ) によるインスタンス生成と初期値の指定 MyCircle c = Ex00.create(50, 50, 100) コンストラクタを利用して初期値を指定 public class MyCircle { public int x; public int y; public int diameter; MyCircle(int x, int y, int d) { this.x = x; this.y = y; this.diameter = d; 実際には 1 行目 (this.x = x) の直前にインスタンスが生成されている なお return 文でインスタンスを返す必要はない MyCircle c = new MyCircle(50, 50, 100) クラス名 ( 引数の宣言 ) { インスタンスを生成した直後におこなう処理 ( 通常 初期値の代入などの処理をここに記述する ) 21

コンストラクタ (super 呼び出し ) サブクラスのコンストラクタから スーパークラスのコンストラクタを呼び出すことができる public class MyCircle { int x; int y; int diameter; MyCircle(int x, int y, int d) { this.x = x; this.y = y; this.diameter = d; public class ColoredCircle extends MyCircle { int red; int green; int blue; public ColoredCircle(int x, int y, int d, int red, int green, int blue){ super(x, y, d); this.red = red; this.green = green; this.blue = glue; super( 実引数 ) の形 コンストラクタから 他のコンストラクタを呼び出す際には 先頭で呼び出しを行わなければならない なお 同じクラスでオーバーロード ( 引数の数や型などが違う ) されているコンストラクタは this( 実引数 ) の形で呼ぶことができる ( 詳細は省略 ) ColoredCircle cc = new ColoredCircle(50, 50, 100, 255, 0, 255) この super 呼び出しでは ColoredCircle クラスのスーパークラスの MyCircle クラスのコンストラクタを呼び出す 22

デフォルトコンストラクタ ( 概要のみ ) デフォルトコンストラクタ クラス定義に コンストラクタが定義されていない場合は 自動的にクラス名 () { の形のコンストラクタが自動的に加えられる これをデフォルトコンストラクタと言う 一方で 明示的にコンストラクタを定義した場合は デフォルトコンストラクタは加えられない public class MyCircle { int x; int y; int diameter; MyCircle(int x, int y, int d) { this.x = x; this.y = y; this.diameter = d; 左の例では コンストラクタが明示的に定義されているので デフォルトコンストラクタ MyCircle() { は追加されない したがって MyCircle c = new MyCircle(); の形でインスタンスを生成する場合は 明示的にコンストラクタを定義する必要がある 23

まとめ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承 メソッドの継承 メソッドのオーバーライド Super 呼び出し コンストラクタ ( 概要 ) 24

本日の例題と問題 MyCircle, ColoredCircle を用いた継承 コンストラクタの演習 Ex11, Ex12, Ex13, Ex14, Ex15, Ex16, Ex17 BorderedCircle を用いた課題 Q11, Q12, Q13, Q14 Book を用いた継承とオーバーライド Ex21, Ex22, Q21* (Ex: 例題, Q: 問題, * は少し手間のかかる問題 ) 各自に適した順番で解けばよいが 上記の順番が自然な流れとなるよう構成されている 25

例題集 26

パッケージ j2.lesson06 を作成する パッケージやクラスの作成, 実行の仕方の説明は省略する 作り方を忘れた場合は過去のスライドや http://java2010.cis.k.hosei.ac.jp/01/material-01/ を参考にせよ 27

例題 11 問題 : 次のクラス MyCircle を作成し動作を確認せよ インスタンス変数 変数の型と名前初期値説明 Int x 無し X 座標 int y 無し Y 座標 Int diameter 無し円の直径 インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 void draw() キャンバスに円を描画する void showfields(int row) MyCircleインスタンスの内容をSpreadsheetの row 行表示する 実行例参考 void header() Spreadsheet のヘッダを表示する Ex11DrawCircle のメソッド 返り値の型メソッド名 ( 引数 ) 機能 MyCircle create(int x, int y, int d) MyCircle クラスのインスタンスを作成し 各インスタンス変数にそれぞれ引数の値を代入し そのインスタンスを返す ( クラス名 : MyCircle) 動作確認クラス :Ex11DrawMyCircle 28

例題 11(MyCircle) MyCircle x: y: diameter: draw() header() showfields() 29

例題 11(Ex11DrawMyCircle) create(50,50,100) MyCircle c x:50 y:50 d:100 draw() showfields() header() c.draw() c.header() c.showfields() 30

例題 12 問題 : 次の ColoredCircle クラスを作成せよ スーパークラス : MyCircle インスタンス変数 変数の型と名前初期値説明 int red 無し色の赤成分 int blue 無し色の緑成分 int green 無し色の青成分 Ex12DrawCircle のメソッド 返り値の型メソッド名 ( 引数 ) 機能 ColoredCircle create(int x, int y, int d, int red, int green, int blue) ColoredCircle クラスのインスタンスを作成し 各インスタンス変数にそれぞれ引数の値を代入し そのインスタンスを返す ( クラス名 :ColoredCircle) 動作確認クラス :Ex12DrawColoredCircle 31

例題 12 (ColoredCircle) ColoredCircle red: green: blue: fill() header() showfields() draw() red: green: blue: 32

例題 12 (Ex12DrawColoredCircle) 33

例題 13 問題 : 次の ColoredCircle インスタンスメソッド fill を作成し動作を確認せよ ColoredCircle インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 void fill() キャンバスに円を描画する 但し 円の内部がインスタンス変数 colorに対する色で塗り潰されて いるものとする 既存の ColoredCircle クラスを編集する 動作確認クラス :Ex13DrawColoredCircle 34

例題 13 (ColoredCircle) 35

例題 13(Ex13DrawColoredCircle) cc.fill( ) c.draw( ) 36

例題 14 問題 : ColoredCircle インスタンスメソッド showfields header を作成し動作を確認せよ ( メソッドのオーバーライド ) 新規 ColoredCircle インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 void showfields(int row) ColoredCircleインスタンスの文字列表現を Spreadsheet の row 行に表示する void header() Spreadsheetのヘッダを表示する red, green, blue まで表示する点が追加される 既存 ColoredCircle インスタンスメソッド void fill() 既存の ColredCircle クラスを編集する 動作確認クラス :Ex14DrawColoredCircle 37

例題 14 (ColoredCircle) 38

例題 14(Ex1DrawColoredCircle) 39

例題 15 問題 : ColoredCircle インスタンスメソッド draw を作成し動作を確認せよ ( メソッドのオーバーライド ) 新規 ColoredCircle インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 void draw() キャンバスに円を描画する 既存 ColoredCircle インスタンスメソッド void fill() void showfields(int row) void header() 既存の ColoredCircle クラスを編集する 動作確認クラス :Ex15DrawColoredCircle 40

例題 15 (ColoredCircle) Ex14 と同じ 緑三角はオーバーライドしていることを示す 41

例題 15(Ex15DrawColoredCircle) 42

例題 16 問題 : ColoredCircle インスタンスメソッド showfields, header, draw を super を用いたメソッド呼び出しを用いて 作成しなおし動作を確認せよ 新規 ColoredCircle インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 void draw() super を用いて作成し直す void showfields(int row) super を用いて作成し直す void header() super を用いて作成し直す 既存 ColoredCircle インスタンスメソッド void fill() 既存の ColoredCircle クラスを編集する 動作確認クラス :Ex16DrawColoredCircle 43

例題 16(ColoredCircle) 44

例題 16 (Ex16DrawColoredCircle) 45

例題 17 問題 : MyCircle および ColoredCircle のコンストラクタを作成し 動作を確認せよ ( 既存の create メソッドと同等の処理を行う ) コンストラクタ (MyCircle) MyCircle(int x, int y, int d) コンストラクタ (ColoredCircle) ColoredCircle(int x, int y, int d, int r, int g, int b) 既存の MyCircle クラスを編集する 既存の ColoredCircle クラスを編集する 動作確認クラス :Ex17DrawColoredCircle 46

例題 17(MyCircle) create メソッドと置き換える Ex11 と同じ 47

例題 17(ColoredCircle) create メソッドと置き換える Ex13 Ex16 と同じ 48

例題 17(Ex17DrawColoredCircle) create メソッドの呼び出しをコンストラクタの呼び出しに変更 49

例題 21 問題 :Book クラスを作成し 動作を確認せよ インスタンス変数 変数の型と名前初期値説明 String title 無し本のタイトル Int pages 無し本のページ数 コンストラクタ Book(String title, int pages) タイトルとページ数を保存する インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 String gettitle() 本のタイトルを返す int getpages() 本のページ数を返す void showfields(int row) 本のタイトルとページをSpreadsheet の row 行に表示する void header() Spreadsheet にヘッダ行を表示する ( クラス名 : Book) 動作確認クラス :Ex21BookTest 50

例題 21 (Book) クラス Book title: pages: gettitle() getpages() showfields() header() 51

例題 21 (Ex21BookTest) クラス Book title: pages: new Book("Programing in Java ", 300); インスタンス b1 title;programin in Java pages:300 b1.tshowfields() 52

例題 22 問題 : Dictionary クラスを作成し動作を確認せよ スーパークラス : クラスBook インスタンス変数 変数の型と名前 初期値 説明 int definitions 無し 本の収録語数 コンストラクタ Dictionary(String title, int pages, int definitions) タイトルとページ数を保存する インスタンスメソッド 返り値の型メソッド名 ( 引数 ) 機能 int getdefinitions() 本の収録語数を返す void showfields(int row) 辞書のタイトル ページ数 収録語数を Spreadsheet の row 行に表示する void header() Spreadsheet のヘッダを表示する ( クラス名 : Dictionary) 動作確認クラス :Ex21BookTest 53

例題 22 (Dictionary) クラス Dictionary (extends Book) title: pages: gettitle() getpages() showfields() header() definitions: getdefinitions() showfields() header() オーバーライド 54

例題 22 (Ex21BookTest) クラス Dictionary title: pages: definitions: Dictionary d1 = new Dictionary(" 国語辞典 ", 500, 10000); インスタンス d1 d1.showfields() title: 国語辞典 pages:500 definitions:10000 55