g =& new Group($game); $this->obj =& new Group($game); } */ function init() { parent::init(); //Nüüd siis eeldame et obj on alati olemas ja seda ei pea igas meetodis kontrollima $this->obj =& new Group($this->owner); } /** * initsialiseerib ja väljastab UUE!!! grupi. * Parameetrite arv 1..n */ function &i() { $grp =& new Group($this->owner); if (func_num_args() > 0) { //$grp->set_ids(func_get_args()); $grp->set(func_get_args()); } return new G($this->owner, $grp); } function size() { return $this->obj->size(); } /** * ei tea kas on tarvis * leiab antud juhul kasutust algoritmis 96 */ function items() { return $this->obj->items(); } /* function add() { if (!isset($this->obj)) $this->obj =& new Group($this->owner); //$argn = func_num_args(); foreach (func_get_args() as $arg) { if (is_scalar($arg)) $this->obj->add_id($arg); elseif (is_array($arg)) $this->obj->add_ids($arg); elseif (is_a($arg, 'g')) $this->obj->add_group($arg->obj); elseif (is_a($arg, 'p')) $this->obj->add_person($arg->obj); } } */ /** * remove() * */ function remove() { //if (!isset($this->obj)) return; foreach (func_get_args() as $arg) { if (is_scalar($arg)) $this->obj->remove_id($arg); elseif (is_a($arg, get_class($this))) $this->obj->remove_group($arg->obj); //praegu veel halastan, tulevikus asendatakse g-ga //elseif (is_a($arg, 'p')) // $this->obj->remove_person($arg->obj); //elseif (is_array($arg)) // $this->obj->remove_ids($arg); } //$this->obj->remove_group($g->obj); } /** * vajalik //praegu mitte * Kas kõik $this grupi liikmed on ka parameetrina antud grupis? */ function in($g) { //if (!isset($this->obj)) return TRUE; //if (isset($g) and isset($g->obj) and is_a($g->obj, 'group')) return $this->obj->in_group($g->obj); //else // return FALSE; } /** * vajalik * Selle ja teise hulga ühisosa */ function &intersection($g) { //$grp = NULL; //if (isset($this->obj) and isset($g) and isset($g->obj) and is_a($g->obj, 'group')) /* $grp =& $this->obj->intersection($g->obj); $new_g = new G($this->owner, $grp); return $new_g; */ return new G($this->owner, $this->obj->intersection($g->obj)); } /** * Kas kõik selle grupi liikmed on antud faasi(de)s? * Mida see teeks initsialiseerimata obj puhul? Väljakujunenud põhimõtte kohaselt * peaks andma tulemuse kõigi õpetajate kohta. * Kui on initsialiseerimata, siis pärast jääb initsialiseerituks, sellest pole midagi, * kui kasutaja just ei hakka $G obj-i kõvasti modima (n: remove) ja siis imestama, miks * see enam kõiki persoone ei esinda.. * Ikkagi probl. n: kõigep get_by_mask() mille käigus luuakse ja jäetakse sisse tühi group obj * ja pärast in_phase, mis nüüd käib tühja grupi kohta.. sellep: * Kui on initsialiseerimata, siis pärast jääb initsialiseerimata. * * Nii uus ideoloogia: kuna obj on algusest peale init. siis selleks et pärida kõigi kohta * peab obj olema seatud esindama kõiki e enne peab olema tehtud ->set_all() * * @return boolean */ function in_phase($mask) { /* if (!isset($this->obj)) { //teeme grupi kõigi persoonide jaoks $grp =& new Group($this->owner); $grp->set_all(); return $grp->in_phase($mask); }*/ return $this->obj->in_phase($mask); } /* kui P => G function add_points($nr = 1, $mask = NULL) { } function add_full_points() { } */ /** * Nii initsialiseeritud, kui initsialiseerimata g objekti puhul. * Kui on initsialiseerimata, siis pärast jääb initsialiseerituks, sellest pole midagi. * EI JÄÄ * Väljastab uue g objekti * @return G */ function &get_by_mask($mask) { //$grp =& new Group($this->owner); /* if (!isset($this->obj)) { $grp =& new Group($this->owner); }else $grp =& $this->obj; */ //$filtered_grp =& $this->obj->get_by_mask($mask); return new G($this->owner, $this->obj->get_by_mask($mask)); //$g =& new G($this->owner, $this->obj->get_by_mask($mask)); //return $g; //$g->set_obj($grp); } /** * Kõigi või antud grupi seast. * Kui selle grupi seas on vähem persoone kui nõutud, antakse nii palju kui on...? ehk siis kõik? */ function &get_random($count) { return new G($this->owner, $this->obj->get_random($count)); } /* function &leader() { $prsn =& $this->obj->get_leader(); $f =& new P($this->owner); $f->set_obj($prsn); return $f; }*/ function add_points($nr = 1, $mask = NULL) { $this->obj->add_points($nr, $mask); } function add_full_points() { $this->obj->add_full_points(); } } ?>