PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 3
djar
Отправлено: 05 Июня, 2011 - 00:44:13 • Тема: Классы для рисования квадрата и круга • Форум: Объектно-ориентированное программирование
Ответов: 6 Просмотров: 5342
Stierus , спасибо за замечание, почитал, что это такое)
Можете ответить на тот вопрос, что я задавал выше - почему нужно к перемнной $figure обращаться с помощью $this->figure?
И ещё, я исправил класс «Круг», теперь он выглядит так:
PHP:
скопировать код в буфер обмена
/*
** Дочерний класс «Круг»
*/
class Circle extends Figure
{
var $fcenter ; // Координата центра круга
function Draw( $fsize , $fcolor )
{
$fcenter = $fsize / 2 ; // Вычисляем центр круга
imagefill ( $this -> figure , 0
, 0
, $white ) ; // Заливаем фон рисунка белым imageellipse ( $this -> figure , $fcenter , $fcenter , $fsize , $fsize , $fcolor ) ; // Рисуем окружность imagefill ( $this -> figure , $fcenter , $fcenter , $fcolor ) ; // Заливаем окружность выбранным цветом }
}
Тут есть переменная $white, я забыл её объявить как свойство класса, но всё отлично работает и так. Всегда ли нужно объявлять свойства? Почему у меня работает код? И наверное уже правильнее использовать private, public и protected вместо var?
И ещё, вот текст задания лабораторной:
Цитата: Реализовать объект "фигура" и производные от него объекты "круг" и "квадрат". Реализовать для всех них виртуальный метод Show - рисование соответствующей фигуры.
У меня здесь метод Show получился виртуальным?
djar
Отправлено: 04 Июня, 2011 - 09:19:10 • Тема: Классы для рисования квадрата и круга • Форум: Объектно-ориентированное программирование
Ответов: 6 Просмотров: 5342
Только начал изучать ООП. Делаю лабораторную работу.
Нужно создать класс «Фигура», от него два дочерних - «Круг» и «Квадрат». Ну и вывести выбранную фигуру в браузер.
Не выводится изображение. Подскажите, где ошибка?
Без классов всё работает, изображение выводится, параметры из формы передаются.
PHP:
скопировать код в буфер обмена
<?PHP
if ( ! isset ( $_GET [ 'draw' ] ) ) {
/*
** Если ничего не надо рисовать - выводим форму
*/
echo '<h1>Наследование и полиморфизм</h1>' ;
echo '
<form method="post" action="?draw=1">
Сторона квадрата / диаметр круга = <input name="size" type="text" size="2" maxlength="2"> пикселей<br>
Тип фигуры: <select name="type"><option value="square">Квадрат</option>
<option value="circle">Круг</option></select><br>
Цвет фигуры: <select name="color"><option value="black">Чёрный</option>
<option value="blue">Синий</option><option value="red">Красный</option>
<option value="green">Зелёный</option><option value="gray">Серый</option></select><br>
<input type="submit" value="Нарисовать">
</form>
' ;
}
/*
** Если надо рисовать - пропускаем форму и выполняем следующее:
*/
/***************************************** ОПРЕДЕЛЯЕМ КЛАССЫ *****************************************/
/*
** Класс «Фигура»
*/
class Figure
{
var $fcolor ; // У переменных в классе «Фигура»
var $fsize ; // в начале имени добавлена буква «f»
var $figure ; // переменная, в которую создаётся изображение - она нужна?
function Show( $fsize , $fcolor )
{
/*
** Посылаем сообщение в браузер о том, что передаём изображение PNG
*/
header ( 'content-type: image/png' ) ;
$figure = imagecreate ( $fsize , $fsize ) ; // Создаём изображение
/*
** Определяем цвет
*/
switch ( $fcolor )
{
case black:
break ;
case blue:
break ;
case green:
break ;
case red:
break ;
case gray:
break ;
}
$this -> Draw ( $fsize , $fcolor ) ; // Вызываем функцию рисования фигуры
}
}
/*
** Дочерний класс «Квадрат»
*/
class Square extends Figure
{
function Draw( $fsize , $fcolor )
{
}
}
/*
** Дочерний класс «Круг»
*/
class Circle extends Figure
{
var $fcenter ; // координата центра круга
function Draw( $fsize , $fcolor )
{
$fcenter = $fsize / 2 ; // Вычисляем центр круга
imagearc ( $figure , $fcenter , $fcenter , $fsize , $fsize , 0
, 360
, $fcolor ) ; // Рисуем круг }
}
/*****************************************************************************************************/
/*
** Записываем переданные параметры в переменные
*/
$type = $_POST [ 'type' ] ;
$color = $_POST [ 'color' ] ;
$size = $_POST [ 'size' ] ;
if ( $type == 'square' ) { $obj = new Square( ) ; } // В зависимости от типа выбранной фигуры
elseif ( $type == 'circle' ) { $obj = new Circle( ) ; } // создаём тот или иной объект
$obj -> Show ( $size , $color ) ; // Рисуем фигуру
?>
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB