トップページ情報工学を学ぶJava の基本(JavaTutor, Paiza.IO, Online GDB を使用)(全15回)

Java の基本(JavaTutor, Paiza.IO, Online GDB を使用)(全15回)

大学で使用した自作の教材を,手直しの上公開している. クリエイティブ・コモンズ BY NC SA.

JavaTutor, Paiza.IO, OnlineGDB を用いた演習を交えて,Java の基本を学ぶ.

目次

  1. pi-1. プログラミング入門,プログラミング実行 [PDF], [パワーポイント]
  2. pi-2. Java 言語の特徴,データの種類,条件分岐,繰り返し [PDF], [パワーポイント]
  3. pi-3. メソッド,クラス,オブジェクトの生成(コンストラクタ) [PDF], [パワーポイント]
  4. pi-4. コレクション,リスト,マップ,拡張 for 文 [PDF], [パワーポイント]
  5. pi-5. メソッド,抽象化 [PDF], [パワーポイント]
  6. pi-6. 継承,クラス階層 [PDF], [パワーポイント]
  7. pi-7. クラスの抽象化,メソッドのオーバーライド [PDF], [パワーポイント]
  8. pi-8. コレクション,ジェネリクス [PDF], [パワーポイント]
  9. pi-9. 多相性,インターフェイス,デザインパターン [PDF], [パワーポイント]
  10. pi-10. 時間,スリープ,疑似乱数,タイマー [PDF], [パワーポイント]
  11. pi-11. 今までの総まとめ [PDF], [パワーポイント]
  12. pi-12. イベント,イベントハンドラ,ソケット通信 [PDF], [パワーポイント]
  13. pi-13. カプセル化,MVCモデル,オブジェクトのマッピング [PDF], [パワーポイント]
  14. pi-14. プログラムのテスト,アサーション,例外処理 [PDF], [パワーポイント]
  15. pi-15. プログラム設計 [PDF], [パワーポイント]

【関連するオンラインサービス】

YouTube の再生リスト「Java の基本」
https://www.youtube.com/playlist?list=PLwoDcGBEg9WH6D0fsLu3M53VahHRr-cRx

YouTube のチャンネル「金子邦彦」
https://youtube.com/user/kunihikokaneko

【サイト内の Java 関連の資料】

資料

  1. pi-1. プログラミング入門,プログラミング実行 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/Z1XJGZ-2022-01-26-124947

  2. pi-2. Java 言語の特徴,データの種類,条件分岐,繰り返し [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/5GQXDZ-2022-01-26-125039

    全体まとめ

    • 基本データ型 :整数,浮動小数,文字,boolean (true/falseを扱う)
    • Java の標準機能にあるクラス:文字列など
    • 配列は,データの並びで,0から始まる番号(添字)が付いている
    • 文字列は「"」で囲む
    • 条件分岐,繰り返し(ループ)

    2-3

    public class Main {
        public static void main(String[] args)  {
            int age = 10;
            if (age <= 12) {
                System.out.printf("500 yen");
            } else {
                System.out.printf("1200 yen");
            }
        }
    }
    

    2-4

    public class Main {
        public static void main(String[] args)  {
            int age = 20;
            if (age <= 12) {
                System.out.printf("500 yen");
            } else {
                System.out.printf("1200 yen");
            }
        }
    }
    

    2-5

    public class Main {
        public static void main(String[] args)  {
            double x[] = {8, 6, 4, 2, 3};
            double y[] = {0, 0, 0, 0, 0};
            int i;
            for(i=0; i<=4; i++){
              y[i] = x[i] * 1.1;
            }
        }
    }
    
  3. pi-3. メソッド,クラス,オブジェクトの生成(コンストラクタ) [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/K9R8X5-2022-01-26-125118

    全体まとめ

    • 抽象化は :変数を使って,複数の式を1つにまとめることなど
    • メソッド呼び出し:ジャンプ,変数の生成と消去が自動で行われる
    • Java のクラス定義では,クラス名,属性名と各属性のデータ型を指定する.メソッド定義も行う.
    • コンストラクタとは,オブジェクトの生成を行うメソッドのことである.
    • クラス定義のプログラムの中で,メソッドや属性にアクセスするために this を使う場合がある

    3-1

    public class YourClassNameHere {
        public static double foo(double a) {
            return a * 1.1;
        }
        public static void main(String[] args) {
            System.out.printf("%f\n", foo(100));
            System.out.printf("%f\n", foo(150));
            System.out.printf("%f\n", foo(400));
        }
    }
    

    3-2

    public class YourClassNameHere {
        public static double foo(double a) {
            return a * 1.1;
        }
        public static void main(String[] args) {
            System.out.printf("%f\n", foo(100));
            System.out.printf("%f\n", foo(150));
            System.out.printf("%f\n", foo(400));
        }
    }
    

    3-3

    class Ball {
        double x;
        double y;
        String color;
        public Ball(double x, double y, String color) {
            this.x = x;
            this.y = y;
            this.color = color;
        }
    }
    
    public class YourClassNameHere {
        public static void main(String[] args) {
            Ball a = new Ball(1, 2, "red");
            Ball b = new Ball(3, 4, "green");
        }
    }
    

    3-4

    class Ball {
        double x;
        double y;
        String color;
        public Ball(double x, double y, String color) {
            this.x = x;
            this.y = y;
            this.color = color;
        }
        public double dist() {
            return this.x + this.y;
        }
    }
    
    public class YourClassNameHere {
        public static void main(String[] args) {
            Ball a = new Ball(1, 2, "red");
            Ball b = new Ball(3, 4, "green");
            System.out.printf("%f", a.dist());
        }
    }
    

    3-5

    class Ball {
        double x;
        double y;
        String color;
        public Ball(double x, double y, String color) {
            this.x = x;
            this.y = y;
            this.color = color;
        }
        public double dist() {
            return this.x + this.y;
        }
        public void move(double xx, double yy) {
            this.x = this.x + xx;
            this.y = this.y + yy;
        }
    }
    
    public class YourClassNameHere {
        public static void main(String[] args) {
            Ball a = new Ball(1, 2, "red");
            Ball b = new Ball(3, 4, "green");
            a.move(10, 20);
        }
    }
    
  4. pi-4. コレクション,リスト,マップ,拡張 for 文 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/ZLQL45-2022-01-26-125154

    全体まとめ

    • Java のコレクションには、種類がさまざまある.
    • リストは,順序のあるデータである.要素の削除,挿入によりサイズが増減する
    • マップは,キーと値(バリュー)のペアの集まりである.同じ値のキーは2回以上登場しない
    • リストやマップで処理の繰り返しを行うときは,拡張 For 文が便利である

    4-1

    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class YourClassNameHere {
        public static void main(String[] args) {
          ArrayList m = new ArrayList();
          m.add("15");
          m.add("8");
          m.add("6");
          m.add("32");
          m.add("23");                       
        }
    }
    

    4-3

    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class YourClassNameHere {
        public static void main(String[] args) {
          ArrayList m = new ArrayList();
          m.add("15");
          m.add("8");
          m.add("6");
          m.add("32");
          m.add("23");
          for(String s : m) {
            System.out.printf("%s\n", s);
          }                        
        }
    }
    

    4-4

    import java.util.HashMap;
    import java.util.Iterator;
    
    public class YourClassNameHere {
        public static void main(String[] args) {
          HashMap x = new HashMap();
          x.put(1, "Red");
          x.put(2, "Yellow");
          x.put(3, "Blue");
    
          for(HashMap.Entry e : x.entrySet()) {
            System.out.printf("%d %s\n", e.getKey(), e.getValue());
          }
        }
    }
    

    4-5

    import java.util.HashMap;
    import java.util.Iterator;
    
    class Product {
      String name;
      int price;
      public Product(String name, int price) {
        this.name = name;
        this.price = price;
      }
      public void printout() {
        System.out.printf("%s %d\n", this.name, this.price);
      }
    }
    
    public class YourClassNameHere {
        public static void main(String[] args) {
          HashMap x = new HashMap();
          x.put(1, new Product("orange", 50));
          x.put(2, new Product("apple", 100));
          x.put(3, new Product("apple", 150));
          x.put(4, new Product("banana", 500));
    
          for(HashMap.Entry e : x.entrySet()) {
            System.out.printf("%d ", e.getKey());
            e.getValue().printout();
          }
        }
    }
    
  5. pi-5. メソッド,抽象化 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/5PW9EZ-2022-01-26-125229

    全体まとめ

    • オブジェクトの属性に、不正なデータが入らないように、クラスの設計、メソッドを工夫できる
    • オブジェクトの属性とメソッドを、状態、状態変化のようにとらえることができる場合がある
    • 抽象化にはバリエーションがある。(新しい種類の抽象化を説明します)

    5-1

    class Signal {
        String color;
        public Signal(String color) {
            this.color = color;
        }
    }
    public class YourClassNameHere {
        public static void main(String [] args) {
            Signal s = new Signal("red");
        }
    }
    

    5-1 2つめ

    class Signal {
        String color;
        public Signal() {};
        public void red() { this.color = "red"; };
        public void yellow() { this.color = "yellow"; };
        public void blue() { this.color = "blue"; };
    }
    public class YourClassNameHere {
        public static void main(String [] args) {
            Signal s = new Signal();
            s.red();
        }
    }
    

    5-2

    class Signal {
        String color;
        public Signal() {};
        public void red() { this.color = "red"; };
        public void yellow() { this.color = "yellow"; };
        public void blue() { this.color = "blue"; };
        public void go() {
            if (this.color.equals("blue")) { this.yellow(); }
            else if (this.color.equals("yellow")) { this.red(); }
            else if (this.color.equals("red")) { this.blue(); }
        }
    }
    public class YourClassNameHere {
        public static void main(String [] args) {
            Signal s = new Signal();
            s.red();
            s.go();
        }
    }
    

    5-3

    class Product {
        String s;
        public Product() {};
        public void active() { this.s = "active"; };
        public void deactive() { this.s = "deactive"; };
        public void on() {
            if (this.s.equals("deactive")) { this.active(); }
        }
        public void off() {
            if (this.s.equals("active")) { this.deactive(); }
        }
    }
    public class YourClassNameHere {
        public static void main(String [] args) {
            Product p = new Product();
            p.deactive();
            p.on();
        }
    }
    

    5-4

    public class YourClassNameHere {
        public static double foo(double a) {
          return a * 1.1;
        }
        public static void main(String [] args) {
          double p;
          p = 120;
          System.out.printf("%f\n", foo(p));
          p = 200;
          System.out.printf("%f\n", foo(p));
        }
    }
    

    5-5

    public class YourClassNameHere {
        public static double x(double a) {
          return a * 1.1;
        }
        public static double y(double b) {
            return x(b * 100);
        }
        public static double z(double c) {
            return x(c * 200);
        }
        public static void main(String [] args) {
            System.out.printf("%f\n", y(5));
            System.out.printf("%f\n", y(12));
            System.out.printf("%f\n", z(8));
            System.out.printf("%f\n", z(16));                        
        }
    }
    
  6. pi-6. 継承,クラス階層 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/5X4YM5-2022-01-26-125302

  7. pi-7. クラスの抽象化,メソッドのオーバーライド [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/KD2NDK-2022-01-26-125335

  8. pi-8. コレクション,ジェネリクス [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/ZW4W1K-2022-01-26-125405

  9. pi-9. 多相性,インターフェイス,デザインパターン [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/5R622K-2022-01-26-125441

  10. pi-10. 時間,スリープ,疑似乱数,タイマー [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/K2N2M5-2022-01-26-125513

  11. pi-11. 今までの総まとめ [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/58M215-2022-01-26-125556

  12. pi-12. イベント,イベントハンドラ,ソケット通信 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/K3EGEK-2022-01-26-125634

  13. pi-13. カプセル化,MVCモデル,オブジェクトのマッピング [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/KEL365-2022-01-05-172558

  14. pi-14. プログラムのテスト,アサーション,例外処理 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/5Q9RX5-2022-01-26-125708

  15. pi-15. プログラム設計 [PDF], [パワーポイント]

    ドクセル のURL: https://www.docswell.com/s/6674398749/K7JRN5-2022-01-26-125745

動画

1. プログラミング入門,プログラム実行

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

2. Java 言語の特徴,データの種類,条件分岐,繰り返し

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

3. メソッド,クラス,オブジェクトの生成(コンストラクタ)

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

4. コレクション,リスト,マップ,拡張 for 文(コンストラクタ)

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

実習に役立つソースコード

5. メソッド,抽象化

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

6. 継承,クラス階層

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

7. クラスの抽象化,メソッドのオーバーライド

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

8. コレクション,ジェネリクス

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

9. 多相性,インターフェイス,デザインパターン

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]

10. 時間,スリープ,疑似乱数,マルチスレッド

以上をまとめた資料:[PDF ファイル],[パワーポイントファイル]