# Class diagram demos

        ---
        title: Demo Class Diagram
        ---
        classDiagram
          accTitle: Demo Class Diagram
          accDescr: This class diagram show the abstract Animal class, and 3 classes that inherit from it: Duck, Fish, and Zebra.

          Animal <|-- Duck
          Animal <|-- Fish
          Animal <|-- Zebra
          Animal : +int age
          Animal : +String gender
          Animal: +isMammal()
          Animal: +mate()

          class Duck{
            +String beakColor
            +swim()
            +quack()
          }
          class Fish{
            -Listint sizeInFeet
            -canEat()
          }
          class Zebra{
            +bool is_wild
            +run(List~T~, List~OT~)
            %% +run-composite(List~T, K~)
            +run-nested(List~List~OT~~)
          }

        classDiagram
        Class01 <|-- AveryLongClass : Cool

        <<interface>> Class01
        Class03 "0" *-- "0..n" Class04
        Class05 "1" o-- "many" Class06
        Class07 .. Class08
        Class09 "many" --> "1" C2 : Where am i?
        Class09 "0" --* "1..n" C3
        Class09 --|> Class07
        Class07 : equals()
        Class07 : Object[] elementData
        Class01 : #size()
        Class01 : -int chimp
        Class01 : +int gorilla
        Class08 <--> C2: Cool label
          class Class10 {
          <<service>>
          int id
          size()
          }

        classDiagram
        class Class01~T~
        Class01 : #size()
        Class01 : -int chimp
        Class01 : +int gorilla
        Class01 : +abstractAttribute string*
        class Class10~T~ {
        <<service>>
        int id
        size()
        }

        classDiagram
        Class01~T~ <|-- AveryLongClass : Cool
        <<interface>> Class01
        Class03~T~ "0" *-- "0..n" Class04
        Class05 "1" o-- "many" Class06
        Class07~T~ .. Class08
        Class09 "many" --> "1" C2 : Where am i?
          Class09 "0" --* "1..n" C3
          Class09 --|> Class07
          Class07 : equals()
          Class07 : Object[] elementData
          Class01 : #size()
          Class01 : -int chimp
          Class01 : +int gorilla
          Class08 <--> C2: Cool label
            class Class10 {
            <<service>>
            int id
            size()
            }

        classDiagram
        Interface1 ()-- Interface1Impl

        classDiagram
        direction LR
        Animal ()-- Dog
        Animal ()-- Cat
        note for Cat "should have no members area"
        Dog : bark()
        Dog : species()

        classDiagram
        direction RL
        Fruit ()-- Apple
        Apple : color()
        Apple : -int leafCount()
        Fruit ()-- Pineapple
        Pineapple : color()
        Pineapple : -int leafCount()
        Pineapple : -int spikeCount()

        classDiagram
          class Person {
            +Id : Guid
            +FirstName : string
            +LastName : string
            -privateProperty : string
            #ProtectedProperty : string
            ~InternalProperty : string
            ~AnotherInternalProperty : List~List~string~~
          }
          class People List~List~Person~~

        classDiagram
          A1 --> B1
          namespace A {
            class A1 {
              +foo : string
            }
            class A2 {
              +bar : int
            }
          }
          namespace B {
            class B1 {
              +foo : bool
            }
            class B2 {
              +bar : float
            }
          }
          A2 --> B2