Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
BlackFox
Member

Откуда: Брянск
Сообщений: 15
класс A входит в класс B, можно ли получить из класса А доступ к __property свойствам класса В

class A
{
};

class B
{
private:
	A* С;
public:
	__property int Value = { read = GetValue, write = SetValue };
};

то есть из свойства С получить доступ к Value?
6 май 20, 16:39    [22128304]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50033

Можно, но это плохой дизайн. Лучше пересмотри сою иерархию классов.

Posted via ActualForum NNTP Server 1.5

6 май 20, 16:40    [22128310]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
BlackFox
Member

Откуда: Брянск
Сообщений: 15
Здесь случай когда, например, класс B люди, а класс А машины.
Как из методов машины узнать человека?
6 май 20, 16:46    [22128316]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
BlackFox,

class Person;

class Car
{
public:
    Car(Person *p): person(p) {}
    Person *person;
};

class Person
{
public:
    Person(): car() {}
    Car *car;
};
6 май 20, 16:57    [22128325]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
BlackFox
Member

Откуда: Брянск
Сообщений: 15
спасибо
6 май 20, 17:05    [22128332]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
BlackFox,

поймите правильно - Вам лучше почитать азы про ОО автора Гради Буч, одного из основателей нотации юмл и т.д. и т.п..

По вопросу..
Наследование - это когда есть требование от жизни в выделении нечто общего среди каких либо сущностей. Ну а теперь ответьте мне - что общего между машиной и человеком из жизни (т.е. дадом, тьху в жизни вы увидели)? тот транзистор который стоит в электронном сердце человека и усилителя НЧ из радиолы пионер? Вы серьёзно? Это требуется по входным условиям? Или Вам это приснилось или показалось?


по поводу механизации (т.е. это идёт после декомпозиции и нахождения сущностей в поставленной задаче) - оперировании данными или глаголами от наследника в базовом классе... Лучше всего на примере:
- класс А это животное
- класс В - это собака
- класс С - это кошка
у класса А есть глагол(метод) - голос. ну или например запрос свойства - длины усов. тогда всё логично и стройно - мы у сущности А не знаем на момент определения как оно будет голосить (или вообще будет ли голос?) - делаем чисто виртуально (тем самым мы говорим - у животного должно быть вот реализация этой хрени). Или делаем реализацию по умолчанию - например для всех животных надо чтоб мычало, но как виртуальным методом...
а по поводу длины усов - мы не знаем, они вообще существуют у жевотного или нет, а не то что длину усов. окейно - делаем приватный метод - запрос у чайлда длину усов и делаем это виртуальным методом. у кошки перекрываем эти два метода - голос, мяукаем, а длина усов - возвращаем локальное свойство длина усов . Для собаки аналогично - лаем и длина усов - ну нет у неё...возвращаем нуль..

я надеюсь описал почему Ваш вопрос содержит не только вопрос про не знание механизации частного языка си плас плас, но и не понимание начального этапа в программировании - декомпозиции и нахождения сущностей (повторюсь и это очень важно) - из жизни!!!

(круглый)
8 май 20, 03:17    [22129104]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
BlackFox,

поймите правильно - Вам лучше почитать азы про ОО автора Гради Буч, одного из основателей нотации юмл и т.д. и т.п..

По вопросу..
Наследование - это когда есть требование от жизни в выделении нечто общего среди каких либо сущностей. Ну а теперь ответьте мне - что общего между машиной и человеком из жизни (т.е. дадом, тьху в жизни вы увидели)?
(круглый)

Так тут и нет наследования. Тут даже инкапсуляции нет. Тут есть две связи между объектами: владение и принадлежность. Не вижу криминала. Не понятно только что машина будет сообщать человеку через вызовов методов человека? Ну... может сообщить о превышении скорости.
8 май 20, 10:08    [22129170]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
Ещё машина может сообщать человеку:

- О попытке угона.
- О необходимости тех. обслуживания.
- О низком уровне топлива.
- О наличии ментовских радаров.
- О том что водитель заснул за рулём. Разбудить. Метод Человек::wakeUp().
8 май 20, 10:25    [22129179]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
petrav,

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

дальнейшее предложение вызывать человека из машины - это веселее...
ну типо тахометр изменил значение, кхм... и должен показать человеку что дескать у меня 1000 оборотов. или всё же он тупо это имеет как свойство и пофигу кто(или что - ну например кенгуру или видеокамера) смотрит на тахометр и смотрит ли вообще? из жизни мы знаем что машина будет показывать обороты даже не двигаясь (вывесили на подъёмнике и через одб2 газуем с компьютера - проводим диагностику) - при этом как видно что машина это делает без человека и человек этот (хозяин возможно) сидит пьёт кофе пока его машину диагностируют...


