Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 28.08.2012
Сообщений: 115
1

Можно ли использовать такой подход в классах?

21.02.2013, 10:38. Показов 930. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста.
Можно ли в конструкторе класса В, создавать объект другого класса А и потом обращаться к
к методам A в классе В?
Т.е. так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class A 
    { 
       public $a;
       public function __construct($a) 
          {  
                  $this->a = $a;
          } 
      public function func_a()
      {
          $this->aa = $this->a * $this->a;
            
          return $this->aa;
      }
     public function func_a2()
      {
          $aa  = self::func_a();
          $aaa = $aa - $this->a;
            
          return $aaa;
      }
        
    } 
    
    
     class B 
    { 
       //public $a;
     public $b;
     public function __construct( $a, $b ) 
         { 
         $this->b = $b;
         $this->c = new A( $a );   // Создаем объект класса A
         } 
      public function func_b()
     {
          $v = $this->c->func_a2();  // Обращаемся к методам класса А
            
          echo $v;
            
     }
        
    } 
    $a = 100;
    $b = 10;
    $_b = new B( $a, $b );
    $_b->func_b();
Код работает, и конечно можно было сделать через наследование, но от наследования я отказался по некоторым причинам.
Насколько это будет правильно? (Боюс индийского кода)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2013, 10:38
Ответы с готовыми решениями:

Можно ли использовать такой код? SQL VB6 (внутри)
Только начинаю писать на VB под базу SQL. Почитал литературу, как оказалось нет однозначных...

Почему итераторы в STL используют такой странный подход к индексации?
Здравствуйте. Вопросы касаются пока только последовательных контейнеров. Почему при...

как использовать число во всех классах
ввести x в классе A,а потом изменять этот икс в других классах? что то типо того class A{...

Как использовать библиотеку RedBean в своих классах
Здравствуйте Подскажите пожалуйста как я могу использовать библиотеку RedBean в своём классе, у...

5
813 / 796 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.02.2013, 12:17 2
нужно стараться избегать такого кода. Есть наследование
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.02.2013, 19:55 3
Не всматривался в суть кода. Но создать и использовать можно.
Почитайте о паттернах проектирования.
Под ваше описание подходит и делегирование и композиция и фабрика
Не всегда правда в конструкторе создаётся, но суть в том что в одном классе можно хранить указатель на другой и использовать его методы. А так же для этого бывает полезно объявлять интерфейсы.
0
2 / 2 / 0
Регистрация: 28.08.2012
Сообщений: 115
22.02.2013, 22:23  [ТС] 4
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Не всматривался в суть кода. Но создать и использовать можно.
Почитайте о паттернах проектирования.
Под ваше описание подходит и делегирование и композиция и фабрика
Не всегда правда в конструкторе создаётся, но суть в том что в одном классе можно хранить указатель на другой и использовать его методы. А так же для этого бывает полезно объявлять интерфейсы.
Я уже встречал про фабрику, но правда не совсем понял как это работает. А еще есть делегирование, композиция...А можно ссылку где это хотя-бы в общих чертах можно прочитать? Если несложно?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
22.02.2013, 22:39 5
http://ru.wikipedia.org/wiki/%... 0%B8%D1%8F
там в таблице куча ссылок)
1
74 / 73 / 25
Регистрация: 05.10.2008
Сообщений: 233
23.02.2013, 22:14 6
Цитата Сообщение от izcian Посмотреть сообщение
А еще есть делегирование, композиция...А можно ссылку где это хотя-бы в общих чертах можно прочитать? Если несложно?
Про композицию и делегирование хорошо описано сразу в 8 главе книги PHP. Объекты, шаблоны и методики программирования. Мэтт Зандстра.
там хорошо описан принцип: предпочитайте композицию наследованию. Так что правильно что Вы отказались от наследования
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2013, 22:14

Можно ли это сделать используя асинхронный подход?
Есть список ссылок. Нужно получить содержимое каждой ссылки. Напрашиваются треды, потоки. Можно ли...

Как правильно использовать деструктор исключений в наследующих классах?
Ни разу не видел использования деструктора класса std::exception в наследующем классе. Будет ли...

Как использовать один и тот же объект в разных классах?
Подскажите, пожалуйста, как получить доступ к функции через объект. Второй день бьюсь, хотя...

Как правильно использовать operator= при наследовании в полиморфных и неполиморфных классах
Доброго времени суток! Изучаю книгу С. Прата "Язык программирования C++. Лекции и упражнения."...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.