Top > オブジェクト指向を学ぶ

オブジェクト指向を学ぶ

オブジェクト指向を使用しない構造化プログラミングの例

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 
-
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
-
-
|
-
|
-
|
!
|
!
!
!
package p1;
/** オブジェクト指向を私用しない場合 */
public class Main {
    // メイン処理
    public static void main(String[] args) {
 
        System.out.println("1.書店1に小説とコミックを置く");
        
        //小説(名前、作家、価格、在庫数)
        String[] novelA = {"小説", "小説A", "あいうえお", "100", "1,700", "3"};
        String[] novelB = {"小説", "小説B", "かきくけこ", "200", "1,550", "8"};
        String[] novelC = {"小説", "小説C", "さしすせそ", "300", "2,300", "10"};
        
        //コミック(名前、作者、発売日、価格、在庫数)
        String[] comicA = {"コミック", "コミックA", "ABCDE", "2007/01/01", "350", "20"};
        String[] comicB = {"コミック", "コミックB", "FGHIJ", "2007/11/21", "580", "30"};
        String[] comicC = {"コミック", "コミックC", "KLMNO", "2008/01/15", "230", "45"};
 
        //書店に追加
        Object[] bookStore1 ={novelA, novelB, novelC, comicA, comicB, comicC};
        System.out.println();
        
        System.out.println("2.書店1の在庫一覧を表示");
        printBook(bookStore1);
        System.out.println();
        
    }
    
    //一覧出力
    private static void printBook(Object[] bookStore1) {
        for (int i=0; i<bookStore1.length; i++) {
            Object[] obj = (Object[]) bookStore1[i];
            if (obj[0].equals("小説")) {
                System.out.print("■小説 " + obj[1] + "  [作家:" + obj[2] + "、価格" + obj[3] + "円]");
            } else if (obj[0].equals("コミック")) {
                System.out.print("■コミック " + obj[1] + "  [作者:" + obj[2] + "、発売日:" + obj[3] + "、価格:" + obj[4] + "円]");
            }
            System.out.println("\t在庫数量:" + obj[5]);
        }
    }
}

小説・コミック・書店をクラス分けしてプログラムを構成

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 
-
|
|
|
|
|
-
|
|
|
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
!
package p2;
/* 小説を表すクラス */
public class Novel {
    private String name;            // 名前
    private String novelist;        // 作家
    private double price;            // 価格
    private int stock_qty;            // 在庫数
    
    public Novel(String name, String novelist, double price, int stock_qty) {
        this.name = name;
        this.novelist = novelist;
        this.price = price;
        this.stock_qty = stock_qty;
    }
    
    /** 名前の取得 */
    public String getName() {
        return name;
    }
    
    /* 在庫数量の取得 */
    public int getStock_qty() {
        return stock_qty;
    }
    
    /* 入庫 */
    public void addStock_qty(int quantity) {
        this.stock_qty += quantity;
    }
    
    /* 出庫 */
    public void subStock_qty(int quantity) {
        this.stock_qty -= quantity;
    }
    