попытка угона - это есть совокупность факторов для машины - качнули или заводят двигатель без ключа(может это не угон а эвакуатор делает - терминология определяется ещё кучей внешних факторов. для машины это вообще левое).
необходимость обслуживания (то же самое - есть признаки. мозги машины могут об этом знать или тупо по паспорту это проблема водятла - заехать на ТО через 20 тыкм).
низкий уровень топлива - уже выше было.
наличие ментовских радаров - обычно это навесное оборудование, которому так же пофигу есть ли водитель. скорее всего оно активизируется по включению питания.
заснул...конкретный человек который передали в конструктор..другой индивидум(про мартышку опустим - возможно мы распознаём только людей на камеру) не может. кхм... человек подъём...тут вот я сомневаюсь...подать звук, ударить шокером(это чёрный юмор) - да... а вот по разъёму машина-человек подать сигнал открыть веки - то биомеханика уже..пока рановато в нынешних реалях...имхо..больше думаю вероятность что у человека бируши и он нифига не может проснуться и не слышит(условно)...

9 май 20, 02:51    [22129758]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1341
kolobok0
поймите правильно - Вам лучше почитать азы про ОО автора Гради Буч, одного из основателей нотации юмл и т.д. и т.п..

читал " Буч Гради - Объектно-Ориентированный Анализ и Проектирование"
очень тяжёлая нудятина на 600 страниц.
гораздо лучше заходит "Голуб Ален - верёвка достаточной длины, чтобы выстрелить себе в ногу"
9 май 20, 10:09    [22129799]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
полудух
...нудятина на 600 страниц....


автор нудятины - автор единственной технологии (превращение от хотелок бизнеса в код)..
всё остальное - попытки создать пародии на тему ах как классно можно сделать на коленке и попроще...

ну вот программисты которые не читали и не делали по этой нудятины стэп бай стэп и пишут на яве какаве или там на си плас плас по ассемблерному...и таких 99% в программерских конторах...

да да знакомо!!

(круглый)

Сообщение было отредактировано: 9 май 20, 18:06
9 май 20, 18:07    [22129918]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
полудух
...нудятина на 600 страниц....


автор нудятины - автор единственной технологии (превращение от хотелок бизнеса в код)..
всё остальное - попытки создать пародии на тему ах как классно можно сделать на коленке и попроще...

Я эту книгу от Гради Буча прочитал на пятом курсе. Но ведь UML умер много лет назад, по результатам. Потому что был кривой. И есть кривой.

Сообщение было отредактировано: 9 май 20, 18:16
9 май 20, 18:14    [22129921]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1341
kolobok0
полудух
...нудятина на 600 страниц....


автор нудятины - автор единственной технологии (превращение от хотелок бизнеса в код)..
всё остальное - попытки создать пародии на тему ах как классно можно сделать на коленке и попроще...

ну вот программисты которые не читали и не делали по этой нудятины стэп бай стэп и пишут на яве какаве или там на си плас плас по ассемблерному...и таких 99% в программерских конторах...

да да знакомо!!

(круглый)

слушай, полно источников качественного ООП-кода, которые гораздо проще и быстрее понять.
можно даже у Страуструпа набрать рабочих примеров иерархии классов (про которые и Грэди пишет)
просто изучая C++ уже понимаешь, как должно ООП выглядеть
причём именно изучая C++ ты понимаешь, как оно на самом деле должно выглядеть
т.е. в остальных языках ООП слегка/сильно извращён, а вот тут всё чётко, понятно и по делу.
и никакие ассемблерные вставки (шта?) при этом не лезут в голову (от них как раз все отговаривают)
А вот читать 600 страниц одну и ту же муть про машины фаршированные персонами вместо того чтобы на паре-тройке примеров понять тему - вот это дичь.
Первопроходец != офигенный. Обычно это означает "куча ляпов, которые потом годами отлавиливают и исправляют".

зы: пример из ПХП про интерфейсы, который описывает "duck typing":
+
# ОТЛИЧНЫЙ ПРИМЕР, ДЛЯ ЧЕГО НУЖНЫ ИНТЕРФЕЙСЫ:
# An example of duck typing in PHP
interface CanFly
{
    public function fly();
}

interface CanSwim
{
    public function swim();
}

class Bird
{
    public function info()
    {
        echo "I am a {$this->name}\n";
        echo "I am an bird\n";
    }
}

## some implementations of birds
class Dove extends Bird implements CanFly
{
    var $name = "Dove";
    public function fly()
        {echo "I fly\n";}
}

class Penguin extends Bird implements CanSwim
{
    var $name = "Penguin";
    public function swim()
        {echo "I swim\n";}
}

class Duck extends Bird implements CanFly, CanSwim
{
    var $name = "Duck";
    public function fly()
        {echo "I fly\n";}

    public function swim()
        {echo "I swim\n";}
}

## a simple function to describe a bird
function describe($bird)
{
    if (!$bird instanceof Bird)
        {die("This is not a bird. I cannot describe it.");}

    $bird->info();
    if ($bird instanceof CanFly)
        {$bird->fly();}
    if ($bird instanceof CanSwim)
        {$bird->swim();}
}

// describe these birds please
describe(new Penguin);
echo "---\n";

describe(new Dove);
echo "---\n";

describe(new Duck);


Сообщение было отредактировано: 9 май 20, 20:08
9 май 20, 20:06    [22129943]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
полудух,

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

(круглый)
ЗЫ
язык вторичен. для меня удобнее си плас плас, хотя в активе более десятка языков.
ЗЫ ЗЫ
посыл про ассемблер от меня, насколько понял из Вашего поста, Вы не поняли. я не говорил про ассемблерные операторы, я говорил о применении объектно ориентированных языках по ассемблерному - именно так 99% и юзают и яву-какаву и си плас плас и си бимоль и т.п. языки (без первичных шагов = анализа и проектирования). и выше в разборе объявлений классов от ТС мы видим что предлагаемое взаимодействие не жизненно, не из жизни то бишь. и если завтра заказчик придёт и скажет - а человек может иметь более одной машины, то автор этого кода будет рассуждать какая фигня эта технология ОО, не понимая что не технология виновата и а попытка поверхностно почитать про ОО, обозвать всё тягомотиной и на не верных наблюдений сделать не правильные выводы.

Сообщение было отредактировано: 10 май 20, 16:39
10 май 20, 16:35    [22130168]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
petrav,

UML это попытка записать результат ОО анализа и проектирования (ООА и ООП которые абривиатуры. заметьте П - это ПРОЕКТИРОВАНИЕ а не программирование). Их несколько таких нотаций (UML языка в смысле). возможно что то удачно, что то не удачно. Но это ни в коей мере не умоляет сам подход ОО при разработки софта. Данный подход он идёт от жизни, статичен (т.е. правильные найденные сущности не изменны), позволяет просчитывать инвариантность будущих потребностей заказчика, позволяет сократить код, способствует уменьшению дублежа кода.
я честно говоря не видел подобных технологий обладающих такими существенными скилами при производстве софта.

(круглый)
ЗЫ
Вы можете слышать другие мнения про ОО технологию, но как правило - это идёт от непонимания её, а не от опыта многолетнего применения. А то что Вы используете тот или иной язык позволяющий идти в кильватере ОО технологии - это абсолютно не значит, что Вы понимаете или используете ОО технологию. Более того, без понимания данной технологии использование таких языков - заводит в тупик обычно (таких ситуаций на форумах полно = типо как узнать яйцу форму лотка в котором он лежит).

Сообщение было отредактировано: 10 май 20, 16:50
10 май 20, 16:49    [22130170]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
petrav,

Более того, без понимания данной технологии использование таких языков - заводит в тупик обычно (таких ситуаций на форумах полно = типо как узнать яйцу форму лотка в котором он лежит).

А человеку можно узнать в каком окружении он живёт? А машине можно узнать в каком окружении она движется?

Я вот чего не понял. Ваш виртуальный метод "Животное::Голос()" Вы признали хорошим примером ООП.

А мой пример метода "Человек::Проснись()" Вы признали плохим примером ООП сославшись на биомеханику, не может машина вызвать метод человека. А давно у собак есть разъём и поддержка вызова виртуальных функций -- биомеханика позволяет?
10 май 20, 17:28    [22130179]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1341
kolobok0
я бы не хотел уходить в некий спор в вакууме, но я готов чисто технически привести тут плюсы и минусы применения ОО технологии в программировании. а дальше вы сами решите - много ли вы видели таких контор, где применяют эту технологию.

А зачем? Я что, протестую против пользы ООП? Я говорю, чтобы качественно делать ООП не обязательно читать Грэди Буча.
посыл про ассемблер от меня, насколько понял из Вашего поста, Вы не поняли. я не говорил про ассемблерные операторы, я говорил о применении объектно ориентированных языках по ассемблерному - именно так 99% и юзают и яву-какаву и си плас плас и си бимоль и т.п. языки (без первичных шагов = анализа и проектирования).

Я так понимаю, Страуструп так же относится к этим 99% и ООП юзать НЕ умеет?
Потому что всё что он написал прочитало чуть менее, чем 100% си-плюс-плюсников.
И уж треть точно делает так, как там написано...
Да и другие тоже книжки... Грэди Буч не пишет ничего такого нового про ООП.
Всё тоже самое написано и в других книгах, только менее нудно и более сухо (меньше воды = хорошо).

Сообщение было отредактировано: 10 май 20, 22:16
10 май 20, 22:15    [22130300]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
petrav,

животное - это общее между собакой и кошкой. Вы действительно это не поняли-услышали?
наверное я плохо объяснил - простите...

(круглый)
11 май 20, 13:35    [22130550]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
полудух,

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

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

буча не то что читать нужно. прочитав надо сделать хотя бы один проект как там написано стэп-бай-стэп. иначе будет как Вы сказали нудятиной и много воды. это совсем не понятно когда человек разрабатывает в одну голову - задачи типо хэйлохтымир. и 200% необходимо когда собираются пилить проект более одного разработчика.

удачи вам
(круглый)
ЗЫ
заткнулся.
думаю, что мысль основную уже высказал.
11 май 20, 13:41    [22130553]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
petrav,

животное - это общее между собакой и кошкой. Вы действительно это не поняли-услышали?
наверное я плохо объяснил - простите...

(круглый)

С такими иерархиями аля Животные, ГеометрическиеФигуры и т.д... я знаком уже лет 20-ть.

Давайте я свой вопрос переформулирую. У нас есть две сущности, которые могут принимать самостоятельные решения и оказывать друг на друга влияние: Человек и Автомобиль. Скажите, почему они в нашей ООП модели не могут друг с другом взаимодействовать через программные интерфейсы? В обоих направлениях.
11 май 20, 14:06    [22130561]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
petrav,

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

вот такая вот разница.
(круглый)
ЗЫ
Про передачу в конструктор автомобиля одного человека - то вообще круглый конь в квадратном вакууме.
ЗЫ ЗЫ
Ну или по другому... Человек знает и воздействует на автомобиль - взял, завёл, рулит, врезался, заглушил, отремонтировал, выключил, снял АКБ, разобрал на запчасти... Попробуйте список таких-же глаголов в другую сторону

Сообщение было отредактировано: 11 май 20, 14:15
11 май 20, 14:14    [22130562]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
petrav,

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

Глаголом было "Разбудить" и "ПослатьСообщение" — прямое воздействие от Авто на Человека. Тахометр тут ни причём. Кошек, которые смотрят на тахометр и ведут автомобиль, тоже рассматривать не будем.

kolobok0
Про передачу в конструктор автомобиля одного человека - то вообще круглый конь в квадратном вакууме.

Тут просто пример очень простой, но топик-стартеру больше и не нужно. Я считаю мой код корректным с точки зрения ООП. А так я тут мог бы разойтись на классы РеестрСобственности, абстрактный интерфейс IВодитель или может РольВодитель. Но зачем?

kolobok0
Ну или по другому... Человек знает и воздействует на автомобиль - взял, завёл, рулит, врезался, заглушил, отремонтировал, выключил, снял АКБ, разобрал на запчасти... Попробуйте список таких-же глаголов в другую сторону

А почему список глаголов в другую сторону должен быть таким же?
11 май 20, 14:36    [22130573]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
kolobok0
Member

Откуда:
Сообщений: 2104
простите. напишу последний раз. а то как то я о мягком Вы о тёплом, кмк...

petrav
..
Глаголом было "Разбудить" и "ПослатьСообщение" — прямое воздействие от Авто на Человека. Тахометр тут ни причём. Кошек, которые смотрят на тахометр и ведут автомобиль, тоже рассматривать не будем.

....считаю мой код корректным с точки зрения ООП....

...А почему список глаголов в другую сторону должен быть таким же?


"разбудить" и "послать сообщение" как бы подразумевают синхронность. если заменить (на мой взгляд - более корректные) на "выдать звук" и "зажечь табло" - то вот тогда вопросов не было. Даже мартышка бы (или видеокамера) это воспримет. Т.е. это от жизни. Мы можем конечно же как пример разобрать управление локомотивом, где учитывается обратная связь. Но увы - там нет интерфейса разбудить. там есть таймер и кнопка подтверждения от человека, которую он должен нажимать периодически. не нажал - заснул. заметьте - я стараюсь рассуждать от жизни . А в Ваших словах звучит "тут мог бы разойтись на классы" - понимаете в чём Ваша ошибка? Вы могли бы... у Вас нет критерия достаточности и правильности нахождения сущностей Вы опираетесь только на "мог бы разойтись.... но зачем". А я на жизнь или потребность от жизни - как будет угодно. Соответственно завтра для меня заказчик ничего не изменит в плане пересмотра модели. А для Вас будет переделка классов. вот собственно только и всего.

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

