I'm currently designing a communications system and would like some advice on my OOP approach.
It's very simple - it takes data off a serial port, divides that data up into messages and then parses those messages into something the rest of the code can use. For example, a message might be "LightSensorReport", which contains data gathered from several sensors; the data in this case is just integer values, but there are cases where the data is more complex.
So, I think of the serial port as a class that implements a stream interface. My class for parsing the stream is then responsible for taking data off that stream, figuring out where message boundaries are and then sending those messages to another class which converts the binary data of the message into an object such as "LightSensorReport".
My question has come from thinking about that final data class and what it actually is - the "LightSensorReport" in this case. To me, it's not quite an object - it only has state, but it doesn't do anything to that data (so it's really a data structure). Is this a smell? Does this fit with good OOP?
My rationale for making LightSensorReport just data is just that - it's data only. It doesn't really DO anything on it's own, but other classes would use it (for example, another class might have to serialize it to a different protocol format; I wouldn't place this responsibility on LightSensorReport because it doesn't know anything about binary protocols).
So, does this kind of class fit with good OOP design or is it a sign that I'm thinking about something the wrong way?