Draw on the right, write (Umple) model code on the left. Analyse models and generate code. This tool stores your data in cookies and on a server. I understand. Click to learn about privacy. Download Donate For help: User manual Ask questions Report issue
// library model // interface iDomainModel {} // generate a comain model interface iDataModel {} // generate a data model interface iViewModel {} // generate a view model interface iPersistenceFull {} // generate full crud interface iPersistenceReadOnly {} // generage read only interface iDerived {} /********/ // Traits // trait DataModelBaseTrait { int key_ID; DateTime Created; RowVersion RowVersion; } trait PublicationTrait { isA DataModelBaseTrait; string Title ; ISBN; } trait AuthorTrait { isA DataModelBaseTrait; Name; } trait PublisherTrait { isA DataModelBaseTrait; Name; } trait MemberTrait { isA DataModelBaseTrait; Name; DateTime DOB; } trait CopyTrait { isA DataModelBaseTrait; BarCode; } trait LoanTrait { isA DataModelBaseTrait; DateTime IssueDate; DateTime DueDate; } trait LoanStatusTrait { isA DataModelBaseTrait; Name; } trait MembershipCardTrait { isA DataModelBaseTrait; Barcode; DateTime ExpiresOn; } //////////////// // Data Models class Publication { isA PublicationTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; isA iViewModel; *--* Author; *--1 Publisher; 1--* Copy; } class Author { isA AuthorTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; isA iViewModel; } class Publisher { isA PublisherTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; isA iViewModel; } class Member { isA MemberTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; 1--1 MembershipCard; isA iViewModel; } class Copy { isA CopyTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; isA iViewModel; } class Loan { isA LoanTrait; isA iDataModel; isA iPersistenceFull; isA iDomainModel; isA iViewModel; 1--1 Copy; 1--1 Member OnLoanTo; *--1 LoanStatus Status; } class LoanStatus { isA LoanStatusTrait; isA iDataModel; isA iPersistenceReadOnly; isA iViewModel; } class MembershipCard { isA MembershipCardTrait; isA iDataModel; isA iPersistenceFull; isA iViewModel; } /********************/ // Domain Models // Create additional domain models // class MemberLoansDomainModel { isA MemberViewModel; 1--* LoanViewModel Loans; } /********************/ // View Models class MemberViewModel { isA iViewModel; isA MemberTrait; } class LoanViewModel { isA iViewModel; isA LoanTrait; } class MemberLoansViewModel { isA MemberViewModel; MemberViewModel member; 1--* LoanViewModel Loans; } // flattened class derived form others class BookSummaryViewModel { isA iViewModel; isA iDerived; Author_Name AuthorName; Author Author; Book_Title Title; Loan_LoanStatus_Name LoanStatus; DateTime LastBorrowed; } // a form that uses one class, then multiple of another // a way to only use certain fields from Mmeber // yes - another viewmodel for member with less columns class NewLoanFormViewModel { isA iViewModel; string issueLocation; 1--1 Member; 1--* Copy BooksToBorrow; } //$?[End_of_model]$? namespace -; class Publication { position.association Publication__Publisher 19,143 30,0; position.association Copy__Publication 8,143 30,0; } class Publication { position 50 30 109 45; } class Author { position 50 130 109 45; } class Publisher { position 50 230 109 45; } class Member { position 50 330 109 45; } class Copy { position 50 430 109 45; } class Loan { position 250 30 109 45; } class LoanStatus { position 250 130 109 45; } class MembershipCard { position 250 230 109 45; } class MemberLoansDomainModel { position 450 30 109 45; } class MemberViewModel { position 450 130 109 45; } class LoanViewModel { position 450 230 109 45; } class MemberLoansViewModel { position 450 330 109 45; } class BookSummaryViewModel { position 450 430 109 45; } class Publication { position 50 30 109 45; } class Author { position 50 130 109 45; } class Publisher { position 50 230 109 45; } class Member { position 50 330 109 45; } class Copy { position 50 430 109 45; } class Loan { position 250 30 109 45; } class LoanStatus { position 250 130 109 45; } class MembershipCard { position 250 230 109 45; } class MemberLoansDomainModel { position 450 30 109 45; } class MemberViewModel { position 450 130 109 45; } class LoanViewModel { position 450 230 109 45; } class MemberLoansViewModel { position 450 330 109 45; } class Publication { position 50 30 109 45; } class Author { position 50 130 109 45; } class Publisher { position 50 230 109 45; } class Member { position 50 330 109 45; } class Copy { position 50 430 109 45; } class Loan { position 250 30 109 45; } class LoanStatus { position 250 130 109 45; } class MembershipCard { position 250 230 109 45; } class MemberLoansDomainModel { position 450 30 109 45; } class MemberViewModel { position 450 130 109 45; } class LoanViewModel { position 450 230 109 45; } class MemberLoansViewModel { position 450 330 109 45; } class NewLoanFormViewModel { position 650 30 109 45; }