SWE202: Software Construction - GRASP Patterns
30 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

What is the purpose of GRASP patterns?

  • To learn about software construction
  • To create responsibilities for classes
  • To document what expert designers probably know intuitively (correct)
  • To design object-oriented software
  • Who is the creator of GRASP?

  • Craig Larman (correct)
  • Nathaniel Borenstein
  • Oluwaseun Priscilla Olawale
  • Unknown
  • What is the definition of a responsibility in UML?

  • A software development methodology
  • A method of an object
  • A design pattern
  • A contract or obligation of a classifier (correct)
  • Why are GRASP patterns important in object design?

    <p>They help in assigning responsibilities</p> Signup and view all the answers

    What is the main difference between GRASP patterns and other design principles?

    <p>GRASP patterns are based on patterns of assigning responsibilities</p> Signup and view all the answers

    What is the benefit of using GRASP patterns in software development?

    <p>It helps in methodically doing fundamental object design</p> Signup and view all the answers

    What is the reason behind the creation of GRASP patterns?

    <p>To document what expert designers probably know intuitively</p> Signup and view all the answers

    What is the focus of GRASP patterns?

    <p>Assigning responsibilities to classes</p> Signup and view all the answers

    What is the relationship between GRASP patterns and object design?

    <p>GRASP patterns are used in object design</p> Signup and view all the answers

    What is the primary goal of using GRASP patterns in software development?

    <p>To help talk about and methodically do fundamental object design</p> Signup and view all the answers

    What is the primary goal of applying the Low Coupling pattern?

    <p>To promote high cohesion and minimize coupling</p> Signup and view all the answers

    Which GRASP pattern suggests assigning responsibilities to a controller class?

    <p>Controller</p> Signup and view all the answers

    What is the primary consideration when deciding which class should create instances of a new bank account?

    <p>The class with the necessary knowledge and access</p> Signup and view all the answers

    Which pattern promotes high cohesion and minimizes coupling by assigning responsibilities?

    <p>Information Expert</p> Signup and view all the answers

    What is the primary benefit of using the Observer pattern in the system?

    <p>To minimize dependencies between classes</p> Signup and view all the answers

    Which class is responsible for calculating interest on a bank account?

    <p>BankAccount</p> Signup and view all the answers

    What is the primary goal of the Information Expert pattern?

    <p>To promote high cohesion and minimize coupling</p> Signup and view all the answers

    Which pattern suggests implementing an Observer pattern to notify interested parties?

    <p>Low Coupling</p> Signup and view all the answers

    What is the primary goal of the Creator pattern?

    <p>To decide which class should create instances of a new bank account</p> Signup and view all the answers

    Which class is responsible for handling the process of transferring funds between bank accounts?

    <p>TransactionController</p> Signup and view all the answers

    What are the two main types of responsibilities in object-oriented design?

    <p>doing and knowing</p> Signup and view all the answers

    What is an example of a 'doing' responsibility of an object?

    <p>initiating action in other objects</p> Signup and view all the answers

    What is a key characteristic of a GRASP pattern?

    <p>it is a named problem/solution pair</p> Signup and view all the answers

    Which GRASP pattern assigns a responsibility to the class that has the information needed to fulfill it?

    <p>Information Expert</p> Signup and view all the answers

    What is the problem that the Information Expert pattern solves?

    <p>how to assign responsibilities to objects</p> Signup and view all the answers

    How many GRASP patterns are there?

    <p>9</p> Signup and view all the answers

    What is the purpose of the Creator pattern?

    <p>to create instances of a class</p> Signup and view all the answers

    What is an example of a 'knowing' responsibility of an object?

    <p>knowing about private encapsulated data</p> Signup and view all the answers

    What is the purpose of GRASP patterns?

    <p>to guide the creation of software through general principles and idiomatic solutions</p> Signup and view all the answers

    What is the main difference between 'doing' and 'knowing' responsibilities?

    <p>doing is about initiating action, while knowing is about having knowledge</p> Signup and view all the answers

    Study Notes

    GRASP (General Responsibility Assignment Software Patterns) is a methodical approach to learning basic object design, providing a framework for assigning responsibilities to classes and objects. It encompasses nine design principles, including Information Expert and Polymorphism, which guide the creation of robust, maintainable, and scalable software systems.performance, reduced maintenance costs, and faster development times.

    Responsibilities

    • A responsibility is a contract or obligation of a classifier
    • There are two types of responsibilities:
      • Doing (e.g., creating an object, initiating action in other objects, controlling and coordinating activities)
      • Knowing (e.g., knowing about private encapsulated data, related objects, or things that can be derived or calculated)

    GRASP Patterns

    • Experienced object-oriented developers build up a repertoire of general principles and idiomatic solutions that guide them in creating software
    • A pattern is a named problem/solution pair that can be applied in new contexts

    GRASP Patterns - Examples

    • Creator: Assign the responsibility of creating instances of a class to the class that has the most knowledge about when and how to create them
      • Example: Assigning the responsibility of creating new bank account instances to the Bank class or AccountManager class
    • Information Expert (or just Expert): Assign a responsibility to the class that has the necessary information to fulfill it
      • Example: Assigning the responsibility of calculating interest on a bank account to the BankAccount class
    • Low Coupling: Aims for classes to have minimal dependencies on each other, facilitating easier maintenance and flexibility in the system
      • Example: Implementing an Observer pattern to notify interested parties of changes in bank account balances without tightly coupling them to the BankAccount class
    • Controller: Assign the responsibility of handling system events or coordinating activities to a controller class
      • Example: Assigning the responsibility of handling the process of transferring funds between bank accounts to a TransactionController class

    Additional GRASP Patterns

    • High Cohesion: Aims to keep a class focused on a single responsibility
    • Polymorphism: Allows for multiple forms of a class, providing flexibility in object decomposition
    • Pure Fabrication: Creates an artificial class to resolve a problem that doesn't have a natural class
    • Indirection: Decouples objects that would otherwise be tightly coupled
    • Protected Variations: Encapsulates the behavior of an object, allowing for changes without affecting other objects

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Week 12-13 -SWE202.pdf

    Description

    Learn about GRASP patterns and their application in software construction. Understand the General Responsibility Assignment Software Patterns and how they are used in software development.

    More Like This

    Use Quizgecko on...
    Browser
    Browser