Mô hình hóa class tốt nghĩa là các class ánh xạ tới các khái niệm miền thực tế, mỗi class với một trách nhiệm rõ ràng, liên hệ qua các quan hệ is-a/has-a trung thực, và phụ thuộc vào các abstraction tại các ranh giới. Không có công thức, nhưng có một quy trình lặp lại được.
Một quy trình thực dụng
1. Tìm các DANH TỪ → các class ứng viên (Order, Customer, Payment)
2. Tìm các ĐỘNG TỪ → các hành vi/method ứng viên (place, refund, ship)
3. Gán mỗi hành vi cho class SỞ HỮU dữ liệu nó cần (cohesion cao)
4. Chọn quan hệ: IS-A (hiếm, phải qua LSP) hay HAS-A (mặc định)
5. Phụ thuộc vào interface tại ranh giới (DIP); inject các dependency dễ biến động
6. Giữ các bất biến bên trong object (encapsulation); ưu tiên immutability cho giá trị
