1 / 52

Chapter 8

Chapter 8. Designing Classes 8.1 Choosing Classes 8.2 Cohesion and Coupling CRC Cards UML Diagrams. Assignment Chapter 8. Review Exercises (Written) R8.1 – 8.3, 8.5 – 8.7, 8. 10, 8.11, 8.13, 8.15, 8.19, 8.20 Due Thursday , January 10, 2013

danae
Download Presentation

Chapter 8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 8 Designing Classes 8.1 Choosing Classes 8.2 Cohesion and Coupling CRC Cards UML Diagrams

  2. Assignment Chapter 8 • Review Exercises (Written) • R8.1 – 8.3, 8.5 – 8.7, 8. 10, 8.11, 8.13, 8.15, 8.19, 8.20 • Due Thursday, January 10, 2013 • CRC Cards – in class assignment to be completed by Friday, Jan 11, 2013

  3. Choosing classes • A class should represent a single concept from the problem domain. • Point • ComplexNumber • Rational • Purse • BankAccount

  4. Classes have responsibilities. • Point What are some responsibilities for the Point class?

  5. Classes have responsibilities. • Point • getX • getY • setX • setY • findDistanceFromOrigin • findDistanceFromPoint

  6. Classes have responsibilities. • ComplexNumber What are some responsibilities for the ComplexNumber class?

  7. Classes have responsibilities. • ComplexNumber • getReal • getImaginary • add • subtract • multiply

  8. Classes have responsibilities. • Rational What are some responsibilities for the Rational class?

  9. Classes have responsibilities. • Rational • getNumerator • getDenominator • add • subtract • multiply • divide • reduce

  10. Classes have responsibilities. • Purse What are some responsibilities for the Purse class?

  11. Classes have responsibilities. • Purse • getTotal • getCents • getDollars • addDimes • addNickels • addQuarters • …

  12. Classes have responsibilities. • BankAccount What are some responsibilities for the BankAccount class?

  13. Classes have responsibilities. • BankAccount • getBalance • deposit • withdraw

  14. Choosing Classes • A class represents a single concept from the problem domain • Name for a class should be a noun that describes concept • Concepts from mathematics: Point Rectangle Ellipse • Concepts from real life BankAccount CashRegister

  15. Choosing Classes - Types • Actors (end in -er, -or)–objects do some kinds of work for you • Scanner • Random // better name: RandomNumberGenerator • Utility classes–no objects, only static methods and constants • Math • Program starters: only have a main method • Don't turn actions into classes: • Paycheck is better name than ComputePaycheck

  16. Classes • The rule of thumb for finding classes is to look for nouns in the problem description • ChessBoard is a good name for a class but • NextMove is not.

  17. Special Types of Classes • Actor Classes • Do work for you. • Random generates random numbers • Utility Classes • Class has no objects but contains a collection of related methods and constants. • Math has methods abs, sqrt, etc. • Math has constant PI. • Classes with one method main whose purpose is to start a program for you.

  18. Buzz words (Kolling)… • Coupling • interconnectedness of classes • We want cooperating classes • We want low degree of coupling • If we make a change in one class, we do not want to have to change many classes. • Cohesion • One unit of code should be responsible for one task. • method should accomplish one well-defined job • a class should represent one type of entity • Code duplication is usually a sign of bad cohesion.

  19. A good class design… • Think ahead • What might change? • Encapsulate all information about user interface in a clearly defined set of classes. • One class should encapsulate one entity. • One method should do one task

  20. CRC Cards • Class-Responsibilities-Collaborators • A CRC card is an index card created in informal brainstorming sessions where the behaviors of the application to be modeled are simulated and recorded on the index cards.

  21. History • Introduced in 1989 by Kent Beck and Ward Cunningham for teaching OOP. • CRC Cards are portable. • Promotes good software design. • Promotes team work.

  22. The idea (Adapted from Ward Cunningham Computer Research Laboratory Tektronix, Inc.)

  23. A Picture Class name Class Responsibilities Collaborators

  24. An Example Purse Class Responsibilities Collaborators addCoin removeCoin getTotal

  25. A UML Diagram • UML (Unified Modeling Language) notation for classes and objects describes the dependency relationships among classes. • A "picture." • We will look at class UML Diagrams first. • An object UML diagram underlines the class name, a class UML diagram does not underline the class name.

  26. A UML Diagram Purse The Purse class depends on the Coin class. The Coin class does NOT depend on the Purse class. Coin dotted arrow with open end pointing to dependent class.

  27. Coupling • If many dependencies exist among classes, we say that coupling is high. • If few dependencies exist among classes, we say that coupling is low. • It is a good practice to minimize the coupling between classes. WHY?

  28. Low Coupling

  29. High Coupling

  30. C-R-C • A Class represents a collection of similar objects. A class can be any concept important to the system. Look for nouns in the problem description. The Class name appears across the top of the CRC card.

  31. C-R-C • A Responsibility is anything that the class knows or does. Responsibilities are things that the class has knowledge about itself, or things the class can do with knowledge it has. Look for verbs in the problem description • The Responsibilities of a class appear along the left side of the CRC card.

  32. C-R-C • A Collaborator is another class that is used to get information for this class or to complete actions for this class. • The Collaborators of a class appear along the right side of the CRC card.

  33. Procedure • Organize in a group of 2-3 people. • Group Responsibilities: • Brainstorm to find classes in problem domain. (Look for nouns.) • Filter the list of classes and assign cards to those classes remaining. • Assign responsibilities to each class (on its index card). • Attributes CAN be assigned, but should not be emphasized.

  34. Procedure • Group Responsibilities (continued): • Often, as you are brainstorming, the responsibilities demonstrate the need for additional classes. • List the collaborators of each class. What other classes does this class interact with? What classes does the object need to fulfill its responsibilities?

  35. Group Responsibilities: • Place cards on table so that the layout is a visual representation of the solution. Classes that collaborate should be near to each other.

  36. Problem Definition • This program will simulate the TV Lottery drawing for the Pick-6 New Jersey Lottery game. In this game, balls are placed in a container that keeps them popping around in some random movements. • The "Lottery Picker" picks a ball from the container (6 times). • The chosen balls are displayed. • Create C-R-C Cards and a UML diagram for the problem.

  37. Candidate classes • Ball • Game • Picker • Container Ball Container Game Picker

  38. Lottery Ball Class Responsibilities Collaborators getValue

  39. Lottery Container Class Responsibilities Collaborators holdBalls Ball removeBall

  40. Lottery Picker Class Responsibilities Collaborators chooseBall Ball (Random Generator)

  41. Lottery Game Class Responsibilities Collaborators play Picker Container

  42. Problem Definition • Coins are placed in a vending machine and a product is selected by pushing a button. If the inserted coins are sufficient to cover the purchase price of the product, the product is dispensed and the change is given. Otherwise the inserted coins are returned. • Create C-R-C Cards and a UML diagram for the problem.

  43. Candidate Classes • VendingMachine • Product • Coin

  44. Vending Machine Problem Vending Machine Class Responsibilities Collaborators HoldProducts Product TakeCoins Coin GiveChange

  45. Vending Machine Problem Product Class Responsibilities Collaborators getPrice getName

  46. Vending Machine Problem Coin Class Responsibilities Collaborators getValue getName

  47. Candidate Classes • VendingMachine • Product • Coin

  48. Hmmmmm… • Vending Machine • holds products • how many? • are there any left? • makes change • what if machine can't make exact change? • how does it figure out what coins to give back?

  49. Maybe • We should think of additional classes for this design! • Possibilities?

  50. Problem Definition • Customers order products from a store. Invoices are generated to list the items and quantities ordered, payments received, and amounts still due. Products are shipped to the shipping address of the customer and bills are sent to the customer's billing address. • Create C-R-C Cards and a UML diagram for the problem.

More Related