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

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

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

Author24 — интернет-сервис помощи студентам
Есть класс автомобиль.
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2010, 12:12
Ответы с готовыми решениями:

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

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

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

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

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

... и можно немножко попридираться? Уже все давно использют 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  [ТС] 3
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
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
31.05.2010, 21:21 4
Если речь идет именно о массиве, то это будет выглядеть примерно так:

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  [ТС] 5
спасибо, 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
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
01.06.2010, 09:25 6
Цитата Сообщение от ostgals Посмотреть сообщение
Если речь идет именно о массиве, то это будет выглядеть примерно так:
Конечно, можно делать класс списка автомобилей. С некоторой точки зрения это даже правильнее, чем просто массив объектов. Потому-то я и написал во вступлении, что написанный мной код относится только к массиву объектов. На полноту вариантов я не претендовал

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

Добавлено через 2 минуты
Цитата Сообщение от OopsOops Посмотреть сообщение
Правильно делать так :
И не стоит ограничивать себя каким-то одним методом. Любой метод имеет свои плюсы и свои минусы. Делайте так, как удобнее и проще. Простой код зачастую надежнее сложного.
0
01.06.2010, 09:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2010, 09:25
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru