@startuml
    class Program{
        + static void Main(string[] args)
    }

    abstract class SortStrategy
    {
        + <<abstract>> void Sort(List<string> list);
    }

    class QuickSort extends SortStrategy
    {
        + <<override>> void Sort(List<string> list)
    }

    class ShellSort extends SortStrategy
    {
        + <<override>> void Sort(List<string> list)
    }

    class MergeSort extends SortStrategy
    {
        + <<override>> void Sort(List<string> list)
    }

    class SortedList
    {
        - List<string> list = new List<string>();
        - SortStrategy sortstrategy;

        + void SetSortStrategy(SortStrategy sortstrategy)

        + void Add(string name)

        + void Sort()
    }

Program -l-> SortedList
SortedList "1..*" o--> "1" SortStrategy
@enduml
