これは類似問題に過ぎません。本番の試験は内容が異なります。 この

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資料参照)。