Javaセキュアコーディングセミナー2013東京第1回 演習の解説
|
|
|
- ふじよし おおばま
- 7 years ago
- Views:
Transcription
1 Java セキュアコーディングセミナー東京 第 1 回オブジェクトの生成とセキュリティ 演習の解説 2012 年 9 月 9 日 ( 日 ) JPCERT コーディネーションセンター脆弱性解析チーム戸田洋三 1
2 演習 [1] 2
3 演習 [1] class Dog { public static void bark() { System.out.print("woof"); class Bulldog extends Dog { public static void bark() { A. どのような出力が得られるか? B. bark() メソッドが static 宣言されていない場合の出力は? C. メソッドがどのように実行されているか説明せよ public class Bark { public static void main(string args[]) { Dog d1 = new Dog(); Dog d2 = new Bulldog(); d1.bark(); d2.bark(); ヒント Java 言語仕様 Method Invocation Expressions 3
4 演習 [1] A. どのような出力が得られるか? $ java Bark woofwoof$ B. bark() メソッドが static 宣言されていない場合の出力は? $ java Bark woof$ C. メソッドがどのように実行されているか説明せよ 4
5 コンパイラおよび VM による処理 class Dog { public static void bark() { System.out.print("woof"); class Bulldog extends Dog { public static void bark() { (2) コンパイル時のチェック Dog のメソッド bark() は static 宣言されている (3) 実行時処理 Dog の static メソッド bark() を呼び出そう! public class Bark { public static void main(string args[]) { Dog d1 = new Dog(); Dog d2 = new Bulldog(); d1.bark(); d2.bark(); (1) コンパイル時のチェック - d1,d2 どちらも Dog 型の変数 - Dog のメソッド bark() があるので OK 5
6 コンパイラおよび VM による処理 (static メソッドでない場合 ) class Dog { public void bark() { System.out.print("woof"); class Bulldog extends Dog { public void bark() { public class Bark { public static void main(string args[]) { Dog d1 = new Dog(); Dog d2 = new Bulldog(); d1.bark(); d2.bark(); (2) コンパイル時のチェック Dog のメソッド bark() は virtual 呼び出しだ (3) 実行時処理 d1,d2 が参照しているインスタンスをチェック! (4) 実行時処理それぞれのインスタンスから辿ってメソッドを呼び出そう! (1) コンパイル時のチェック - d1,d2 どちらも Dog 型の変数 - Dog のメソッド bark() があるので OK 6
7 演習 [2] 7
8 演習 [2] class Point { protected final int x, y; private final String name; protected String makename() { return "[" + x + "," + y + "]"; public final String tostring() { return name; Point(int x, int y) { this.x = x; this.y = y; this.name = makename(); public class ColorPoint extends Point { private final String color; protected String makename() { return super.makename() + ":" + color; ColorPoint(int x, int y, String color) { super(x, y); this.color = color; public static void main(string[] args) { System.out.println(new ColorPoint(4, 2, "purple")); A. どのような出力が得られるか? B. なぜこのような出力が得られたのか説明せよ. C. 適切な出力が得られるようにコードを修正せよ. ヒント : Java 言語仕様 Method Invocation Expressions 8
9 演習 [2] A. どのような出力が得られるか? $ java ColorPoint [4,2]:null $ B. なぜこのような出力が得られたのか説明せよ. Point.toString() から出力 name の値 name には makename() の返り値が代入されている どの makename()? ColorPoint の makename() つまり... サブクラスのインスタンスが初期化される前にスーパークラスのコンストラクタがサブクラスのメソッドを呼び出した 9
10 実行の様子 10 class Point { protected final int x, y; private final String name; // Cached at construction time protected String makename() { return "[" + x + "," + y + "]"; public final String tostring() { return name; Point(int x, int y) { this.x = x; this.y = y; this.name = makename(); public class ColorPoint extends Point { private final String color; protected String makename() { return super.makename() + ":" + color; ColorPoint(int x, int y, String color) { super(x, y); this.color = color; public static void main(string[] args) { System.out.println(new ColorPoint(4, 2, "purple")); (3) ColorPoint の makename() が呼び出される (4) 初期化前の color にアクセス (2) Point のコンストラクタ呼出し (5) ここでようやく color の初期化 (1) ColorPoint のコンストラクタ呼出し
11 演習 [2] このコードの問題点 : 初期化される前の color にアクセスしている ( その結果, デフォルト値の null が出力されている ) 元々の意図は? 初期化された後の color の値を出力したい C. 適切な出力が得られるようにコードを修正せよ. 11
12 どのように修正するか? class Point { protected final int x, y; private final String name; // Cached at construction time protected String makename() { return "[" + x + "," + y + "]"; public final String tostring() { return name; Point(int x, int y) { this.x = x; this.y = y; this.name = makename(); public class ColorPoint extends Point { private final String color; protected String makename() { return super.makename() + ":" + color; ColorPoint(int x, int y, String color) { super(x, y); this.color = color; public static void main(string[] args) { System.out.println(new ColorPoint(4, 2, "purple")); 12
13 どのように修正するか? class Point { protected final int x, y; private String name; // 遅延初期化 ( 最初に使われたときにキャッシュされる ) protected String makename() { return "[" + x + "," + y + "]"; public final synchronized String tostring() { return (name == null? name = makename() : name); Point(int x, int y) { this.x = x; this.y = y; コンストラクタからの makename() 呼び出しを避ける public class ColorPoint extends Point { private final String color; protected String makename() { return super.makename() + ":" + color; ColorPoint(int x, int y, String color) { super(x, y); this.color = color; public static void main(string[] args) { System.out.println(new ColorPoint(4, 2, "purple")); 13
14 演習 [3] 14
15 演習 [3] class Purse { private int i; public Purse(int arg) { i = arg; public int get_i() { return i; public void set_i(int iarg) { i = iarg; class User { private Purse p; public User(Purse arg) { p = arg; public Purse get_p() { return p; A. User クラスのインスタンスを生成し, その private フィールド p が参照する Purse インスタンスの持つ値を変更する攻撃コードを書け. B. A. でつくった攻撃コードが動作しないように元のコードを修正せよ. 15
16 攻撃コード例 こんなことすると... class dc { public static void main(string[] args){ Purse newp = new Purse(9999); User u = new User(newp); System.out.println(u.get_p().get_i()); Purse p = u.get_p(); p.set_i(1099); System.out.println(u.get_p().get_i()); get_p() の返り値を使って u の private フィールドをいじることができる newp.set_i(999); System.out.println(u.get_p().get_i()); コンストラクタに渡したオブジェクトを使って u の private フィールドをいじることができる 16
17 修正例 class User { private Purse p; public User(Purse arg) { p = new Purse(arg.get_i()); public Purse get_p() { return new Purse(p.get_i()); 受け取ったオブジェクトはコピーを作って使う. 外に渡すオブジェクトはコピーを作って使う. defensive copy : デフェンシブコピー 17
18 修正例 (2) Purse クラスを公開する必要がなければ... class User { private class Purse { private int i; Purse(int arg) { i = arg; int get_i() { return i; void set_i(int iarg) { i = iarg; Purse クラスを入れ子クラスとして定義する. Purse の中身へのアクセスは必ず User クラスのメソッド経由とする. private Purse p; public User(int iarg) { p = new Purse(iarg); public int get_i() { return p.get_i(); public void set_i(int i) { p.set_i(i); 18
19 演習 [4] 19
20 演習 [4] class Authlet { int i; Authlet(int i0){ if (checkarg(i0)) { this.i = i0; boolean checkarg(int i) throws IllegalArgumentException { if (i<0 100<i) { throw new IllegalArgumentException("arg should be positive < 100."); return true; class Auth { private static Authlet a0; public static void checkauth(authlet a){ if (a0 == null){ if (a == null){ System.out.println("invalid Authlet!"); System.exit(1); a0 = a; 20
21 演習 [4] class useauth { public static void main(string[] args){ Authlet au; try { au = new Authlet(Integer.parseInt(args[0])); catch(illegalargumentexception ex){ au = null; Auth.checkAuth(au); System.out.println("Authenticated!"); 訂正! SecurityException ではなく IllegalArgumentException A. checkarg() による入力値チェックを回避する攻撃コードを書け. B. A. で書いた攻撃コードに対する対策を行え. 21
22 プログラムの動作を確認する $ javac Authlet.java Auth.java useauth.java $ java useauth Exception in thread "main" java.lang.arrayindexoutofboundsexception: 0 at useauth.main(useauth.java:5) $ コマンドライン引数が必要 $ java useauth 101 invalid Authlet! $ checkarg() の入力値検査でエラー $ java useauth 50 Authenticated! $ checkarg() の検査をパス 22
23 Auth と Authlet の問題点 Authlet のサブクラスをつくり, checkarg() の検査の後でフィールド i の値を更新可能 Auth.checkAuth() は Authlet のインスタンスの中身をチェックしていない Authlet のサブクラスをつくり, フィールド i に任意の値を設定したインスタンスを作成可能 作成したインスタンスを Auth.checkAuth() にそのまま渡せば認証される
24 攻撃コード class exploitauthlet extends Authlet { exploitauthlet(int e){ super(10); this.i = e; checkarg() の後で i の値を再設定 public static void main(string[] args){ exploitauthlet eal = new exploitauthlet(102); Auth.checkAuth(eal); useauth.main(new String[]{ 1000 ); 不正な値で Authlet を作成, 登録 元の main メソッドにはダミーの引数を渡す 24
25 exploitauthlet の実行 $ javac exploitauth.java $ java exploitauth Authenticated! $ 値 102 の Authlet でパスしてしまう 対策 Authlet のサブクラスをつくれないようにする フィールド i の値を再設定できないようにする Auth.checkAuth() で渡された Authlet が持っている値をチェックする
26 修正例 26 final class Authlet { int i; Authlet(int i0){ if (checkarg(i0)) { this.i = i0; boolean checkarg(int i) throws IllegalArgumentException { if (i<0 100<i) { throw new IllegalArgumentException("arg should be positive < 100."); class Auth { return true; private static Authlet a0; public static void checkauth(authlet a){ if (a0 == null){ if (a == null){ System.out.println("invalid Authlet!"); System.exit(1); a0 = a;
Javaセキュアコーディングセミナー東京 第4回 メソッドとセキュリティ 演習解説
Japan Computer Emergency Response Team Coordination Center 電子署名者 : Japan Computer Emergency Response Team Coordination Center DN : c=jp, st=tokyo, l=chiyoda-ku, [email protected], o=japan Computer
Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac
Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN
PowerPoint プレゼンテーション
オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念
Javaプログラムの実行手順
戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失
JAVA入門
JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する
Prog2_9th
2013 年 11 月 21 日 ( 木 ) 実施例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる これまでの教材に登場した例外の中で,IOException はコンパイラがチェックするため, 例外処理を必ず記述しなければコンパイルが出来ないものであるのに対して,ArithmeticException
JavaプログラミングⅠ
Java プログラミング Ⅱ 7 回目オーバーライド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) スーパークラスのメソッドと同じ名前 戻り値 引数の個数と型をもつメソッドをサブクラスで宣言すると これらのメソッドはオーバーライドの関係になる (2) メソッドのオーバーライドとは スーパークラスのメソッドに代わってサブクラスのメソッドが実行される機能のことである (3) スーパークラス型の変数にサブクラスのオブジェクトは代入できない
プログラミング基礎I(再)
山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全
メディプロ1 Javaプログラミング補足資料.ppt
メディアプロジェクト演習 1 Javaプログラミング補足資料 l Javaとは l JavaScript と Java 言語の違い l オブジェクト指向 l コンストラクタ l 継承 抽象クラス 本資料内のページ番号は, 以下の参考書のページを引用している高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに l プログラミング言語とは? l オブジェクト指向とは?
Javaの作成の前に
メディアプロジェクト演習 1 参考資料 Javaとは JavaScript と Java 言語の違い オブジェクト指向 コンストラクタ サーブレット 本資料内のページ番号は, 以下の参考書のページを引用している 高橋麻奈 : やさしい Java, ソフトバンククリエイティブ (2,625 円 ) はじめに プログラミング言語とは? オブジェクト指向とは? Java 言語とは? JavaとJavaScriptの違いとは?
Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問
Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問のメソッドを追加する public static void main(string[] args) {
JavaプログラミングⅠ
Java プログラミング Ⅱ 6 回目継承課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 新しいクラスを宣言するとき既存のクラスを利用することはできない (2) 新しいクラスが既存のクラスのメンバーを受け継ぐことを継承という (3) クラスの拡張における既存のクラスをサブクラスという (4) サブクラスからスーパークラスの private メンバーをアクセスすることはできない (5)
JavaプログラミングⅠ
Java プログラミング Ⅱ 4 回目クラスの機能 (2) コンストラクタ クラス変数 クラスメソッド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) コンストラクタはメソッドと同様に戻り値をもつ (2) コンストラクタはオブジェクトが生成されると最初に実行される (3) コンストラクタはメソッドと同様にオーバーロードができる (4) コンストラクタは常に public メンバとしなければならない
た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name
クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく
やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF
pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) 3 5 14 18 21 23 23 24 28 29 29 31 32 34 35 35 36 38 40 44 44 45 46 49 49 50 pref : 2004/6/5 (11:8) 50 51 52 54 55 56 57 58 59 60 61
オブジェクト指向プログラミング・同演習 5月21日演習課題
オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException
基本情報STEP UP演習Java対策
トレーニング編 1. 予約語 extends アクセスレベル class サブクラス名 extends スーパクラス名 { (1) スーパクラス ( 既存のクラス ) を拡張して, サブクラス ( 新しいクラス ) を定義する場合に extends を利用する (2) extends の後ろには, スーパクラスの名前を一つだけ指定できる (3) サブクラスからインスタンスを生成すると, スーパクラスに定義されたインスタンス変数やメソッドがこのインスタンス内部に引き継がれる
JavaプログラミングⅠ
Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double
Java知識テスト問題
Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください
Microsoft PowerPoint - chap10_OOP.ppt
プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,
JavaプログラミングⅠ
Java プログラミング Ⅱ 3 回目クラスの機能 (1) アクセス制限 オーバーロード課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) クラスの private メンバは そのクラスからのみアクセス可能なメンバである (2) 一般に クラスのフィールドはどこからでもアクセスできるように public メンバで宣言すべきである (3) クラスは private メンバと public
2
プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか
新・明解Java入門
537,... 224,... 224,... 32, 35,... 188, 216, 312 -... 38 -... 38 --... 102 --... 103 -=... 111 -classpath... 379 '... 106, 474!... 57, 97!=... 56 "... 14, 476 %... 38 %=... 111 &... 240, 247 &&... 66,
Java言語 第1回
Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 [email protected] 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public
PowerPoint Presentation
ソフトウェア演習 B GUI を持つ Java プログラムの 設計と実装 4.1 例題 :GUI を持った電卓を作ろう プロジェクトCalculator パッケージ名 :example ソースファイル : Calculator.java GUI.java EventProcessor.java 2 4.2 GUI とイベント処理 GUI の構成 :Swing GUI の場合 フレーム JFrame:
JavaプログラミングⅠ
Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または
226
226 227 Main ClientThread Request Channel WorkerThread Channel startworkers takerequest requestqueue threadpool WorkerThread channel run Request tostring execute name number ClientThread channel random
Java学習教材
Java 2016/4/17 Java 1 Java1 : 280 : (2010/1/29) ISBN-10: 4798120987 ISBN-13: 978-4798120980 2010/1/29 1 Java 1 Java Java Java class FirstExample { public static void main(string[] args) { System.out.println("
Java講座
~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト
Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1
Java (9) 1 Lesson 7 2008-05-20 Java System.out.println() 1 Java API 1 Java Java 1 GUI 2 Java 3 1.1 5 3 1.0 10.0, 1.0, 0.5 5.0, 3.0, 0.3 4.0, 1.0, 0.6 1 2 4 3, ( 2 3 2 1.2 Java (stream) 4 1 a 5 (End of
10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV
[email protected] [email protected] http://www.misojiro.t.u-tokyo.ac.jp/ tutimura/sem3/ 2002 12 11 p.1/33 10/16 1. 10/23 2. 10/30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20
問題1 以下に示すプログラムは、次の処理をするプログラムである
問題 1 次に示すプログラムは 配列 a の値を乱数で設定し 配列 a の値が 333 より大きく 667 以下の値 の合計値を求めるプログラムである 1 と 2 に適切なコードを記述してプログラムを完 成させよ class TotalNumber { public static void main(string[] args) { int[] a = new int[1000]; // 1 解答条件
JavaプログラミングⅠ
Java プログラミング Ⅱ 11 回目スレッド課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) スレッドは 1 つの実行箇所をもつ一連の処理の流れである (2) マルチスレッドで各スレッドの処理は並行して実行される (3) Java はマルチスレッド処理を記述できない (4) 新たにスレッドを生成する場合 Thread クラスを拡張し かつ Runnable インタフェースを実装する必要がある
メソッドのまとめ
メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか
(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド
メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが
5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;
5 p.1 5 JPanel (toy example) 5.1 2 extends : Object java.lang.object extends... extends Object Point.java 1 public class Point { // public int x; public int y; Point x y 5.1.1, 5 p.2 5 5.2 Point int Java
ガイダンス
情報科学 B 第 2 回変数 1 今日やること Java プログラムの書き方 変数とは何か? 2 Java プログラムの書き方 3 作業手順 Java 言語を用いてソースコードを記述する (Cpad エディタを使用 ) コンパイル (Cpad エディタを使用 ) 実行 (Cpad エディタを使用 ) エラーが出たらどうしたらよいか??? 4 書き方 これから作成する Hello.java 命令文 メソッドブロック
JavaプログラミングⅠ
Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または
問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。
解答例 問題 1 変数 a が 3 以上でかつ 7 以下の場合 true と表示し そうでない場合は false と表示するプログラムである public class Prog061004_01 { int a; boolean b; a = Integer.parseInt(buf.readLine()); b = (a >= 3) && (a
1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String
目次 1.SqlCtl クラスリファレンス 2 (1)Connect() メソッド 2 (2)DisConnect() メソッド 3 (3)Commit() メソッド 3 (4)Rollback() メソッド 4 2.SqlStm クラスリファレンス 5 (1)Prepare() メソッド 5 (2)Execute() メソッド 6 (3)Release() メソッド 6 (4)Immediate()
コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?
Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved. 1 プログラミング初級 (Java) 第 10 回オブジェクト指向って? 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved. 2 第 10
問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。
ソフトウェア基礎演習課題 文法理解度確認範囲 問題 1 データ型 ( 変数, データ型 ) 問題 2 制御構造 (switch 文 ) 問題 3 制御構造 (while 文 ) 問題 4 制御構造と配列 ( 総和 ) 問題 5 制御構造と配列 ( 総和, 平均 ) 問題 6 データ型と各種演算子 ( 文字列, 検索 ) 問題 7 クラスの定義 ( メソッドの定義, コンストラクタの定義, キャスト
Java演習(4) -- 変数と型 --
50 20 20 5 (20, 20) O 50 100 150 200 250 300 350 x (reserved 50 100 y 50 20 20 5 (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics; (reserved public class Blocks1 extends
I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi
II Java 10 2 12 10:30 12:00 I. I III II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K KeyListener J JApplet L addmouselistener M MouseListener
人工知能入門
藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する
SpringSecurity
Spring Security 1/40 OUTLINE Spring Security Spring Securityを使った認証の仕組み Spring Securityを使った独自認証 認証エラーメッセージの変更 2/40 Spring Security 3/40 Spring Security とは アプリケーションのセキュリティを高めるためのフレームワーク 認証 認可機能 その他 多数のセキュリティ関連の機能を持つ
JavaプログラミングⅠ
Java プログラミング Ⅱ 8 回目抽象クラスとインタフェース課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) 抽象クラスのオブジェクトは生成できる (2) 抽象メソッドとはメソッドの本体が未定義のメソッドである (3) 抽象メソッドをメンバーにもつクラスは抽象クラスである (4) 抽象クラスを拡張してすべての抽象メソッドをオーバーライドすれば サブクラスのオブジェクトを生成できる
HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど
HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなどを設定できます ソースファイル名 :Sample8_1.java // HP よりインポート文をここへ貼り付けてください
intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書 第3版
Copyright 2012 NTT DATA INTRAMART CORPORATION 1 Top 目次 改訂情報はじめに本書の目的対象読者本書の構成概要外部ソフトウェア接続モジュールとは仕様外部ソフトウェア接続モジュールの構成サンプルプログラムサンプル内容動作に必要な環境構築プログラムソースログイン セキュリティ環境の構築外部ソフトウェア連携時の認可設定 2 改訂情報 変更年月日 変更内容 2012-12-21
