In the object-oriented , you can create the class diagram and sequence diagram. And , if you create the sequence diagram , you can design the detail of the process.
But , there is a thing that you can not design in the object-oriented.
For example , if you design the software of the finance, you may think the interest and present value.
In others, if you design the technical software , there are cases that you may solve the math problem.
I think that the solving the math problem is out of range of the object-oriented. I think that atfer design (deta design and so on) is in the object-oriented.
It is assumed I owed $M from the bank ,the interest is p (/Month) (0≤p )1 and the repayment method is the regular monthly payments.
When I repay $R per month , find the recurrence formula. But , when you find the value of interest , drop below the decimal point.
Because of the regular monthly payments , first , I pay the interest($[pM] ) 2 from $R of the repayment. And , I pay a principal from the rest ($R-[pM] ).
It is assumed that the month from beginning the repayment is i : M0=M M1=M0-(R-[pM0]) M2=M1-(R-[pM1])
from the above formula: Mi+1=Mi-(R-[pMi])
This formula is found.
But , the last repayment is not always $R . And Mi is 0 or more. Accordingly , Mi+1=Mi-(R-[pMi]) ... If Mi + [pMi] ≥ R =0 ... Others
I think that the above formula is better. 3
Because this example is simple , you may not feel actually. But , if you consider the repayment from the bonus and the advancing repayment and want to obtain the amount of the refundment from the payment number of months , it becomes difficult.
I think that this case is the design needed at the methods too 4.
1: The upper bound of the interest p is actually decided by the law. The searching of the law is important for designing the software.
2: [x] means the maximum integer that doesn't exceed x. (This is the Greatest Integer Function)
3: This recurrence formula can not be solved. But , if the Greatest Integer Function is not considered , this formula can be solved.
4: After , I think that the flowchart is created from this formula.
I think that the design of the window class is a range of the object-oriented design , but the layout of the window and the definition of the input parameter is not so.
The Figure 1 is the window design of the "Search Word Document" add-in.
Note. This design is in Japanese. Sorry.
Because I thought that the window layout was necessary to be like the [Find and Replace] dialog of the Microsoft Word , I wrote to be able to understand the difference from the dialog 1.
Figure 1 - The example of the window layout 1
In the Figure 1 , the number of the input character and input checking are not written, but these should be designed securely.
The condition of the on/off in the check box , the list of the text in the list box and so on should be defined ( designed ) .
1: This is unreadable... Please think that this is not the design ( or specification ) but the analysis datas.
In the work , because there are cases that the designs are finally necessary to be supplied and the programmer is not the designer , this should be written more readable.
This is the file design , log file design and so on that is used at the connection to other system.
I think that the design of the data read from files and the parameter defined in files are in the range of the object-oriented , but the design of the files (file path , name , charset (UTF-8 , Shift_JIS and so on) , format (CSV , XML , INI File Format , Excel File Format and so on) and so on are not so.
In Figure 2 , there is file design of the "Insert Header Comment" add-in. The file path and content of the files are designed.
Figure 2 - Example of the file design (When the image is clicked, what expands to another screen is displayed.)
When you create a program in your hobby , I think that you don't use a database.
I think that the creating of the ER-diagram , design of the indexes 1 , estimating of the data amount, data space , backup2 and so on should be considered.
1: If the index is created , the selecting speed becomes up but the deleting and updating speed becomes down.
2: There are full backup , differential backup and so on.
When you create a program in your hobby , I think that you don't use a network.
I think that the network composition , estimating of the data amount ( traffic ) , protocol and so on should be considered.
I think that this should be considered together with other elements ( file design , window design and so on).
The security is very important.
There are the checking the input error , SQL injection and so on.
Others ( mistakable or high risk point ) are often designed.
In the books or website , "In the basic design , the business flow , system structure diagram , ER diagram and so on are designed." may be written.
I think that this is important.
But, I think the reason of the design is more important. For example , why an ER diagram is designed in the basic design ?
You should consider the reason , and should decrease the bug and risk 1,2.
For example , we can express a thread in the sequence diagram in the UML. But , because a thread programming is often untestable and unreadable , I think that other design ( the policy of the thread ) is needed.
1: The reason that I wrote this is because many person think that the design in the books or website is enough. But I think that their designs are not enough contents.
The risk should be considered. And you should consider the needed design.
The cost ( programming cost , testing cost , applying cost and so on) should be considered too.
The things that you doubt should be written in the specification.
2: But , others expect a risk should be considered. For example , delivering goods are needed to be created.
I doesn't assume the responsibility of any damage that occurs because of the use of this page.
Microsoft ,Windows ,Visual Basic and Excel are registered trademarks of Microsoft Corporation in the United States and other countries.
Visual Basic® for Applications may represent a VBA.
Mac ,Mac OS ,Mac OS X ,AppleScript are trademarks of Apple Inc., registerd in the U.S. and other countries.
Other brands and their products are trademarks or registered trademarks of their respective holders and should be noted as such.
The author of this page and these companies do not have any relationship.