более правильная модель - не содержать ссылку из машины на человека (т.к. она не может воздействовать на него явно, а может воздействовать теми сигналами, которые видны и человеку так-же) т.е. у машины нет знаний о человеке, а вот человеку реагировать на события от машины - это более правильная колбаса.

как то так
(круглый)
11 май 20, 15:01    [22130592]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
petrav
Member

Откуда:
Сообщений: 2105
kolobok0
простите. напишу последний раз. а то как то я о мягком Вы о тёплом, кмк...

Давайте и я в последний раз отвечу. :)

kolobok0
"разбудить" и "послать сообщение" как бы подразумевают синхронность. если заменить (на мой взгляд - более корректные) на "выдать звук" и "зажечь табло" - то вот тогда вопросов не было. Даже мартышка бы (или видеокамера) это воспримет. Т.е. это от жизни.

Да, это более корректно. Вот такой вариант: человек уснул и он в берушах, машина подаёт сигнал, но человек не слышит. Т.е. машина не может воздействовать на человека. Другой пример: человек нажимает кнопку "Включить кондиционер", а кнопка сломана и человек тоже не может воздействовать на машину. Т.е. сущности вообще не взаимодействуют. И по вашему выходит, что ООП вообще не работает. Т.е. это от жизни.

kolobok0
А в Ваших словах звучит "тут мог бы разойтись на классы" - понимаете в чём Ваша ошибка? Вы могли бы... у Вас нет критерия достаточности и правильности нахождения сущностей Вы опираетесь только на "мог бы разойтись.... но зачем". А я на жизнь или потребность от жизни - как будет угодно. Соответственно завтра для меня заказчик ничего не изменит в плане пересмотра модели. А для Вас будет переделка классов. вот собственно только и всего.

Спорное и самонадеянное утверждение. :)

kolobok0
список глаголов в другую сторону - тем самым я подчеркнул, что взаимодействие данных сущностей не одинаково . Т.е. человек знает о машине, а вот машина не всегда знает о человеке.

Как же машина не знает о человеке если видит движение его зрачков? И знает номер его сотового? Взаимодействие не должно быть одинаковым!

kolobok0
Но это абсолютно не значит, что машина может разобрать на запчасти человека.

Т.е. что бы Сущность1 могла через программный интерфейс воздействовать на Сущность2 — необходимо что бы Сущность1 всё знала о Сущность2 и могла бы последнюю разобрать на части? Это уже вообще противоречит принципам ООП.

kolobok0
более правильная модель - не содержать ссылку из машины на человека (т.к. она не может воздействовать на него явно, а может воздействовать теми сигналами, которые видны и человеку так-же)

А вот вы можете разобрать современный БМВ на части, залезть в бортовой компьютер, начать там баги править? Вы точно так же подаёте сигналы современной машине, которые она вообще может проигнорировать. Вы давите на газ, а ей плевать, она по тормозам потому что на радаре препятсвие. Вы не можете явно воздействовать на машину.

kolobok0
т.е. у машины нет знаний о человеке, а вот человеку реагировать на события от машины - это более правильная колбаса.

В принципах ООП как раз и заложено, что лишние знания об устройстве других сущностей вредны. Знаний быть должно по минимуму.
11 май 20, 16:00    [22130619]     Ответить | Цитировать Сообщить модератору
 Re: класс A входит в класс B, можно ли получить из класса А получить доступ к свойствам В  [new]
White Owl
Member

Откуда:
Сообщений: 12501
petrav и kolobok0,

А вам не кажется что вы путаете наследование и взаимодействие классов?

Автомобиль влияет на водителя посредством стрелочек и лампочек на приборной панели. А водитель влияет на автомобиль дергая специальные рукоятки и педали. И все. Это типичное взаимодействие двух классов.
Оба класса предоставляют наружу асинхронные входы. Автомобиль может моргать лампочкой и может быть водитель это увидит. Водитель может жать педаль и может быть эта педаль действительно что-то сделает. Даже если взять умный автомобиль отслеживающий открытые ли глаза у водителя - это все равно взаимодействие классов.

Но это никак не наследование. А ТС хотел именно наследования. И вы начали спорить кто кому принадлежит.
Вот из комбинации автомобиль плюс водитель можно отнаследовать класс "такси". Хотите наследования с авто-тематикой, рассуждайте об автобусах и грузовиках.
12 май 20, 15:50    [22131306]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / C++ Ответить