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

PowerPoint プレゼンテーション

N/A
N/A
Protected

Academic year: 2021

シェア "PowerPoint プレゼンテーション"

Copied!
26
0
0

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

全文

(1)

オブジェクト指向

プログラミング演習

第2回 クラス・インスタンス・

メソッド・コンストラクタ

(2)

先週の出席確認

2018.04.20

NHK 「チコちゃんに叱られる!」

Webブラウザはどのようなプログラムでできているか

この問に答える前に… Webブラウザとは、何か?

普段使ってますよね?

Webブラウザを使ってできることと

Webブラウザがやっていることを

区別する必要がある

何をすれば

Webブラウザ

と言えるのか

(3)

2018.04.20

Webブラウザがやっていること

Webページを表示する

サーバに接続してWebページの情報を受け取る

受け取った情報(HTMLなど)を解釈して表示する

表示しているページに対する操作に対応する

リンクがクリックされたら、リンク先のページを

表示する

入力欄のあるページに入力された情報を記憶する

TABで入力欄のフォーカスを移動する

submitが押された・enterキーが押されたとき

にサーバに接続して入力された情報を渡す

(4)

Webブラウザがやっていること

サーバに接続してWebページの情報を受け取る

サーバに接続するには、サーバのアドレスなどを

知る必要がある

http://sun.ac.jp/prof/yamagu/

URLを解釈して、プロトコル・サーバのアドレス・

情報の位置を識別(取り出す)機能を持っている

プロトコルに従ってサーバと通信する

http, https など

2018.04.20

プロトコル

サーバのアドレス

サーバ上の情報の位置

(5)

Webブラウザがやっていること

受け取った情報(HTMLなど)を解釈して表示する

HTMLの解釈・表示

CSSの解釈

JavaScriptの解釈・実行

画像情報の解釈(解凍)・表示

その他(pdf とか Flash とか)

プラグインを導入できるようにしておく

プラグインに情報を渡す

プラグインが画像や音声を出力できるような

インタフェースが必要

2018.04.20

(6)

Webブラウザがやっていること

リンクがクリックされたら、リンク先のページを表示する

画面上の位置とHTML中の位置を対応づける

リンク先は URL

URLの解釈をする

URLが省略されていることもある

URLの補完をしている

2018.04.20

(7)

Webブラウザがやっていること

Webページの閲覧を便利にする機能

閲覧履歴を記録する

履歴の中を前ページを表示する

履歴の中の次ページを表示する

再読込

ブックマーク(お気に入り)を記録する

複数タブ/複数ウィンドウ

Cookie の記録・管理

2018.04.20

(8)

Webブラウザの部品

ユーザとのインタフェース

テキストの入力欄

ボタン

Webページを表示する画面

HTMLの Form タグ内で使われる入力の仕組み

2018.04.20

(9)

Webブラウザがやっていないこと

サーバ名からIPアドレスを得る

これは DNS の仕事

Webブラウザは DNS への問い合わせをする

検索

これは検索エンジンの仕事

Webブラウザは検索エンジンに検索語を渡し、応答として返ってき

たWebページを表示している

HTMLやCSSの記述

これはWebページを作る人の仕事

問は「Webページがどうできているか」ではない

Webブラウザは、HTMLやCSSを解釈して、Webページの表示を

行っている

ネットワーク上の他のパソコンから接続される

これは(Web)サーバの仕事

2018.04.20

(10)

Webブラウザがやっていることだが…

ブックマークの機能だけ述べた回答がありました

インタフェースについてだけ述べた回答がありました

…Webブラウザの中心的な機能はWebページの表示です

当たり前のことが意識できていない回答です

2018.04.20

(11)

整理をし、言葉を選んで、回答すること

「Webブラウザの画面はHTMLとCSSでできている」

という回答がありました。

HTMLとCSSで出来ているのは Webページです

Webブラウザは、Webページを表示する機能を

持っていますが、それはブラウザの一部です

この回答は、

整理ができていない、または

分かって書いているのなら、言葉が足りない

2018.04.20

(12)

演習への回答に際しての注意事項

当たり前のことをきちんと書きましょう

本質(もっとも重要なこと)は何かを、はっきり

させるため

当たり前のことだけで終わってはダメ

定義を書いただけ・言い換えただけになるので

本質について、より深く考えて下さい

ブックマークの機能がなくてもWebブラウザと

して成立しますよね?

2018.04.20

(13)

今日のお題

クラス

インスタンス

メソッド

コンストラクタ

2018.04.20

モノの種類

オブジェクト

モノの実体

関数のようなもの。

モノの機能を表す

計算手順

新しいインスタンスを

作るときに呼び出される

計算手順

本演習のWebページがあります:

http://sun.ac.jp/prof/yamagu/2018OOP/

(14)

Java の型とクラス

(C言語と同様に)変数や返戻値は型を持つ

型には、プリミティブ型とクラスがある

プリミティブ型:int, double など

プリミティブ型の変数は、その型の

を記憶する

クラス

最初から用意されているもの・自分で定義したもの

文字列は String クラスで表される

クラスを型とする変数は、そのクラスの

インスタンス

を記憶する

↑インスタンスが値として扱われている

2018.04.20

primitive は 原始的な/単純な/元々の といった意味

(15)

f に記憶されている

Frame のインスタンスの

setVisible メソッドを

呼び出す

ウィンドウが 見えるように なる

サンプルプログラム

import java.awt.*; public class Oop2 {

public static void main(String args[]) { Frame f; f = new Frame(); f.setVisible(true); } }

2018.04.20

今日は Oop2.java というファイルを書き換えながら演習します

java.awtパッケージの

下にあるすべてのクラス

を利用可能にする

Frame クラスのインスタンス

を記憶できる変数 f を宣言

新しく Frame クラスの

インスタンスを作って、

f に代入

java.awt パッケージ は、GUIを作るのに使 えるクラスを提供する Oop2.java という ファイルを作り、 javac Oop2.java でコンパイル java Oop2 で実行 画面上にウィンドウ (枠)を出すための データを用意している

(16)

画面上にウィンドウを表示するプロ

グラム

import java.awt.*; public class Oop2 {

public static void main(String args[]) { Frame f; f = new Frame(); f.setSize(200,200); f.setVisible(true); } }

2018.04.20

このままだと、あまりに小さいので…

Frame のインスタンスを見えるようにする前に

大きさを設定する

f (に記憶されている

Frame のインスタンス)

の大きさを 200×200 に

する

(17)

サンプルプログラム

import java.awt.*; public class Oop2 {

public static void main(String args[]) { Frame f; f = new Frame(); f.setSize(200,200); f.setVisible(true); f = new Frame(); f.setSize(100,200); f.setVisible(true); } }

2018.04.20

ためしに、もう一つ Frame のインスタンスを作ってみる。

新しく Frame クラスの

インスタンスを作って、

f に代入

改めて Frame クラスの

インスタンスを作って、

f に代入

区別できるように、

大きさを変える

ウィンドウが二つ現れる

(18)

ここまでのまとめ

Frame クラスのインスタンスを作る

new Frame()

ウィンドウが作られる

Frameクラスは、可視/不可視を制御する機能を持つ

setVisible メソッドを呼ぶ

Frameクラスは、大きさを変える機能を持つ

setSize メソッドを呼ぶ

2018.04.20

(19)

コンストラクタ

インスタンスを生成するときに呼ばれる

個々のインスタンスに初期設定をするなど

Java の API を参照して、Frame クラスに

どんなコンストラクタがあるか、調べてみよう:

Frame()

Frame(GraphicsConfiguration gc)

Frame(String title)

Frame(String title, GraphicsConfiguration gc)

2018.04.20

タイトルを

指定できる

(20)

コンストラクタの利用例

new クラス名 に続く括弧内に、コンストラクタへの

引数を渡す

2018.04.20

import java.awt.*; public class Oop2 {

public static void main(String args[]) { Frame f; f = new Frame("OOP"); f.setSize(200,200); f.setVisible(true); } }

新しく Frame クラスの

インスタンスを作るとき、

タイトルを指定している。

(21)

ここまでは、既存のクラスの既存のコンス

トラクタやメソッドを使った。

次は、自分でコンストラクタやメソッドを

定義してみよう

(22)

Frameを持つクラスを定義してみる

import java.awt.*;

