# Path: src/booking/source/classroom/model/Classroom.py
# class Classroom:
#     """
#     Class that represents a single classroom.
#     """
# 
#     def __init__(self, identifier: str, name: str, building: Building, floor: str):
#         self._identifier = identifier
#         self._name = name
#         self._building = building
#         self._floor = floor
# 
#     def get_identifier(self) -> str:
#         return self._identifier
# 
#     def get_name(self) -> str:
#         return self._name
# 
#     def get_building(self) -> Building:
#         return self._building
# 
#     def get_floor(self) -> str:
#         return self._floor
# 
# Path: src/booking/source/classroom/model/Building.py
# class Building:
# 
#     """
#     Class that represents a building.
#     """
# 
#     def __init__(self, identifier: str, name: str):
#         self._identifier = identifier
#         self._name = name
# 
#     def get_identifier(self):
#         return self._identifier
# 
#     def get_name(self) -> str:
#         return self._name


from abc import abstractmethod, ABC
from typing import List
from .model import Classroom, Building
    Class that have the responsibility to save the classroom and to provide access to them.
    """

    @abstractmethod
    def get_classroom(self, identifier: str) -> Classroom:
        """
        Gets a classroom.
        :param identifier: Identifier of the classroom.
        :return: Returns the classroom with the provided name if exist None otherwise.
        """
        pass

    @abstractmethod
    def get_classrooms_in_building(self, identifier: str) -> List[Classroom]:
        """
        Gets all the classrooms in a building.
        :param identifier: building identifier.
        :return: Returns the classrooms that are in the building.
        """
        pass

    def is_classroom_present(self, identifier: str):
        """
        Tels if a classroom is present inside the source.
        :param identifier: Name of the class that will be checked.
        :return: Returns True if the classroom is present False otherwise.
        """
        return self.get_classroom(identifier) is not None

    @abstractmethod

# Path: src/booking/source/classroom/model/Classroom.py
# class Classroom:
#     """
#     Class that represents a single classroom.
#     """
# 
#     def __init__(self, identifier: str, name: str, building: Building, floor: str):
#         self._identifier = identifier
#         self._name = name
#         self._building = building
#         self._floor = floor
# 
#     def get_identifier(self) -> str:
#         return self._identifier
# 
#     def get_name(self) -> str:
#         return self._name
# 
#     def get_building(self) -> Building:
#         return self._building
# 
#     def get_floor(self) -> str:
#         return self._floor
# 
# Path: src/booking/source/classroom/model/Building.py
# class Building:
# 
#     """
#     Class that represents a building.
#     """
# 
#     def __init__(self, identifier: str, name: str):
#         self._identifier = identifier
#         self._name = name
# 
#     def get_identifier(self):
#         return self._identifier
# 
#     def get_name(self) -> str:
#         return self._name


# Path: src/booking/source/classroom/ClassroomSource.py
from abc import abstractmethod, ABC
from typing import List
from .model import Classroom, Building

    Class that have the responsibility to save the classroom and to provide access to them.
    """

    @abstractmethod
    def get_classroom(self, identifier: str) -> Classroom:
        """
        Gets a classroom.
        :param identifier: Identifier of the classroom.
        :return: Returns the classroom with the provided name if exist None otherwise.
        """
        pass

    @abstractmethod
    def get_classrooms_in_building(self, identifier: str) -> List[Classroom]:
        """
        Gets all the classrooms in a building.
        :param identifier: building identifier.
        :return: Returns the classrooms that are in the building.
        """
        pass

    def is_classroom_present(self, identifier: str):
        """
        Tels if a classroom is present inside the source.
        :param identifier: Name of the class that will be checked.
        :return: Returns True if the classroom is present False otherwise.
        """
        return self.get_classroom(identifier) is not None

    @abstractmethod

    def add_classroom(self, classroom: Classroom):