SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
OO SOLID
Applying SOLID principles to improve object-oriented designs
Say we have a mechanic
shop...
ServiceOrder

AddPart(Part)
Total()

1..*
Part
Name
Price
!
public class Part

{

private decimal price;



public Part(string name, decimal price)

{

this.price = price;

}



public decimal Price

{

get { return price; }

set { price = value; }

}



}
!
public class ServiceOrder {

private List<Part> parts;



public ServiceOrder() {

parts = new List<Part>();

}



public void AddPart(Part part) {

parts.Add(part);

}



public decimal Total() {

decimal total = 0;

foreach (Part aPart in parts) {

total += aPart.Price;

}

return total;

}

}
Now we want to specify additional
quantities of each part.	

(because we are lazy)
ServiceOrder
partsAndQtys : Dictionary
AddPart(Part)
Total()

1..*
Part
Name
Price
!

public class ServiceOrder

{

private Dictionary<Part, int> partsAndQuantities;




public ServiceOrder() {

partsAndQuantities = new Dictionary<Part, int>();

}



public void AddPart(Part part) {

this.AddPart(part, 1);

}



public void AddPart(Part part, int quantity) {

int currentQuantity = 0;

if (partsAndQuantities.ContainsKey(part)) {

currentQuantity = partsAndQuantities[part];

}

int newQuantity = currentQuantity + quantity;

partsAndQuantities.Add(part, newQuantity);

}



public decimal Total() {

decimal total = 0;

foreach (Part aPart in partsAndQuantities.Keys) {

int quantity = partsAndQuantities[aPart];

total += aPart.Price * quantity;

}

return total;

}

}
ServiceOrder

AddPart(Part, Qty)
Total()
1

1..*
LineItem
Part
Quantity

Part
*

1

Name
Price
!
public class LineItem

{

private Part part;



private int quantity;



public LineItem(Part part, int quantity) {

this.part = part;

this.quantity = quantity;

}



public Part Part {

get { return part; }

}



public int Quantity {

get { return quantity; }

private set { quantity = value; }

}

}
public class ServiceOrder

{

private List<LineItem> lineItems;



public ServiceOrder() {

lineItems = new List<LineItem>();

}



public void AddPart(Part part) {

this.AddPart(part, 1);

}



public void AddPart(Part part, int quantity) {

LineItem lineItem = new LineItem(part, quantity);

lineItems.Add(lineItem);

}



public decimal Total() {

decimal total = 0;

foreach (LineItem aLineItem in lineItems) {

total += aLineItem.Part.Price * aLineItem.Quantity;

}



return total;

}

}
S ingle Responsibility Principle
Now we want to add a markup
for each part.	

(because we want to track
profit margin)
ServiceOrder

AddPart(Part, Qty)
Total()
1

1..*
Part

LineItem
Part
Quantity

*

1

Name
MarkupPercentage
WholesalePrice
!

public class Part

{

private string name;

private decimal wholesalePrice;

private int markupPercentage;




public Part(string name, decimal price) :this(name, price, 0)

{}



public Part(string name, decimal price, int markupPercentage) {

this.name = name;

this.wholesalePrice = price;

this.markupPercentage = markupPercentage;

}



public string Name {

get { return name; }

}



public decimal WholesalePrice {

get { return wholesalePrice; }

}



public int MarkupPercentage {

get { return markupPercentage; }

}

}
!

public class ServiceOrder

{

private List<LineItem> lineItems;




public ServiceOrder() {

lineItems = new List<LineItem>();

}



public void AddPart(Part part) {

this.AddPart(part, 1);

}



public void AddPart(Part part, int additionalQuantity) {

LineItem lineItem = new LineItem(part, additionalQuantity);

lineItems.Add(lineItem);

}



public decimal Total() {

decimal total = 0;

foreach (LineItem aLineItem in lineItems) {

total += aLineItem.Part.WholesalePrice

* (aLineItem.Part.MarkupPercentage/100m + 1)

* aLineItem.Quantity;

}

return total;

}

}
ServiceOrder

AddPart(Part, Qty)
Total()
1

1..*
Part

LineItem
Part
Quantity
LineTotal()

*

1

Name
MarkupPercentage
WholesalePrice
!
// New methods in the Part class	


public decimal Price {

get { return wholesalePrice * MarkupMultiplier(); }

}


!
private decimal MarkupMultiplier() {

return (markupPercentage / 100m + 1);

}	

!
!




// And one in the LineItem class



public decimal LineTotal() {

return part.Price * quantity;

}
!
// In the ServiceOrder class...



