• 検索結果がありません。

オブジェクト指向 プログラミング

N/A
N/A
Protected

Academic year: 2021

シェア "オブジェクト指向 プログラミング"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

オブジェクト指向  プログラミング

第13回 

箕原辰夫

(2)

標準ライブラリ再訪

try except 構文

ファイルの読書き

ネットワーク( Web )からの読込み

スレッド

(3)

例外のキャッチ

try

except

構文

try:

試行する内容

except

例外の式

as

名前

:

例外が起こったときの処理

else: except

のどれに該当しなかったときの処理

finally:

必ず実行される処理

as

名前

, except

, else

, finally

句はいずれも省略可能

System.err.println( exc ); →

短いエラーメッセージ

exc.printStackTrace( ); →

どこで発生したか、エラーの内容

(4)

実際に記述してみた例

try :

y = 10 // 0

 

except:

print( "error: divided by zero" )

 

(5)

例外のクラス

Exception

AWTException…AWT

の描画の失敗 

IOException…

入出力の失敗 

InstatiationException…

オブジェクトの生成の失敗 

InterruptException

…途中で割り込みされた 

RuntimeException

…実行時の例外 

ArithmeticException…

算術計算の失敗

IllegalArgumentException…

不正な引数

IndexOutofBoundsException…

配列のインデックス

NegativeArraySizeException…

配列のサイズが負

(6)

細かな例外の捕捉

try

except

構文

try {

試行する内容

}

except (

例外

1

のクラス

exc ) {

例外

1

が起こったときの処理

} except (

例外

2

のクラス

exc ) {

例外

2

が起こったときの処理

} except (

例外

3

のクラス

exc ) {

例外

3

が起こったときの処理

}

else {

すべての例外のクラスに当てはまらないときも

含めて、必ず実行される処理

}

(7)

throw / throws

public String readLine ( ) throws IOException

➡ IOExceptionの例外を発生させる可能性のあるメソッド 

➡ 該当のメソッドを呼び出すときは、必ずtry〜catchの構文の中に入 れておかないと、コンパイラに叱られる 

throw

➡ 例外を発生させる文になっています。 

➡ 例:

throw new IllegalArgumentException( );

(8)

ファイルの読み書き

ファイル・文字端末から読む

…Reader

ファイル・文字端末に書き出す

…Writer/PrintWriter

Terminal Input File

Terminal Output File

Web Page

Stream: Reader Stream: Writer

Application

Program

(9)

