[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь по реализации (ООП)
SuicideMouse
Здравствуйте
киньте пожалуйста пару наводок по реализации одного задания, а то не могу уйти дальше реализации класса) (если еще и это правильно сделал)
Собственно:
Описать класс "Научно-исследовательские разработки", содержащий информацию (Наименование, дата начала, дата завершения, область исследования, ФИО сотрудников):
1)посчитать количество НИР в каждой области исследования;
2)посчитать количество сотрудников задействованных в НИР.
Вроде как бы все и просто, но меня все время останавливает куча вопросов)



Спустя 12 минут, 58 секунд (19.12.2010 - 00:14) Lenarfate написал(а):

Спустя 43 минуты, 30 секунд (19.12.2010 - 00:57) SuicideMouse написал(а):
Спасибо конечно, но меня больше интересовал алгоритм реализации, а не само ООП.

Спустя 15 минут, 39 секунд (19.12.2010 - 01:13) Lenarfate написал(а):
так ты покажи, как сам думаешь, отрывки кода по отдельным вопросам

Спустя 3 минуты, 27 секунд (19.12.2010 - 01:16) SuicideMouse написал(а):
Ладно буду обращаться по более конкретным вопросам)

Спустя 1 час, 46 минут, 38 секунд (19.12.2010 - 03:03) SuicideMouse написал(а):
Больше всего меня напрягает логика задания...
Тоесть получается есть области исследования (тут сразу вопрос как это представить... в виде массива или чего вообще?)
В области исследования есть Научно-исследовательские разработки, а в разработках сотрудники.
Тут у меня и встает вопрос который все тормозит)
сделать массив только из сотрудников где перечислить их ФИО или же для каждого элемента этой матрешки создавать массив?

Спустя 1 час, 16 минут, 56 секунд (19.12.2010 - 04:20) kirik написал(а):
SuicideMouse
Так вам ООП или массивы?
Если ООП логика, то тут наследование классов.
Есть базовый класс "области исследования" с базовыми методами и свойствами, от него наследуются уже собственно сами области исследования - например "биология", класс которой включает в себя свои свойства и методы (а может не включает - тогда используются свойства-методы базового класса).
Вроде как-то так, не? smile.gif

Спустя 10 часов, 5 минут, 32 секунды (19.12.2010 - 14:25) SuicideMouse написал(а):
Мне ООП)
Но в задании базовым классом является НИР а "области исследования" этого одно из его свойств... ну я вот как то так понял... smile.gif
В общем как я начал

// Создаем новый класс NIR:
class NIR {
// данные (свойства):
var $Naimenovanie = array ('');
var $StartData;
var $EndData;
var $oblast = array('Физика','Химия', 'Робототехника');
var $fio = array('Вассерман', 'Перельман', 'Азимов', 'Менделеев', 'Тесла');


Но вот походу это уже не правильно?

Спустя 4 минуты, 39 секунд (19.12.2010 - 14:30) Lenarfate написал(а):
создаешь базовый класс, содержащий информацию (Наименование, дата начала, дата завершения, область исследования, ФИО сотрудников). далее наследуешь его новым классом, где выполняется задание 1)посчитать количество НИР в каждой области исследования; потом наследуешь еще одним, где выполняешь
2)посчитать количество сотрудников задействованных в НИР.

Спустя 7 минут, 15 секунд (19.12.2010 - 14:37) SuicideMouse написал(а):
Lenarfate
Спасибо, теперь хоть есть от чего отталкиваться)
Я кстати подозревал что все именно так придется делать)
Кстати... а массивы оставить или убрать? )

Спустя 6 часов, 43 минуты, 7 секунд (19.12.2010 - 21:20) SuicideMouse написал(а):
Как мне теперь совместить сотрудников с разработками и областями чтоб потом уже считать их?
<?php
class
NIR {

var $Naimenovanie;
var $StartData;
var $EndData;
var $Oblast;
var $Fio;

//Объявление функций
function PostNaimenovanie($Naimenovanie) {$this->Naimenovanie = $Naimenovanie;}
function PostOblast($Oblast) {$this->Oblast = $Oblast;}
function PostFio($Fio) {$this->Fio = $Fio;}

function PrintNaimenovanie() {echo $this->Naimenovanie;}
function PrintOblast() {echo $this->Oblast;}
function PrintFio() {echo $this->Fio;}

}


//Массивы данных
$MassNaimenovanie = array('Адронный коллайдер', 'Броня Тесла', 'Детокс', 'Ультра Эфедрин', 'Терминатор Т3000');
$MassOblast = array('Физика','Физика','Химия', 'Робототехника');
$MassFio = array('Вассерман', 'Перельман', 'Азимов', 'Менделеев', 'Тесла', 'Моисеев', 'Яхве', 'Иегова');
?>

Спустя 25 минут, 51 секунда (19.12.2010 - 21:46) kirik написал(а):
Цитата (SuicideMouse @ 19.12.2010 - 13:20)
Как мне теперь совместить сотрудников с разработками и областями чтоб потом уже считать их?

Создается впечатление, что код выше писал не ты smile.gif

У тебя же есть методы добавления данных в свойства класса (сеттеры) - PostNaimenovanie, PostOblast, PostFio.


Ты не верно понял. У тебя есть класс NIR - он базовый для остальных классов. Остальные классы, это например NIRmath (НИР по математике), NIRphysics (НИР по физике). Вот в этих классах уже будут свои сотрудники.

Спустя 1 минута, 43 секунды (19.12.2010 - 21:48) SuicideMouse написал(а):
Да я знаю, что их нужно туда добавить, просто как это сделать?
типа через цикл? Хотя я кажется понял...)))

Спустя 1 минута, 57 секунд (19.12.2010 - 21:50) kirik написал(а):
Обновил свой пост.
Забудь пока про то, что у тебя есть какие-то данные. Оперируй сущностями. Соединяй не данные, а сущности.

Спустя 4 часа, 36 минут, 54 секунды (20.12.2010 - 02:27) SuicideMouse написал(а):
Соеденил сущьности... как теперь их посчитать?)))))
<?php
class
NIR {

var $Naimenovanie;
var $StartData; // Зачем это вообще?
var $EndData; // Зачем это вообще?
var $Oblast;
var $Fio;

//Объявление функций
function PostNaimenovanie($Naimenovanie) {$this->Naimenovanie = $Naimenovanie;}
function PostOblast($Oblast) {$this->Oblast = $Oblast;}
function PostFio($Fio) {$this->Fio = $Fio;}

function PrintNaimenovanie() {echo $this->Naimenovanie;}
function PrintOblast() {echo $this->Oblast;}
function PrintFio() {echo $this->Fio;}

}


//Массивы данных
$MassNaimenovanie = array('Адронный коллайдер', 'Броня Тесла', 'Детокс', 'Ультра Эфедрин', 'Терминатор Т3000');
$MassOblast = array('Физика','Физика','Химия', 'Робототехника');
$MassFio = array('Вассерман', 'Перельман', 'Азимов', 'Менделеев', 'Тесла', 'Моисеев', 'Яхве', 'Иегова');

for ($i=0; $i<=3; $i++){
$NIRphis[$i] = new NIR;
$NIRphis[$i]->PostOblast($MassOblast[$i]);
$NIRphis[$i]->PostNaimenovanie($MassNaimenovanie[$i]);
$NIRphis[$i]->PostFio($MassFio[$i]);
}
?>

Спустя 49 минут, 5 секунд (20.12.2010 - 03:16) kirik написал(а):
Цитата (SuicideMouse @ 19.12.2010 - 18:27)
Соеденил сущьности... как теперь их посчитать?)))))

Кажется ты не совсем понимаешь о каких сущностях речь. Почитай на irbis'е про ООП.

Спустя 19 часов, 52 минуты, 21 секунда (20.12.2010 - 23:08) SuicideMouse написал(а):
Может кто допишет этот скрипт за пару рублей?))

Спустя 4 часа, 26 минут, 30 секунд (21.12.2010 - 03:35) SuicideMouse написал(а):
Вопрос: почему не работает подсчет?
<?php
class
NIR {

var $Naimenovanie;
var $StartData; // Зачем это вообще?
var $EndData; // Зачем это вообще?
var $Oblast;
var $Fio;
var $k;
var $y;
var $flag;

//Объявление функций
function PostNaimenovanie($Naimenovanie) {$this->Naimenovanie = $Naimenovanie;}
function PostOblast($Oblast) {$this->Oblast = $Oblast;}
function PostFio($Fio) {if ($this->flag == 0){$this->k = 0; $this->flag = 1;};
if ($Fio != '-'){$this->Fio[$this->k] = $Fio;$this->k++;} ;}

function PrintNaimenovanie() {echo $this->Naimenovanie;}
function PrintOblast() {echo $this->Oblast;}
function PrintFio($y) {$this->y = $y;echo $this->Fio[$this->y].'<br>';}



}
;

//Массивы данных
$MassNaimenovanie = array('Адронный коллайдер', 'Броня Тесла', 'Детокс', 'Ультра Эфедрин', 'Терминатор Т3000');
$MassOblast = array('Физика','Физика','Химия', 'Химия', 'Робототехника');
$MassFio = array('Вассерман', 'Тесла', 'Менделеев', 'Шульгин', 'Моисеев');
$MassFio2 = array('Ассистент', 'Перельман', 'Ассистент', 'Моисеев',);
$MassFio3 = array('Яхве', 'Иегова', NULL, NULL, 'Азимов');

echo ' <table border=5 align=center>
<tr>
<td>Наименование</td>
<td>Область исследования</td>
<td>ФИО сотрудников</td>
<td>Кол-во сотрудников</td>
</tr>'
;

for ($i=0; $i<=4; $i++){

$NIRphis[$i] = new NIR;

$NIRphis[$i]->PostOblast($MassOblast[$i]);
$NIRphis[$i]->PostNaimenovanie($MassNaimenovanie[$i]);
$NIRphis[$i]->PostFio($MassFio[$i]);
$NIRphis[$i]->PostFio($MassFio2[$i]);
$NIRphis[$i]->PostFio($MassFio3[$i]);

echo '<tr align=center><td>'; $NIRphis[$i]->PrintOblast();
echo '</td align=center><td>'; $NIRphis[$i]->PrintNaimenovanie();


echo '</td><td align=center>'; for ($h=0; $h<=$NIRphis[$i]->k; $h++){$NIRphis[$i]->PrintFio($h);}
echo '</td><td align=center>'; $NIRphis[$i]->k;

};
echo '</table>';


?>

Спустя 6 часов, 14 минут, 9 секунд (21.12.2010 - 09:49) linker написал(а):
Во-первых, здесь
function PostFio($Fio) {if ($this->flag == 0)...
условие не выполняется и во-вторых, здесь
if ($Fio != '-')
А вообще, если честно, то этот код - ужас.

Спустя 2 часа, 52 минуты, 47 секунд (21.12.2010 - 12:42) SuicideMouse написал(а):
Цитата
А вообще, если честно, то этот код - ужас.

предложите вариант получше не обижусь)

Спустя 31 минута, 38 секунд (21.12.2010 - 13:13) linker написал(а):
Если я напишу лучше, то я сделаю всю работу за тебя, а ты ничего не поймешь. Я тебе указал на два момента, вот и правь.

Спустя 57 минут, 48 секунд (21.12.2010 - 14:11) SuicideMouse написал(а):
И все таки срочняк, согласится кто нибудь прямой сейчас дописать скрипт рублей за 400?
Только надо переработать пару моментов


function PostFio($Fio) {if ($this->flag == 0){$this->k = 0; $this->flag = 1;};
if ($Fio != '-'){$this->Fio[$this->k] = $Fio;$this->k++;} ;}

этого

function PrintFio($plus) {$this->plus = $plus;echo $this->Fio[$this->plus].';';}

и этого

echo '</td><td align=center>'; for ($h=0; $h<=$NIRphis[$i]->k; $h++){$NIRphis[$i]->PrintFio($h);}
echo '</td><td align=center>'; $NIRphis[$i]->k;

Спустя 4 часа, 27 минут, 54 секунды (21.12.2010 - 18:39) SuicideMouse написал(а):
Закрывайте тему, я на паре дописал)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.