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

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -