Thinking in Object-Oriented Code
Learn how to model real-world problems by bundling data and behavior into self-contained objects. Master the core principles that make software reusable, organized, and resilient to change.
Like Duolingo, but for Thinking in Object-Oriented Code. Tomo turns the whole topic into a game you play five minutes a day, until it actually sticks.
21 levels across 3 sections, about 42 minutes end to end, roughly 8 days at five minutes a day. It moves through Bundling Data and Behavior, Sharing and Adapting Code, and Architecting Clean Collaborations. It starts from scratch.
Free forever · No credit card · iPhone & Android

Key ideas in Thinking in Object-Oriented Code
- Object-oriented programming bundles related data and the actions that modify that data together into a single unit
- Keeping data and functions together prevents mismatched variables and makes code easier to navigate than scattered global scripts
- A class defines the template, rules, and fields that every instance will share
- An object is an actual, concrete instance in memory built using that class template
- Each object created from a class holds its own distinct copy of attribute values
- Modifying an attribute on one object does not alter the attributes of any other object
- Methods are functions attached directly to an object's class
- When a method runs, it operates directly on that specific object's internal variables (often via 'this' or 'self')
- A constructor is a special function that runs automatically whenever a new object is created
- Constructors ensure an object starts in a valid, usable state by setting up initial values immediately
- Public fields let any outside code assign values directly with no gatekeeping
- Direct variable assignment bypasses checks, allowing impossible or corrupted data to exist inside the object
- Marking fields private hides them from direct access outside the class
- Public methods act as controlled doorways for other code to inspect or interact with private data safely
- Mutator (setter) methods validate incoming arguments before overwriting the internal property
- Centralizing rules inside the setter guarantees invalid values are blocked no matter who calls it
You've tried the other tabs
Thirty open tabs. Four facts you actually kept.
You watched. You nodded. By Sunday it was gone.
One answer, then back to scrolling.
Eight weeks. You meant to finish. You didn't.
Tomo gives Thinking in Object-Oriented Code the Duolingo treatment: levels, streaks, and quick quizzes that test what you just learned. That game loop is what the tabs above never had, so it's the one you actually finish.
Here's what playing it feels like
A real question from this course. Take your best guess.
Why bundle a character's health, position, and movement actions together instead of scattering them in separate scripts?
Get it right to open this lesson and 20 more in the app.
Where Thinking in Object-Oriented Code takes you
- 1
Bundling Data and Behavior
- Creating Your First Objects
- Protecting State with Encapsulation
- 2
Sharing and Adapting Code
- Specializing Behavior with Inheritance
- Swapping Implementations with Polymorphism
- 3
Architecting Clean Collaborations
- Assembling Systems with Composition
- Defining Contracts with Interfaces
- Managing How Objects Talk to Each Other
3 sections · 7 units · 21 levels. Built to play, not to enroll.
Tomo is in ChatGPT
Tomo is also a ChatGPT plugin: the same playable courses, built and played inside your chat.
Add Tomo to ChatGPT- What to ask
- “Make me a Tomo course on black holes.” “Turn this chat into a Tomo course.”
- What you get
- Quick questions with instant feedback, hearts and stars, ready to play in about a minute.
- Where it goes
- No sign-up to start. Connect your Tomo account and your streak carries on in the app.
You pick the voice
Thinking in Object-Oriented Code is taught in the Bestie style: your friend who just gets it. Want a different feel? In the app you can spin up the same topic in any of Tomo's teaching styles. Same facts, totally different vibe.
More Technology on Tomo
Modern Front-End Architecture
Move beyond basic HTML and CSS to build scalable, high-performance web applications. Learn to architect components, manage complex state, and optimize the user experience like a professional engineer.
Building Web Apps with Angular
Construct dynamic, modern web interfaces using Google's Angular framework. Learn to bind data, craft reusable components, and fetch live network content with confidence.
Core Computer Science
Bridge the gap between writing basic scripts and understanding real computing systems. Explore how algorithms scale, how operating systems manage memory, how concurrency works, and the physical limits of computation.
Python from Scratch
Learn to write real, working Python code to automate repetitive tasks, analyze information, and build your own applications. Master core syntax, data structures, and practical libraries through hands-on logic.
C++: Foundations and Pitfalls
Build a robust mental model of C++ from your first program to complex systems. Uncover the subtle language traps and memory quirks that catch even experienced programmers.
JavaScript Logic for Web and Mobile
Bridge the gap between basic syntax and professional application architecture. Master the logic patterns required to build responsive, high-performance apps that work seamlessly across every device.
Start Thinking in Object-Oriented Code today.
Download Tomo, search Thinking in Object-Oriented Code, and play your first lesson in under a minute.