Samples and figures provided in this document are not necessarily coherently in binding in design. It is up to the user to make his or her 'story' complete by applying the principles.
TekNewell C# OOP Framework is a software tool. It is built to run on MS Windows and the executable is 'oopf.exe' which is inherited from its brother product Excel Accocunting Tool's executable name. It takes input Excel file(s) and produces output Excel files and C# object files over previous version.
Each developer owns a copy of this tool. He or she uses it to create and upgrade the Object Oriented Programming source code version. The source code files are created in design based on Object Hierarchical Chart created by the tool previously, and once it upgrades, a new chart is again created for future design. Hence it creates a series of healthy cycles one after another. The collection of object code files are like an enterprice's factories, offices and building floors that were built already. A developer just need to assign furnitures, machines and work units into each room. This totally eliminates the lack of design in the procedure-oriented programming method and the shortcomings that comes with it.
Users should have at least once read the User Purchase and License Agreement at time of using the Trial version. Subsequent decision to purchase the software indicates user agrees without preservation the provisions set forth in the document of User Purchase and License Agreement.
Teknewell is a registered legal company in Massachusetts USA, The product tools are safe. Please also read the readme.txt if available. Here you can access User Purchase and License Agreement
Goto Trial Download to download a trial version. The trial version only lasts for 1 month. Follow on-screen instructions, and you should have downloaded the file 'eatprooop.zip'.
If you felt Teknewell C# OOP Framework tool is a useful and can help you adapt to OOP Mindset, and decided to acquire, then goto Teknewell C# OOP Framework Tool to purchase a license.
Once downloaded, unzip to the file to your desired location in disk. You can right-click the file 'oopf.exe' and then click on 'Pin to Taskbar'. You can click the icon on Taskbar in continuous use.
After you click the icon on Taskbar, the Framework Manager will run and prompt user to enter the license key. You can find the key in your email. You should also save a copy of the email for future reference. By this time you are all set and ready to set up your models for projects.
Supposing you have run the button 'Upgrade', and a new version was upgraded, but you decided not to move to the new version, you can rollback to the previous version. Doing that, you can click on the button 'Rollback' at the bottom-right corner on the page 'Run'. In order to run smouthly, the last version number in the staging directory must equal the version number chosen in the project. All these configuration steps can be performed manually.
Under the directory 'model', user creates model files prefixed with 'model' like model-*.xlsx. In this file you can specify the location of input files. There are few commands available. See following table of commands. Note user can edit Excel file in Microsoft Office Excel, LibreOffice Calc or a Google Spreadsheet.
Under the directory specified by command 'scan' in model file, you can supply Input sheet files prefixed with 'eat' like eat-*.xlsx. The commands are described in following chapter.
There are 2 commands. One is named 'OopPackage', the other 'OopClasses'. The first is singular, the other plural. There is a field for both commands, it is called Prefix, and they have to match for both. And at this time there is only one Prefix that is being processed for 1 model. The prefix is to identify 1 package of version in which a set of objects are closely related and serve in unison. The 2 commands are described in great detail below. Term: Double cell definition (DCD) is that if a cell value is not empty, and it is a file name, then the content of the file is used. If it is not a file, then the cell value is used. If it is a file, it is assumed that the the file resides in directory defined in column I of command 'OopPackage'. In fact, all files are assumed residing in the directory. Note: user can write any comments and memos beyond the rightest column described here in the 2 commands. The memo can help user to recall any design details to upgrade the furthering design. Note: the 2 commands and even same commands do not have to be on the same sheet of Excel Spreadsheet book. That means user can organize the commands into categories where he or she sees making business senses.
Column B 'Prefix' is used to prefix all file names and class names, which uniquely identify a package of version in unison.
Column C 'Global Class Name' is used to specify the global class name. This class should also has been defined in command 'OopClasses' and should be without a base class. This class is the first class in package to be instanciated. All other classes instanciated will be registered within this class after it is registered in their deepest base class 'foundation' defined in column D.
Column D 'Foundation Class Names' is used to specify the deepest base class names. User can specify multiple such classes. The names are separated by |. This is useful because a base class can be used simply to categorize a group classes and the base class can have zero number of members. Each of the classes should also has been defined in command 'OopClasses'. These classes in common hold a pointer to the global class in column C. These classes can be a class defined in this package or a class foreign like Window's class 'IDisposable'.
Column G 'Project File (csproj)' is used to specify a project control file in extension '.csproj'. This file is used to have the previous package link names replaced by the new ones.
Column H 'Project Folder Name' is used to specify the project folder where the previous version is read from and new upgraded version was written to. The version directory takes the format 'Auto_p_0000032.dir' where 'Auto' is the prefix, '0000032' is the version number, 'p' and 'dir' are a fixed marks.
Column I 'Assistant File Folder Name' is used to specify a folder where files in collumn G,H,I,N and O of command 'OopClasses' are read from.
Column J 'Staging Folder Name' is used to specify a folder where all past versions are held as the files were prepared, upgraded and transfered. Each upgrade directory takes the format 'Auto_s_0000032.dir'. This upgrade directory contains 2 directories. One is 'Auto_migrate.dir' and the other 'Auto_input.dir'. All names contains the prefix name. Here it is 'Auto' as example.
Column K '# of Versions to Keep' is used to specify an integer number which is the max number of staging version directories and project version directories allowed. This means the older versions are deleted.
Column L 'Region Marker (long, short or none)' is used to specify which region write-out format is desired. 3 choices are available, long, short or none.
Column E 'Class Name' is used to name the new object.
Column F 'ToolTip Note' is used to show a tooltip note at a cell next to the class name cell in the chart. This is important when user needs quick note of how a class is meant to be used.
Column G 'Old Different Class Name' is used to upgrade from a different object in case user want to change the file name and object name. It is a one time operation. It is assumed the Prefix is added as file name too. Once this upgrade is completed, user should remove the old name for next upgrades.
Column H 'Base Class Name' is used to name the base object. In c#, the inheritance is from singular object. We recommend to write it right after colon ':' and other interfaces to follow.
Column I 'Is Deep Base Foreign?' is used to indicate the base class is from a foreign package. All derived classes should also say so. If yes, the cell for 'Base Class Name' should be empty and the foreign base class name should be in cell 'Base Class Trailer', for example like, ' : ForeignClass'. All constructors should be supplied through cell 'Constructor'.
Column J 'Replacing Formula' is a Double cell definition (DCD), and used to replace strings in upgrade process. The formula has 2 level of separators. The old string and new string are separated by '|1|' and the pairs are further separated by '|0|'. For example, OldString1|1|NewString1|0|OldString2|1|NewString2|0|OldString3|1|NewString3
Column K 'Document Decree' is a DCD, and used for manager to issue decree of how the documents and notes should be written into source code.
Column L 'Common Usings' is used to include the commonly used 'using' statements of assemblies. Additional 'using' statement can be put in in region 'Usings'.
Column M 'Debug only?' is used to indicate an object is for Debuging mode only. Its value is either 'true' or 'yes' for positive.
Column N 'Not Used' was used for NameSpace. Now the NameSpace is 'OopNameSpace' + Prefix. Each package can only has one NameSpace.
Column O 'Class Modifier' is used to include class modifiers like 'public' or 'internal' before clause 'class'.
Column P 'Base Class Trailer' is used to include additonal clauses like interface after the base class or just the class itself.
Column Q 'Constructor' is used to replace the default constructor syntax. If you wish having no Constructor, simply write in cell 'none'.
Column R 'Other Data and Code' is used to include additional data and code in Auto-generated region.
Column A 'CommandName' is used to specify the command.
Column B 'DllFileName' is used to specify the dll file name with extension.
Column C 'NameSpace' is used to specify the NameSpace name in the dll project.
Column D 'ClassName' is used to specify the class name within the NameSpace.
Column E 'MethodName' is used to specify the method name to which the main program EatUi.exe will calll. Copy the method prototype from below.
Column F 'TaskName' is used to specify the task name.
Column G 'AccountName' is used to specify the account name. User can place more than 1 account names here , the names are separated by a char '|'. If they are multiple account names, the multiple method prototype is used instead of the single one. Refer to below for the second prototype.
Column H 'Data01' is used to specify additional data. they can be a field name, a field value or other data user prefers.
Column I 'Data02' is used to specify another data and no limit is set for how many to follow.
Sample: 'OopDll':
Description: Please copy the method prototype to build a dll project. The returned array will be presented in a sheet named as 'AccountName-TaskName'. The array contains rows of columns. The columns are separated by a Tab char. The first column will be shown at column A.
Description: The second sample with generic CakeCut function.
Fields:
Column
What
Example
A
CommandName
OopDll
B
DllFileName
codeSnippet.dll
C
NameSpace
CodeSnippet
D
ClassName
Class1
E
MethodName
writeCodeSnippet
F
TaskName
CodeSpippet
G
AccountName
BaChecking
H
FieldNames
fieldName1|fieldName2
I
Row filter
fieldName|value1
Column A 'CommandName' is used to specify the command.
Column B 'DllFileName' is used to specify the dll file name with extension.
Column C 'NameSpace' is used to specify the NameSpace name in the dll project.
Column D 'ClassName' is used to specify the class name within the NameSpace.
Column E 'MethodName' is used to specify the method name to which the main program EatUi.exe will calll. Copy the method prototype from below.
Column F 'TaskName' is used to specify the task name.
Column G 'AccountName' is used to specify the account name. User can place more than 1 account names here , the names are separated by a char '|'. If they are multiple account names, the multiple method prototype is used instead of the single one. Refer to below for the second prototype.
Column H 'FieldNames' is used to specify filed names separated by char '|'.
Column I 'Row filter' is used to specify the pair of field name and value, which qualifies a row with the same value on the field.
In first run, there is no upgrade available. Other than that there is no other difference. The first version number is 1. A first staging directory is created in 'Auto_s_0000001.dir' and a first version package project directory 'Auto_p_0000001.dir' is created in the project folder. There is only one step user can take to run. Once the 'oopf.exe' is up, it will show the Run page. User will choose the right model, then click 'Create Report'. The result data will show in the list on the same page.
After a successful first run, user need to go to the Visual Studio Project, click an icon called 'Show all files' on top of Solution Explorer. The new project folder 'Auto_p_0000001.dir' will show. user can right-click and select 'Include in Project', then the package will participate in the project.
In each object file, the text lines are typical c# source code lines for a class. Following top component lines are in the file. Those lines are called a region. All regions are folderable.
In the regions listed above, following 10 regions are for user to write in. Note that the class is spelled as clxss. This is because the tool looks for the word 'class' to identify a class. In order to avoid confusion, the word is changed as such.
After a successful run, the tool will update the project file (csproj) specified in column G of command 'OopPackage' with the new project directory name automatically, provided that the new package version number is right above the previous package number by 1. After the project file automatical update, and user flips over the Visual Studio, it will prompt user whether to make the change or ignore. If not update in any means or updated but there were new object classes added, user have to update manually. User can do the same described in previous chapter to exclude the previous package and to include the new package. Note: the manual inclusion process will add the new object classes in whole, while the auto-process will not.
Following steps are involved in each upgrade. They are all automatical except when there is an error, user need to fix the error and run again.
get the new version number
create the shell (or skin) for the new version. This includes all new decree, new auto-generated codes, new using statements, revision of class line and constructor line, etc.
migrade all user code from user code regions.
transfer the new version to the project folder.
exclude the previous version in Visual Studio project
include the new version into Visual Studio project
build the project
if build is a success, then done.
if build is a failure, then cancel the upgrade by deleting the new version directory 'Auto_s_0000001.dir' in staging area, then make changes to fix the error and go back to step 1, run again.
By deleting the new version directory 'Auto_s_0000001.dir' in staging area, the user could start over again. In the next run, the project new version directory 'Auto_p_0000033.dir' is renamed to a name contains the word 'removed', user could delete them in the future when peaceful in terms of risk of data loss.
The core value of this tool is the presentation of object hierarchy in Excel Spreadsheet. That is where a developer or an architect to design a healthy relational object images. Once an idea is formed, It is very convenient for the developer to write out the commands of 'OopClasses'. Most of the work involves CopyPaste on existing approved classes built before. Most classes represent same pattern with zero or few variations.
The hierarchical chart is a set of nodes on a tree structure. In our chart on the left is the base class node, right, the derived class. Each node contains 6 column fields. They are listed as following:
Field 1: the base class ID number
Field 2: its own class ID number
Field 3: the class name
Field 4: not used
Field 5: tree branch level number. the most outer leaf number starts at 1001.
Field 6: not used
So the multiple derived classes shares the same base ID number, plus they are on the right, and their left base class node cells are not repeating and hence empty. This presents an easy, forthcoming chart to recognize the class deriving relationships.
We believe this tool will help developers greatly. It fundamentally changes how developers code a project and store their legacy code. In conventional procedural programming, a developer most of time just drop the code and data into a source file at hand or nearby, in a set of limited, well categorized files best scenario. There is no planning or tool of planning, no object relational design, and no reentry images or blueprints upon which one can refreshs mind or an discuss can take place among colleagues. Also there is no easy way to desseminate a decree or common features versionwide, for example, an ID number for each classes. It is always the best practice to start thinking from top which is the object hierarchy to bottom which is the data and functional code. When object classes are separated by files, it is less possible to mistake typing at a wrong place, and the objects are well protected when files are not opened unnecessarily. This tool facilitated a mechanism for a developer to follow and discipline himself in his profession of software engineering.
This comes to the end of the user manual document. Following is the list of benefits.
The tool allows user to design Object Hierarchy in OOP Mindset easily.
The tool provides a chart or a blueprint to allow user to refresh or review and discuss Object Hierarchy for oneself or among colleagues.
The tool provides an input Excel Spreadsheet to make quick easy revisions on Object Hierarchy.
The tool provides an universal separated object file format to fit into IDE safe and light.
The tool provides a machanism to desseminate company decree versionwide or specific design components among objects related.
The tool is safe in upgrade of version, creates no inpact of harm on previous verions. Rewinding to previous version is easy.
The tool paves a way for a developer to adjust to the OOP mindset and discipline in write-out of object conponents.
All in all, the object hierarchy is like the enterprise's estate where all buildings, factoris, warehouses are well planed and built, and ready for admin offices, task teams, and furnitures to move in.
All files reside on the same disk drive. If the disk drive is no longer functioning, all financial data files are lost. The solution is to backup the files to another USB or network drive.
Purchase a portable USB drive for backup purpose. Plug the drive to a USB port. Backup after you have made changes to the system, usually at the end of day. Once the backup is finished, then proceed to shut down the PC.
This backup command only backs up the files that have the file dates newer than the ones on destination drive, avoiding waste of time on copying unnecessarily the files that have the same contents as that of the destination ones.