реклама на сайте
подробности

 
 
> си, паттерны ооп, разбиение на объекты, parent's parent, детско-родительские отношения
Idle
сообщение Aug 15 2012, 18:57
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



не использую си++, использую си, абстрактные типы данных через incomplete structure pointer-ы
собственно вопрос, как правильно организовывать взаимодействие объектов, когда "вложенный объект" должен вызывать родителя родителя?

sm.gif ну например, есть палета ящиков с помидорами, ящик с помидорами, и помидор
помидор портится через неделю и вызывает владельца всей палеты, что я мол испорчен sm.gif

что почитать на эту тему с учётом языка?

Сообщение отредактировал Idle - Aug 15 2012, 18:59
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Idle
сообщение Aug 16 2012, 08:22
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



эволюция примерно такая, сначала всё изолированно и отлично тестируется, в конце всё наводняется родителем родителя, т.к. менеджером дело-то не ограничивается, взаимодействия-то могут происходить не только с менеджером, а ещё с уборщицей, которая это всё дело протухшее будет убирать и т.п.

собственно вопрос не в том, как "моргнуть светодиодом", а как это делается - ссылки, ссылки sm.gif

CODE
--------------------------------------------------------------------------------
/*
* manager doesn't care about the box
*/
tomato.c
---
struct tomato {
int weight;
/* ... */
};
struct tomato *tomato_create(void)
void tomato_destroy(struct tomato *tomato);
int tomato_set_weight(struct tomato *tomato, int weight);
int tomato_get_weight(const struct tomato *tomato);
/* ... */
static void tomato_rot(struct tomato *tomato)
{
manager_call();
}

box.c
---
struct box {
struct tomato *tomatos;
int count;
/* .. */
};

struct box *box_create(void);
int box_destroy(struct box *box);
int box_add(struct box *box, struct tomato *tomato);
--------------------------------------------------------------------------------
/*
* manager does care about the box
*/
tomato.c
---
struct tomato {
struct box *parent;
/* ... */
};
struct tomato *tomato_create(const struct *box)
{
/* ... */
tomato->parent = box;
/* ... */
}
static void tomato_rot(struct tomato *tomato)
{
manager_call(box);
}
--------------------------------------------------------------------------------
/*
* pallet comes into play!
*/

pallet.h
---
struct pallet {
struct box *box;
/* ... */
}

box.c
---
struct box {
struct pallet *pallet;
struct tomato *tomatos;
int count;
/* .. */
};

struct box *box_create(struct pallet *pallet);
int box_destroy(struct pallet *pallet, struct box *box);
int box_add(struct pallet *pallet, struct box *box, struct tomato *tomato);

tomato.c
---
struct tomato {
struct pallet *pallet; /* instead of the box */
/* ... */
};
struct tomato *tomato_create(struct pallet *pallet)
{
/* ... */
tomato->pallet = pallet
/* ... */
}
void tomato_destroy(struct pallet *pallet, struct tomato *tomato);
int tomato_set_weight(struct pallet *pallet, struct tomato *tomato, int weight);
int tomato_get_weight(struct pallet *pallet, const struct tomato *tomato);
/* ... */
static void tomato_rot(struct tomato *tomato)
{
manager_call(tomato->pallet);
}


Сообщение отредактировал Idle - Aug 16 2012, 08:23
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Idle   си, паттерны ооп, разбиение на объекты, parent's parent   Aug 15 2012, 18:57
- - ig_z   QUOTE (Idle @ Aug 15 2012, 21:57) помидор...   Aug 15 2012, 19:54
|- - Idle   Цитата(ig_z @ Aug 15 2012, 23:54) Если ре...   Aug 15 2012, 20:17
|- - Lotor   Цитата(Idle @ Aug 16 2012, 00:17) поясню ...   Aug 16 2012, 05:03
|- - _Pasha   Цитата(Lotor @ Aug 16 2012, 08:03) Callba...   Aug 16 2012, 06:20
|- - Idle   Цитата(_Pasha @ Aug 16 2012, 10:20) Долго...   Aug 16 2012, 06:35
|- - AHTOXA   Цитата(_Pasha @ Aug 16 2012, 12:20) Помид...   Aug 16 2012, 07:32
|- - _Pasha   Цитата(AHTOXA @ Aug 16 2012, 10:32) Во-пе...   Aug 16 2012, 07:38
- - Cosmojam   А если callback-и сохранять указателем в каком-то ...   Aug 16 2012, 07:23
- - _Pasha   Дык... томат говорит "уберите меня!!...   Aug 16 2012, 08:57
|- - Idle   Цитата(_Pasha @ Aug 16 2012, 12:57) Тот, ...   Aug 16 2012, 09:56
|- - ARV   Цитата(Idle @ Aug 16 2012, 13:56) это всё...   Aug 16 2012, 10:03
- - SSerge   Цитата(Idle @ Aug 16 2012, 01:57) не испо...   Aug 16 2012, 09:29
- - ARV   имхо, все с ног на голову! яйцо курице ничего ...   Aug 16 2012, 09:47
- - Idle   да, у меня есть текcтовое описание того, какие ест...   Aug 16 2012, 10:15
|- - AlexandrY   Цитата(Idle @ Aug 16 2012, 13:15) да, у м...   Aug 16 2012, 10:54
- - Xenia   Цитата(Idle @ Aug 15 2012, 22:57) не испо...   Aug 16 2012, 10:49
|- - _Pasha   Цитата(Xenia @ Aug 16 2012, 13:49) наприм...   Aug 16 2012, 11:29
|- - Idle   Цитата(_Pasha @ Aug 16 2012, 15:29) У Вас...   Aug 16 2012, 11:41
- - kolobok0   Цитата(Idle @ Aug 15 2012, 22:57) ...как ...   Aug 16 2012, 14:33
|- - Idle   Цитата(kolobok0 @ Aug 16 2012, 18:33) И в...   Aug 16 2012, 15:02
|- - kolobok0   Цитата(Idle @ Aug 16 2012, 18:56) ...есть...   Aug 16 2012, 15:11
- - _Pasha   Хорошая мысль, кстати. Про дисциплину инженерной и...   Aug 16 2012, 14:46
- - Idle   Цитата(Xenia @ Aug 16 2012, 14:49) Для то...   Aug 16 2012, 18:26
|- - _Pasha   Цитата(Idle @ Aug 16 2012, 21:26) посмотр...   Aug 17 2012, 04:28
|- - ReAl   Цитата(_Pasha @ Aug 17 2012, 07:28) ЗЫ то...   Aug 17 2012, 06:39
- - andrewlekar   Хотите сделать хорошо - делайте проще. Заведите сп...   Aug 17 2012, 04:57
- - andrewlekar   ЦитатаЕсли они помидоры. А если банки с помидорами...   Aug 17 2012, 09:04
|- - Idle   Цитата(andrewlekar @ Aug 17 2012, 13:04) ...   Aug 17 2012, 09:48
- - andrewlekar   Цитатауказатель на конкретного менеджера изначальн...   Aug 17 2012, 09:56
|- - Idle   Цитата(andrewlekar @ Aug 17 2012, 13:56) ...   Aug 17 2012, 10:06
- - ARV   сначала программисты "из удобства" созда...   Aug 17 2012, 10:51
|- - Idle   Цитата(ARV @ Aug 17 2012, 14:49) ок, дал...   Aug 17 2012, 10:53
|- - kolobok0   Цитата(ARV @ Aug 17 2012, 14:51) ...в рез...   Aug 17 2012, 11:20
- - andrewlekar   Как делать best надо спрашивать того, кто эту архи...   Aug 17 2012, 11:19
|- - Idle   Цитата(andrewlekar @ Aug 17 2012, 15:19) ...   Aug 17 2012, 11:33
- - andrewlekar   ОО сущности от клиента - это всегда пассивные объе...   Aug 17 2012, 11:24
|- - kolobok0   Цитата(andrewlekar @ Aug 17 2012, 15:24) ...   Aug 17 2012, 13:51
|- - Idle   Цитата(kolobok0 @ Aug 17 2012, 17:51) и с...   Aug 17 2012, 14:35
||- - ARV   Цитата(Idle @ Aug 17 2012, 18:35) и что д...   Aug 17 2012, 14:59
||- - Idle   Цитата(ARV @ Aug 17 2012, 18:59) а если с...   Aug 17 2012, 15:07
|- - _Pasha   Цитата(kolobok0 @ Aug 17 2012, 16:51) вам...   Aug 17 2012, 15:43
|- - ARV   Цитата(_Pasha @ Aug 17 2012, 19:43) Это п...   Aug 17 2012, 16:44
- - ARV   все, что я хотел, я _вам_ сказал, добавить могу то...   Aug 17 2012, 15:34
|- - Idle   Цитата(ARV @ Aug 17 2012, 19:34) добавить...   Aug 17 2012, 16:58
|- - kolobok0   Цитата(Idle @ Aug 17 2012, 20:58) ...всё ...   Aug 17 2012, 19:18
|- - Idle   Цитата(kolobok0 @ Aug 17 2012, 23:18) Вы ...   Aug 17 2012, 19:44
|- - _Pasha   Цитата(Idle @ Aug 17 2012, 22:44) я пришё...   Aug 17 2012, 19:55
|- - Idle   Цитата(_Pasha @ Aug 17 2012, 23:55) Аминь...   Aug 17 2012, 20:21
- - редактор   В отпуске пропустил дискуссию, но выскажусь Цитата...   Aug 20 2012, 06:30
|- - ARV   Цитата(редактор @ Aug 20 2012, 10:30) И ч...   Aug 20 2012, 06:48
|- - Idle   Цитата(редактор @ Aug 20 2012, 10:30) И ч...   Aug 20 2012, 08:55
|- - ARV   Цитата(Idle @ Aug 20 2012, 12:55) так и д...   Aug 20 2012, 11:47
|- - Idle   Цитата(ARV @ Aug 20 2012, 15:47) то есть ...   Aug 20 2012, 19:25
- - _Pasha   Ба! Да у Вас (ТС) - налицо извечные проблемы в...   Aug 20 2012, 12:20
- - Idle   Цитата(_Pasha @ Aug 20 2012, 16:20) Ба...   Aug 20 2012, 14:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 22:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01455 секунд с 7
ELECTRONIX ©2004-2016