オブジェクト指向の練習

「オブジェクト指向の練習」の編集履歴(バックアップ)一覧はこちら

オブジェクト指向の練習」(2011/03/28 (月) 11:10:08) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**テーマ:合コン Gokon.java #highlight(java){{ import java.io.*; //標準出力に使用 import java.util.Random; //乱数を用いるために使用 class Gokon{ final static int N = 3; public static void main(String[] args){ //初期化 Man[] man = new Man[N]; Woman[] woman = new Woman[N]; for(int i=0; i<N; i++){ man[i] = new Man(); woman[i] = new Woman(); } man[0].setInfo("高橋","たくや"); man[1].setInfo("佐藤","しょう"); man[2].setInfo("井上","なおき"); woman[0].setInfo("伊藤","あい"); woman[1].setInfo("三浦","ゆき"); woman[2].setInfo("高木","かな"); //自己紹介 for(int i=0; i<N; i++){ man[i].introduction();} System.out.println(""); for(int i=0; i<N; i++){ woman[i].introduction();} //適当にカップル成立 Random rnd = new Random(); Man kare = man[rnd.nextInt(N)]; Woman kano =woman[rnd.nextInt(N)]; System.out.format("\n%sさんと%sさんが付き合うことになりました。\n\n",kare.getName(),kano.getName()); //一定確率で子供ができる int s = rnd.nextInt(10); int[] condom = new int[5]; try{ condom[s] = 19; } catch(Exception e){ System.out.println("子供ができました。"); Child child = kano.importDna(kare.exportDna()); child.naku(); child.showDna(); } } } //インターフェイス interface iHuman{ //抽象メソッド :インターフェイスを使用するクラスでは、この関数を実装する必要がある。 void introduction(); } interface iMan{ Dna exportDna(); } interface iWoman{ Child importDna(Dna dna); } interface iChild{ void naku(); } //遺伝子情報クラス class Dna{ private int height; //身長 150 - 190 private int weight; //体重 40 - 80 private int color; //肌の色 0 - 100 //アクセッサ public int getHeight(){ return height;} public int getWeight(){ return weight;} public int getColor(){ return color;} //コンストラクタ public Dna(){ Random rnd = new Random(); this.height = rnd.nextInt(40)+150; this.weight = rnd.nextInt(40)+40; this.color = rnd.nextInt(100); } public Dna(int height, int weight, int color){ this.height = height; this.weight = weight; this.color = color; } public Dna(Dna d1, Dna d2){ this.height = (d1.height + d2.height)/2; this.weight=(d1.weight + d2.weight)/2; this.color=(d1.color + d2.color)/2; } } //人間クラス :これは抽象クラスなので直接インスタンス(オブジェクト)を生成することはできない abstract class Human implements iHuman{ private String lastName; //名字 private String firstName; //名前 private int age; //年齢 20 - 50 private int nenshu; //年収 0 - 1000 private int miryoku; //魅力 0 - 100 private Dna dna; //遺伝子情報 public Human(){} public Dna getDna(){return this.dna;} public String getName(){return (lastName+firstName);} public void introduction(){ System.out.format("%s%s(年齢:%3d、年収%3d、魅力%3d、身長%3d、体重%3d、肌の色%3d)\n", lastName,firstName,age,nenshu,miryoku,dna.getHeight(),dna.getWeight(),dna.getColor()); } public void showDna(){ System.out.format("きっとこんな感じに成長します:身長%3d、体重%3d、肌の色%3d\n",dna.getHeight(),dna.getWeight(),dna.getColor()); } public void setInfo(String lastName, String firstName){ this.lastName = lastName; this.firstName = firstName; Random rnd = new Random(); this.age = rnd.nextInt(30)+20; this.nenshu = rnd.nextInt(1000); this.miryoku = rnd.nextInt(100); this.dna = new Dna(); } public void setInfo(Dna dna){ this.dna = dna; } public void setInfo(String lastName, String firstName, int age, int nenshu, int miryoku, Dna dna){ this.lastName = lastName; this.firstName = firstName; this.age = age; this.nenshu = nenshu; this.miryoku = miryoku; this.dna = dna; } } //男性クラス class Man extends Human implements iMan{ public Dna exportDna(){ return getDna(); } } //女性クラス class Woman extends Human implements iWoman{ public Child importDna(Dna man_dna){ Random rnd = new Random(); boolean isMan = rnd.nextBoolean(); if(isMan) System.out.println("男の子です。"); else System.out.println("女の子です。"); Child child = new Child(); child.setInfo(new Dna(this.getDna(), man_dna)); return child; } } //子供クラス class Child extends Human implements iChild{ public void naku(){ System.out.println("おぎゃー"); } } }}
**テーマ:合コン #ref(Gokon.java) #highlight(java){{ import java.io.*; //標準出力に使用 import java.util.Random; //乱数を用いるために使用 class Gokon{ final static int N = 3; public static void main(String[] args){ //初期化 Man[] man = new Man[N]; Woman[] woman = new Woman[N]; for(int i=0; i<N; i++){ man[i] = new Man(); woman[i] = new Woman(); } man[0].setInfo("高橋","たくや"); man[1].setInfo("佐藤","しょう"); man[2].setInfo("井上","なおき"); woman[0].setInfo("伊藤","あい"); woman[1].setInfo("三浦","ゆき"); woman[2].setInfo("高木","かな"); //自己紹介 for(int i=0; i<N; i++){ man[i].introduction();} System.out.println(""); for(int i=0; i<N; i++){ woman[i].introduction();} //適当にカップル成立 Random rnd = new Random(); Man kare = man[rnd.nextInt(N)]; Woman kano =woman[rnd.nextInt(N)]; System.out.format("\n%sさんと%sさんが付き合うことになりました。\n\n",kare.getName(),kano.getName()); //一定確率で子供ができる int s = rnd.nextInt(10); int[] condom = new int[5]; try{ condom[s] = 19; } catch(Exception e){ System.out.println("子供ができました。"); Child child = kano.importDna(kare.exportDna()); child.naku(); child.showDna(); } } } //インターフェイス interface iHuman{ //抽象メソッド :インターフェイスを使用するクラスでは、この関数を実装する必要がある。 void introduction(); } interface iMan{ Dna exportDna(); } interface iWoman{ Child importDna(Dna dna); } interface iChild{ void naku(); } //遺伝子情報クラス class Dna{ private int height; //身長 150 - 190 private int weight; //体重 40 - 80 private int color; //肌の色 0 - 100 //アクセッサ public int getHeight(){ return height;} public int getWeight(){ return weight;} public int getColor(){ return color;} //コンストラクタ public Dna(){ Random rnd = new Random(); this.height = rnd.nextInt(40)+150; this.weight = rnd.nextInt(40)+40; this.color = rnd.nextInt(100); } public Dna(int height, int weight, int color){ this.height = height; this.weight = weight; this.color = color; } public Dna(Dna d1, Dna d2){ this.height = (d1.height + d2.height)/2; this.weight=(d1.weight + d2.weight)/2; this.color=(d1.color + d2.color)/2; } } //人間クラス :これは抽象クラスなので直接インスタンス(オブジェクト)を生成することはできない abstract class Human implements iHuman{ private String lastName; //名字 private String firstName; //名前 private int age; //年齢 20 - 50 private int nenshu; //年収 0 - 1000 private int miryoku; //魅力 0 - 100 private Dna dna; //遺伝子情報 public Human(){} public Dna getDna(){return this.dna;} public String getName(){return (lastName+firstName);} public void introduction(){ System.out.format("%s%s(年齢:%3d、年収%3d、魅力%3d、身長%3d、体重%3d、肌の色%3d)\n", lastName,firstName,age,nenshu,miryoku,dna.getHeight(),dna.getWeight(),dna.getColor()); } public void showDna(){ System.out.format("きっとこんな感じに成長します:身長%3d、体重%3d、肌の色%3d\n",dna.getHeight(),dna.getWeight(),dna.getColor()); } public void setInfo(String lastName, String firstName){ this.lastName = lastName; this.firstName = firstName; Random rnd = new Random(); this.age = rnd.nextInt(30)+20; this.nenshu = rnd.nextInt(1000); this.miryoku = rnd.nextInt(100); this.dna = new Dna(); } public void setInfo(Dna dna){ this.dna = dna; } public void setInfo(String lastName, String firstName, int age, int nenshu, int miryoku, Dna dna){ this.lastName = lastName; this.firstName = firstName; this.age = age; this.nenshu = nenshu; this.miryoku = miryoku; this.dna = dna; } } //男性クラス class Man extends Human implements iMan{ public Dna exportDna(){ return getDna(); } } //女性クラス class Woman extends Human implements iWoman{ public Child importDna(Dna man_dna){ Random rnd = new Random(); boolean isMan = rnd.nextBoolean(); if(isMan) System.out.println("男の子です。"); else System.out.println("女の子です。"); Child child = new Child(); child.setInfo(new Dna(this.getDna(), man_dna)); return child; } } //子供クラス class Child extends Human implements iChild{ public void naku(){ System.out.println("おぎゃー"); } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: