Object-oriented
Design with C# 10
Introduction to Object-oriented
Design
Mel Grubb
Developer
@melgrubb | www.melgrubb.com
Version Check This course was created by using:
- C# 10
- Visual Studio 2022 (v17.4.0)
- Markdown Editor v2 (v2.0.130)
- NUnit 3 (v3.13.3)
• NUnit3TestAdapter (v4.3.0)
Version Check
This course is 100% applicable to:
- C# 11
- Visual Studio 2022 (v17.4.1)
Object-oriented Language Examples
C# Java Python
Ruby PHP Visual Basic
Object-oriented Programming
!= Object-oriented Design
!= Object-oriented Language
Procedural C#
Main()
{
}
Object-oriented Basic
Program
Object-oriented Languages
Best fit for implementing object-oriented designs
Can’t do it all for you
Object-oriented Design
Thinking in objects
Commitment to organization of responsibilities
Classes are tools, used by other classes with other responsibilities
Demo
Mermaid
- UML diagrams right in your
documentation
- Editable from within your IDE
Class Diagram
Person Address Supplier
Id Id Id
FirstName Line1 Name
LastName Line2 Address
Order OrderItem Product
Id Id Id
Date Product Name
Status Quantity Price
Sequence Diagram
Browser Controller Service Database
State Diagram
Use Case Diagram
Unified Modeling Language (UML)
Class diagrams
Sequence diagrams
State diagram
Use case diagram
Mermaid-js
Object-oriented Design Is
Code written in an object-oriented language
Code that uses language features like inheritance and interfaces
Planning out a system in terms of objects and their responsibilities
Pillars and Principles
The Four Pillars
Abstraction Encapsulation Inheritance Polymorphism
Implementation Data Object Object
Hiding Hiding Taxonomy Interchangeability
The SOLID Principles
S Single Responsibility Principle
O Open-Closed Principle
L Liskov Substitution Principle
I Interface Segregation Principle
D Dependency Inversion Principle
Other Object-oriented Vocabulary
Cohesion
Coupling
Orthogonality
Cohesion
Cohesion
Coupling
Coupling
Nouns, Verbs, Adjectives, and Entities
Nouns and Verbs
Nouns Classes
Verbs Methods
Nouns = Classes
Customer – The public users of the system
Order – A heading for collections of purchased items
Shipment – Tracking details for sending orders to clients
Supplier – Manufacturer or reseller of items available to clients
Logger – Behind-the-scenes tracing of system operations
Verbs = Methods
Ship – Send an order’s items to the customer
Cancel – Stop an order from further processing
Complete – Mark an order as successfully finished
CalculateTotal – Add up the cost of an order’s items and shipping
Adjectives = Interfaces
ISerializable – Object can be transported or stored
IEnumerable – Represents a collection of items that can be iterated
IDisposable – Object is responsible for cleaning up after itself
INotifyPropertyChanged – Object raises events when data changes
Parts of Speech
Classes
Nouns Includes entities such as Customer, Order, and Product
Also includes non-entity objects like loggers, controllers, and messages
Verbs Methods
The things your classes can do, both to itself or to other objects
Adjectives Interfaces
Abstract capabilities that an object has, composed of its methods and properties combined
Object-oriented Design vs. Programming
Summary Four pillars
SOLID principles
Mermaid introduction
Cohesion
Coupling
Parts of speech metaphor
Up Next:
The Four Pillars