0% found this document useful (0 votes)
49 views25 pages

Understanding SOLID Principles in DBMS

Uploaded by

Bach Tran Gia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views25 pages

Understanding SOLID Principles in DBMS

Uploaded by

Bach Tran Gia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Solid Principles

(Seminar)

1
Reference
o [Link]
OLID-Architecture-Principles-Using-Simple-Csharp
o [Link]
[Link]/UploadFile/damubetha/solid-
principles-in-C-Sharp/
What is SOLID?

SOLID are five basic principles which help to create good


software architecture. SOLID is an acronym where:-

S stands for SRP (Single responsibility principle


O stands for OCP (Open closed principle)
L stands for LSP (Liskov substitution principle)
I stands for ISP ( Interface segregation principle)
D stands for DIP ( Dependency inversion principle)

3
“S”- SRP (Single responsibility principle)
class Customer
{
public void Add()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
[Link](@"c:\[Link]", [Link]());
}
}
}

4
“S”- SRP (Single responsibility principle)

5
“S”- SRP (Single responsibility principle)

6
“S”- SRP (Single responsibility principle)
class FileLogger
{
public void Handle(string error)
{
[Link](@"c:\[Link]", error);
}
}

7
“S”- SRP (Single responsibility principle)
class Customer
{
private FileLogger obj = new FileLogger();
publicvirtual void Add()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
[Link]([Link]());
}
}
}

8
“O” - Open closed principle

9
“O” - Open closed principle
class Customer
{
private int _CustType;

public int CustType


{
get { return _CustType; }
set { _CustType = value; }
}

public double getDiscount(double TotalSales)


{
if (_CustType == 1)
{
return TotalSales - 100;
}
else
{
return TotalSales - 50;
}
}
}
10
“O” - Open closed principle
class Customer
{
public virtual double getDiscount(double
TotalSales)
{
return TotalSales;
}
}

11
“O” - Open closed principle
class SilverCustomer : Customer
{
public override double getDiscount(double TotalSales)
{
return [Link](TotalSales) - 50;
}
}

class goldCustomer : SilverCustomer


{
public override double getDiscount(double TotalSales)
{
return [Link](TotalSales) - 100;
}
}

12
“L”- LSP (Liskov substitution principle)

13
“L”- LSP (Liskov substitution principle)
class Enquiry : Customer
{
public override double getDiscount(double TotalSales)
{
return [Link](TotalSales) - 5;
}

public override void Add()


{
throw new Exception("Not allowed");
}
}

14
“L”- LSP (Liskov substitution principle)
interface IDiscount
{
double getDiscount(double TotalSales);
}

interface IDatabase
{
void Add();
}

15
“L”- LSP (Liskov substitution principle)
class Enquiry : IDiscount
{
public double getDiscount(double TotalSales)
{
return TotalSales - 5;
}
}

16
“L”- LSP (Liskov substitution principle)
class Customer : IDiscount, IDatabase
{
private MyException obj = new MyException();
public virtual void Add()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
[Link]([Link]());
}
}

public virtual double getDiscount(double TotalSales)


{
return TotalSales;
}
}

17
“I” - ISP (Interface Segregation principle)

18
“I” - ISP (Interface Segregation principle)
interface IDatabase
{
void Add(); // old client are happy with these.
void Read(); // Added for new clients.
}

19
“I” - ISP (Interface Segregation principle)
interface IDatabaseV1 : IDatabase // Gets the Add method
{
void Read();
}
class CustomerwithRead : IDatabase, IDatabaseV1
{
public void Add()
{
Customer obj = new Customer();
[Link]();
}

public void Read()


{
// Implements logic for read
}
}

20
“I” - ISP (Interface Segregation principle)
IDatabase i = new Customer(); // 1000 happy old
clients not touched
[Link]();

IDatabaseV1 iv1 = new CustomerWithread(); // new


clients
[Link]();

21
“D”- Dependency inversion principle
class Customer
{
private FileLogger obj = new FileLogger();
public virtual void Add()
{
try
{
// Database code goes here
}
catch (Exception ex)
{
[Link]([Link]());
}
}
}

22
“D”- Dependency inversion principle
interface ILogger
{
void Handle(string error);
}

class FileLogger : ILogger


{
public void Handle(string error)
{
[Link](@"c:\[Link]", error);
}
}

23
“D”- Dependency inversion principle
class EverViewerLogger : ILogger
{
public void Handle(string error)
{
// log errors to event viewer
}
}
class EmailLogger : ILogger
{
public void Handle(string error)
{
// send errors in email
}
}

24
“D”- Dependency inversion principle
class Customer : IDiscount, IDatabase
{
private Ilogger obj;
public Customer(ILogger i)
{
obj = i;
}
}

IDatabase i = new Customer(new EmailLogger());

25

You might also like