In general, analysis is the investigation of the problem and requirements, design is finding a conceptual solution to the problem, and implementation is the actual solution in the form of code which is the realization of design. Object oriented analysis, object oriented design and object oriented implementation can be considered as type of analysis, design and implementation that focus on objects.
So the OO approach is based on three distinct activities:
Object Oriented Analysis (OOA): This is concerned with determining the functionality of the system, that is, what should the application do. Usually the objects and concepts in the problem domain are identified and described during object oriented analysis.
Object Oriented Design (OOD): This is concerned with how the architecture supports the functionality of the application. During object oriented design, the objects and concepts identified during analysis are modelled as software objects along with their properties and relationships with each other.
Object Oriented Programming (OOP): This is concerned with the actual implementation of the application. During implementation, the modelled software objects and their relationships are implemented as code in a programming language such as Java.
Online Library Management System Example
Consider an Online Library Management System where users can register and become members, search the databse of books, borrow books etc.
During object oriented analysis we can identify objects such as User, Book, Library, UserManager, LibraryManager etc.
During object oriented design, we can create conceptual models with properties, behaviours and relationships for the objects identified during analysis. Library object will contain a list of books and functions to add, remove books. UserManager will contain a list of users and functions to add, remove, find and even block users. LibraryManager will be a helper object with functions to issue and return books. Book object will have details of book such as book id, name, author etc. and corresponding functions to get and set book the details. User object will have user id, name, membership type etc. and functions to get and set the user details.
Finally, during implementation, say in Java, all these conceptual objects with their properties and behaviour are converted to classes with attributes and methods respectively.
Note that analysis and design can also have other types such as requirement analysis and database design respectively.
With the use of Object Relational Mapping (ORM) frameworks, the gap between object oriented design and database design has reduced a lot. See notes on hibernate for more details on ORM.
The products of the analysis and design steps are often referred to as analysis and design artifacts. We can use diagrams such as Unified Modelling Language(UML) during the analysis and design and provide better clarity to our artifacts. The phrase "a picture is worth a thousand words" says it all. We can have a partial domain model drawn during analysis to describe the objects involved, a sequence diagram during design to show the interactions between objects and a class diagram to show the properties and behavior of the objects involved.
The Unified Modeling Language (UML) is a widely used OO technique used to design and document an application. A class diagram is one of the popular diagrams. Normally, a class diagram consists of many classes and is interconnected with annotated lines showing the relationship between the classes. The class diagram is intended to clearly show what objects make up the system and how they interact. Once a class diagram is complete it can be implemented using an OOP language such as Java.
The UML is a modeling language developed by Grady Booch, Ivar Jacobson and James Rumbaugh, and can be used to create visual models of object-oriented systems, and contain many types of diagrams. Though traditional software development models such as waterfall models uses UML extensively during analysis and design, Agile methodology suggests to use UML based diagrams for rough sketching on paper or whiteboard to describe and understand the problem better, than as a document for future reference.