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

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

21.02.2013, 10:38. Показов 1213. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2013, 10:38
Ответы с готовыми решениями:

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

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

как использовать число во всех классах
ввести x в классе A,а потом изменять этот икс в других классах? что то типо того class A{ public:int x; void fun1(); } class A{...

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru