Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
18 / 15 / 1
Регистрация: 20.04.2010
Сообщений: 318

ООП. Множество одинаковых классов?

31.05.2010, 12:12. Показов 1535. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс автомобиль.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Desc {  // file or folder
    var $name;
    var $size;
    var $link;
 
    function SetName($name) {
        $this->name = $name;
    }
    function GetName() {
        return $this->name;
    }
}
Как правильно реализовать множество этих классов. Не уж то нужно использовать массив классов?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2010, 12:12
Ответы с готовыми решениями:

ООП, взаимодействие объектов классов
Всем привет! Перед тем как задавать вопросы напишу. Я понимаю концепцию ООП, понимаю чем отличается класс от объекта класса, знаю что...

Создание нескольких одинаковых классов
Привет) Можете подсказать, можно ли в php создавать два одинаковых класса из разных директорий? Опишу задумку: Есть сайт с...

Взаимодействие классов БД, Модель, Класс от модели (принцип ООП)
Помогите пожалуйста сориентироваться в вопросе (пишу свой движок) И есть недопонимание, так сказать, сомнение У меня есть класс БД, с...

5
33 / 33 / 12
Регистрация: 18.05.2010
Сообщений: 99
31.05.2010, 14:41
Если честно, не совсем ясно, что значит множество классов. Вы, наверное, имеете в виду создание множества объектов данного класса. Если так, то вам действительно необходимо использовать массив.

... и можно немножко попридираться? Уже все давно использют php5, вон, уже даже 6-ая версия на подходе,
а вы до сих пор пишите var $name; и function SetName. Фу, какая гадость
Ваш класс намного лучше соответствовал бы парадигмам ООП, если бы вы написали
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class Desc { // file or folder
private $name;
private $size;
private $link;
 
public function SetName($name) {
$this->name = $name;
}
public function GetName() {
return $this->name;
}
}
0
18 / 15 / 1
Регистрация: 20.04.2010
Сообщений: 318
31.05.2010, 20:30  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class Desc { // file or folder
private $name;
private $size;
private $link;
 
public function SetName($name) {
$this->name = $name;
}
public function GetName() {
return $this->name;
}
}
Массив внутри этого класса делать? Или же нужно создать ещё один класс, и уже в нем работать с этим классом?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
31.05.2010, 21:21
Если речь идет именно о массиве, то это будет выглядеть примерно так:

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
class File // упрощенный вариант класса файла с конструктором
{
    public $name;
    public $size;
    public $link;
    
    function __construct($name, $size, $link = false)
    {
        $this->name = $name;
        $this->size = $size;
        $this->link = $link;
    }
}
 
$files = array // массив файлов
(
    new File('a.txt', 1024),
    new File('b.txt', 2048),
    new File('c.lnk', 64, true)
);
 
$files[] = new File('d.txt', 0); // добавление файла
 
unset $files[3]; // удаление файла из массива
 
foreach ($files as $file) // перебор файлов в массиве
{
    echo $file->name.' ('.$this->size.' byte(s)<br/>';
}
0
18 / 15 / 1
Регистрация: 20.04.2010
Сообщений: 318
01.06.2010, 05:12  [ТС]
спасибо, Ostgals.

Но ведь можно это тоже в отдельный класс вынести :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$files = array // массив файлов
(
    new File('a.txt', 1024),
    new File('b.txt', 2048),
    new File('c.lnk', 64, true)
);
 
$files[] = new File('d.txt', 0); // добавление файла
 
unset $files[3]; // удаление файла из массива
 
foreach ($files as $file) // перебор файлов в массиве
{
    echo $file->name.' ('.$this->size.' byte(s)<br/>';
}
??? Или может проще сделать один класс "Множество автомобилей" ?

Как принято делать?

Добавлено через 4 часа 23 минуты
Множество объектов автомобиль, т.е. много автомобилей!
Правильно делать так :
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
47
48
<?php
class MyIterator implements Iterator {
 
  private $var = array();
 
  public function __construct($array) {
    if (is_array($array) ) {
      $this->var = $array;
    }
  }
 
  public function rewind() {
    echo "перемотка в начало\n";
    reset($this->var);
  }
 
  public function current() {
    $var = current($this->var);
    echo "текущий: $var\n";
    return $var;
  }
 
  public function key() {
    $var = key($this->var);
    echo "ключ: $var\n";
    return $var;
  }
 
  public function next() {
    $var = next($this->var);
    echo "следующий: $var\n";
    return $var;
  }
 
  public function valid() {
    $var = $this->current() !== false;
    echo "верный: {$var}\n";
    return $var;
  }
 
}
 
$values = array(1,2,3);
$it = new MyIterator($values);
 
foreach ($it as $a => $b) {
  print "$a: $b\n";
}
http://www.homefilm.info/php5/... tions.html

p.s.:не думаю что самому до этого можно догадаться было :-(
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.06.2010, 09:25
Цитата Сообщение от ostgals Посмотреть сообщение
Если речь идет именно о массиве, то это будет выглядеть примерно так:
Конечно, можно делать класс списка автомобилей. С некоторой точки зрения это даже правильнее, чем просто массив объектов. Потому-то я и написал во вступлении, что написанный мной код относится только к массиву объектов. На полноту вариантов я не претендовал

PHP5 предлагает удобный набор структур данных и итераторов, которые тоже можно использовать. Однако по своему опыту скажу, что их использование замедляет исполнение скрипта. Например, когда я реализовывал полноценный класс битового массива, скорость "полноценного" класса была медленнее скорости простого массива в 7 раз.

Добавлено через 2 минуты
Цитата Сообщение от OopsOops Посмотреть сообщение
Правильно делать так :
И не стоит ограничивать себя каким-то одним методом. Любой метод имеет свои плюсы и свои минусы. Делайте так, как удобнее и проще. Простой код зачастую надежнее сложного.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2010, 09:25
Помогаю со студенческими работами здесь

Архитектура классов (ооп)
Нужно создать crud приложение для managerов. Как это примерно будет выглядеть: Есть возможность просматривать товары. Добавлять клиентов,...

ООП реализация сложных классов
Вот задание как реализуется сложный класс“база-сектор” (дуга+радиус+радиус) , в которых класс “фигура” должен присутствовать в...

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

Объявление классов. Применение принцов ООП
объявить класс &quot;Прогноз погоды&quot; с указанием полей: название месяца, средняя температура, среднее количество осадков в мм, среднее давление...

ООП: написание классов «Треклист» и «Песня»
Пожалуйста, помогите написать классы «Треклист» и «Песня» (название и время звучания). В треклисте необходимо перегрузить оператор ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru