Introduction To Low-Level Design
Now, before coming to the Low-level design(LLD), firstly get an overview about High-Level Design(HLD).
It is basically a general system design. Basically it is selection of components, Platform, different tools. It is all about the database design too and give brief description of relationship between services and modules
As a logic point of view it is difficult to write down logic in High-Level Design(HLD). so in that case we convert or break down each component into low level design which make engineer or software developer to write code or logic for given problem.
LLD always works on component level. It gives design on the component level. Input is always the High level design(HLD) in case of LLD.
Basically, it is component level process that follows a step by step refinement process. Low-Level Design describes the class diagrams with the methods and relations between classes and program specs. It describes the modules so that the programmer directly code the program from the document
Now, coming to the important question How to form LLD from HHD?
- UML diagrams
- Object Oriented Principles
- SOLID principles
UML, which stands for Unified Modeling Language, is a way to visually represent the architecture, design, and implementation of complex software systems. When you’re writing code, there are thousands of lines in an application, and it’s difficult to keep track of the relationships and hierarchies within a software system. UML diagrams divide that software system into components and subcomponents.
Type of UML Diagrams:
Most commonly used UML diagrams are Class diagram, Sequence diagram, Use-Case diagram, Activity
Object Oriented Principles
Using object to build the system. Oops organizes the program to combine data and functionality and wrap it in something called “Object”.
There are the four principle of Object Oriented Programming:
Abstraction is basically to show important and special features to user while hiding background details. It is hiding implementation details.
Consider a real life example of a man driving a car. The man only knows that pressing the accelerators will increase the speed of car or applying brakes will stop the car but he does not know about how on pressing accelerator the speed is actually increasing, he does not know about the inner mechanism of the car or the implementation of accelerator, brakes etc in the car. This is what abstraction is.
Encapsulation is wrapping up of data and functionality(method) into an one unit. This concept is often used to hide the internal state representation of an object from the outside.
The capability of a class to derive properties and characteristics from another class is called Inheritance. Inheritance is one of the most important feature of Object Oriented Programming.
Sub Class: The class that inherits properties from another class is called Sub class or Derived Class.
Super Class: The class whose properties are inherited by sub class is called Base Class or Super class.
Polymorphism is the ability of an object to take on many forms. Polymorphism is the ability of data to be processed in more than one form. It allows the performance of the same task in various ways. It consists of method overloading and method overriding, i.e., writing the method once and performing a number of tasks using the same method name.
SOLID here stands for:
S- Single Responsibilty Principle
O- Open Closed Principle
L- Liskov Substitution Principle
I- Interface Segregation Principle
D- Dependency Inversion Principle
Benefits of SOLID Principle
- Code Maintainibility
- Dependency Management