Создан заказ №4030676
20 мая 2019
Классы и объекты, Ассоциация классов, Наследование и полиморфизм
Как заказчик описал требования к работе:
1. Классы и объекты
Данкласс
class BigNum {
static final intbase = 100;
static final intlen= 4;
byte [] digits;
BigNum(){
digits = new byte[len];
}
BigNum(long x){
this();
fromLong(x);
}
BigNum(BigNumbigNum){
digits = bigNum.digits.clone();
}
void fromLong(long x){
for(inti=0; x>0;
i++){
digits[i] = (byte) (x % base);
x = x / base;
}
}
void add(BigNum x){
byte c=0;
intsum;
for(inti=0; i0 &digits;[i]==0)
i--;
while(i>=0) {
String d = ((Byte) digits[i--]).toString();
if(d.length()==1)
d = "0" + d;
result = result + d;
}
if(result.charAt(0)=='0')
return result.substring(1);
return result;
}
}
Итестовыйкласс:
import org.junit.Test;
import static org.junit.Assert.*;
public class BigNumTest {
@Test
public void shift() throws Exception { }
@Test
public void isLarger() throws Exception { }
@Test
public void mul() throws Exception { }
@Test
public void sub() throws Exception {
}
@Test
public void add() throws Exception {
BigNum x = new BigNum(55);
x.add(x);
assertEquals(x.toString(), "110");
x.add(new BigNum(9999));
assertEquals(x.toString(), "10109");
}
@Test
public void toStringTest() throws Exception {
assertEquals(new BigNum(10).toString(), "10");
assertEquals(new BigNum(9999).toString(), "9999");
assertEquals(new BigNum(10203).toString(), "10203");
BigNum x = new BigNum(1);
long y = Integer.parseInt(x.toString());
assertEquals(y, 1);
}
}
Реализовать не реализованные методы и тесты.
2. Ассоциация классов
Дан класс
class BigSignNum {
private BigNumnum;
private booleanisPositive;
BigSignNum(long x) {
if(x>0) {
num= new BigNum(x);
isPositive= true;
} else {
num= new BigNum(-x);
isPositive= false;
}
}
BigSignNum(BigSignNum x) {
num= new BigNum(x.num);
isPositive= x.isPositive;
}
void add(BigSignNum x){
if(x.isPositive)
if(isPositive)
num.add(x.num);
else
if(num.isLarger(x.num))
num.sub(x.num);
else {
BigNumtmp = new BigNum(x.num);
tmp.sub(num);
num= new BigNum(tmp);
isPositive= false;
}
else {
BigSignNumtmp = new BigSignNum(x);
tmp.isPositive= true;
sub(tmp);
}
}
void sub(BigSignNum x){}
void mul(BigSignNum x, intshift){}
public String toString(){
if(isPositive)
return num.toString();
else
return "-"+num.toString();
}
}
Итестовыйкласс:
import org.junit.Test;
import static org.junit.Assert.*;
public class BigSignNumTest {
@Test
public void mul() throws Exception { }
@Test
public void add() throws Exception {
BigSignNum x = new BigSignNum(2);
x.add(new BigSignNum(2));
assertEquals(x.toString(),"4");
x.add(new BigSignNum(-8));
assertEquals(x.toString(),"-4");
x.add(new BigSignNum(2));
assertEquals(x.toString(),"-2");
x.add(new BigSignNum(-8));
assertEquals(x.toString(),"-10");
}
@Test
public void sub() throws Exception { }
@Test
public void toStringTest() throws Exception {
assertEquals(new BigSignNum(10).toString(), "10");
assertEquals(new BigSignNum(-9999).toString(), "-9999");
assertEquals(new BigSignNum(-10203).toString(), "-10203");
BigSignNum x = new BigSignNum(-11);
long y = Integer.parseInt(x.toString());
assertEquals(y, -11);
}
}
Реализовать не реализованные методы и тесты.
3. Наследование и полиморфизм
Данкласс
class BigFloatextends BigNum{
private booleanisPositive;
private long shift;
BigFloat(float x){
super();
shift = -(long) (log10(1000000/abs(x))/2);
long xl = (long) (x*pow(100, -shift));
if(x>0)
isPositive= true;
else {
xl = -xl;
isPositive= false;
}
fromLong(xl);
normalize();
}
BigFloat(BigFloat x){
super(x);
isPositive= x.isPositive;
shift = x.shift;
}
private void calcShift(BigFloattmp){
if(shift =0 &&digits;[i]==0; i--)
;
shift(len-i-1);
shift = shift - len+ i + 1;
}
void add(BigFloat x) {
BigFloattmp = new BigFloat(x);
if (tmp.isPositive) {
calcShift(tmp);
if (isPositive)
super.add(tmp);
else if (super.isLarger(tmp))
super.sub(tmp);
else {
((BigNum)tmp).sub(this);
digits = tmp.digits.clone();
shift = tmp.shift;
isPositive= false;
}
normalize();
} else {
tmp.isPositive= true;
sub(tmp);
}
}
void sub(BigFloat x) {
}
void mul(BigFloat x){
}
public String toString(){
String sign = isPositive?"":"-";
return sign + super.toString() + "e" + ((Long)(shift*2)).toString();
}
}
И тестовыйкласс:
public class BigFloatTest {
@Test
public void normalize() throws Exception {
BigFloat x = new BigFloat(100);
x.sub(new BigFloat(99.99f));
x.normalize();
float y = Float.parseFloat(x.toString());
assertTrue(abs(y - 0.01)
подробнее
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
21 мая 2019
Заказ завершен, заказчик получил финальный файл с работой
5
Классы и объекты, Ассоциация классов, Наследование и полиморфизм.docx
2020-06-30 20:12
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Отличный автор. Всегда на связи. Сделал работу качественно и по адекватной цене, все показал и рассказал. Всем рекомендую