ООП иерархия классов

Ребята, помогите с заданием. я даже не особо понимаю что именно надо сделать.. =(
с методом render делала так, если input:
function render(){
return"<input name=\"{$this->name}\" value=\"{$this->value}\"/>";
}
 

Вложения

  • 93,5 KB Просмотры: 33

Redjik

Джедай-мастер
Вам не справиться с задачей...
Да и диаграмма классов как то не очень... сомневаюсь, что человек, давший задание, сам хорошо разбирается в ООП.
 

craz

Нестандартное звание
Ну почему не справиться, вон одну функцию уже написала...

Показывайте весь ваш код, будем посмотреть.
 
вот что сделала(заполнила только текстовое поле и input):
PHP:
<?php
abstract class Element {
    protected $name;
    protected $value;
    private $attributes=array();

   protected function getValue() {

    }
   protected function getName() {
   		
    }
   protected function getAttrubutes() {
   		
    }
	public function render(){
		
	}

}



class Textarea extends Element{
  public function __constructor($name){
  $this->name=$name;
  }
	public function render(){
		return"<Textarea name=\"{$this->name}\"></Textarea>"; 
	}
}
$description = new Textarea('text');
echo $description->render();



class Input extends Element{
  public function __constructor($name, $value){
    $this->name=$name;
    $this->value=$value;
    }
	public function render(){
		return"<input  name=\"{$this->name}\" value=\"{$this->value}\"/>";		
	}
}
$title = new Input('title', 'value');
echo $title->render();





class Choise extends Element{
   protected function getOptions() {
      
    }		
}





class Checkbox extends Choise{

	public function render(){
		
	}
}




class Select extends Choise{
  public function __constructor(){

  }
	public function render(){
		
	}
}
$select = new Select('choose', 'one', array('class' => 'some'), array('two' =>
'TWO Option', 'one' => 'ONE Option'));
echo $select->render();




class Radio extends Choise{

	public function render(){
		
	}
}



?>
 

craz

Нестандартное звание
НатальяПавлинкович
где в диаграмме функция конструктор у Textarea?

P.s. кстати как будем решать проблему правильно, или исходя из задания?
 

craz

Нестандартное звание

craz

Нестандартное звание
ну сюда кидайте все что написали, или верхний топик обновляйте.
 

WMix

герр M:)ller
Партнер клуба
PHP:
abstract class Element {
    protected $name;
    protected $value;
    private $attributes=array();

   protected function getValue() {

    }
   protected function getName() {
           
    }
   protected function getAttrubutes() {
           
    }
    public function render(){
        
    }

}
уже что-то написала.
а можно это что-то до конца, сконцентрировавшись, не пропуская ничего дописать?

а заодно подумать, что за методы такие,

getValue()
getName()
getAttrubutes()
и то что пропустила
setValue( $value )
setName( $name )
setAttrubutes( $attribute )
addAttrubutes( $attribute, $value )

если будешь поумнее и хочешь использовать мощь пхп, загляни сюда language.oop5.magic (про то что можно несколько проще геттеры и сетеры в php написать), хотя возможно рано тебе не понимая основ


и заодно заметим что render() написан курсивом ;)
 

craz

Нестандартное звание
Кстати если вдруг пользуетесь какими либо IDE то там есть/должно быть автосоздание таких сетеров и гетеров, то есть вводим переменные protected $_name; жмем волшебный шорткей/хоткей, и фигасе у нас сетеры и гетеры создались на нее, с каркасом.
 

AmdY

Пью пиво
Команда форума
У тебя абстрактный класс совсем пустой, реализуй методы get-setName и т.д. Они тебе как минимум нужны в конструкторе, чтобы не делать прямое присваивание
$this->name, $this->value, это делается через сеттер.

Дальше по поводу рендера. ты упускаешь важный метод getAttributes, он должен возвращать массив со именами и значениями аттрибутов. Тебе нужно сделать метод типа getAttributesAsString который вернёт их как строку 'class="className" size="28" attribute3="value3"' эту строку и нужно использовать в методе render. И не забывай, что в значениях могут быть строки с кавычками, которые сломают твой вывод, нужно использовать специальную php функцию чтобы всё работало красиво.
 

WMix

герр M:)ller
Партнер клуба
конструктор пользуется сетами, так самое правильное
 
Сверху