Share
Explore

Exotic Travel Agency - Practice business domain for OOAD

The 5 pieces of the OOAD:


megaphone

By working through this case study, students will gain practical experience in:

use case discovery
business process modeling
creating object-oriented designs.

This foundation will prepare them for forward generating their designs into a fully functioning TypeScript program.
megaphone

Do use case discovery now:

Use your TRELLO board to manage doing this research
OUTPUT of this phase of the project is:
Annotate some Use Cases in your TRELLO Board.
A case study for a travel agency business domain specializing in exotic locales, guiding students through:
- Use case discovery
- UML modeling of business processes,
- Creating UML entities to model class relationships.

This case study will help students think in terms of object-oriented analysis and design, preparing them for forward generation into a TypeScript program.

Case Study: ExoticEscapes Travel Agency
Business Domain Overview:
ExoticEscapes is a travel agency specializing in curating unique travel experiences to exotic destinations around the world.
They offer personalized itineraries, luxury accommodations, adventure activities, and cultural immersions for discerning travelers seeking unforgettable journeys.

Step 1: Use Case Discovery - Starts with identifying the Actors in your Business Domain

Encourage students to identify the main actors and their goals within the ExoticEscapes system.
Here are some example use cases to get them started:
1. Actor: Customer
UC1: Create and Book a custom travel package
work steps:
access database records for the destinations.
select destinations into a Travel Package Record and create itinary
book and pay for the Package.

UC2: View Packages
access database records for the packages and display them on the screen
provide the ability to print, email, edit, delete package records

UC3: Create a Customer Profile with travel preferences
Note: this is just a database record with a web form

2. Actor: Travel Agent

- UC6: Manage customer profiles
- UC7: Create and customize travel packages
- UC8: Process bookings and payments
- UC9: Coordinate with local partners and service providers
- UC10: Generate travel documents

3. Actor: System Administrator

- UC11: Manage destination database
- UC12: Generate sales reports
- UC13: Manage user accounts

Step 2: UML Modeling of Business Processes

Guide students to create activity diagrams for key business processes. Here's an example for the "Create a custom travel package" use case:
``` [Start] -> (Customer submits travel preferences) -> (System suggests initial itinerary) -> (Travel Agent reviews and refines itinerary) -> (Customer reviews itinerary) -> <Decision> Approved? Yes -> (Finalize package details) No -> (Revise itinerary) -> (Customer reviews itinerary) -> (Generate quote) -> (Present to customer) -> <Decision> Customer accepts? Yes -> (Process booking) No -> [End] -> [End] ```
Step 3: Creating UML Entities and Class Relationships
Learning Outcomes: Identify the main classes and their relationships.
Here's a starting point:
classDiagram Customer "1" -- "0..*" Booking Customer "1" -- "0..*" TravelPreference TravelAgent "1" -- "0..*" Booking Booking "1" -- "1" TravelPackage TravelPackage "1" -- "1..*" Destination TravelPackage "1" -- "1..*" Activity TravelPackage "1" -- "1..*" Accommodation Destination "1" -- "0..*" Activity Destination "1" -- "0..*" Accommodation
class Customer { +customerID: string +name: string +email: string +phone: string +browseDestinations() +createCustomPackage() +bookPackage() +viewBookingDetails() }
class TravelAgent { +agentID: string +name: string +createPackage() +processBooking() +coordinateWithPartners() +generateTravelDocuments() }
class Booking { +bookingID: string +customerID: string +packageID: string +status: string +totalPrice: number +processPayment() +generateInvoice() }
class TravelPackage { +packageID: string +name: string +duration: number +price: number +customizeItinerary() +calculatePrice() }
class Destination { +destinationID: string +name: string +description: string +climate: string +getAvailableActivities() +getAccommodations() }
class Activity { +activityID: string +name: string +description: string +duration: number +price: number }
class Accommodation { +accommodationID: string +name: string +type: string +price: number +checkAvailability() }
class TravelPreference { +preferenceID: string +customerID: string +preferredDestinations: string[] +activityTypes: string[] +accommodationType: string +budget: number } ```

Step 4: Guiding Questions for Students


1. How would you implement the "Create a custom travel package" use case using the classes defined?
2. What additional methods might be needed in the TravelPackage class to support customization?
3. How could you model the relationship between Activities and their availability dates?
4. What design patterns might be useful in implementing the pricing calculation for travel packages?
5. How would you handle the process of coordinating with local partners and service providers?
6. What additional classes might be needed to represent flight bookings and transportation between destinations?


Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.