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 UML keywords Generalization SysML keywords Block Mathematica keywords OpenerView Graph Webel Mathematica keywords ADT` Webel ADT EX$RowList EX$EX ADT$List «adt:memberInterface» 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 Up next Mini SysMLv1 BDD view of the Webel ADT Block Notes [EXPLANATION]{INFORMATIVE} Mathematica: Webel ADT: The term 'Abstract Data Types (ADT)' is used informally (the Webel ADTs do not always adhere to strict definitions of ADTs). Please just think of it here as meaning a strong type or stateless "pseudo class". [ASSERTION]{STRONG} When domain modelling with SysML, Generalization, inheritance, and even multiple inheritance are not "evil" and can be used relatively freely. We are not doing code-oriented Decorator patterns - an implementation choice - we are doing domain modelling! [TIP]{STRONG} Mathematica: Webel ADT pseudo classes: TIP: Prefer the Decorator Pattern over multiple inheritance of ADT-Method UpValues! (But not because "inheritance is evil" per se, it isn't.) The base ADT libraries make heavy (and very useful) use in inheritance. Snippets (quotes/extracts) 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) 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) Related slides (backlinks, includes other tutorials) Webel ADT`package: Some ADT pseudo class utility functions in a ::usage help viewer. Diagnostic, help, and development functions. Mini SysMLv1 BDD view of the Webel ADT Block SysMLv1 Internal Block Diagram (IBD) of the Webel ADT base class Simple Webel ADT in the development view dV[adt] and class/methods help hC[adt] Classes in the ADT` package: Extendable ADT pseudo classes have corresponding "definer functions" 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 hierarchy for the XL` package for reading unstructured data from OpenXML XLSM bundles ADT hierarchy for the US` package with intermediate unstructured data and identification of data groups ADT hierarchy for the EX`package for extracted structured data ADT hierarchy for a typical Client Data (CD) layer for identifying structured data groups Typical unstructured spreadsheet data imported into the XL layer XL$Row and XL$Cell under the hood XL$Cell value resolution for “text” requires an XL$ResourcesMap (Real, Integer, and Boolean value resolution does not) UUID-driven Once-caching. Example: XL$Cell value resolution with an XL$ResourcesMap 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 XL$Cell with a VBA formula and XL$F Spreadsheet “units indicator” HACKS do NOT use a units-aware Quantity algebra! Units and Quantity extraction with US$Row XL$RowList vs XL$Row vs XL$Cell US$RowList spanned rows filling US$RowList sub-list extraction US$RowList & EX$RowMap column extraction and custom styled tables US$RowList “section” extraction UD` demo package for US$Section UD` demo: Basic US$ValuesSection US$ValuesSection to EX$RowMap US$SectionMap auto-detection Specific Component-aware sub-ADTs Demo Component values extraction (but not yet as EX Component ADTs) The demo UD$EX$Component for extracted structured EX Layer data The US$SheetManager as a bridge between the US Layer and EX Layer Extracted demo UD$EX$Component:Demo UD$EX$Components: Creative views in the UD$SheetManager Demo UD$EX$Components analyser UD$EX$Components as (quick) XML UD$EX$Component “database” demo (using a Wolfram Language EntityStore) Flags Book traversal links for Webel ADT hierarchy views as tree, graph, and SysML Previous Up Next