oop - Java data structure design for data of different types represented by timescale -


i'm trying suss out object oriented design , have come across issue i'm finding weird, , i'm not sure of strategy structure data.

the api i'm accessing provides data follows:

<pair_name> = pair name     = ask array(<price>, <whole lot volume>, <lot volume>),     b = bid array(<price>, <whole lot volume>, <lot volume>),     c = last trade closed array(<price>, <lot volume>),     v = volume array(<today>, <last 24 hours>),     p = volume weighted average price array(<today>, <last 24 hours>),     t = number of trades array(<today>, <last 24 hours>),     l = low array(<today>, <last 24 hours>),     h = high array(<today>, <last 24 hours>),     o = today's opening price 

source: https://www.kraken.com/help/api#get-tradable-pairs

the bit i'm having trouble working out how handle array(<today>, <last 24 hours>) bits. i'd have structure conformed each fits into. i'd separate them out in volume, totaltrades , highlow objects (or that) type today/last 24 hours varies (sometimes int double).

i thought i'd try either this:

public abstract class daytimeframedata {     protected object today;     protected object lasttwentyfourhours; } 

or this:

public interface daytimeframedata {     object today = null;     object lasttwentyfourhours = null; } 

then extending/implementing 1 of each data type. i'm not sure these make sense @ all.

can offer me pointers how go structuring this, please?

an interface specifies methods not fields, can't use approach. use this:

public class daytimeframedata {     protected double today;     protected double lasttwentyfourhours; } 

since double can represent integer. use objects of type fields.

public class pairinfo {     protected daytimeframedata volume;     protected daytimeframedata numberoftrades;     protected daytimeframedata low; } 

however, if each of these needs own specific methods, may indeed make daytimeframedata abstract , extend each type. example:

public class numberoftrades extends daytimeframedata {     /* methods , fields specific numberoftrades */ } 

if you'd restrict types of fields double or integer specific implementations, use generics:

public abstract class daytimeframedata<t extends number, l extends number> {     protected t today;     protected l lasttwentyfourhours; } 

an implementation can specify types allowed.

public class numberoftrades extends daytimeframedata<integer, double> {     /* methods , fields specific numberoftrades */ } 

the above state today value integer, , lasttwentyfourhours value double. if both need same type, can 1 type parameter on daytimeframedata. note need use wrapper types (double, integer) instead of primitive types (double, int) in case.


Comments

Popular posts from this blog

'hasOwnProperty' in javascript -

python - ValueError: No axis named 1 for object type <class 'pandas.core.series.Series'> -

java - How to provide dependency injections in Eclipse RCP 3.x? -