The second approach is immutable but actually shifts the responsibility of updatingtracking the remaining part outside of the class. The first approach is mutable (am i correct? because its internal state (the remaining part is mutable), but it encapsulates the logic and just need a call to DrawTextInBox to draw the remaining part.