@startuml

skinparam monochrome true
skinparam packageStyle rect
skinparam defaultFontName FG Virgil
skinparam shadowing false
skinparam linetype ortho

class Group {
+ Group()
+ addTransaction \n(amount : Double, date : String, \ndescription : String, \ncategory : Category, \ndebitAccount : Account, \ncreditAccount : Account)
}

class Person {
+Person()
}

class Description {
- description: String
}

class CreationDate {
- creationDate: String
}

class Ledger {
+ Ledger()
+ addTransaction \n(amount : Double, date : String, \ndescription : String, \ncategory : Category, \ndebitAccount : Account, \ncreditAccount : Account)
}

class Transaction {
}

class Amount{
- amount: Double
}

Class DateTime{
- dateTime:String
+ isDateTimeFormatValid()
}

Class Type{
type:String
}

Class Category {
category : String
}

Class Account {
}

Class Denomination{
denomination : String
}


Group --> "has 1 creator" Person
Group --> "1" CreationDate :hasCrationDate
Group --> "1" Description :hasDescription
Group --> "1" Ledger  :hasLedger
Ledger --> "*" Transaction :hasTrasaction
Transaction --> "1" Amount :hasAmount
Transaction --> "1" DateTime :hasDateTime
Transaction --> "1" Type :hasType
Transaction --> "1" Description :hasDescription
Transaction --> "1" Category: has
Transaction --right> " has 1 debit " Account
Transaction --> " has 1 credit" Account
Account --> "1" Description : has
Account --> "1" Denomination : has

@enduml