git'n a system-desgin-primer

This commit is contained in:
Aditi
2024-10-23 10:51:05 +05:30
committed by Ido Ophir
parent 9f28e4e5d3
commit 7cf2d80bcc
22 changed files with 725 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
Ride-Sharing Service:
1. User: Represents a user who can request rides.
2. Driver: Represents a driver who can accept rides.
3. Ride: Represents a ride request, including the user and locations.
4. RideSharingService: Manages users and drivers and includes logic
to match rides.

View File

@@ -0,0 +1,64 @@
import random
class User:
def __init__(self, user_id, name):
self.user_id = user_id
self.name = name
self.rides = []
def request_ride(self, pickup_location, dropoff_location):
ride = Ride(self, pickup_location, dropoff_location)
return ride
class Driver:
def __init__(self, driver_id, name):
self.driver_id = driver_id
self.name = name
self.rides = []
def accept_ride(self, ride):
self.rides.append(ride)
ride.driver = self
print(f"Driver {self.name} accepted ride from {ride.user.name}.")
class Ride:
def __init__(self, user, pickup_location, dropoff_location):
self.user = user
self.pickup_location = pickup_location
self.dropoff_location = dropoff_location
self.driver = None
self.ride_id = random.randint(1000, 9999) # Random ID for ride
class RideSharingService:
def __init__(self):
self.drivers = []
self.users = []
def register_driver(self, driver_id, name):
driver = Driver(driver_id, name)
self.drivers.append(driver)
print(f"Driver {name} registered.")
def register_user(self, user_id, name):
user = User(user_id, name)
self.users.append(user)
print(f"User {name} registered.")
def match_ride(self, ride):
if self.drivers:
selected_driver = random.choice(self.drivers) # Simple random matching
selected_driver.accept_ride(ride)
else:
print("No drivers available.")
# Example Usage
ride_sharing_service = RideSharingService()
ride_sharing_service.register_driver(1, "John")
ride_sharing_service.register_driver(2, "Jane")
ride_sharing_service.register_user(101, "Alice")
ride_sharing_service.register_user(102, "Bob")
alice = ride_sharing_service.users[0]
ride_request = alice.request_ride("Location A", "Location B")
ride_sharing_service.match_ride(ride_request)