A class diagram is a type of diagram in the Unified Modeling Language (UML) modeling language used to represent the static structure of a software system. This type of diagram focuses on the classes that make up the system, the relationships between them, the attributes of the classes, and the methods that operate on those attributes. A class diagram is a fundamental tool in software engineering and object-oriented design.

Class diagrams are useful for visualizing and communicating the structure of a software system, making it easier to understand how classes are organized and interact with each other. These diagrams are valuable during the design phase of a software development project and serve as an important guide for developers during system implementation.

PlantUML Syntax:</p>
<p>@startuml</p>
<p>skinparam linetype ortho</p>
<p>class Account {<br />
    +Id: int<br />
    +CustodianId: short<br />
    +CustomerId: short<br />
    +Number: string<br />
    +Master: string<br />
    +Name: string<br />
    +AccountStatus: string<br />
    +AccountType: string<br />
    +PrimaryContact: string<br />
    +MailingAddress: string<br />
    +MailingCity: string<br />
    +MailingState: string<br />
    +MailingCountry: string<br />
    +MailingZipCode: string<br />
    +Email: string<br />
    +Phone: string<br />
    +BussinesPhone: string<br />
    +DateOpened: DateTime?<br />
    +CurrencyId: byte?<br />
    __<br />
    +Currency: Currency<br />
    +Custodian: Custodian<br />
    +Customer: Customer<br />
    +Positions: ICollection<Position><br />
    +TaxLots: ICollection<TaxLot><br />
    +Transactions: ICollection<Transaction><br />
}</p>
<p>class Currency {<br />
    +Id: byte<br />
    +Alpha2Code: string<br />
    +Alpha3Code: string<br />
    +Description: string<br />
    __<br />
    +Accounts: ICollection<Account><br />
    +FxRateBaseCurrencies: ICollection<FxRate><br />
    +FxRateLocalCurrencies: ICollection<FxRate><br />
    +Securities: ICollection<Security><br />
}</p>
<p>class Custodian {<br />
    +Id: short<br />
    +Name: string<br />
    +ShortName: string<br />
    __<br />
    +Accounts: ICollection<Account><br />
    +FxRates: ICollection<FxRate><br />
    +Positions: ICollection<Position><br />
    +Prices: ICollection<Price><br />
    +Securities: ICollection<Security><br />
    +TaxLots: ICollection<TaxLot><br />
    +Transactions: ICollection<Transaction><br />
}</p>
<p>class Customer {<br />
    +Id: short<br />
    +Name: string<br />
    +ShortName: string<br />
    __<br />
    +Accounts: ICollection<Account><br />
    +Positions: ICollection<Position><br />
    +TaxLots: ICollection<TaxLot><br />
    +Transactions: ICollection<Transaction><br />
}</p>
<p>class FxRate {<br />
    +CustodianId: short<br />
    +ProcessDate: DateTime<br />
    +BaseCurrencyId: byte<br />
    +LocalCurrencyId: byte<br />
    +Factor: decimal<br />
    __<br />
    +BaseCurrency: Currency<br />
    +Custodian: Custodian<br />
    +LocalCurrency: Currency<br />
}</p>
<p>class InterfaceStatus {<br />
    +CustodianId: int<br />
    +CustomerId: int<br />
    +ProcessDate: DateTime<br />
    +RunDate: DateTime?<br />
    +ETA: TimeSpan?<br />
    +StatusId: int<br />
    +HasTrn: bool?<br />
    +HasPos: bool?<br />
    +HasPri: bool?<br />
    +HasLot: bool?<br />
    +HasAcc: bool?<br />
    +HasVeh: bool?<br />
    +HasFx: bool?<br />
    +NoWeekendFiles: bool?<br />
    __<br />
    +Status: InterfaceStatusType<br />
    +Custodian: Custodian<br />
    +Customer: Customer<br />
}</p>
<p>class InterfaceStatusType {<br />
    +Id: int<br />
    +Name: string<br />
    +Description: string<br />
    __<br />
    +InterfaceStatuses: ICollection<InterfaceStatus><br />
}</p>
<p>class MajorAssetClass {<br />
    +Id: byte<br />
    +Name: string<br />
    +Description: string<br />
    +PrimaryTypeCode: string<br />
    __<br />
    +PrimaryTypeCodeNavigation: PrimaryType<br />
    +SecurityTypes: ICollection<SecurityType><br />
}</p>
<p>class Position {<br />
    +CustodianId: short<br />
    +CustomerId: short<br />
    +ProcessDate: DateTime<br />
    +AccountId: int<br />
    +SecurityId: int<br />
    +ShortPosition: bool<br />
    +Quantity: decimal<br />
    +MarketValue: decimal<br />
    +OriginalCost: decimal?<br />
    +OriginalCostDate: DateTime?<br />
    +OriginalFace: decimal?<br />
    __<br />
    +Account: Account<br />
    +Custodian: Custodian<br />
    +Customer: Customer<br />
    +Security: Security<br />
}</p>
<p>class Price {<br />
    +CustodianId: short<br />
    +ProcessDate: DateTime<br />
    +SecurityId: int<br />
    +PriceValue: decimal<br />
    __<br />
    +Custodian: Custodian<br />
    +Security: Security<br />
}</p>
<p>class PrimaryType {<br />
    +Code: string<br />
    +Description: string<br />
    __<br />
    +MajorAssetClasses: ICollection<MajorAssetClass><br />
}</p>
<p>class Sector {<br />
    +Id: byte<br />
    +Name: string<br />
    +Description: string<br />
    __<br />
    +Securities: ICollection<Security><br />
}</p>
<p>class Security {<br />
    +Id: int<br />
    +CustodianId: short<br />
    +SecurityTypeId: byte<br />
    +CurrencyId: byte<br />
    +PrimarySymbol: string<br />
    +Cusip: string<br />
    +Sedol: string<br />
    +Isin: string<br />
    +Ticker: string<br />
    +Description: string<br />
    +SectorId: byte?<br />
    +Industry: string<br />
    __<br />
    +Currency: Currency<br />
    +Custodian: Custodian<br />
    +Sector: Sector<br />
    +SecurityType: SecurityType<br />
    +Positions: ICollection<Position><br />
    +Prices: ICollection<Price><br />
    +TaxLots: ICollection<TaxLot><br />
    +TransactionSecurities: ICollection<Transaction><br />
    +TransactionWhtSecurities: ICollection<Transaction><br />
}</p>
<p>class SecurityType {<br />
    +Id: byte<br />
    +Code: string<br />
    +Description: string<br />
    +MajorAssetClassId: byte<br />
    __<br />
    +MajorAssetClass: MajorAssetClass<br />
    +Securities: ICollection<Security><br />
}</p>
<p>class TaxLot {<br />
    +Id: int<br />
    +CustodianId: short<br />
    +CustomerId: short<br />
    +ProcessDate: DateTime<br />
    +AccountId: int<br />
    +SecurityId: int<br />
    +ShortPosition: bool<br />
    +TradeDate: DateTime<br />
    +Quantity: decimal<br />
    +Amount: decimal<br />
    +OriginalCost: decimal?<br />
    +OriginalCostDate: DateTime?<br />
    +OriginalFace: decimal?<br />
    __<br />
    +Account: Account<br />
    +Custodian: Custodian<br />
    +Customer: Customer<br />
    +Security: Security<br />
}</p>
<p>class Transaction {<br />
    +Id: int<br />
    +CustodianId: short<br />
    +CustomerId: short<br />
    +ProcessDate: DateTime<br />
    +AccountId: int<br />
    +SecurityId: int<br />
    +TransactionCodeId: byte<br />
    +CancelIndicator: bool?<br />
    +Comment: string<br />
    +TradeDate: DateTime<br />
    +SettlementDate: DateTime?<br />
    +Quantity: decimal<br />
    +Amount: decimal<br />
    +OriginalCost: decimal?<br />
    +OriginalCostDate: DateTime?<br />
    +Sdtype: string<br />
    +Sdsymbol: string<br />
    +Exchange: decimal?<br />
    +ExchangeFee: decimal?<br />
    +Commission: decimal?<br />
    +OtherFees: decimal?<br />
    +Broker: string<br />
    +WhtSecurityId: int?<br />
    +ExecPri: decimal?<br />
    +ExecPriCalc: decimal?<br />
    +Reorg: bool?<br />
    __<br />
    +Account: Account<br />
    +Custodian: Custodian<br />
    +Customer: Customer<br />
    +Security: Security<br />
    +TransactionCode: TransactionCode<br />
    +WhtSecurity: Security<br />
}</p>
<p>class TransactionCode {<br />
    +Id: byte<br />
    +Code: string<br />
    +Description: string<br />
    __<br />
    +Transactions: ICollection<Transaction><br />
}</p>
<p>Account –> Currency : Has Currency (1)<br />
Account –> Custodian : Has Custodian (1)<br />
Account –> Customer : Has Customer (1)<br />
Account –> Position : Has Positions (*)<br />
Account –> TaxLot : Has TaxLots (*)<br />
Account –> Transaction : Has Transactions (*)<br />
Currency –> Account : Has Accounts (*)<br />
Currency –> FxRate : Has FxRates (BASE) (*)<br />
Currency –> FxRate : Has FxRates (LOCAL) (*)<br />
Currency –> Security : Has Securities (*)<br />
Custodian –> Account : Has Accounts (*)<br />
Custodian –> FxRate : Has FxRates (*)<br />
Custodian –> Position : Has Positions (*)<br />
Custodian –> Price : Has Prices (*)<br />
Custodian –> Security : Has Securities (*)<br />
Custodian –> TaxLot : Has TaxLots (*)<br />
Custodian –> Transaction : Has Transactions (*)<br />
Customer –> Account : Has Accounts (*)<br />
Customer –> Position : Has Positions (*)<br />
Customer –> TaxLot : Has TaxLots (*)<br />
Customer –> Transaction : Has Transactions (*)<br />
FxRate –> Currency : Has Currency (BASE) (1)<br />
FxRate –> Custodian : Has Custodian (1)<br />
FxRate –> Currency : Has Currency (LOCAL) (1)<br />
InterfaceStatus –> InterfaceStatusType : Has InterfaceStatusType (1)<br />
InterfaceStatus –> Custodian : Has Custodian (1)<br />
InterfaceStatus –> Customer : Has Customer (1)<br />
MajorAssetClass –> PrimaryType : Has PrimaryType (1)<br />
MajorAssetClass –> SecurityType : Has SecurityTypes (*)<br />
Position –> Account : Has Account (1)<br />
Position –> Custodian : Has Custodian (1)<br />
Position –> Customer : Has Customer (1)<br />
Position –> Security : Has Security (1)<br />
Price –> Custodian : Has Custodian (1)<br />
Price –> Security : Has Security (1)<br />
PrimaryType –> MajorAssetClass : Has MajorAssetClasses (*)<br />
Sector –> Security : Has Securities (*)<br />
Security –> Currency : Has Currency (1)<br />
Security –> Custodian : Has Custodian (1)<br />
Security –> Sector : Could have Sector (1)<br />
Security –> SecurityType : Has SecurityType (1)<br />
Security –> Position : Has Positions (*)<br />
Security –> Price : Has Prices (*)<br />
Security –> TaxLot : Has TaxLots (*)<br />
Security –> Transaction : Has Transactions (Sec) (*)<br />
Security –> Transaction : Has Transactions (WhtSec) (*)<br />
SecurityType –> MajorAssetClass : Has MajorAssetClass (1)<br />
SecurityType –> Security : Has Securities (*)<br />
TaxLot –> Account : Has Account (1)<br />
TaxLot –> Custodian : Has Custodian (1)<br />
TaxLot –> Customer : Has Customer (1)<br />
TaxLot –> Security : Has Security (1)<br />
Transaction –> Account : Has Account (1)<br />
Transaction –> Custodian : Has Custodian (1)<br />
Transaction –> Customer : Has Customer (1)<br />
Transaction –> Security : Has Security (1)<br />
Transaction –> TransactionCode : Has TransactionCode (1)<br />
Transaction –> Security : Could have Security (1)</p>
<p>@enduml</p>
<p>