UML Diagram

Estimated time to read: 2 minutes

%%{init: {'class' : {'curve' : 'linear'}}}%%

classDiagram 

MembershipForm <-- Member
MembershipForm <-- MemberRegistrationType

Member o-- MembershipID
Member o-- PersonalDetails
Member o-- ContactDetails
Member o-- MarketingConsent
Member o-- MembershipType
Member o-- StatementAgreement
Member o-- PaymentDetails

PersonalDetails <|-- Name
Name <|-- Title

ContactDetails <|-- Address
ContactDetails <|-- PhoneNumber
ContactDetails <|-- EmailAddress

MembershipType <|-- StudentMember



    class MembershipForm {
        + memberRegistrationType: MemberRegistrationType 
        - member: Member

        + getMemberRegistrationType(): MemberRegistrationType
        + getMember(): Member
        + setMemberRegistrationType(memberRegistrationType: MemberRegistrationType): void
        + setMember(member: Member): void
    }

    class MemberRegistrationType {
        <<Enumeration>>
        Renewal
        New Member
    }

    class Member {
        - membershipID: MembershipID
        - personalDetails: PersonalDetails
        - contactDetails: ContactDetails
        - paymentDetails: PaymentDetails
        - statementAgreement: StatementAgreement
        - membershipType: MembershipType
        - marketingConsent: MarketingConsent

        + getMembershipID(): MembershipID
        + getPersonalDetails(): PersonalDetails
        + getContactDetails(): ContactDetails
        + getPaymentDetails(): PaymentDetails
        + getStatementAgreement(): StatementAgreement
        + getMembershipType(): MembershipType
        + getMarketingConsent(): MarketingConsent
        + setMembershipID(membershipID: MembershipID): void
        + setPersonalDetails(personalDetails: PersonalDetails): void
        + setContactDetails(contactDetails: ContactDetails): void
        + setPaymentDetails(paymentDetails: PaymentDetails): void
        + setStatementAgreement(statementAgreement: StatementAgreement): void
        + setMembershipType(membershipType: MembershipType): void
        + setMarketingConsent(marketingConsent: MarketingConsent): void
    }

    class MembershipID {
        - membershipID: String

        + getMembershipID(): String
        + setMembershipID(membershipID: String): void
    }

    class PersonalDetails {
        - name: Name  
        - dateOfBirth: Date

        +getName(): Name
        +getDateOfBirth(): Date
        +setName(name: Name): void
        +setDateOfBirth(dateOfBirth: Date): void
    }

    class Name {
        - nameTitle: Title
        - nameFirst: String
        - nameLast: String

        + getNameTitle(): String
        + getNameFirst(): String
        + getNameLast(): String
        + setNameTitle(Name: Title): void
        + setNameFirst(Name: String): void
        + setNameLast(Name: String): void
    }

    class Title {
        <<Enumeration>>
        Mr
        Mrs
        Miss
        Ms
        Other
    }

    class ContactDetails {
        - address: Address
        - phoneNumber: PhoneNumber
        - emailAddress: EmailAddress

        +getAddress(): Address
        +getPhoneNumber(): PhoneNumber
        +getEmailAddress(): EmailAddress
        +setAddress(address: Address): void
        +setPhoneNumber(phoneNumber: PhoneNumber): void
        +setEmailAddress(emailAddress: EmailAddress): void
    }

    class Address {
        - addressFirstLine: String
        - addressSecondLine: String
        - addressThirdLine: String
        - postCode: String

        - validatePostCode(postCode: String): boolean
        - validateAddressLine(address: String): boolean
        - validatePostCode(postCode: String): boolean
        + getAddressFirstLine(): String
        + getAddressSecondLine(): String
        + getAddressThirdLine(): String
        + getPostCode(): String
        + setAddressFirstLine(addressFirstLine: String): void
        + setAddressSecondLine(addressSecondLine: String): void
        + setAddressThirdLine(addressThirdLine: String): void
        + setPostCode(postCode: String): void
    }

    class PhoneNumber {
        - phoneHome: String
        - phoneMobile: String
        - phoneWork: String

        - validateNumber(number: String): boolean
        + getPhoneHome(): String
        + getPhoneMobile(): String
        + getPhoneWork(): String
        + setPhoneHome(PhoneNumber: String): void
        + setPhoneMobile(PhoneNumber: String): void
        + setPhoneWork(PhoneNumber: String): void
    }

    class EmailAddress {
        - emailAddress: String

        - validateEmailAddress(emailAddress: String): void
        + getEmailAddress(): String
        + setEmailAddress(emailAddress: String): void
    }

    class MarketingConsent {
        - consent: boolean
        - dateUpdated: Date

        + getConsent(): String
        + setDateUpdated(): Date
        + setConsent(consent: boolean): void
        + setDateUpdate(dateUpdated: Date): void
    }

    class MembershipType {
        - membershipType: String
        - student: StudentMember

        + getMembershipType(): String
        + getStudentMember(): StudentMember
        + setMembershipType(membershipType: String): void
        + getStudentMember(student: StudentMember): void
    }

    class StudentMember {
        - studentStatus: boolean
        - letterReceived: boolean
        - letterDate: Date

        + getStudentStatus(): boolean
        + getLetterReceived(): boolean
        + getLetterDate(): Date
        + setStudentStatus(studentStatus: boolean): void
        + setLetterReceived(letterReceived: boolean): void
        + setLetterDate(letterDate: Date): void
    }

    class StatementAgreement {
        - statementSigned: boolean
        - statementDated: Date
        + getStatementSigned(): boolean
        + getStatementDated(): Date
        + setStatementSigned(statementSigned: boolean): void
        + setStatementDated(statementDated: Date): void
    }

    class PaymentDetails {
        - annualPayment: BigDecimal
        - firstMonthPayment: BigDecimal
        - dateJoined: Date
        - directDebitAmount: BigDecimal
        - firstPaymentDue: DateTime

        + getAnnualPayment(): BigDecimal
        + getFirstMonthPayment(): BigDecimal
        + getDateJoined(): Date
        + getDirectDebitAmount(): BigDecimal
        + getFirstPaymentDue(): DateTime
        + setAnnualPayment(annualPayment: BigDecimal): void
        + setFirstMonthPayment(firstMonthPayment: BigDecimal): void
        + setDateJoined(dateJoined: Date): void
        + setDirectDebitAmount(directDebitAmount: BigDecimal): void
        + setFirstPaymentDue(firstPaymentDue: DateTime): void
    }