Microsoft PowerPoint - OOP.pptx

Similar documents
ガイダンス

ガイダンス

<4D F736F F F696E74202D AC C8899E D834F E >

ガイダンス

ガイダンス

ガイダンス

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

Microsoft PowerPoint ppt

PowerPoint Presentation

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

PowerPoint プレゼンテーション

GEC-Java

GUIプログラムⅣ

Microsoft PowerPoint - OOP.pptx

Prog1_12th

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

Prog1_12th

Prog2_11th

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

ÿþ˜u#u·0¹0Æ0à0

Java言語 第1回

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

PowerPoint プレゼンテーション

Prog2_9th

< F2D89BA8EE882C E6A7464>

Microsoft PowerPoint - chap10_OOP.ppt

Java言語 第1回

PowerPoint プレゼンテーション

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

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

PowerPoint プレゼンテーション

text_13.dvi

Microsoft PowerPoint ppt

Java言語 第1回

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle

< F2D A838B838D96402E6A7464>

次の演習課題(1),(2)のプログラムを完成させよ

Java言語 第1回

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

< F2D E E6A7464>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

プログラミング入門1

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

問1

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

基本情報STEP UP演習Java対策

Microsoft PowerPoint ppt

< F2D F B834E2E6A7464>

JavaプログラミングⅠ

JavaプログラミングⅠ

< F2D834F838C A815B A CC>

Javaプログラムの実行手順

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

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

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

JAVA とテンプレート

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

Java演習(2) -- 簡単なプログラム --

PowerPoint プレゼンテーション

Prog2_12th

< F2D B825082CC96E291E82E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

ラベルを管理するクラス Label ラベルはクラス Label により管理され 各種設定を行うメソッドが準備されています ラベルの生成 new Label("1. 通常のラベルです "); ラベルのサイズ setprefsize(200,100); ラベル文字が 1. 通常のラベルです で横 200

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

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

HCI プログラミング 5 回目ウィンドウに画像を表示してみよう 今日の講義で学ぶ内容 画像の表示 画像のエフェクト 画像のビューポート指定 画像の表示 1 画像を表示してみましょう 画像の表示はクラス ImageView により管理されます ソースファイル名 :Sample5_1.java //

< F2D92DE82E8914B82CC977088D32E6A7464>

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

JavaプログラミングⅠ

JAVA入門

Microsoft PowerPoint - prog12.ppt

Microsoft PowerPoint - prog11.ppt

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

< F2D825282CC947B909482CC A815B83682E6A>

< F2D A839382CC906A2E6A7464>

Java 2 - Lesson01

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

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

LMNtal LMNtal LMNtal JAVA JAVA JAVA LMNtal LMNtal LMNtal

PowerPoint プレゼンテーション

r3.dvi

2

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

JavaプログラミングⅠ

< F2D82518CC282CC D2E6A7464>

text_08.dvi

< F2D8EA CE909482CC92EA82852E6A7464>

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

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

Microsoft Word - Android_SQLite講座_画面800×1280

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

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

Microsoft Word - keisankigairon.ch doc

IT プロジェクト

Microsoft PowerPoint - prog11.ppt

Transcription:

第 5 回 第 3 章継承 91 継承 ( インヘリタンス ): ウインドウシステムを例に説明 図 3.1: ウインドウの中にラベル, ボタン, リストの部品 各部品の属性と操作共通の属性と操作 ウインドウ内の左上を原点として (x, y) で場所指定 : 属性 (width, height) でサイズ指定 : 属性 識別のための名前 (name): 属性 置く位置の指定 (setlocation, setsize): 操作 再描画処理 (repaint): 操作 名前の設定 (setname, getname): 操作ラベルの属性と操作 表示する文字列 (text): 属性 text の設定 (settext, gettext): 操作ボタンの属性と操作 ボタンの上に表示する文字列 (label): 属性 label の設定 (setlabel, getlabel): 操作ボタンの属性と操作 表示する項目 (items): 属性 項目を得る (getitems): 操作 項目を追加する (additem): 操作 項目を削除する (remove): 操作 x 座標は右方向に値が大きく,y 座標は下方向に値が大きくなることに注意. 92

継承 ( インヘリタンス ): ウインドウシステムを例に説明 図 3.1: ウインドウの中にラベル, ボタン, リストの部品 各部品の属性と操作共通の属性と操作 ウインドウ内の左上を原点として (x, y) で場所指定 : 属性 (width, height) でサイズ指定 : 属性 識別のための名前 (name): 属性 置く位置の指定 (setlocation, setsize): 操作 再描画処理 (repaint): 操作 名前の設定 (setname, getname): 操作ラベルの属性と操作 表示する文字列 (text): 属性 text の設定 (settext, gettext): 操作ボタンの属性と操作 ボタンの上に表示する文字列 (label): 属性 label の設定 (setlabel, getlabel): 操作ボタンの属性と操作 表示する項目 (items): 属性 項目を得る (getitems): 操作 項目を追加する (additem): 操作 項目を削除する (remove): 操作 x 座標は右方向に値が大きく,y 座標は下方向に値が大きくなることに注意. 共通点と相違点は? 93 部品の属性と操作の共通点 相違点 表 3.1 部品の共通点 相違点共通点ラベル独自ボタン独自リスト独自 属性 x, y, width, height, name text, label, items, 操作 setlocation(), setsize(), repaint(), setname(), getname(), settext(), gettext(), setlabel(), getlabel(), getitems(), additem(), remove(), 共通部分を抜き出したクラスと, 異なった部分を抜き出したクラスを作成 共通部分を抜き出したクラス : コンポーネント (Component: 構成要素 ) 継承 : 抜き出したクラスに親と子の関係を付ける 子供 ( 例えばラベルクラス ) は親 ( コンポーネントクラス ) の性質 ( 属性と操作 ) を全て引き継ぐ 子供のクラス独自の属性を操作も持つ 94

部品の属性と操作の共通点 相違点 印のついた線で継承の関係を図示親クラス : Component 子クラス : Label, Button, List 親クラス : スーパクラス (superclass) 子クラス : サブクラス (subclass) is a 関係 : スーパクラスとサブクラスの関係 継承の方法具体的なクラスから共通部分を抜き出す : 汎化既にあるクラスを特殊化して継承 : 特化 汎化 95 class サブクラス extends スーパクラス クラス定義の一般形 Java では, サブクラスはスーパクラスの拡張 (extends) であると考えて, キーワードとして extends を使用. 自分で作成するクラスは必ず何らかのクラスのサブクラスでなければならない. extends スーパクラス を省略すると,Java のクラス階層の最上位クラス ( ルート ) である Object クラスのサブクラスとして定義される. 96

JFrame を継承した特化の例 : JFrameTest01.java Java の標準クラスライブラリの Swing(GUI ライブラリ ) JFrame: ウインドウの枠を実現するクラス JPanel: 描画に使用できるクラス 図 3.7 に記載されていない多数のフィールドやメソッドが利用可能. import javax.swing.*; //JFrame を使うため //JFrame を継承した JFrameTest01 クラス public class JFrameTest01 extends JFrame{ public static void main(string[] args){ JFrameTest01 myframe=new JFrameTest01(); myframe.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); // 閉じる設定 myframe.setsize(400,300); // ウインドウのサイズ設定 myframe.setvisible(true); // 画面上に可視化 実行結果 97 JFrame を継承した特化の例 //JFrameを継承したJFrameTest01クラス public class JFrameTest01 extends JFrame{ JFrame を継承したサブクラス JFrameTest01 JFrame で定義されている多数のフィールドとメソッドをそのまま使用できる. myframe.setdefaultcloseoperation(jframe.exit_on_close); ウインドウを閉じる ( プログラムを終了する ) ための設定ウインドウ右上の 印をクリックすると終了 JFrameTest01 プログラムには main メソッドしかないが,JFrame クラスを継承しているので, setdefaultcloseoperation() setsize() setvisible() などの JFrame クラスのメソッドを呼び出すことができる. このプログラムには明示されていないが,JFrame オブジェクトが生成されると, 同時に JPanel オブジェクトが 1 つ生成されることになっている.getContentPane() メソッドを使用することで JPanel オブジェクトを参照できる. 98

JPanelTest01.java JPanel を継承して独自の描画を行う例 public class JPanelTest01 extends JFrame{ public JPanelTest01(){ setcontentpane(new MyPanel()); // MyPanel のオブジェクトを contentpane に設定 // コンストラクタ public static void main(string[] args){ JPanelTest01 myframe=new JPanelTest01(); myframe.setdefaultcloseoperation(jframe.exit_on_close); // 閉じる設定 myframe.settitle("jpaneltest01"); // ウインドウのタイトル設定 myframe.setsize(400,300); // ウインドウのサイズ設定 myframe.setvisible(true); MyPanel.java import java.awt.*; // 描画に使う public class MyPanel extends JPanel{ // JPanelを継承 public void paintcomponent(graphics g){ // メソッドのオーバーライド int x=10, y=10; // 上下左右のマージン計算用 int width=getwidth(); // コンポーネントの幅を得る int height=getheight(); // コンポーネントの高さを得る g.setcolor(color.white); // 描画色を白に g.fillrect(x,y,width-x*2,height-y*2); // 塗りつぶしの四角を描画 g.setcolor(color.black); // 描画色を黒に g.drawrect(x,y,width-x*2,height-y*2); // 四角を描画 99 JPanelTest01.java JPanel を継承して独自の描画を行う例 public class JPanelTest01 extends JFrame{ public JPanelTest01(){ setcontentpane(new MyPanel()); // MyPanel のオブジェクトを contentpane に設定 // コンストラクタ MyPanel.java public static void main(string[] args){ JPanelTest01 myframe=new JPanelTest01();... import java.awt.*; // 描画に使う public class MyPanel extends JPanel{ // JPanel を継承 public void paintcomponent(graphics g){ // メソッドのオーバーライド... JPanelTest01プログラムを実行すると,MyPanelオブジェクトが生成され,contentPaneに設定 JPanelクラスのpaintComponentメソッドは, ウインドウの最小化 復帰 など再描画が必要となるイベントが発生した際に呼び出されるメソッド ( デフォルトではcontentPaneに設定されたオブジェクトを背景色で塗りつぶす ) paintcomponentメソッドをユーザが作成したmypanelクラスで定義し直すことにより, ユーザ独自の描画を行うことができる. スーパクラス (JPanel) のメソッド (paintcomponent) をサブクラス (MyPanel) で定義し直す メソッドのオーバーライド (override) 100

JPanelTest01.java の実行結果 paintcomponent メソッドのパラメータ Graphics オブジェクトには, 様々な描画メソッドが用意 クラス図からは, スーパクラス ( 大元のスーパークラスは JComponent) のメソッド (paintcomponent) をサブクラス (MyPanel) でオーバーライド (override) していることが分かる. 101 JPanelTest02.java public class JPanelTest02 extends JFrame{ public JPanelTest02(){ setcontentpane(new MySubPanel()); MyPanel を継承して独自の描画を行う例 public static void main(string[] args){ JPanelTest02 myframe=new JPanelTest02(); myframe.setdefaultcloseoperation(jframe.exit_on_close); // 閉じる設定 myframe.settitle("jpaneltest02"); // ウインドウのタイトル設定 myframe.setsize(400,300); // ウインドウのサイズ設定 myframe.setvisible(true); // 画面上に可視化 今度は,MySubPanel オブジェクトを作成 102

MySubPanel.java サブクラスのメソッドをオーバーライドした場合 import java.awt.*; // 描画に使う public class MySubPanel extends MyPanel{ // MyPanelを継承 public void paintcomponent(graphics g){ // メソッドのオーバーライド int width=getwidth(); // コンポーネントの幅を得る int height=getheight(); // コンポーネントの高さを得る int r; // 幅と高さの短い方を円の半径として使う if(width>height){ r=height*3/4/2; else{ r=width*3/4/2; g.setcolor(color.blue); // 描画色を青に g.filloval(width/2-r,height/2-r,r*2,r*2); // 塗りつぶしの円を描画 この場合,MyPanel クラスの paintcomponent() メソッド ( 白く塗りつぶした四角を描いてから黒い四角を描く ) がオーバーライドされているので,MySubPanel クラスの paintcomponent() メソッド ( 青く塗りつぶした円 ) だけが実行される. 103 MySubPanel.java スーパクラスのメソッドをオーバーライドした場合 import java.awt.*; // 描画に使う public class MySubPanel extends MyPanel{ // MyPanelを継承 public void paintcomponent(graphics g){ // メソッドのオーバーライド super.paintcomponent(g); // スーパクラスのメソッド呼び出し int width=getwidth(); // コンポーネントの幅を得る int height=getheight(); // コンポーネントの高さを得る int r; // 幅と高さの短い方を円の半径として使う if(width>height){ r=height*3/4/2; else{ r=width*3/4/2; g.setcolor(color.blue); // 描画色を青に g.filloval(width/2-r,height/2-r,r*2,r*2); // 塗りつぶしの円を描画 オーバーライドしたメソッド ( この場合は MySubPanel クラスの paintcomponent() メソッド ) の中からスーパクラス (MyPanel クラス ) のメソッドを呼び出すと機能の拡張が実現できる. この場合は, MyPaint クラスのメソッド : 白く塗りつぶした四角を描いてから黒い四角を描く MySubPaint クラスのメソッド : 青く塗りつぶした円を描くの両方が実行される. 104

MyPanel を継承して独自の描画を行う例 スーパクラスのメソッドをオーバーライド オーバーライドしたサブクラスのメソッド中からスーパクラスのメソッドを呼び出し 105