---
title: "Designing with Objects: Deciding What Each Class Owns"
description: "Reading a problem description and deciding which things deserve a class, what each one is responsible for, and where the boundaries between them fall. The judgement is about responsibility, not about "
canonical: https://lightmysky.com/learn/computing/designing-with-objects-deciding-what-each-class-owns-mt_De_gpvpOzg
source: https://lightmysky.com/learn/computing/designing-with-objects-deciding-what-each-class-owns-mt_De_gpvpOzg.md
retrieved: 2026-09-12
---

> **Agent view.** This is the Markdown twin of the page, for tools and assistants.
> When to use this site, and the call that answers each job: https://lightmysky.com/agent-instructions.md
> API description (OpenAPI 3.1): https://lightmysky.com/openapi.json · Authentication: https://lightmysky.com/auth.md
> Pricing: https://lightmysky.com/pricing.md · Catalog: https://lightmysky.com/llms.txt · Full catalog: https://lightmysky.com/llms-full.txt
> Every machine-readable file on this domain: https://lightmysky.com/.well-known/ai-catalog.json
> Ask for Markdown with `Accept: text/markdown`, a `.md` address, or `?mode=agent`.

# Designing with Objects: Deciding What Each Class Owns

Reading a problem description and deciding which things deserve a class, what each one is responsible for, and where the boundaries between them fall. The judgement is about responsibility, not about syntax.

Subject: Computing · Area: Programming · Ages 16 to 18
Page: https://lightmysky.com/learn/computing/designing-with-objects-deciding-what-each-class-owns-mt_De_gpvpOzg

## Ready when they can

- Pull candidate classes and responsibilities out of a written problem description
- Defend a boundary: say why one piece of data belongs to this class and not that one
- Spot a class that has taken on two unrelated jobs and split it

## Lesson: Give every class one clear job

Object design starts on paper, not in code. Read the problem story and circle the nouns: those are your candidate classes. Then circle the verbs attached to each noun: those are its responsibilities, the jobs it must do. A library story gives Book, Member and Loan as first candidates.

**Example.** In the library story, borrow belongs to the loan process, not to the book alone, so Loan owns the borrow date and the link between one book and one member. Defend the boundary this way: the data lives with the class that uses it most, and methods sit beside the data they touch. If Book owned every loan date, its data would sprawl across jobs it never performs.

Keep each class to one job you can state in a single sentence. If you cannot finish the sentence without saying and, you likely have two classes wearing one costume. The symptom is a method split: half the methods touch one group of data and half touch another, while the class name no longer fits either half.

**Tip.** Split early while names are still cheap to change. Move each data group plus its methods into its own class and connect them with a clean link. Let the constructor set every new object to a valid starting state, so no instance begins life half built.

**Recap.** Nouns suggest classes, verbs suggest duties, and any class needing and in its job splits in two.

## Practice

8 questions on this page, each with its working shown.

## Needs first

- [Inheritance and Overriding Behaviour](https://lightmysky.com/learn/computing/inheritance-and-overriding-behaviour-mt_wBp7j_B6fj)

## Opens up

- [Interfaces, Coupling and What a Module Promises](https://lightmysky.com/learn/computing/interfaces-coupling-and-what-a-module-promises-mt_EUZyD26WFk)
- [The Project Arc: Building a Program in Stages](https://lightmysky.com/learn/computing/the-project-arc-building-a-program-in-stages-mt_hACOaB3nA_)
- [Reading and Writing Files, Including CSV](https://lightmysky.com/learn/computing/reading-and-writing-files-including-csv-mt_j5qb4FdkdI)
