Before I can start writing things, I need to establish definitions for the terms I will be using.  This will make it easier to understand what I’m talking about, and reduce confusion.  I am trying to avoid using terms and class names currently used by Java, that I might use differently, and keep the same usage for those already defined in Java.  For example, in Java, the term Collection has a specific meaning, so when I use the term Collection (capitalized) I am referring to the Java definition while a lower case version refers to the more common definition of the term.

The sport/game of bowling has its own dictionary, for those who may not be familiar with it.

Term Definition
Bowler A person who may belong to zero or more leagues.  The Bowler becomes a Member when they join a league.
DelimitedFileIO An implementation of the Shovel interface which allows data to be read from a delimited text file and converted into a Record or other object which supports the Shovel interface.
Shovel An interface defining the methods required by DelimitedFileIO for reading from a delimited text file and creating other Objects.
Store A collection of Records.  Since it may be implemented using a List, Set, or Map, I’ve given it a name which doesn’t indicate the implementation method, and doesn’t conflict with any Java names.
Mediator As described in Design Patterns , it mediates information passing between Stores.
Member A Bowler who joins a league and becomes a regular or substitute player.
Record A class which has Tics which define it.  An example is a Bowler.
Shovel An interface defining the way data will be passed from the data store into the program to form Objects such as Records.  An example implementation is DelimitedFileIO.
Tic A class for a characteristic of a Record.  Examples are last name, birthday, and phone.  They can be different types of objects such as String, Integer, Date, and List.