С Новым годом! Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 1 / 0
Регистрация: 29.05.2022
Сообщений: 7
1

Как правильно организовать зависимости?

29.08.2022, 13:51. Показов 1209. Ответов 7

Author24 — интернет-сервис помощи студентам
У меня есть абстрактный интерфейс PasswordInterface его реализация находится в PasswordRealise, в свою очередь класс Application пользуется PasswordRealise через PasswordInterface.
Так получается что граф зависимостей у меня становится циклическим, потому что внутри Application нужно для создания обьекта PasswordRealise нужно включить его через include, да и появляется зависимость от конструктора конкретного класса.
Как разрешить эту проблему, и сделать что бы граф зависимостей получился ацикличным? Или это не проблема, и так и должно быть?

Как правильно организовать зависимости?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2022, 13:51
Ответы с готовыми решениями:

Как правильно организовать связь классов
Здравствуйте, мне необходимо реализовать класс для работы (CRUD) с моделью дерева в бд...

Как правильно организовать структуру хранения данных
Добрый день! Прошу совета по базам данных. есть задача логистики деталей со склада на участок и...

Как организовать вывод данных в DataGridView в зависимости от содержимого textbox?
Добрый вечер! Как можно организовать вывод данных в datagridview в зависимости от того, что будет...

Как лучше организовать биндинг при зависимости от параметров разного типа
Есть TextBlock, его текст зависит от двух параметров разного типа: например, Enum и DateTime,...

Как правильно организовать БД?
Извините за глупый, наверное, вопрос. Я самоучка и только начинаю познавать науку... Как...

7
фрилансер
5848 / 5379 / 1103
Регистрация: 11.10.2019
Сообщений: 14,380
29.08.2022, 14:00 2
bra_dobrey, язык какой ? Если C++ , то, скорее всего, предварительное объявление класса поможет

Добавлено через 37 секунд
в диаграммах не шарю, покажи код
0
0 / 1 / 0
Регистрация: 29.05.2022
Сообщений: 7
29.08.2022, 14:15  [ТС] 3
в PasswordInterface.h
C++
1
2
3
4
5
class PasswordIntwrface {
public:
  virtual bool check(string) = 0;
  virtual bool renew(string) = 0;
}
B PasswordRealise.h
C++
1
2
3
4
5
6
7
8
#include "PasswordInterface.h"
 
class PasswordRealise : public PasswordInterface {
public:
  PasswordRealise(string s);
  bool check(string) override;
  bool renew(string) override;
}
B Application.h

C++
1
2
3
4
5
6
7
8
9
#include "PasswordInterface.h"
#include "PasswordRealise.h"
 
class Application {
public:
 Application() : password(new PasswordRealise("123")) {};
private:
 PasswordInterface * password;
}
Сам по себе PasswordInterface был создан для того что бы убрать зависимость от PasswordRealise. Но получается что зависимость по прежнему есть.

PasswordInterface.h и Application.h находится в одном .so файле а PasswordRealise.h в другом.

Добавлено через 4 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
bra_dobrey, язык какой ? Если C++ , то, скорее всего, предварительное объявление класса поможет
да язык С++
0
фрилансер
5848 / 5379 / 1103
Регистрация: 11.10.2019
Сообщений: 14,380
29.08.2022, 14:28 4
bra_dobrey, примерно так

https://onlinegdb.com/WLeO0dNxm
0
0 / 1 / 0
Регистрация: 29.05.2022
Сообщений: 7
29.08.2022, 14:31  [ТС] 5
Если просто объявляю
C++
1
class PasswordRealise;
Без подключения заголовка.
то в месте выделения пямяти жалеутся на неполный тип

error: expected type-specifier before ‘PasswordRealise’
allocation of incomplete type 'PasswordRealise'C/C++(clang-diagnostic-error)
Application.h(11, 7): forward declaration of 'PasswordInteface'
0
Эксперт функциональных языков программированияЭксперт Java
4542 / 2736 / 486
Регистрация: 28.04.2012
Сообщений: 8,646
29.08.2022, 14:38 6
Цитата Сообщение от bra_dobrey Посмотреть сообщение
его реализация находится в PasswordRealise

Не по теме:

Это называется Implementation



Добавлено через 5 минут
Цитата Сообщение от bra_dobrey Посмотреть сообщение
Так получается что граф зависимостей у меня становится циклическим, потому что внутри Application нужно для создания обьекта PasswordRealise нужно включить его через include
Нет, он не получается циклическим.

Цитата Сообщение от bra_dobrey Посмотреть сообщение
да и появляется зависимость от конструктора конкретного класса.
Ну сделай фабрику, например.
1
0 / 1 / 0
Регистрация: 29.05.2022
Сообщений: 7
29.08.2022, 14:41  [ТС] 7
https://onlinegdb.com/TrRwWDZ4D
Цитата Сообщение от Алексей1153 Посмотреть сообщение
bra_dobrey, примерно так
https://onlinegdb.com/WLeO0dNxm
Вот так

https://onlinegdb.com/y3SzYMH_X

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
Нет, он не получается циклическим.
Понял, спасибо!
0
Эксперт функциональных языков программированияЭксперт Java
4542 / 2736 / 486
Регистрация: 28.04.2012
Сообщений: 8,646
29.08.2022, 15:04 8
Лучший ответ Сообщение было отмечено bra_dobrey как решение

Решение

Цитата Сообщение от bra_dobrey Посмотреть сообщение
Только если ты хочешь ослабить связи, в Application нужно оставлять только PasswordInterface, а реализацию передавать в конструктор в main-функции. Хотя если у тебя назначение Application — инициализация всех зависимостей, то ок.
0
29.08.2022, 15:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2022, 15:04
Помогаю со студенческими работами здесь

Как правильно организовать БД?
Есть база данных о предприятии. В ней есть данные об отделах и о сотрудниках. С сотрудниками всё...

Как правильно организовать?
У меня есть несколько классов и у них практически одинаковые функции, которые отличается парой...

Как в запросе sql(c#) организовать изменение подсчета вычисляемого поля в зависимости от dateTimerPicker?
Здравствуйте у меня возникла проблема. Есть вычисляемое поле цена с учётом скидки ,поскольку скидка...

Как правильно организовать добавление в БД
Здравствуйте. У меня база данных состоит из одной таблицы такого плана: Я в основном активити...

Как правильно организовать меню
Для оценок нужен массив из 5 элементов с проверкой, что бы значение введенных элементов не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru