When working on software projects, getting the structure right from the beginning is essential for long-term success. One concept I rely on in requirements modeling is UML, the Unified Modeling Language. Within it, UML classes and objects form the foundation of effective system design. They define how elements relate, interact, and behave within a system. By understanding UML classes and objects, we can model real-world scenarios clearly and create software that’s both logical and maintainable.
What Are UML Classes?
I use a UML class to describe a category of similar objects.
A class defines characteristics that its objects can share. These characteristics can include attributes and operations.
For example, the class Person in my model contains:
- Tax number: Integer
- Sex: Boolean
Likewise, the class Mobile Phone contains:
- Serial number: Integer
- Name: String
The class therefore describes the structure that applies to its instances. However, it does not represent one particular person or mobile phone.
A UML class describes common characteristics, while an object represents one concrete instance of that class.
What Are UML Objects?
An object represents a specific instance of a class.
For example, James Mill, Sandra Stone, and Bob Walker can represent individual instances of Person.
Likewise, iPhone 14 and Samsung Galaxy S23 can represent individual instances of Mobile Phone.
The class tells me which characteristics these objects can have. The individual object then has its own values for those characteristics.
For example, two mobile phones may both have a Serial number. However, each phone can have a different serial number.

Place the image directly here, after introducing both classes and objects.
Suggested caption:
Simplified comparison of the classes Person and Mobile Phone with concrete object instances such as James Mill, Sandra Stone, iPhone 14, and Samsung Galaxy S23.
Suggested alt text:
UML classes Person and Mobile Phone compared with concrete person and mobile phone objects.
Reading the Example
The image separates classes from objects.
On the left, I have the classes Person and Mobile Phone.
Person defines Tax number and Sex. Therefore, these attributes describe information that can apply to individual persons.
On the right, I have James Mill, Sandra Stone, and Bob Walker. These names represent individual persons. Consequently, they are concrete instances of the Person concept.
The same principle applies to Mobile Phone.
The class defines Serial number and Name. Meanwhile, iPhone 14 and Samsung Galaxy S23 represent concrete mobile phones.
The class defines the common structure; each object represents one concrete occurrence of that structure.
This distinction allows me to move between an abstract model and real or hypothetical examples.
Classes Describe Types, Objects Describe Instances
I find the distinction easier when I think in terms of type and instance.
Person is a type. James Mill is an instance.
Mobile Phone is a type. An individual iPhone 14 is an instance.
Therefore, many objects can belong to the same class.
For example, James Mill, Sandra Stone, and Bob Walker can all belong to Person. They share the same general structure, but they can have different attribute values.
Similarly, several mobile phones can belong to Mobile Phone even if they differ in name or serial number.
One class can describe many objects, while each object represents one particular instance.
Attributes Belong to the Class Structure
I define attributes at class level because they describe the information that instances of the class may carry.
For example, Mobile Phone contains a Serial number attribute. Therefore, individual mobile phone objects can have their own serial number values.
The same principle applies to Person and Tax number.
However, I distinguish the attribute definition from the attribute value.
Serial number: Integer defines the type of information.
A concrete value such as 985789 belongs to a particular object.
This difference matters because a class model describes general structure, while an object model can show the state of particular instances.
Do Objects Need Unique Identifiers?
The original example uses Tax number and Serial number as identifying attributes. This is useful because such values can distinguish individual instances within the modeled domain.
For example, James may own two mobile phones. Their names alone may not distinguish them reliably. However, different serial numbers can.
Still, I do not treat unique identifiers as a general UML requirement.
UML does not require every object to contain a unique identifying attribute.
Whether I need an identifier depends on the domain and the purpose of my model.
If the requirements state that the system must uniquely identify people or devices, I model the relevant identifier. Otherwise, I do not add one merely because I use UML.
Why the Distinction Matters in Requirements Modeling
Classes and objects help me analyze a domain at different levels.
Classes help me identify concepts and their common information. Therefore, they work well when I create an information structure model.
Objects help me test that structure with concrete examples.
For example, I can define Person first. Then I can ask whether the class contains enough information to represent James Mill, Sandra Stone, and Bob Walker correctly.
Likewise, I can define Mobile Phone and test whether the model can represent both an iPhone 14 and a Samsung Galaxy S23.
This often reveals missing attributes, incorrect assumptions, or unclear requirements.
Concrete objects help me test whether an abstract class model represents the real domain sufficiently well.
Classes Are Not Automatically Software Classes
When I use UML during requirements engineering, I also keep requirements and design separate.
A class such as Person can represent a concept in the problem domain. It does not automatically mean that developers must create a software class called Person.
Likewise, the attributes in my requirements model do not automatically define database columns or programming variables.
Instead, I use the class model to understand the information structure first.
Technical design can follow later.
A UML class in requirements modeling can describe a domain concept without prescribing its software implementation.
Conclusion
UML classes and objects describe two closely connected levels of a model.
I use classes to define common characteristics. I use objects to represent specific instances of those classes.
In the example, Person and Mobile Phone represent classes. James Mill, Sandra Stone, Bob Walker, iPhone 14, and Samsung Galaxy S23 represent concrete examples of those concepts.
Attributes such as Tax number and Serial number can then describe relevant information about individual instances.
Classes show me what instances have in common, while objects show me how those definitions apply to concrete cases.
This distinction gives me a simple but powerful foundation for information structure modeling and object-oriented analysis.
What’s Next?!
If I want to strengthen my UML skills, the next step is to understand how UML classes really work. That is why I continue with Understanding the Syntax and Semantics of UML Classes. In that article, I explain how class elements are structured and what they mean in practice. As a result, I can model with more clarity, avoid mistakes, and create diagrams that communicate requirements more effectively.
Discover the Full Value of Requirements Modeling
If I want to understand requirements in a clearer and more practical way, I need more than text alone. I need models that show structure, flow, and relationships. In the main article on Requirements Modeling, I explore essential Modeling Concepts, Process Modeling with BPMN, and the structural perspective of UML. As a result, I can see how these approaches work together to improve analysis, communication, and system understanding. Click through to explore how Requirements Modeling helps me turn complex requirements into clear and useful models.
This article covers concepts that are also included in the CPRE certification syllabus.

