Introduction
Every day, new technology is deployed to the market in the same field. For example, in the web development field every day there is a new framework. So, what is the solution?
The solutions are the basics and the principles of industry. This allows you to understand any new technology simply because they are all built on the same principles. And therefore, in this article I will begin a journey discussing the most important topics and principles of the field of computers and information. This will be done with samples of this book which is talking about object-oriented analysis and design.
Who will find this book useful?
- Developers without formal computer science background.
- Developers who find it hard to catch new technologies.
Chapter 1: Introduction
1.1 What Is Object-Oriented Development?
The overall philosophy here is to define a software system as a collection of objects
of various types that interact with each other through well-defined interfaces.
1.2 Key Concepts of Object-Oriented Design
Over the years the field has stabilized so that we can safely present the key ideas whose soundness has stood the test of time.
The Central Role of Objects
Makes objects the centerpiece of software design. This makes possible the creation of an abstraction that is very stable since it is not dependent on the changing requirements of the application.
The Notion of a Class
Allow a software designer to look at objects as different types of entities. Viewing objects this way allows us to use the mechanisms of classification to categories
these types, define hierarchies and engage with the ideas of specialization and
generalization of objects.
Abstract Specification of Functionality
The software engineer specifies the properties of objects that are needed by a system. This specification is abstract in that it does not place any restrictions on how the functionality is achieved. This specification, called an interface or an abstract class.
A Language to Define the System
The Unified Modelling Language (UML) has been chosen by consensus as the standard tool for describing the end products of the design activities. The documents
generated in this language can be universally understood.
Standard Solutions
Design patterns are perhaps the most common form of reuse of
solutions.
An Analysis Process to Model a System
Object-orientation provides us with a systematic way to translate a functional specification to a conceptual design. This design describes the system in terms of conceptual classes from which the subsequent steps of the development process generate the implementation classes that constitute the finished software.
The Notions of Extensibility and Adaptability
This allows us to modify existing entities in small ways to create new ones. Inheritance, which creates a new descendant class that modifies the features of an existing class.
1.3 Other Related Concepts
These ideas are nonetheless closely linked to them and are perhaps better understood because of these developments.
1.3.1 Modular Design and Encapsulation
Modularity refers to the idea of putting together a large system by developing a
number of distinct components independently and then integrating these to provide
the required functionality.
Encapsulation means that the module hides details of its implementation from external
agents.
1.3.2 Cohesion and Coupling
Cohesion of a module tells us how well the entities within a module work together to provide this functionality. Cohesion is a measure of how focused the responsibilities of a module are.
Cohesive modules tend to be more reliable, reusable, and understandable
than less cohesive ones.
Coupling refers to how dependent modules are on each other.
Low coupling allows us to modify a module without worrying about the ramifications of the changes on the rest of the system.
1.3.3 Modifiability and Testability
Modification can be done to change both functionality and design.
The ability to change the functionality of a component allows for systems to be
more adaptable.
Testability it can simply be stated as the ease with which we can find bugs in a software and the extent to which the structure of the system facilitates the detection of bugs.
1.4 Benefits and Drawbacks of the Paradigm
It is useful to examine how object-oriented methodology has modified the landscape of software development.
Advantages:
-
-
- Objects often reflect entities in application systems. This makes it easier for a
designer to come up with classes in the design. - Helps increase productivity through reuse of existing software.
Inheritance makes it relatively easy to extend and modify functionality provided
by a class. - It is easier to accommodate changes. With some care taken during design, it is
possible to isolate the varying parts of a system into classes. - The ability to isolate changes, encapsulate data, and employ modularity reduces
the risks involved in system development.
- Objects often reflect entities in application systems. This makes it easier for a
-
Disadvantage
The above advantages do not come without a price tag. Perhaps the number one casualty of the paradigm is efficiency. For instance, the object-oriented development process introduces many layers of software, and this certainly increases overheads.