1( 95 ) (RPG) (1) (3) (a)RPG public RPGCharacter RPGCharacter.java com.tuis.rpg.character RPGCharacter int private static num( 0) private int hp private int mp num public static int getNum( ) hp public int getHp( ) hp public void setHp( int hp ) mp public int getMp( ) mp public void setMp( int mp ) c RPGCharacter public void attack( RPGCharacter c ) damage hp public void defence( int damage ) hp, mp num 1 public RPGCharacter( int hp, int mp ) public (b) Drawable Drawable void draw( ) com.tuis.rpg.system public Knight (RPGCharacter com.tuis.rpg.character RPGCharacter hp, mp Knight( int hp, int mp ) hp 1/5 ( c ) defence ( damage ) hp 1/5 public defence " " System.out.println (c) (d) Drawable (1) import Test public public 2 (5 draw Mage.java public public attack hp 0 defence (a) (d) main letItDraw( ) attack hp ) public Test.java draw 2 (1)-(a) (d) private Test.java (e) Test (2) RPGCharacter, Drawable, Knight, Mage (3) Test Knight.java 0 Drawable RPGCharacter hp, mp Mage( int hp, int mp ) mp 1/5 ( c ) defence ( damage ) mp 1/5 mp 1 public " " System.out.println public ) public public Mage (RPGCharacter com.tuis.rpg.character (e) Drawable.java package 2 (2) letItFight( ) Knight Knight Mage Mage (3) ) ( ) ( 1 ) RPGCharacter (4) これは類似問題に過ぎません。本番の試験は内容が異なります。 この類似問題に出ていなくても,試験範囲の内容なら出題されます。 配点なども,実際の試験とは違います。あくまで, 『これぐらいの内容が問われる』 という目安として考えて下さい。 1 http://www.ohshiro.tuis.ac.jp/%7Eohshiro/sc/ 1 (1)-(a) RPGCharacter.java 30 ( ) 部分点4 2点 package com.tuis.rpg.character; 10点 public class Knight extends RPGCharacter implements Drawable { 部分点4 部分点4 public abstract class RPGCharacter { 6点 public Knight( int hp, int mp ) { super( hp, mp ); private static int num = 0; } private int hp; private int mp; public void attack( RPGCharacter c ) { c.defence( getHp() / 5 ); public static int getNum( ) { return num; 各 2 点 (8) } 各 2 点 (22) } public int getHp( ) { public void defence( int damage ) { int d = damage - getHp()/5; return hp; ※アクセッサ をちゃんと 使用してい るかに注意 (左下線部) if( d >= 0 ) { setHp( getHp() - d ); } public void setHp( int hp ) { this.hp = hp; } } } public void draw() { System.out.println( " } public int getMp( ) { return mp; } public void setMp( int mp ) { " ); } this.mp = mp; (1)-(d) Mage.java } public abstract void attack( RPGCharacter c ); 20 ( 1点 package com.tuis.rpg.character; import public abstract void defence( int damage ); ) com.tuis.rpg.system.Drawable; 1点 部分点4 10点 public class Mage extends RPGCharacter public RPGCharacter( int hp, int mp ) { this.hp = hp; this.mp = mp; num++; } implements Drawable { 部分点4 public Mage( int hp, int mp ) { super( hp, mp ); } } public void attack( RPGCharacter c ) { c.defence( getMp() / 5 ); } (1)-(b) Drawable.java 10 ( public void defence( int damage ) { int d = damage - getMp()/5; if( d >= 0 ) { 2点 package com.tuis.rpg.system; 部分点1 ) 部分点4 setHp( getHp() - d ); setMp( getMp() - 1 ); 6点 public interface Drawable { 2点 void draw( ); } } } (1)-(c) Knight.java 20 ( package com.tuis.rpg.character; import com.tuis.rpg.system.Drawable; public void draw() { System.out.println( " ) 1点 1点 } } " ); 各 2 点 (8) ※アクセッサ をちゃんと 使用してい るかに注意 (左下線部) Test.java (e) static void letItDraw( Drawable d ) { d.draw(); } import com.tuis.rpg.character.RPGCharacter; import com.tuis.rpg.system.Drawable; public static void main( String args[] ) { Knight k = new Knight( 50, 10 ); Mage m = new Mage( 30, 40 ); letItDraw( k ); letItDraw( m ); System.out.println( " + RPGCharacter.getNum() ); letItFight( k, m ); } public class Test { static void letItFight( RPGCharacter c1, RPGCharacter c2 ) { while( c1.getHp() > 0 && c2.getHp() > 0 ) { c1.attack( c2 ); c2.attack( c1 ); } } " } 1 (2) 10 ( ) RPGCharacter Drawable 3点 2点 3点 Knight 2点 Mage ※矢印の方向を間違える,余計な矢印など各-1減点。 1 (3) 5 ( ) 2点 ※「Knight と Mage が RPGCharacter としても扱われる」ことが書かれていればOK。 Knight RPGCharacter Mage Mage RPGCharacter RPGCharacter Knight letItFight RPGCharacter Drawable Drawable Drawable letItDraw Mage Knight Knight Mage Knight Mage 2点 ※「Knightと Mage が Drawable としても扱われる」ことが書かれていればOK。 +1点 上記の関係が成立している理由として,「KnightやMageがRPGCharacterを継承している」または「KnightやMageがDrawable を実装している」旨のどちらか一方でも書かれていれば,十分な説明が出来てると判断して1点加点する。 2 (4) 5 ( ) 2点 ※考え方の部分。同様の考え方が述べられていればOK。 RPGCharacter private hp. mp. num public getNum(), getHp(), setHp(), getMp(), setMp(), attack(), defence(), RPGCharacter() 3点 ※メンバの欠け,誤ったメンバなどは各-1減点(つまり3つメンバが欠けていたら0点となってしまう)。 ※なお,より厳密には,public なメソッドのボディ部分も実装部と言える(受業Web資料参照)。
© Copyright 2024 ExpyDoc