[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос реализации
AlexTi
Добрый день, уважаемые!
Вот дали мне такую задачу:

-----------------------------------------------------------------

Реализовать базовый класс Bean, позволяющий наследуемым от него объектам реализовать следующее поведение:
class User extends Bean {
protected $fname;
protected $sname;

public function set_full_name($full_name) {
$parts = explode(' ', $full_name);
$this->fname = $parts[0];
$this->sname = $parts[1];
}

public function get_full_name() {
return "{$this->fname} {$this->sname}";
}
}

$u = new User(array('fname' => 'John', 'sname' => 'Doe'));
$u->sname = 'Smith';
print $u->full_name; // Выводит John Smith
$u->full_name = 'Alice Jones';
print $u->sname; // Выводит Jones.
Примечание: поля класса User (fname,sname,full_name) - это сугубо личное дело класса User. Класс Bean ничего про них не знает и должен работать с любыми именами полей (и любым их количеством)

---------------------------------------------------------------------------------

Начал думать, всю голову уже себе отвернул. Вот хочу спросить совета у общественности, она вообще решаема?
И зачем было составителям так все каверкать. Не проще ли вызов функции function get_full_name сделать без параметов. В родительском классе объявить свойство, произвести разложение массива в строку, и эту строку назначить этому свойству. А в вышеуказанной функции просто забрать с помощью ($this->....) это свойство и работать с ним?

И еще, как можно присвоить значение свойству, определенному как protected, непосредственно при реализации объекта?( присвоение, как в данной задаче, выдает ошибку).



Спустя 11 минут, 23 секунды (26.10.2009 - 14:06) glock18 написал(а):
Поведение класса bean так и не приведено. Я так понял, что он должен что-то делать с полями своих потомков, а что именно не сказано.

Спустя 25 минут, 7 секунд (26.10.2009 - 14:32) AlexTi написал(а):
Вот Bean мне и нужно описать. Выше я писал что пытался сделать, но получается какой-то изврат. Поэтому и прошу ответа на вопросы rolleyes.gif

Пусть даже он будет таким

class Bean {

protected $full_name;

public function __construct($a,$b) {
$this->full_name=$a." ".$b;
}
}

Такой вот простой, к примеру. Я просто никак не могу понять каким способом образом $set_full_name() цепляет глобальное свойство $full_name. Или я чего-то не понимаю.
И конечно самое непонятное для менят это по поводу присвоения значений защищенным свойствам. Может там имеется ввиду что в родительском классе необходимо использовать перехватчики(для изменения этих самых свойств, но тогда получается что у меня как бы есть свойства, которые существуют, смысл перехватчика теряется). Вообщем полный ступор unsure.gif




Спустя 1 час, 21 минута, 55 секунд (26.10.2009 - 15:53) glock18 написал(а):
У меня сейчас тоже ступор. Я вас совсем не понимаю. Как можно дать задание написать класс, который непонятно что должен делать? Ну оставьте тот, что записали выше. Он определенно соответствует этому условию.
Быстрый ответ:

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