Как правильно наследовать и соединить классы? Ребят, не могу разобраться.
У меня есть три класса.
1) User (методы: создание, обновление, удаление) в mysql для пользователей отдельная таблица.
2) Organisation (методы: создание, обновление, удаление) в mysql для организаций тоже отдельная таблица.
3) Invoice (счета) (методы: создание, обновление, удаление) в mysql для счетов отдельная таблица, но содержит id_user и id_org.
Получается, что у меня третий класс Invoice грохнется, если я переименую какой-то столбец в таблицах пользователи или организации.
Я неправильно выделил сущности, или в чем причина?

21 Авг 2019 в 07:00
216 +1
0
Ответы
1

Для решения вашей проблемы, вам следует использовать наследование и соединение классов посредством ассоциации или композиции.

1) User и Organisation могут быть унаследованы от базового класса, например, Person, который будет содержать методы создания, обновления и удаления.
2) Invoice может содержать ссылки на объекты User и Organisation, а не прямые id_user и id_org, чтобы избежать проблемы при переименовании столбцов.
3) Таким образом, каждый класс будет независимым и изменения в одном из них не повлияют на другие.

Примерно так выглядеть структура классов:

class Person:
def create(self):
pass
def update(self):
pass
def delete(self):
pass
class User(Person):
# дополнительные методы для работы с пользователями
class Organisation(Person):
# дополнительные методы для работы с организациями
class Invoice:
def __init__(self, user, organisation):
self.user = user
self.organisation = organisation
def create(self):
pass
def update(self):
pass
def delete(self):
pass

Таким образом, у вас будет структура классов, которая позволит вам без проблем вносить изменения в базовые таблицы пользователей и организаций, не влияя на функционал класса Invoice.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир