so ich bins nochmal tut mir leid dass ich so viele Fragen habe, doch komme leider selbst nicht drauf was ich hier verändern muss damit meine Unit tests funktionieren ...
Doch nach eurer Hilfe bin ich um einiges schlauer immer ich hoffe ihr könnt mir auch hier helfen ...
Ausgangssituation
Es soll eine Zeitreihe von einer Datenbank (besser: Datenquelle) gelesen werden und der Durchschnitt bzw. der minimale und maximale Wert ermittelt werden. Der Rechner, der die Werte berechnet, muss den Zugriff auf die Datenquelle enthalten.
Das ist meine klasse mit den value und den tagen
Mein Interface
hier die calculator klasse,1) kleine frage am rande wieso implementier ich hier das interface was für ein zweck hat dies ?
Dann hatten wir noch eine vorgegebene testklasse ich schreib mal nur 2 sätze hier raus
und hier dann meine unit tests, das if_calculator poste ich mal nicht da es sonst zu viel wird ...
Noch im allgemeinen wie oben in der calculator klasse, warum implementier ich das interface, was bringt mir dies ?
und warum benutz ich dann ifd, wenn eigentlich nichts im interface ausser die methode steht .. ???
hab mir auch 2 youtube videos gegeben doch begreif es nicht.
So vielen dank für eure Mühe im Vorraus, weiss es zu schätzen :toll::toll::toll:
Doch nach eurer Hilfe bin ich um einiges schlauer immer ich hoffe ihr könnt mir auch hier helfen ...
Ausgangssituation
Es soll eine Zeitreihe von einer Datenbank (besser: Datenquelle) gelesen werden und der Durchschnitt bzw. der minimale und maximale Wert ermittelt werden. Der Rechner, der die Werte berechnet, muss den Zugriff auf die Datenquelle enthalten.
Das ist meine klasse mit den value und den tagen
Java:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CL_Data {
Calendar day;
double value;
public CL_Data(Calendar day, double value){
this.day= day;
this.value= value;
}
public Calendar getDay(){
return day;
}
public double getValue(){
return value;
}
Java:
public interface IF_DataProvider {
public List<CL_Data>getData(Calendar start, Calendar stopp);
}
Java:
public class CL_Calculator implements IF_DataProvider {
IF_DataProvider ifd; //2) ist das eine constructor injection ? oder was ist bringt bzw ist eine contructor injunction ?
public CL_Calculator (IF_DataProvider ifd){
this.ifd = ifd;
}
public double calculateAverage(Calendar start, Calendar stopp){
double result = ifd.getData(start, stopp).get(0).getValue()+ifd.getData(start, stopp).get(1).getValue();
double day = stopp.DAY_OF_YEAR-start.DAY_OF_YEAR;
return result/day;
}
public double calculateMin(Calendar start, Calendar stopp) {
double min = Integer.MAX_VALUE;
if(min>ifd.getData(start, stopp).get(0).getValue()){
min= ifd.getData(start, stopp).get(0).getValue();
}
if(min>ifd.getData(start, stopp).get(1).getValue()){ //3) ist dieser schritt überhaupt notwendig ?
min = ifd.getData(start, stopp).get(1).getValue();
}
return min;
}
public double calculateMax(Calendar start, Calendar stopp) {
double max = Double.MIN_VALUE;
if(max<ifd.getData(start, stopp).get(0).getValue()){
max = ifd.getData(start, stopp).get(0).getValue();
}
if (max<ifd.getData(start, stopp).get(1).getValue()){
max = ifd.getData(start, stopp).get(1).getValue();
}
return max;
}
Java:
public class CL_TestDataProvider implements IF_DataProvider {
private List<CL_Data> dataList;
public CL_TestDataProvider(){
dataList = new ArrayList<CL_Data>();
Calendar day;
CL_Data entry;
day = new GregorianCalendar();
day.set(2013, 4, 1);
entry = new CL_Data(day, 12.5);
dataList.add(entry);
day = new GregorianCalendar();
day.set(2013, 4, 2);
entry = new CL_Data(day, 31.4);
dataList.add(entry);
Java:
public class TestCalculator {
private Calendar start;
private Calendar stop;
private IF_Calculator calculator;
@Before
public void setUp() throws Exception {
start = new GregorianCalendar();
stop = new GregorianCalendar();
calculator = new CL_Calculator(new CL_TestDataProvider()); //der kommilitone hat den schritt so gemacht und bei ihm funktionierts bei mir wird ein cast vom IF_Calculator verlangt ...
}
@Test
public void testCalculateAverage1() {
start.set(2014, 1, 1);
stop.set(2014, 1, 3);
double result = calculator.calculateAverage(start, stop);
assertEquals(0, result, 0);
}
und warum benutz ich dann ifd, wenn eigentlich nichts im interface ausser die methode steht .. ???
hab mir auch 2 youtube videos gegeben doch begreif es nicht.
So vielen dank für eure Mühe im Vorraus, weiss es zu schätzen :toll::toll::toll:
Zuletzt bearbeitet: