CSC172 Class Design Pepper
Goals How to design classes How to think in terms of objects StarUML Code Generation
How to Design Classes What objects to choose to solve a given problem? – What classes will we need to implement a system that meets our requirements? – What fields and methods will each class have? – How will the classes interact with each other?
Good Class Design Cohesive – only one abstraction No unnecessary coupling – No printing to a specific device such as screen scanner Related data in the same class
Class UML Diagram Each class box: – Name / state / behavior Relations – Has a – Knows a – Uses a – Is a Great Explanation matched to code – sResources/ClassDiagramsInANutshell/ sResources/ClassDiagramsInANutshell/
CRC cards One per noun / entity / object Class: Noun is the class name on the top Responsibility: List responsibilities on the left Collaboration: List collaborating objects on the right – If a class is being used in a collaboration, its card will not show the collaboration – the user shows the collaboration
CRC Exercise 5 card draw List objects / entities Make one card for each Walk through the game Draw a UML diagram
StarUML Card Deck Hand Players Dealer Game
StarUML Code Generation UML diagram generates code Can reverse engineer Link to Diagram Link to Code
Summary StarUML CRC Cards Good design principles – Cohesive - one abstraction – No unnecessary coupling – Related data in the same class