    /* 小説情報 */
    public String printBook(){
        return "■小説 " + name + "  [作家:" + novelist + "、価格" + price + "円]";
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 
 
-
|
|
|
|
|
|
-
|
|
|
|
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
!
package p2;
/* コミックを表すクラス */
public class Comic {
    private String name;            // 名前
    private String author;            // 作者
    private String sales_date;        // 発行日
    private double price;            // 価格
    private int stock_qty;            // 在庫数
    
    public Comic(String name, String author, String sales_date, double price, int stock_qty) {
        this.name = name;
        this.author = author;
        this.sales_date = sales_date;
        this.price = price;
        this.stock_qty = stock_qty;
    }
    
    /** 名前の取得 */
    public String getName() {
        return name;
    }
    
    /* 在庫数量の取得 */
    public int getStock_qty() {
        return stock_qty;
    }
    
    /* 入庫 */
    public void addStock_qty(int quantity) {
        this.stock_qty += quantity;
    }
    
    /* 出庫 */
    public void subStock_qty(int quantity) {
        this.stock_qty -= quantity;
    }
    
    /* コミック情報 */
    public String printBook(){
        return "■コミック " + name + "  [作者:" + author + "、発売日:" + sales_date + "、価格:" + price + "円]";
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 
 
 
 
 
-
|
|
|
-
|
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
-
|
|
!
|
|
-
|
|
!
!
!
package p2;
 
import java.util.ArrayList;
import java.util.Iterator;
 
/* 書店を表すクラス */
public class BookStore {
    private ArrayList novelList;
    private ArrayList comicList;
    
    public BookStore() {
        novelList = new ArrayList();
        comicList = new ArrayList();
    }
    
    /* 小説の追加 */
    public void addNovel(Novel novel) {
        novelList.add(novel);
    }
 
    /* コミックの追加 */
    public void addComic(Comic comic) {
        comicList.add(comic);
    }
    
    /* 書店にある本の在庫一覧 */
    public void printBookList() {
        Iterator it_n = novelList.iterator();
        while (it_n.hasNext()) {
            Novel novel = (Novel) it_n.next();
            System.out.println(novel.printBook() + "\t在庫数量" + novel.getStock_qty());
        }
        
        Iterator it_c = comicList.iterator();
        while (it_c.hasNext()) {
            Comic comic = (Comic) it_c.next();
            System.out.println(comic.printBook() + "\t在庫数量" + comic.getStock_qty());
        }
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 
-
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
!
package p2;
/** オブジェクト指向を私用しない場合 */
public class ZMain {
    // メイン処理
    public static void main(String[] args) {
 
        System.out.println("1.書店1に小説とコミックを置く");
        BookStore bookStore1 = new BookStore();
 
        
        //小説(名前、作家、価格、在庫数)
        Novel novelA = new Novel("小説A", "あいうえお", 1700, 3);
        Novel novelB = new Novel("小説B", "かきくけこ", 1550, 8);
        Novel novelC = new Novel("小説C", "さしすせそ", 2300, 10);
        
        //コミック(名前、作者、発売日、価格、在庫数)
        Comic comicA = new Comic("コミックA", "ABCDE", "2007/01/01", 350, 20);
        Comic comicB = new Comic("コミックB", "FGHIJ", "2007/11/21", 580, 30);
        Comic comicC = new Comic("コミックC", "KLMNO", "2008/01/15", 230, 45);
 
        //書店に追加
        bookStore1.addNovel(novelA);
        bookStore1.addNovel(novelB);
        bookStore1.addNovel(novelC);
 
        bookStore1.addComic(comicA);
        bookStore1.addComic(comicB);
        bookStore1.addComic(comicC);
        System.out.println();
        
        
        System.out.println("2.書店1の在庫一覧を表示");
        bookStore1.printBookList();
        System.out.println();
        
        System.out.println("3.小説Aを1冊販売、小説Cを3冊販売、コミックBを20冊入荷");
        novelA.subStock_qty(1);
        novelC.subStock_qty(3);
        comicB.addStock_qty(20);
        System.out.println();
        
        System.out.println("4.書店1の在庫一覧を表示");
        bookStore1.printBookList();
        System.out.println();
    }
}

小説とコミックをさらに抽象化した本クラスを作成

  • 小説クラスは本クラスを継承する
  • コミッククラスは本クラスを継承する
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 
 
-
|
|
|
-
|
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
-
|
!
|
|
|
!
package p3;
 
public abstract class Book {
    protected String name;
    protected int stock_qty;
    
    protected Book(String name, int stock_qty) {
        this.name = name;
        this.stock_qty = stock_qty;
    }
    
    /** 名称の取得 */
    public String getName() {
        return name;
    }
    
    /** 在庫数の取得 */
    public int getStock_qty() {
        return stock_qty;
    }
    
    /** 入庫 */
    public void addStock_qty(int quantity) {
        this.stock_qty += quantity;
    }
    
    /** 出庫 */
    public void subStock_qty(int quantity) {
        this.stock_qty -= quantity;
    }
    
    /** 本の情報出力 */
    public abstract String printBook();
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 
 
-
|
|
|
-
|
|
|
!
|
|
-
|
!
!
package p3;
/* 小説を表すクラス */
public class Novel extends Book {
    private String novelist;        // 作家
    private double price;            // 価格
    
    public Novel(String name, String novelist, double price, int stock_qty) {
        super(name, stock_qty);
        this.novelist = novelist;
        this.price = price;
    }
    
    /* 小説情報 */
    public String printBook(){
        return "■小説 " + name + "  [作家:" + novelist + "、価格" + price + "円]";
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 
-
|
|
|
|
-
|
|
|
|
!
|
|
-
|
!
!
package p3;
/* コミックを表すクラス */
public class Comic extends Book {
    private String author;            // 作者
    private String sales_date;        // 発行日
    private double price;            // 価格
    
    public Comic(String name, String author, String sales_date, double price, int stock_qty) {
        super(name, stock_qty);
        this.author = author;
        this.sales_date = sales_date;
        this.price = price;
    }
    
    /* コミック情報 */
    public String printBook(){
        return "■コミック " + name + "  [作者:" + author + "、発売日:" + sales_date + "、価格:" + price + "円]";
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 
 
 
 
 
-
|
|
-
|
!
|
|
-
|
!
|
|
-
|
-
|
|
!
!
!
package p3;
 
import java.util.ArrayList;
import java.util.Iterator;
 
/* 書店を表すクラス */
public class BookStore {
    private ArrayList bookList;
    
    public BookStore() {
        bookList = new ArrayList();
    }
    
    /* 本の追加 */
    public void addBook(Book book) {
        bookList.add(book);
    }
 
    /* 書店にある本の在庫一覧 */
    public void printBookList() {
        Iterator it_n = bookList.iterator();
        while (it_n.hasNext()) {
            Book book = (Book) it_n.next();
            System.out.println(book.printBook() + "\t在庫数量" + book.getStock_qty());
        }
    }
}
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 
-
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
!
package p3;
/** オブジェクト指向を私用しない場合 */
public class ZMain {
    // メイン処理
    public static void main(String[] args) {
 
        System.out.println("1.書店1に小説とコミックを置く");
        BookStore bookStore1 = new BookStore();
 
        
        //小説(名前、作家、価格、在庫数)
        Novel novelA = new Novel("新宿鮫", "大沢在昌", 1700, 3);
        Novel novelB = new Novel("LOST SEASON2 Vol.3", "Kate.Hyugo", 1550, 8);
        Novel novelC = new Novel("羅生門", "芥川龍之介", 2300, 10);
        
        //コミック(名前、作者、発売日、価格、在庫数)
        Comic comicA = new Comic("風の大地 43巻", "和田太郎", "2007/01/01", 350, 20);
        Comic comicB = new Comic("ワンピース 35巻", "長和太郎", "2007/11/21", 580, 30);
        Comic comicC = new Comic("DEATH NOTE", "上田太郎", "2008/01/15", 230, 45);
 
        //書店に追加
        bookStore1.addBook(novelA);
        bookStore1.addBook(novelB);
        bookStore1.addBook(novelC);
 
        bookStore1.addBook(comicA);
        bookStore1.addBook(comicB);
        bookStore1.addBook(comicC);
        System.out.println();
        
        
        System.out.println("2.書店1の在庫一覧を表示");
        bookStore1.printBookList();
        System.out.println();
        
        System.out.println("3.小説Aを1冊販売、小説Cを3冊販売、コミックBを20冊入荷");
        novelA.subStock_qty(1);
        novelC.subStock_qty(3);
        comicB.addStock_qty(20);
        System.out.println();
        
        System.out.println("4.書店1の在庫一覧を表示");
        bookStore1.printBookList();
        System.out.println();
    }
}

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2008-01-17 (木) 22:15:45 (4204d)