# Unit 3 – Advanced Practice: Battery

Extends the basic battery practice. The battery still tracks charge and 
responds to use and recharge, but now `printStatus()` is replaced by a 
`status()` method that returns the label as a value instead of printing it. 
A new `recommendation()` method returns a short suggestion based on the 
charge level.

## Instructions

### Battery

1. The constructor and the `use()` and `recharge()` methods work the same 
   as in the basic practice — apply the same decisions.
2. Implement `status()` so that it returns a label based on the charge 
   level: `"Critical"` (below 10%), `"Low"` (below 30%), 
   `"Good"` (below 70%), or `"Full"` otherwise. Think about how returning 
   a value differs from printing one, and which Kotlin construct lets you 
   express multiple outcomes as a single value.
3. Implement `recommendation()` so that it returns a short suggestion 
   depending on the charge level, e.g. `"Plug in soon!"` or 
   `"Battery is fine."` Choose a threshold that makes sense to you.
4. Implement `describe()` so that it returns a description including the 
   device name, charge level, and status label, e.g. `"Phone: 45% — Good"`. 
   Avoid repeating the conditions — there is already a method that 
   produces the label.

### Testing

1. Create `Battery("Phone")` and call `status()` — expect `"Full"`.
2. Call `describe()` — expect `"Phone: 100% — Full"`.
3. Call `use(75)`, then call both `status()` and `recommendation()` — 
   the label and suggestion should reflect the lower charge.
4. Call `use(20)` — the battery should now be in the Critical range. 
   Verify `status()` and `recommendation()`.
5. Call `recharge()` and confirm everything resets correctly.