読む為の書き方( Application

f =open( "filename" ) text = f.read( )

f.close( );

ファイルがない場合に備えるときは、

try

catch

で囲む必要がある。

(10)

書く為の書き方( Application

PrintWriter

を用いる

PrintWirter pw = new PrintWriter( new FileWriter( "info" ) );

PrintWirter pw = new PrintWriter( new FileWriter( "info", true ) ); //

フ ァイルの最後に追加する

PrintWriter

クラスのオブジェクトは、

print

println

という名前のメソッ ドを持っており、これらは

System.out.println

などで使ってきた使い方と 同じ

pw.println( "Sample output data for using local file." );

pw.println( "data: " + 5 * 40 + " mm " );

pw.close( );

(11)

FileDialog

アプリケーション用の、2つのダイアログ

new FileDialog(

 親ウィンドウ,  タイトル,

  

FileDialog.LOAD );

 // ファイル読み込み用 

new FileDialog(

 親ウィンドウ,  タイトル,  


 FileDialog.SAVE );

 // ファイル書き込み用 

3番目のパラメータが省略されたときは、読み込み用 アプリケーションがウィンドウを持たない場合は、

new Frame( )

などでダミーの親ウィンドウを指定

setVisible( true )

で表示をさせてから、入力を受け取る

String getDirectory( ) //

そのファイルのあるフォルダへの

絶対パスを返す

String getFile( ) //

そのファイルの名前を返す

(12)

Network へのアクセス( Application

import java.io.*;

import java.net.*;

URL url = new URL( “http://urladdress” );

BufferedReader br = new BufferedReader( 


new InputStreamReader( url.openStream( ) ) );

while ( br.ready( ) ) { String line = br.readLine( ); } br.close( );

ただし、

try

catch

で囲む必要がある。

(13)

ファイルのエンコーディング

文字コード 

➡ ASCIIコード(アメリカが作りました) 

➡ 1バイトの文字コード 

漢字も入った日本語コード 

➡ JIS X0208規格 (ISO-2022-jpコード) 

➡ 半角カタカナ使いたい 

✴ Shift JISコード(Windows, Mac OS) 

➡ プログラム的に簡単に扱いたい 

✴ EUCコード(サーバ関係)

(14)

Unicode

Unicode 

➡ 全世界統一コード 

➡ ASCIIコードと互換性を持ちたい 

➡ 2バイトコード/4バイトコード  UCS(UCS-2/UCS-4) 

➡ Unicode上の文字の字形と文字コード  UTF 

➡ それを実際のブラウザなどで表現するときのコード 

➡ UTF-8 / UTF-16 / UTF-32 

➡ UTF-8は、1バイトで使う限りASCIIコードと同じ

(15)

Unicode Normalization Form

NFC 

➡ が、ぱ、ば、ざ、 そのまま1文字で表現される 

NFD 

➡ が か+゛、å   a + ○

(16)

入力ストリームでエンコード指定

アプレット/ネットワークアクセスの場合 

InputStreamReader

の2番目のパラメータで指定 

BufferedReader br = new BufferedReader( 


new InputStreamReader( url.openStream( ), “UTF-8” ) );

アプリケーションの場合

➡ 一度

InputStreamReader

を介して、その2番目のパラメータで指定 

BufferReader br = 


new BufferReader( new InputStreamReader( 


    

new FileInputStream( “filename” ), “UTF-8” ) );

(17)

出力ストリームでエンコード指定

アプリケーションの PrintWriter で、エンコードを指定するこ とができる。 

例: 

new PrinterWriter( “filename.text”, “utf-8” );

(18)

スレッド

同時に複数のプログラムを並行に動かしたいとき 変数などは共有する

Runnable

インタフェースを使う

スレッドを示す変数をインスタンス変数で用意する

➡ 例:

Thread runner;

runner = new Thread( this );

public void run( )

メソッドを用意する

スレッドのオブジェクトに対して

start

メソッドを呼ぶ

➡ 例:

runner.start( );

(19)

run メソッド

run

メソッドの書き方は決まっている

public void run( ) {

try

 { 

while ( runner == Thread.currentThread( ) ) {

スレッドで行ないたいこと

Thread.sleep(

ミリ秒

);

}

} catch ( Exception exc ) {

 

}

(20)

synchronized method

共有している変数を、スレッドで可分に書き換えないようにするための もの

メソッドに付ける→不可分に(実行中に横取りされるという割込みが入 らない状態で)そのメソッドが実行される

複数のスレッドで共有している変数を、不可分に書き換えることが可能 となる

synchronized void replaceSharedVariable( ) {

共有変数の書き換え 

}

(21)

tkinter での GUI

(22)

ボタンの登録

(23)

tkinter での文字列入力

Entry…

1行だけ、リターン(

Enter

)キーで、入力終了となる

➡ 例:

entry = Entry( )

insert(Tkinter.END,"

追加する文字列

")

 で、デフォルトの入力文字を 指定しておける

例:

entry.

 

insert(Tkinter.END,"Apple and Orange")

 

Entry

オブジェクト作成時に、「

width

=半角文字の文字数」で大体

の幅を指定できる

例:

entry = Entry( width = 50 )

get

関数で入力された文字列を取り出すことが出来る

例:

text = entry.get( )

(24)

入力フィールド

(25)

画像

Python Image Library(PIL)

Image

クラスを使う

アプレットは、

ImageObserver

インタフェースを実装しているので、メ ソッドがすぐに使える状態になっている

読込みは、

getImage( )

メソッド

…init

メソッドなどで 描画は、

drawImage( )

メソッド

…paint

メソッドで

Image image = getImage( getCodeBase( ), “

ファイル名

” );

g.drawImage( image, x, y, width, height, this );

g.drawImage( image, x, y, this );

(26)

使用できる画像ファイル

GIF

形式

透明色が使える。色数が最大256色まで 

PPM

形式

色数は1778万色、透明はない。 

X window Bitmap

形式

PIL

で扱える形式

JPEG形式 

色数波

1778

万色、透明はない。ただし、圧縮が聞く

PNG形式 

PNG-8

GIF

と同じ形式

(27)

画像のサイズ

getWidth( this ), getHeight( this )

メソッドで、オリジナルの幅と高さ を持ってくることができる。

int width = image.getWidth( this );

int height = image.getHeight( this );

オリジナルに対して相対的な比率で描画ができる。

➡ 普通は縮小することが多い 

g.drawImage( image, x, y, width/2, height/2, this );

(28)

音声

winsound

モジュールか

mp3play

モジュールを用いる。再生だけは

play

メソッドを使って直ぐにできる。

play(“

ファイル名

” );

次のような形式のファイルを再生可能

mp3

MPEG-1/Audio Layer 3

形式(

javax.sound

) 

wav

Windows

の音声形式 

➡ au: Sun audio形式 

smf

MIDI

形式 

MP3

は、mp3playモジュールを使う

(29)

AudioClip の制御

再生について細かく制御したいときは、

AudioClip

のオブジェクトを 用いる。

AudioClip ac = getAudioClip( getCodeBase( ), “

ファイル名

” )

ac.play( );

  // 1回再生する 

ac.loop( );

 // ループ再生する 

ac.stop( );

   // ループ再生を止める

参照

関連したドキュメント

[r]

[r]

Crucial 版 Acronis True Image によって、Acronis プラグイン が Windows AIK または Windows ADK から .wim ファイルに追加されます。新しい

当初は製品に国内向けと海外向けの区別はない。ベ トナムなどで出土する染付日字鳳凰文皿は 1640

In the present paper, the criterial images for GIF- compression attack are selected by the proposed criterial image preparation method, and the obtained criterial images are added

Although the picture element (pixel) in conventional image sensors are placed in the form of a lattice for ease of implementation, the lattice place- ment of pixels intrinsically

• ネット:0個以上のセルのポートをワイヤーを使って結んだも