public decimal Total() {



decimal total = 0;

foreach (LineItem aLineItem in lineItems) {

total += aLineItem.LineTotal();

}

return total;




}
O pen/Closed Principle
Now we want to add labor costs.	

(because we want to 	

make more money)
Part
Name
MarkupPercentage
WholesalePrice
Price()
Part
Name
MarkupPercentage
WholesalePrice

Labor
Price
Price()
!
public class Labor : Part

{

public Labor(string name, decimal price)	
: base(name, price)	
{}

}



Item
Name
CalculatePrice()

Labor
Price
CalculatePrice()

Part
MarkupPercentage
WholesalePrice
CalculatePrice()
!
public interface Item

{

string Name { get; }

decimal CalculatePrice();

}
L iskov Substitution Principle
Now we want to generate
receipts.	

(because we want to	

seem professionalish)
Presentation Layer

Business Layer

ReceiptGenerator

ServiceOrder

PrintReceipt()

AddPart(Part, Qty)
Total()
!
public class ReceiptGenerator

{

private FixItMechanicsSystem system;

private EpsonTMT88IVPrinter epsonTMT88IVPrinter;

private string initString = "sasllkslsl398383fa";	


public void PrintReceipt() {

ServiceOrder order = system.FinalizeOrder();	


string receiptString = "Total........ $" + order.Total();

epsonTMT88IVPrinter.Initialize(initString);

epsonTMT88IVPrinter.PrintBwMed239(receiptString);

epsonTMT88IVPrinter.Flush();	
}

}
Presentation Layer
ReceiptGenerator

PrintReceipt()

Business Layer
Receipt

Total()

ServiceOrder

AddPart(Part, Qty)
Total()


// In the ReciptGenerator class.



public void PrintReceipt() {

IReceipt receipt = system.FinalizeOrder();	


string receiptString = "Total........ $" + receipt.Total();

epsonTMT88IVPrinter.Initialize(initString);

epsonTMT88IVPrinter.PrintBwMed239(receiptString);

epsonTMT88IVPrinter.Flush();

}
I nterface Segregation Principle
We need to print to a new
printer.	

(because we’re growing and they
don’t make the old one anymore)
ReceiptGenerator

PrintReceipt()

EpsonT88IVPrinter
1

Initialize(String)
PrintBwMed239(String)
Flush()
!
public class ReceiptGenerator

{

private FixItMechanicsSystem system;

private EpsonTMT88IV epsonTMT88IVPrinter;

private string initString = "sasllkslsl398383fa";	


public void PrintReceipt() {

Receipt receipt = system.FinalizeOrder();	


string receiptString = "Total........ $" + receipt.Total();

epsonTMT88IVPrinter.Initialize(initString);

epsonTMT88IVPrinter.PrintBwMed239(receiptString);

epsonTMT88IVPrinter.Flush();	
}

}
ReceiptGenerator

PrintReceipt()

EpsonPrinterAdapter

1
EpsonT88IVPrinter

1

GenericPrinter

Print(String)

SamsungPrinterAdapter

1
SamsungSRP350

Initialize(String)

Initialize(String)

PrintBwMed239(String)

ProcessPages(String)

Flush()


public class ReceiptGenerator

{

private FixItMechanicsSystem system;

private IGenericPrinter printer;



public void PrintReceipt() {

Receipt receipt = system.FinalizeOrder();

string receiptString = "Total........ $" + receipt.Total();

printer.Print(receiptString);

}

}


public class EpsonPrinterAdapter : IGenericPrinter

{

private EpsonTMT88IV epsonTMT88IVPrinter;

private string initString = "sasllkslsl398383fa";



public void Print(string printString) {

epsonTMT88IVPrinter.Initialize(initString);

epsonTMT88IVPrinter.PrintBwMed239(printString);

epsonTMT88IVPrinter.Flush();

}

}


public class SamsungPrinterAdapter : IGenericPrinter

{

private SamsungSRP350 samsungSRP350Printer;

private string initString = "aksreiufgu";



public void Print(string printString) {

samsungSRP350Printer.Init(initString);

samsungSRP350Printer.ProcessPages(printString);

}

}
D ependency Inversion Principle
S ingle Responsibility Principle
O pen/Closed Principle
L iskov Substitution Principle
I nterface Segregation Principle
D ependency Inversion Principle
Questions?
X
Poor
Design

• Duplication
• Ambiguity
• Complexity
✓
Good
Design

✓ Low Coupling
✓ High Cohesion
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Functions in C++
Functions in C++Functions in C++
Functions in C++home
 
Javascript function
Javascript functionJavascript function
Javascript functionLearningTech
 
