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

Класс: простой класс юнитов из эпохи

12.07.2012, 12:27. Показов 1135. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хай, всем. Вот я создал простой класс юнитов из эпохи, проанализируйте его, пожалуйста. Может как его лучше надо было написать с точки зрения ООП.
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
<?php
Class UnitsFourthEpoch{
    public $unit;
    public $unitDefencePexota;
    public $unitDefenceKavalery;
    public $unitAtakcerPexota;
    public $unitAtakcerKavalery;
    public $unitFoto;
    public $unitEpoch;
    public $unitSpeed;
    public $unitHeavy;
    public function SetUnitType($UnitName,$UnitDefencePexota,$UnitDefenceKavalery,$UnitAtakcerPexota,$UnitAtakcerKavalery,$UnitFoto,$UnitEpoch,$UnitSpeed,$UnitHeavy){
        $this->unit = $UnitName;
        $this->unitAtakcerKavalery = $UnitAtakcerKavalery;
        $this->unitAtakcerPexota = $UnitAtakcerPexota;
        $this->unitDefenceKavalery = $UnitDefenceKavalery;
        $this->unitDefencePexota = $UnitDefencePexota;
        $this->unitFoto = $this->name_host.$UnitFoto;
        $this->unitEpoch = $UnitEpoch;
        $this->unitSpeed = $UnitSpeed;
        $this->unitHeavy = $UnitHeavy; 
    }
}
$R1 = new UnitsFourthEpoch();
$R1->SetUnitType('R1',50,60,70,80,'/images/unit/fourepoch/R1.png',4,80,100);
$R2 = new UnitsFourthEpoch();
$R2->SetUnitType('R2',55,65,75,88,'/images/unit/fourepoch/R2.png',4,100,150);
$R3 = new UnitsFourthEpoch();
$R3->SetUnitType('R3',70,90,50,60,'/images/unit/fourepoch/R3.png',4,110,160);
$R4 = new UnitsFourthEpoch();
$R4->SetUnitType('R4',75,88,55,65,'/images/unit/fourepoch/R4.png',4,115,105);
$R5 = new UnitsFourthEpoch();
$R5->SetUnitType('R5',90,90,90,90,'/images/unit/fourepoch/R5.png',4,116,120);
$R6 = new UnitsFourthEpoch();
$R6->SetUnitType('R6',100,100,100,100,'/images/unit/fourepoch/R6.png',4,115,100);
$R7 = new UnitsFourthEpoch();
$R7->SetUnitType('R7',150,150,180,180,'/images/unit/fourepoch/R7.png',4,150,200);
$R8 = new UnitsFourthEpoch();
$R8->SetUnitType('R8',180,180,150,150,'/images/unit/fourepoch/R8.png',4,160,250);
$R9 = new UnitsFourthEpoch();
$R9->SetUnitType('R9',200,200,200,200,'/images/unit/fourepoch/R9.png',4,200,400);
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2012, 12:27
Ответы с готовыми решениями:

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... Разработать абстрактный класс класс...

8
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.07.2012, 12:37
Цитата Сообщение от arthur12345543 Посмотреть сообщение
как его лучше надо было написать с точки зрения ООП

Не по теме:

зря вы так поставили вопрос , щас как обычно холивар развернется на 20 страниц:D


1ое думаю некоторые свойства будут дотупны не только юнитам этого класса типо name , думаю следует часть свойств которые могут пнадобится другим юнитам отделить в отдельный класс baseunit (базовый класс юнитов) , можно даже его абстрактным сделать , и унаследовать ейтот от базового добавив в него ток те свойства котоые будут только у этих юнитов .
2 почему все переменные публичные ,
3 думаю есть смысл задавать в конструкторе параметры а не в отдельном методе
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2012, 12:42
1. У вас нет проверок на входящие параметры в методе SetUnitType.
2. Методы классов желательно называть с маленьких букв, в от время как имена классов с больших.
3. Данные в метод лучше передавать массивом а если нет, то задавать значения по умолчанию.
4. Юзайте наследование.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
12.07.2012, 13:24
Цитата Сообщение от DenQ Посмотреть сообщение
3. Данные в метод лучше передавать массивом а если нет, то задавать значения по умолчанию.
зачем? что бы потом гадать, какие имена ключей массива должны быть у входящего массива?
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2012, 13:30
Цитата Сообщение от Василий Макогон Посмотреть сообщение
зачем?
Нет, ну если вы являетесь большим поклонником, вот таких вот объявлений
PHP
1
public function SetUnitType($UnitName,$UnitDefencePexota,$UnitDefenceKavalery,$UnitAtakcerPexota,$UnitAtakcerKavalery,$UnitFoto,$UnitEpoch,$UnitSpeed,$UnitHeavy)
То вперед, кто ж запрещает... Только вот потом не удивляйтесь реакции других программистов глядя на такое...

Цитата Сообщение от Василий Макогон Посмотреть сообщение
что бы потом гадать, какие имена ключей массива должны быть у входящего массива?
Что мешает написать обработчик такого массива? К тому же если известно, какие поля должны быть?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
12.07.2012, 15:09
ну таких методов в классе априори не должно быть. достаточно создать проперти с допустимым перечнем свойств, которые может содержать класс и повесить на __call обработчик виртуальных set и get методов
тогда не нужно будет писать метод с кучей параметров
это даже правильно, т.к. в случае изменения условий для ввода или вывода значений мы можем написать явный set метод и зашить в нем бизнес-логику.
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
14.07.2012, 09:31
1. Что такое Pexota? Похоже на название какого-то гейского коктейля.
2. SetUnitType отвратителен. Функцие не следует принимать более 3 параметров.
3. Цифры в конфиг. Заодно и не придется думать, почему эти двое в твоей теме спорят и какой из их вариантов выбрать
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
14.07.2012, 12:33
Цитата Сообщение от OnYourLips Посмотреть сообщение
Что такое Pexota? Похоже на название какого-то гейского коктейля.
Видимо человек подразумевает под этим пехоту. Тяжело до этого догадаться?

Цитата Сообщение от OnYourLips Посмотреть сообщение
Цифры в конфиг
Для всех возможных вариантов юнитов? Блестяще!
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
14.07.2012, 12:45
Видимо человек подразумевает под этим пехоту. Тяжело до этого догадаться?
Разве по моему выражению не ясно, что это сарказм?

Для всех возможных вариантов юнитов? Блестяще!
Ну да. Всегда такое хранили в ресурсах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2012, 12:45
Помогаю со студенческими работами здесь

Отдельно класс данных, класс формул и главный класс
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

простой класс
покажите пожалуйста самую простою классу, корорый показывает &quot;Hello World&quot;

Простой класс
Подскажите пожалуйста в чём проблема? Вот это отображает терминал. Хочу разобраться с классами. class3.cpp:20:14: error: no matching...

Простой класс полиномов
Есть методы для умножения, сложения и производной #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; ...

Событие или простой класс
Добрый вечер коллеги! Хотелось бы узнать, как использовать события или использовать ли их в моем проекте или вообще не использовать. ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь 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. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru