2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 И наследник, и атрибут
Сообщение02.11.2008, 15:39 
Заслуженный участник


18/03/07
1068
Не очень понимаю ОО-парадигму, и синтаксис разных поддерживающих её языков успел подзабыть.

Вот такой вопрос: может ли класс В быть наследником класса A, и при этом чтобы объекты класса A имели свойство, значением которого были бы объекты класса B?

Если да, то как это объявить (желателен пример не на С++)?

 Профиль  
                  
 
 
Сообщение02.11.2008, 15:48 


12/09/08

2262
Код:
struct b_t;

struct a_t {
  virtual b_t copy_b() = 0;
};

struct b_t : a_t {
  virtual b_t copy_b() { return *this; }
};
Это?

 Профиль  
                  
 
 
Сообщение02.11.2008, 22:49 
Заслуженный участник


18/03/07
1068
вздымщик Цыпа писал(а):
Код:
struct b_t;

struct a_t {
  virtual b_t copy_b() = 0;
};

struct b_t : a_t {
  virtual b_t copy_b() { return *this; }
};
Это?


Не знаю я этого наречия тоже :oops:

Можно даже обобщить вопрос и попытаться заполнить плюсами и минусами вот такую табличку:

\begin{tabular}{c|c|c|}
                   & А наследует В & В наследует A \\ \hline
А имеет свойство B &               &      ~        \\ \hline
B имеет свойство A &               &      ~        \\ \hline
\end{tabular}

Плюс означал бы: да, возможно, и вот вам пример. Минус означал бы: увы, это принципиально невозможно.

 Профиль  
                  
 
 
Сообщение02.11.2008, 23:37 


12/09/08

2262
luitzen в сообщении #155436 писал(а):
Не знаю я этого наречия тоже
Это был пример на C++, как Вы и просили.

В не понимаю, чего Вы хотите с этой табличкой. Может Вы объясните поконкретнее, какую задачу Вы решаете?

 Профиль  
                  
 
 
Сообщение03.11.2008, 09:57 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Вообще-то автор просил пример не на C++.

 Профиль  
                  
 
 
Сообщение03.11.2008, 21:13 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
Вот пример на C#:

Код:
namespace MyNamespace
{
    public class A
    {
        public B bProperty
        {
            get;
            set;
        }
    }

    public class B : A
    {
    }
}


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

 Профиль  
                  
 
 
Сообщение03.11.2008, 22:43 
Заслуженный участник


18/03/07
1068
Действительно, третий столбец ни к чему :oops:

А пример на Java можно привести?

 Профиль  
                  
 
 
Сообщение03.11.2008, 23:51 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
Давненько я на Java не писал. Под рукой компилятора (для проверки) нет. Но будет примерно так:
Код:
public class A
{
    public B bProperty;
}

public class B extends A
{
}


З.Ы. Сейчас качну Java - проверю.
З.Ы. З.Ы. Память не подвела!
З.Ы.З.Ы.З.Ы. Довольно часто встречающаяся ситуация. Пример: А - mere mortal сотрудник, В - руководитель. У руководителя м.б. дополнительные атрибуты в сравнении с сотрудником, а сотрудник имеет ссылку на руководителя.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group