Gallery Tutorial [TECHNICAL SLIDE TRAIL] The Webel libraries for Wolfram Mathematica: With SysMLv1 models. Section SECTION: The Webel Abstract Data Type (ADT) stateless pseudo-classes with inheritance (with SysMLv1 models) Tags and keywords Webel Mathematica keywords ADT` Webel ADT ADT definer function ADT$List ADT$Map Keywords Wolfram Wolfram Language Mathematica Webel::SysML4Mathematica Webel IT Australia Abstract Data Types Webel:ADT Systems Modeling Language SysMLv1 Click on the image to view it full size For reference, some associated Policy Notes (you don't need to visit these links yet): Mathematica: Webel ADT pseudo classes: DEFINITION/CONVENTION: Functions that populate ADTs with reusable ADT-method UpValues are called 'definers' and include '$def' in the name after a Package scope indicator: Example: adt$def$ADT, my$def$MY$CleverList Mathematica: Webel ADT pseudo classes: POLICY: Definer functions MUST return the self-declared or injected 'pattern' that determines the unique "ADT-signature" of the defined ADT class. Mathematica: Webel ADT pseudo classes: POLICY: Every named concrete Abstract Data Type (ADT) has a ONE unique "signature" (which is the pattern passed to the "definer" functions). To vary a signature, define another unique ADT name. Mathematica: Webel ADT pseudo classes: POLICY/DEFINITION: Every "hard coded" definer or defining client of a definer has a corresponding ADT ArchetypeClass. Example ("hard coded"): The definer 'my$def$MY$SmartList' has ArchetypeClass 'MY$SmartList'. Up next Creating new ADTs that extend other classes using a definer function (and adt$addSuper) Notes [CONVENTION, NAMING, POLICY]{STRONG} Mathematica: Webel ADT pseudo classes: DEFINITION/CONVENTION: Functions that populate ADTs with reusable ADT-method UpValues are called 'definers' and include '$def' in the name after a Package scope indicator: Example: adt$def$ADT, my$def$MY$CleverList [POLICY]{STRICT} Mathematica: Webel ADT pseudo classes: POLICY: Definer functions MUST return the self-declared or injected 'pattern' that determines the unique "ADT-signature" of the defined ADT class. [CONVENTION, POLICY]{STRICT} Mathematica: Webel ADT pseudo classes: POLICY: Every named concrete Abstract Data Type (ADT) has a ONE unique "signature" (which is the pattern passed to the "definer" functions). To vary a signature, define another unique ADT name. [CONVENTION, NAMING, POLICY]{STRICT} Mathematica: Webel ADT pseudo classes: POLICY/DEFINITION: Every "hard coded" definer or defining client of a definer has a corresponding ADT ArchetypeClass. Example ("hard coded"): The definer 'my$def$MY$SmartList' has ArchetypeClass 'MY$SmartList'. Snippets (quotes/extracts) Related slides (includes other tutorials) Introduction to Webel Abstract Data Types (ADTs) with SysMLv1 models Webel Abstract Data Types (ADTs) vs the user-contributed MTools for OO Webel ADTs include inheritance (and aren’t actually formal ADTs) Webel ADT hierarchy views as tree, graph, and SysML Webel ADT`package: Some ADT pseudo class utility functions in a ::usage help viewer. Diagnostic, help, and development functions. Related slides (backlinks, includes other tutorials) Extending ADT sub-classes represented as SysML Blocks with redefined wrapped ‘$$’ Creating new ADTs that extend other classes using a definer function (and adt$addSuper) Webel «adt:pseudo» elements in the SysMLv1 ADT model (1) Webel «adt:pseudo» elements in the SysMLv1 ADT model (2) Chained wrapped ADT pseudo Lists: Example: EX` package structured data ADTs Chained wrapped ADT pseudos as a SysMLv1 Internal Block Diagram (IBD) Clients of List ADTs don’t usually directly access the wrapped Lists (but can for testing with ADT⊙get which BREAKS ENCAPSULATION) Webel ADT SysMLv1 Stereotypes adt$graphHierarchy example: The EX` package for structured data ADT finder functions and “methods” adt$findUp, adt$findUpArg, ADT⊙fM ADT help functions and methods: adt$treeHierarchy (adt$tH), adt$hC, ADT⊙hC: Example: XL$Cell ADT`: helpADT[class]: help on methods registered with HelpO`: Example: XL$Cell Visit also Mathematica: POLICY NOTES for the Webel Abstract Data Type (ADT) pseudo classes with inheritance for the Wolfram Language Dr Darren of Webel IT Australia makes the case for better object-orientation for Mathematica using pseudo class ADTs without losing the super-functional power of the Wolfram Language Visit also (backlinks) Flags Book traversal links for Classes in the ADT` package: Extendable ADT pseudo classes have corresponding "definer functions" Previous Up Next