Основы ООП. Инкапсуляция
Практические задания
Краткое содержание лекции |
Теоретические задания
Ниже приведены несколько задач. Вам следует применить инкапсуляцию и выполнить некоторые задания.
Задача 1.
(index.php) download
1
2
3
4
5
6
7
<? php
//code
$square = new Square ();
$square -> a = 10 ;
$square -> b = 20 ;
printf ( 'Square: %s' . \PHP_EOL , $this -> calculateSquare ());
printf ( 'Is quadrate: %s' . \PHP_EOL , ( $this -> isQuadrate ()) ? 'yes' : 'no' );
(Square.php) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<? php
class Square
{
/**
* @var float
*/
public $a = 0 ;
/**
* @var float
*/
public $b = 0 ;
public function calculateSquare ()
{
return $this -> a * $this -> b ;
}
public function isQuadrate ()
{
return $this -> a == $this -> b ;
}
}
Примените инкапсуляцию. Исправьте на ваше усмотрение код и сохраните решение.
Удалите из класса Square 1 из двух методов и его использование в index.php
. Измените при необходимости ваше первое решение и сохраните второй вариант решения.
Задача 2.
К сожалению не пришла в голову аналогия из жизни к данной задаче, поэтому название классов и переменных - вымышленные.
Просмотрите код внимательнее , тут есть над чем подумать.
(index.php) download
1
2
3
4
5
6
7
<? php
//code
$parent = new ParentClass ();
$child = new Child ();
$child -> printData ();
$child -> d = 'string' ;
$child -> printData ();
(Child.php) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? php
class Child extends ParentClass
{
public $d = array ();
public function _printVars ()
{
printf (
'$a = %s; $b = %s; $c = %s; $d = %d;' ,
$this -> a , $this -> b ? 'true' : 'false' , $this -> c , print_r ( $this -> d , true )
);
}
public function printData ()
{
echo get_class () . \PHP_EOL ;
$this -> _printVars ();
echo \PHP_EOL ;
}
}
(Parent.php) download
1
2
3
4
5
6
7
<? php
class ParentClass
{
public $a = 0 ;
public $b = true ;
public $c = 'string' ;
}
Примените инкапсуляцию. Исправьте на ваше усмотрение код и сохраните решение.