The Ring programming language version 1.5.3 book - Part 21 of 184
The Ring programming language version 1.5.3 book - Part 21 of 184The Ring programming language version 1.5.3 book - Part 21 of 184
The Ring programming language version 1.5.3 book - Part 21 of 184Mahmoud Samir Fayed
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Codemotion
 
C++ Function
C++ FunctionC++ Function
C++ FunctionHajar
 
The Ring programming language version 1.5.4 book - Part 21 of 185
The Ring programming language version 1.5.4 book - Part 21 of 185The Ring programming language version 1.5.4 book - Part 21 of 185
The Ring programming language version 1.5.4 book - Part 21 of 185Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 28 of 210
The Ring programming language version 1.9 book - Part 28 of 210The Ring programming language version 1.9 book - Part 28 of 210
The Ring programming language version 1.9 book - Part 28 of 210Mahmoud Samir Fayed
 
Call by value or call by reference in C++
Call by value or call by reference in C++Call by value or call by reference in C++
Call by value or call by reference in C++Sachin Yadav
 
The Ring programming language version 1.5 book - Part 4 of 31
The Ring programming language version 1.5 book - Part 4 of 31The Ring programming language version 1.5 book - Part 4 of 31
The Ring programming language version 1.5 book - Part 4 of 31Mahmoud Samir Fayed
 
LinkedIn TBC JavaScript 100: Functions
 LinkedIn TBC JavaScript 100: Functions LinkedIn TBC JavaScript 100: Functions
LinkedIn TBC JavaScript 100: FunctionsAdam Crabtree
 
The Ring programming language version 1.7 book - Part 25 of 196
The Ring programming language version 1.7 book - Part 25 of 196The Ring programming language version 1.7 book - Part 25 of 196
The Ring programming language version 1.7 book - Part 25 of 196Mahmoud Samir Fayed
 
Reference Parameter, Passing object by reference, constant parameter & Defaul...
Reference Parameter, Passing object by reference, constant parameter & Defaul...Reference Parameter, Passing object by reference, constant parameter & Defaul...
Reference Parameter, Passing object by reference, constant parameter & Defaul...Meghaj Mallick
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++NUST Stuff
 
C++ functions presentation by DHEERAJ KATARIA
C++ functions presentation by DHEERAJ KATARIAC++ functions presentation by DHEERAJ KATARIA
C++ functions presentation by DHEERAJ KATARIADheeraj Kataria
 
Chapter12 array-single-dimension
Chapter12 array-single-dimensionChapter12 array-single-dimension
Chapter12 array-single-dimensionDeepak Singh
 
The Ring programming language version 1.7 book - Part 24 of 196
The Ring programming language version 1.7 book - Part 24 of 196The Ring programming language version 1.7 book - Part 24 of 196
The Ring programming language version 1.7 book - Part 24 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 22 of 180
The Ring programming language version 1.5.1 book - Part 22 of 180The Ring programming language version 1.5.1 book - Part 22 of 180
The Ring programming language version 1.5.1 book - Part 22 of 180Mahmoud Samir Fayed
 

Was ist angesagt? (20)

Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Javascript function
Javascript functionJavascript function
Javascript function
 
The Ring programming language version 1.5.3 book - Part 21 of 184
The Ring programming language version 1.5.3 book - Part 21 of 184The Ring programming language version 1.5.3 book - Part 21 of 184
The Ring programming language version 1.5.3 book - Part 21 of 184
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
C++ Function
C++ FunctionC++ Function
C++ Function
 
Array and functions
Array and functionsArray and functions
Array and functions
 
The Ring programming language version 1.5.4 book - Part 21 of 185
The Ring programming language version 1.5.4 book - Part 21 of 185The Ring programming language version 1.5.4 book - Part 21 of 185
The Ring programming language version 1.5.4 book - Part 21 of 185
 
The Ring programming language version 1.9 book - Part 28 of 210
The Ring programming language version 1.9 book - Part 28 of 210The Ring programming language version 1.9 book - Part 28 of 210
The Ring programming language version 1.9 book - Part 28 of 210
 
C++ functions
C++ functionsC++ functions
C++ functions
 
Call by value or call by reference in C++
Call by value or call by reference in C++Call by value or call by reference in C++
Call by value or call by reference in C++
 
The Ring programming language version 1.5 book - Part 4 of 31
The Ring programming language version 1.5 book - Part 4 of 31The Ring programming language version 1.5 book - Part 4 of 31
The Ring programming language version 1.5 book - Part 4 of 31
 
LinkedIn TBC JavaScript 100: Functions
 LinkedIn TBC JavaScript 100: Functions LinkedIn TBC JavaScript 100: Functions
LinkedIn TBC JavaScript 100: Functions
 
C++ functions
C++ functionsC++ functions
C++ functions
 
The Ring programming language version 1.7 book - Part 25 of 196
The Ring programming language version 1.7 book - Part 25 of 196The Ring programming language version 1.7 book - Part 25 of 196
The Ring programming language version 1.7 book - Part 25 of 196
 
Reference Parameter, Passing object by reference, constant parameter & Defaul...
Reference Parameter, Passing object by reference, constant parameter & Defaul...Reference Parameter, Passing object by reference, constant parameter & Defaul...
Reference Parameter, Passing object by reference, constant parameter & Defaul...
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++
 
C++ functions presentation by DHEERAJ KATARIA
C++ functions presentation by DHEERAJ KATARIAC++ functions presentation by DHEERAJ KATARIA
C++ functions presentation by DHEERAJ KATARIA
 
Chapter12 array-single-dimension
Chapter12 array-single-dimensionChapter12 array-single-dimension
Chapter12 array-single-dimension
 
The Ring programming language version 1.7 book - Part 24 of 196
The Ring programming language version 1.7 book - Part 24 of 196The Ring programming language version 1.7 book - Part 24 of 196
The Ring programming language version 1.7 book - Part 24 of 196
 
The Ring programming language version 1.5.1 book - Part 22 of 180
The Ring programming language version 1.5.1 book - Part 22 of 180The Ring programming language version 1.5.1 book - Part 22 of 180
The Ring programming language version 1.5.1 book - Part 22 of 180
 

Ähnlich wie Applying SOLID Principles

Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy codeShriKant Vashishtha
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In JavaAndrei Solntsev
 
Flink Batch Processing and Iterations
Flink Batch Processing and IterationsFlink Batch Processing and Iterations
Flink Batch Processing and IterationsSameer Wadkar
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Mario Fusco
 
Dti2143 chapter 5
Dti2143 chapter 5Dti2143 chapter 5
Dti2143 chapter 5alish sha
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8RichardWarburton
 
COMP360 Assembler Write an assembler that reads the source code of an.pdf
COMP360 Assembler Write an assembler that reads the source code of an.pdfCOMP360 Assembler Write an assembler that reads the source code of an.pdf
COMP360 Assembler Write an assembler that reads the source code of an.pdffazalenterprises
 
Creating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfCreating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfShaiAlmog1
 
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdf
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdfCreat Shape classes from scratch DETAILS You will create 3 shape cla.pdf
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdfaromanets
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C v_jk
 
Recursion in C
Recursion in CRecursion in C
Recursion in Cv_jk
 

Ähnlich wie Applying SOLID Principles (20)

Array Cont
Array ContArray Cont
Array Cont
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
 
25-functions.ppt
25-functions.ppt25-functions.ppt
25-functions.ppt
 
Functional Programming In Java
Functional Programming In JavaFunctional Programming In Java
Functional Programming In Java
 
Flink Batch Processing and Iterations
Flink Batch Processing and IterationsFlink Batch Processing and Iterations
Flink Batch Processing and Iterations
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...Laziness, trampolines, monoids and other functional amenities: this is not yo...
Laziness, trampolines, monoids and other functional amenities: this is not yo...
 
Functions
FunctionsFunctions
Functions
 
function_v1.ppt
function_v1.pptfunction_v1.ppt
function_v1.ppt
 
function_v1.ppt
function_v1.pptfunction_v1.ppt
function_v1.ppt
 
Function in c
Function in cFunction in c
Function in c
 
Dti2143 chapter 5
Dti2143 chapter 5Dti2143 chapter 5
Dti2143 chapter 5
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
 
COMP360 Assembler Write an assembler that reads the source code of an.pdf
COMP360 Assembler Write an assembler that reads the source code of an.pdfCOMP360 Assembler Write an assembler that reads the source code of an.pdf
COMP360 Assembler Write an assembler that reads the source code of an.pdf
 
Refactoring
RefactoringRefactoring
Refactoring
 
Monads in Swift
Monads in SwiftMonads in Swift
Monads in Swift
 
Creating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfCreating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdf
 
Function in c
Function in cFunction in c
Function in c
 
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdf
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdfCreat Shape classes from scratch DETAILS You will create 3 shape cla.pdf
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdf
 
RECURSION IN C
RECURSION IN C RECURSION IN C
RECURSION IN C
 
Recursion in C
Recursion in CRecursion in C
Recursion in C
 

Kürzlich hochgeladen

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Kürzlich hochgeladen (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

Applying SOLID Principles