public class Oop2 {

Frame fr;

Oop2() {

fr = new Frame("Oop2");

fr.setSize(200,200);

fr.setVisible(true);

}

public static void main(String args[]) {

Oop2 test;

test = new Oop2();

}

}

2018.04.20

Oop2 は Frame

を一つ持つ。こ

れはフィールド。

Oop2 のインスタンス

を作る。

ウィンドウが現れる。

フィールドの宣言には、 型 フィールド名; というパターンを書く。 public や static など の修飾が付くこともある。 Oop2のコンストラクタの定義 コンストラクタは、 クラス名(仮引数列){...} というパターンで定義する コンストラクタの定義 には、public などの 修飾が付くこともある。

(23)

メソッドの定義と呼出し

2018.04.20

import java.awt.*; public class Oop2 {

Frame fr; Oop2() { fr = new Frame("Oop2"); fr.setSize(200,200); fr.setVisible(true); } void large() { fr.setSize(400,400); }

public static void main(String args[]) { Oop2 test;

test = new Oop2(); test.large(); } } メソッドの定義は、 返戻値の型 メソッド名(仮引数列){…} というパターンを、クラスの定義の 中に書く メソッドの呼出し。 変数 test(に記憶されているOop2の インスタンス)の large メソッドを 呼んでいる メソッドの定義には、 public や static などの修飾が付くこと もある。 C言語では引数を持たない関 数では、仮引数列に void と書くことを推奨したが、 Java では仮引数列に void と書くことができない。

(24)

2018.04.20

今日のまとめ

クラス

class というキーワードを使って定義する。その中身には、

フィールド・メソッド・コンストラクタを書く。

インスタンス

new というキーワードを使って、生成する。

メソッド

インスタンス i のメソッド m を i.m(...) というパターンで

呼び出す。

クラスの定義の中で、メソッドを定義する。

コンストラクタ

new を使うと呼び出される

コンストラクタの定義も、クラスの定義の中に書く。

(25)

作ったインスタンスを 受け取る変数が必要な ワケではない。

import java.awt.*; public class Oop2 {

Frame fr; Oop2() {

fr = new Frame("Oop2"); Canvas cv = new Canvas() {

public void paint(Graphics gc) {

gc.setColor(new Color(255,255,255)); gc.fillRect(0,0,200,200); gc.setColor(new Color(0,0,0)); gc.drawLine(50,50,150,150); } }; cv.setSize(200,200); fr.add(cv); fr.pack(); fr.setVisible(true); }

public static void main(String args[]) { new Oop2(); } }

おまけ: 絵を描くくらいしたい

2018.04.20

絵を描くには

Canvas クラスを

使う

Canvas のサブクラスを

名前を付けずに定義して、

そのインスタンスを作っ

ている

描画の命令は Graphics

クラスのインスタンスを

通じて行う

白で200×200の

領域を塗りつぶす

Canvas の大きさ

を設定する

黒い線を一本描く

Frame に Canvas を入れる

Frame の大きさを計算する。 ここでは Canvas に合う 大きさになる。

(26)

次回予告

アクセス制御

参照

関連したドキュメント

51 OSCE Office for Democratic Institutions and Human Rights, OSCE/ODIHR Election Assessment Mission Final Report on the 4 March 2007 Parliamentary Elections in

投与から間質性肺炎の発症までの期間は、一般的には、免疫反応の関与が

病理診断名(日本語) 英語表記 形態コ-ド 節外性 NK/T 細胞リンパ腫、鼻型 Extranodal NK/T cell lymphoma, nasal-type 9719/3 腸管症型 T 細胞リンパ腫

ペルフルオロオクタンスルホン酸、ペルフルオロ

瞼板中には 30~40 個の瞼板腺(マイボーム Meibome 腺)が一列に存在し、導管は眼瞼後縁に開口する。前縁には 睫毛(まつ毛)が 2~ 3

(G1、G2 及び G3)のものを扱い、NENs のうち低分化型神経内分泌腫瘍(神経内分泌癌 ; neuroendocrine carcinoma; NEC(G3)

上記の(1)勤怠及び健康、

N2b 同側の多発性リンパ節転移で最大径が 6cm 以下かつ節外浸潤なし N2c 両側または対側のリンパ節転移で最大径が 6cm 以下かつ節外浸潤なし