Key to concept example:

Suppose you were developing a graphics program like Microsoft Paint. Given this use case for the system function "draw a polygon,"
  1. List the candidates for key concepts (classes) in a conceptual model.

    user, polygon, picture, current function, position, vertex, sequence, visual marker, edge.

  2. Briefly explain why each candidate is or is not a good choice for a concept.

    user: no, there is no attribute we need to capture or behavior we need to model - we don't need to store user id data or carry out actions for the user

    polygon: yes, will capture its attributes and behaviors to draw and manipulate it

    picture: yes, this will aggregate the graphics objects that make up the image, and will have to
    respond to messages like "insert graphics object"

    current function: possibly, so yes, because we may want to be able to ask "what is the current function?" and we may store the value as a non-primitive type like an enumeration

    position: yes, it has an internal structure

    vertex: yes, has behaviors and attributes we want to capture

    sequence: reasonable to argue either way:
    no, just a numerical value, OR
    yes, represents the collection of vertices so has internal structure and behaviors to model

    display: no, just a representation of the picture

    visual marker: yes, we'll have to capture its position and representation, and model its behavior

    edge: yes, has internal structure and behaviors we want to model