common tool for developing an initial high-level design for project is the use of crc cards class-responsibility-collaborator (crccards are simple index cards that subdivide the work required of program the main idea behind this tool is to have each card represent componentwhich will ultimately become class in the program we write the name of each component on the top of an index card on the left-hand side of the cardwe begin writing the responsibilities for this component on the right-hand sidewe list the collaborators for this componentthat isthe other components that this component will have to interact with to perform its duties the design process iterates through an action/actor cyclewhere we first identify an action (that isa responsibility)and we then determine an actor (that isa componentthat is best suited to perform that action the design is complete when we have assigned all actions to actors in using index cards for this process (rather than larger pieces of paper)we are relying on the fact that each component should have small set of responsibilities and collaborators enforcing this rule helps keep the individual classes manageable as the design takes forma standard approach to explain and document the design is the use of uml (unified modeling languagediagrams to express the organization of program uml diagrams are standard visual notation to express object-oriented software designs several computer-aided tools are available to build uml diagrams one type of uml figure is known as class diagram an example of such diagram is given in figure for class that represents consumer credit card the diagram has three portionswith the first designating the name of the classthe second designating the recommended instance variablesand the third designating the recommended methods of the class in section we discuss our naming conventionsand in section we provide complete implementation of python creditcard class based on this design creditcard classfieldscustomer bank account balance limit behaviorsget customerget bankget accountmake payment(amountget balanceget limitcharge(pricefigure class diagram for proposed creditcard class