# OOAD: give each object a job

Model behavior and ownership before drawing a forest of classes.

ID: ooad
Language: en
Revision: 2
Translation source revision: 2
Canonical: https://jujin.dev/en/guides/ooad/

## Concept

Object-oriented analysis identifies domain concepts and rules. Design assigns those rules to collaborating objects.

## Example

Order owns confirmation rules; Inventory owns stock; checkout coordinates them; payment infrastructure contacts the provider.

## When to choose it

A transaction script is simple. A domain model centralizes rules but adds concepts and indirection. Start with one use case and a responsibility table. Name who handles failure and rollback. [Microsoft](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/microservice-domain-model)
