
When I asked Gemini to look up books and explanations about object-oriented programming, how accurate were they?
- object-oriented programming
- OOP
- Gemini
- AI
1. Introduction
When researching about object-oriented programming, you will encounter various books and explanations.
Each book explains objects, classes, and role division using familiar examples and specific cases.
For example, animals, vehicles, company operations, card games, etc.
However, even when explaining the same object-oriented programming, the way of explanation and the angle of approach vary depending on the book.
Therefore, this time, I asked Gemini to investigate books related to object-oriented programming and the explanations used in them.
What books will be introduced and what explanations will appear?
2. Asking Gemini to investigate
In this survey, I asked Gemini to investigate books related to object-oriented programming, collecting information about the books and the specific examples or metaphors used in their explanations.
Not only did I collect book titles, but I also paid attention to authors, publication dates, and the materials used to explain object-oriented programming.
Particularly interesting is how the explanation methods differ across books.
Here are the survey results from Gemini.
3. Survey results by Gemini
Book-based "object-oriented programming explanation" complete fact-based list ― from design diagrams, molds, and recipes to practical design and modeling
3. 0. Introduction
The introduction and explanation approaches of object-oriented programming (OOP) vary across programming books and software engineering literature.
I have compiled a fact-based list of explanation patterns from representative books and textbooks both domestically and internationally, ranging from using metaphors of everyday objects to explaining through business roles, organizational structures, modeling techniques, programming language specifications, and computer science mechanisms.
(Mina Takahashi / 2000 onwards)
(Anku / 2002 onwards)
(Nozomu Shibata / 2007 onwards)
(Shingo Yamada / 2008 onwards)
(Kenji Kameya / 2018 onwards)
(Kiyotaka Nakayama)
(Ryū Kōba / 2008 onwards)
3. 2. Models of real-life animals, appliances, and tools
| Book Title (Author, Year, etc.) | Topics Used | Summary Explanation |
|---|---|---|
|
『Head First Java』
(Kathy Sierra, Bert Bates / 2003–) |
Animal Sounds / Television and Remote Control | Encapsulation is explained as 'hiding the internal circuits of a television and only showing the remote control buttons,' and polymorphism as 'making an Animal array of Dogs and Cats call makeNoise().' |
|
『How to Build an Object Brain』
(Ko Ushio / 2004) |
Real-world 'things' (people, dogs, cars, etc.) | Programs are viewed as a collection of 'objects' (such as people, dogs, cars) rather than as procedures (steps) or processes. It explains the model of giving objects attributes and behaviors to converse with. |
|
『Head First Object-Oriented Analysis and Design』
(Brett D. McLaughlin et al. / 2007) |
Automatic Pet Door (Dog Door) and Remote Control | It explains using real-world gadgets (remote controls and dog doors that open in response to barking) as the subject, and describes the process of rewriting class structures in line with specification changes. |
|
『Python for Beginners』 / 『Java for Beginners』
(Akira Mori / 2017–) |
Capsule Medicines and Design Diagrams | Encapsulation is diagrammatically explained as 'data and methods enclosed in a single shell like a medicine capsule, so they cannot be touched directly from the outside.' |
| 『Java Super Beginner's Guide from Zero』 and other beginner series (Shigezumi Sasaki / 2020–) | Automatic Vending Machine, Smartphone, Calculator, Employee Roster | Explaining with specific examples related to daily work and office equipment, such as 'a single line of data in an employee roster combined with a self-introduction function (method)' or 'a calculator component that performs calculations when a button is pressed.' |
|
『Object-Oriented UI Design ―― Principles of User-Friendly Software』
(Masaru Ueno / 2020, 2026) |
Nouns (Objects) and Verbs (Tasks) on an Application Screen | Defining object-oriented programming in the context of UI design. Explaining the structure of a screen based on the human cognitive model of 'selecting an object and then performing an action (object-oriented).' |
3. 3. Anthropomorphism, Organization, and Role Models
| Book title (author, publication year, etc.) | Subject matter / approach | Explanation summary |
|---|---|---|
|
Why Create with Object Orientation? (Hiroshi Hirasawa / 2004 onwards) |
Role division in company organizations (sales, accounting, etc.) | Explains by dividing business processes into roles (responsibilities), likening them to a company organization that exchanges forms and instructions, rather than using the metaphor of real-world objects (dogs or cars) |
|
The Heart of Object Orientation (Alan Shalloway et al. / 2005) |
Theatrical actors and scripts / customers and shop clerks | Objects are likened to "actors who independently perform their own roles (scripts)" or "customers and shop clerks who request services from each other," focusing on each object's responsibilities in the explanation |
|
Java入门: Clear Understanding (Seiki Nakayama / 2011 onwards) |
RPG characters (hero, monster) | Classes are likened to "design blueprints for heroes and monsters," instances to "individuals appearing on screen," and explains through the hero giving an attack instruction (method call) to the monster, leading to HP reduction |
3. 4. Parts / business / account model (structure / component)
| Book title (author, publication year, etc.) | Subject matter / approach | Explanation summary |
|---|---|---|
| General UML and IT overview books from the 1990s to 2000s | Modeling of forms, documents, and customer ledgers in business contexts | Expresses procedural development as "building from scratch with clay," and object-oriented programming as "assembling pre-made block parts to construct" |
|
Why Can't You Do Object-Oriented Development in Java? (Hiroshi Kobayashi / 2005) |
Modeling forms, documents, and customer ledgers in business contexts | Extracts business forms, ledgers, and business rules themselves as objects, explaining through modeling business processes |
| Beginner books like "Java入门: Clear Understanding" | Model kit parts and instruction manual | Classes are likened to "parts and instruction manual for runners," instances to "assembled finished products," and explains inheritance through the imagery of modifying and painting parts |
| Introduction to UML Modeling and other UML foundational books | Library lending system / ATM and account interactions | When teaching how to draw class diagrams and sequence diagrams, the interactions between the 'library system (books, members, lending records)' and 'ATM screen and cash-in/cash-out machine' are used as examples to visualize the relationships between objects. |
| General university textbooks and information processing exam preparation books | Bank account (balance, deposit, withdrawal) | Treat classes as 'prototypes of bank accounts' and instances as 'individual accounts', and explain the model where balance is hidden and can only be manipulated through deposit and withdrawal methods. |
3. 5. Messaging, Communication, and Abstract Model Perspectives
| Book title (author, publication year, etc.) | Used metaphors and perspectives | Summary of explanations |
|---|---|---|
|
Smalltalk-80: The Language and its Implementation (Adele Goldberg et al. / 1983) |
Post system (letters and mailboxes) | Explain using a communication model where method calls are not seen as function calls, but rather as sending a letter (message) to the recipient (receiver), and the recipient's interpretation and action are determined by them. |
| General explanations of Alan Kay's original works and historical books | Biological cells and chemicals | Treat programs as a collection of 'cells' that behave like independent computers, and explain them as a model where cells communicate by sending messages (chemicals). |
|
Java Language Programming Lessons (Kazuki Kishida / 2003 onwards) |
Drawing shapes (circle, rectangle) and letters | With minimal metaphors, define classes as 'collections of fields and methods', and explain polymorphism through abstract examples like 'drawing shapes (Shape)'. |
|
Professional Java (Naoaki Kishida et al. / 2022) |
(※No use of everyday metaphors) | Explain directly from the language features 'records (collections of data)' and 'interfaces (switching processing)' without using traditional metaphors like 'dango' or 'dogs and cats'. |
3. 6. Domain and Concept Model Series (Practical Design, Domain-Driven)
| Book Title (Author, Publication Year, etc.) | Topics and Approaches Used | Summary of Explanation |
|---|---|---|
|
Eric Evans' Domain-Driven Design (Eric Evans, 2003) |
Concept of Business Domain (Ubiquitous Language and Entities) | Clearly negates the incorrect diagram of "Object = Real Thing." It builds a conceptual model of code using entities and value objects that have business rules, calculations, and lifecycles, such as "Account" for a bank or "Order" for an e-commerce system. |
|
Legacy Code Improvement Guide (Michael C. Feathers, 2004) |
Interconnected wiring and connection points "Seam" | Explains how to create seams for safely isolating code when refactoring large procedural code into object-oriented structures, following object-oriented principles such as method extraction and replacing conditional branching with polymorphism. |
|
Implementation Patterns (Kent Beck, 2007) |
Everyday language expressions and vocabulary shared by the development team | Argues that the names of objects and methods should align with the shared 'vocabulary' of the entire team, and promotes a style where code itself conveys intent without relying on metaphors. |
|
Clean Architecture (Robert C. Martin, 2017) |
Architectural design diagrams and piping (Plugin structure, Dependency inversion) | Defines the essence of object-oriented polymorphism as 'a safe alternative to function pointers' and explains the mechanisms of interface design to invert dependency directions. |
|
Refactoring (Martin Fowler, 1999, 2018) |
Smells in code and moving responsibilities | Explains the steps to safely improve code that has deteriorated structure, following object-oriented principles such as method extraction and replacing conditional branching with polymorphism. |
|
Principles of System Design That Are Useful in the Field (Hiroshi Masuda, 2017) |
Business concerns (amount, date, category) and small objects | Rejects the separation of 'large data class + procedural service class.' It advocates designing to encapsulate business rules (calculations and decisions) such as amount, date, and category within small classes that hold their data (value objects). |
|
Introduction to Domain-Driven Design (Author: Masaru Naruse / 2020) |
Business rules for username, email address, and circle activities | Explains an implementation pattern that expresses "business domain rules" which software should solve, not just mimicking "real-world objects," using value objects and entities, and coordinating with domain services and repositories. |
|
Good Code / Bad Code for Learning Design Introduction (Author: Daichi Sendo / 2022) |
RPG damage calculation, status abnormalities, and member rank changes | Explains a technique that tightly couples instance variables with the logic that manipulates them, prevents invalid states, and eliminates conditionals using polymorphism and strategy patterns. |
|
Choujutsu Software Design Introduction (Author: Hisateru Tanaka / 2022) |
Mathematical sets, dependency arrows, and SOLID principles | A method that excludes all everyday analogies. Positions object-oriented programming as an "extension of procedural programming," and systematically explains the decoupling of modules through the Dependency Inversion Principle (DIP) and polymorphism. |
3. 7. Modeling Methodology
| Book title (author, publication year, etc.) | Topics used and approach | Summary explanation |
|---|---|---|
|
Object-Oriented Systems Analysis ―― Modeling States, Behaviors, and Domains (Authors: Sally Shlaer, Stephen J. Mellor / 1988 / 1991 Japanese translation) |
Information model (entities and relationships) and state transition diagrams (lifecycle) | A method derived from structured analysis (SA/SD). It strictly formalizes the real world as "objects (entities)," "relationships (relationships)," and "state models (state machines)," providing a foundation for automatically generating executable specification models as code. |
|
Object-Oriented Analysis (OOA) (Authors: Peter Coad, Edward Yourden / 1990s onwards) |
Five-layer analysis and design phases (theme, classes and objects, structure, attributes, services) | An early practical object-oriented methodology proposed by Yourden, who is the authority on structured analysis (SA). It established an approach to visually and incrementally define "classes and objects," "whole-part structure," and "generalization-specialization structure" in the real world. |
|
Object-Oriented Modeling and Design (Japanese title: "オブジェクト指向モデリングと設計") Object Modeling Technique / James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen / 1991) |
Three perspectives: Object model (static structure), Dynamic model (dynamic behavior), Functional model (data processing) | One of the main object-oriented analysis and design methods of the early 1990s. It introduced a method to analyze the system from three orthogonal models: structure, behavior, and function, and became the foundation for UML (Unified Modeling Language). |
|
Object-Oriented Software Engineering (Ivar Jacobson / 1992, Sweden) |
Use cases (Use Case) and business workflows | Founded the Object-Oriented Software Engineering (OOSE) methodology, which derives objects from analyzing the behavior of human actors interacting with the system for specific purposes (use cases), rather than using metaphors of real-world "things". |
|
Design Patterns: Elements of Reusable Object-Oriented Software (GoF) (Erich Gamma et al. / 1994) |
Architectural pattern language and role assignment (composition) | Under the principle of preferring composition (delegation) over inheritance, it systematically organized typical relationships concerning object creation, structure, and behavior into 23 design patterns. |
|
Object-Oriented Programming: The Object-Oriented Way (Second Edition) (Bertrand Meyer / 1997) |
Vending machine / Abstract Data Type (ADT) | Defined objects as a set of internal states and defined operations (abstract data types), such as a "box that dispenses drinks when a coin is inserted and a button is pressed" (vending machine). |
|
The Unified Software Development Process (Ivar Jacobson et al. / 1999) |
Architecture phases (conception, detailed design, construction) and use case-driven approach | Proposed a process to gradually develop the entire system through four phases: "Inception", "Elaboration", "Construction", and "Transition", centered around use cases. |
|
Rational Unified Process: An Introduction (Third Edition) (Philippe Kruchten / 2003) |
4+1 View Model (ways of looking at a map and a building) | Explained a methodology that models the system from multiple perspectives: use cases, logic, process, physical, and implementation. |
3. 8. Programming Language Explanation - Language Design
| Book Title (Author, Publication Year, etc.) | Target Language - Approach | Summary Explanation |
|---|---|---|
|
Structure and Interpretation of Computer Programs (SICP) (Harold Abelson, Gerald Jay Sussman / 1985) |
Closures (Functions with Local State) and Message Passing | Explains the essence of object-oriented programming (state encapsulation) through the use of closures and message passing functionality, without relying on a dedicated class syntax. |
|
The Design and Evolution of C++ (Bjarne Stroustrup / 1986, 1994) |
C++ (Extension from C and Zero Overhead) | Explains the object-oriented mechanisms by detailing the historical context and reasons behind adding access control and virtual functions to C's struct. |
|
Object-Oriented Programming in Common Lisp (CLOS) (Sonya E. Keene / 1989) |
Common Lisp (Generic Functions and Multiple Dispatch) | Explains the unique OOP model of Lisp, where "generic functions (functions that change behavior based on combinations of object types)" are introduced instead of enclosing methods within objects. |
|
Programming Ruby (the Pickaxe Book) (Dave Thomas et al. / 2001) |
Ruby (Pure Object-Oriented and Message Sending) | Explains OOP from the perspective of Smalltalk, stating that "everything including numbers and strings is an object, and the dot is not a method call but a 'message sending'." |
|
Why Programs Work Series (e.g., Why Programs Work) (Takuya YAZAKI / 2001 onwards) |
Summary of Data Areas and Function Pointers in Memory Space | Explains object-oriented programming in the context of CPU and memory mechanisms. Describes it as "a programming technique that groups data and functions in memory, making reuse and maintenance easier," as a way to encapsulate structure (data) and functions (processing). |
|
Java Language Programming Lessons (Hiroshi Motoka / 2003 onwards) |
Java (Drawing Shapes and Exchanging Letters) | Minimizing metaphors, and defining it as "a summary of fields and methods," explain polymorphism with abstract program examples such as "drawing a shape (draw())." |
|
JavaScript: The Good Parts (Douglas Crockford, 2008) |
JavaScript (prototype-based object cloning) | In a prototype language where the metaphor of "class-based mold and instance" does not apply, explain the mechanism by which objects can directly clone and extend other objects (difference inheritance). |
|
Metaprogramming Ruby (Paolo Perrotta, 2010) |
Ruby (object model, singleton classes, method lookup) | Illustrate the structure of the object model where classes are also instances of the Class class, and explain inheritance chains and module mechanisms. |
|
Fluent Python (Luciano Ramalho, 2015) |
Python (data model and special methods / duck typing) | Explain protocol-oriented OOP by implementing Python's data model (special methods), allowing objects to behave like built-in types. |
|
|
Language specification (memory layout, virtual method table, namespace) | Explain that "a class is metadata that defines the behavior of an instance, and polymorphism is achieved through the mechanism of method lookup paths and dispatch" based on the behavior of the interpreter. |
3. 9. Modeling, Design Ideas, and Critical Perspectives
| Book title (author, publication year, etc.) | Subject matter and approach used | Summary of explanation |
|---|---|---|
|
Object-Oriented Systems Analysis: The Object Lifecycle (Sally Shlaer, Stephen J. Mellor, 1990 first edition, Kodansha) |
Shlaer-Mellor method (information model and state model) | A Japanese translation of one of the earliest and representative object-oriented analysis methods, which formally models the real world as an information model, relations, and state transition diagrams (lifecycle). It had a significant impact on the standardization of analysis methods during the early days of methodology. |
|
Continuing Object-Oriented Systems Analysis — Object Lifecycle (Sally Shlaer, Stephen J. Mellor / translated by Masakazu Honda / 1st edition 1992, Gendai Science Society) |
Application of Object-Oriented Analysis and Domain Analysis | A practical translation book that further develops the previous work, explaining advanced analytical methods for modeling relationships between multiple domains and more complex system behaviors. |
|
Object-Oriented Systems Development — A Practical Approach to Analysis, Design, and Programming (Masakazu Honda, Akira Yamashiro / 1993, Nikkei BP) |
All stages of practical systems development (analysis, design, implementation) | A pioneering domestic work that systematically explains how the authors, leading figures in Japanese software engineering, apply object-oriented concepts to actual systems development, covering analysis, design, and programming with a practical approach. |
|
The World of Object-Oriented Methodologies — Comparison and Explanation (Edited by Andy Carmichael / Translated by Akira Igarashi / 1995) |
Comparison and evaluation framework of major object-oriented analysis and design methodologies (OMT, Booch method, OOSE, etc.) | An analytical document that cross-comparatively evaluates various object-oriented methodologies that proliferated in the mid-1990s, using common criteria (process, modeling notation, scope of application), and objectively organizes the strengths and limitations of each approach. |
|
Object-Oriented Development for Depressed Programmers (Written by Tucker / 1998) |
Critical examination of business logic, C++ implementation, and practical modeling | Critiques the fantasy of the time that object-oriented programming would magically increase productivity, explaining the essence of object-oriented development in a paradoxical manner by pointing out structural problems that occur in the field, such as excessive inheritance hierarchies and misunderstandings about reuse. |
|
A Practical Course on Object-Oriented Development for Depressed Programmers (Written by Tucker / 1998) |
Critical verification of business logic, C++ implementation, and practical modeling | Critiques the easy modeling and excessive use of inheritance during the OOP boom in the 1990s. It discusses the practical aspects of class design and modeling that can prevent failure in real-world scenarios, taking into account the messy specification changes in the field and the language specifications of C++. |
|
Object-Oriented Modeling with UML — Self-Review Notes (Written by Reiko Arai / 2003) |
Consistency between conceptual models of business domains and UML diagrams | Focuses on "modeling (structuring the problem domain)" before writing code, explaining in a self-review format the "common design mistakes (mechanical extraction of nouns, etc.)" that occur when translating real business concepts into UML diagrams. |
3. 10. References and Related Cognitive Models
| Book Title (Author, Publication Year, etc.) | Perspective and Approach | Summary of Explanation |
|---|---|---|
|
『Westerners Seeing Trees, Easterners Seeing Forests: How Do Differences in Thinking Arise?』 (Richard E. Nisbett) |
Comparative Cultural Psychology (Analytical Thinking vs. Holistic Thinking) | Comparing the tendency of Western thinking (analytical thinking) to focus on individual objects or attributes (trees) and the tendency of Eastern thinking (holistic thinking) to focus on the overall context, environment, and relationships (forest). This serves as a framework for verifying differences in cognitive styles underlying modeling techniques and design approaches in various regions. |
3. 11. Conclusion
By arranging them in this way, it becomes clear that the topics and approaches used vary greatly depending on the era and the purpose of the book (language introduction, design patterns, practical design, modeling methods, etc.).
Designing with a focus on objects also has its appropriate contexts, as does designing with a focus on the purpose and meaning of the business. Neither approach is absolutely correct; the choice should be made based on the purpose.
4. Reading the Survey Results
In this survey results, multiple object-oriented related books and the explanations and specific examples used in each explanation were introduced.
By listing not only the book titles but also the topics used in the explanations, it becomes clear that even for the same theme of object-oriented, there are various perspectives.
On the other hand, whether the information and specific examples introduced by AI in the books match the actual content in the books is a separate issue.
The existence of the books, the authors, the publication years, and the sources of specific examples need to be verified individually.
We cannot treat the content as fact merely because it was answered by AI.
5. Conclusion
This time, we asked Gemini to investigate books and explanations related to object-oriented.
By listing the book catalog and explanations, we obtained materials for comparing object-oriented explanations.
However, we have not yet verified how accurate the content presented this time is.
Go to the list of users who liked
Go to the list of comments
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
