Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 889

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
634.64 Кб
Скачать

Область видимости методов и свойств объекта

Область видимости свойства или метода может быть определена путем использования следующих ключевых слов в объявлении: public, protected или private. Доступ к свойствам и методам класса, объявленным как public (общедоступный), разрешен отовсюду. Модификатор protected (защищенный) разрешает доступ наследуемым и родительским классам. Модификатор private (закрытый) ограничивает область видимости так, что только класс, где объявлен сам элемент, имеет к нему доступ.

Методы класса должны быть определены через модификаторы public, private, или protected. Методы, где определение модификатора отсутствует, определяются как public.

Объекты одного типа имеют доступ к элементам с модификаторами private и protected друг друга, даже если не являются одним и тем же экземпляром. Это объясняется тем, что реализация видимости элементов известна внутри этих объектов.

Константы классов

Константы также могут быть объявлены и в пределах одного класса. Отличие переменных и констант состоит в том, что при объявлении последних или при обращении к ним не используется символ $.

Значение должно быть неизменяемым выражением, не (к примеру) переменной, свойством, результатом математической операции или вызовом функции.

Пример класса с объявленной константой:

<?php

class MyClass

{

const CONSTANT = 'значение константы';

function showConstant()

{

49

echo self::CONSTANT . "\n";

}

}

echo MyClass::CONSTANT . "\n";

?>

В данном случае обращение к константе происходит через ключевое слово self (ссылка на класс в целом) и через оператор разрешения области видимости (::).

Статические свойства и методы

Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Атрибут класса, объявленный статическим, не может быть доступен посредством экземпляра класса (но статический метод может быть вызван).

Так как статические методы вызываются без создания экземпляра класса, то псевдо-переменная $this не доступна внутри метода, объявленного статическим.

Доступ к статическим свойствам класса не может быть получен через оператор ->.

Пример класса со статическим свойством:

<?php

class Test

{

static $static_property = "Это статическое свойство";

function get_sp()

{

return self::$static_property;

}

50

}

$temp = new Test();

echo "Test A: ".Test::$static_property."<br>"; echo "Test B: ".$temp->get_sp()."<br>";

echo "Test C:".$temp->static_property."<br>";

?>

На экран будет выведено следующее:

Test A: Это статическое свойство

Test B: Это статическое свойство

Test C:

Как видно из примера, свойство $static_property можно ссылаться напрямую из самого класса, используя в Test A оператор двойного двоеточия. Test B также может получить его значение путем вызова метода get_sp объекта $temp, созданного из класса Test. Но Test C терпит неудачу, потому что статическое свойство $static_property недоступно объекту $temp.

Наследование

Как только класс будет создан, из него можно будет получить подкласс, наследующий все публичные и защищенные методы из родительского класса. До тех пор пока не будут эти методы переопределены, они будут сохранять свою исходную функциональность.

Наследование осуществляется путем использования инструкции extends.

<?php class User

{

public $name, $password;

function __construct($par1, $par2) 51

{

$this->name = $par1; $this->password = $par2;

}

function greetings()

{

echo "Hello, $this->name!<br>";

}

}

class Subscriber extends User

{

public $phone, $email;

function __construct($par1, $par2, $par3, $par4)

{

parent::__construct($par1, $par2); $this->phone = $par3;

$this->email = $par4;

}

function display()

{

echo "Name:".$this->name."<br>"; echo "Pass:".$this->password."<br>"; echo "Phone:".$this->phone."<br>"; echo "Email: ".$this->email."<br>";

}

}

$object = new Subscriber("Mike", "THX1138", "6785430129", "somemail@mail.com");

$object->display(); $object->greetings();

?>

52

У исходного класса User имеются два свойства - $name и $password, а также метод greetings() для вывода на экран приветствия пользователю. Подкласс Subscriber расширяет этот класс за счет добавления еще двух свойств - $phone и $email и включения метода, отображающего свойства текущего объекта. Вышеприведенный код выведет на экран следующую информацию:

Name: Mike

Pass: THX1138

Phone: 6785430129

Email: somemail@mail.com

Hello, Mike!

3.3. Задания на лабораторную работу № 12

Задание № 1. Написать программу, реализующую решение определенной задачи с использованием функций.

1.Найти сумму целых элементов в вещественных массивах A[7] и B[10].

2.Определить в целочисленных массивах K[10] и L[8] количество отрицательных элементов.

3.Найти в целочисленных массивах C[10] и D[12] сумму элементов, кратных пяти.

4. Определить в вещественных массивах A[7] и B[12] наибольший по модулю элемент.

5. Найти в целочисленных массивах P[12] и Q[10] среднее арифметическое четных элементов.

6. Найти в вещественных массивах P[15], X[10] число соседств двух элементов с разными знаками.

7. Найти в целочисленных массивах Q[15], P[12] число соседств двух элементов с положительными знаками.

8. В целочисленных массивах P[10], Q[8] найти сумму элементов, которые нечетны и отрицательны.

53

9.В целочисленных массивах H[10] и K[8] найти произведение всех положительных элементов.

10.В вещественных массивах K[9] и G[8] найти сумму всех элементов входящих в интервал [-5;5].

11.В целочисленных массивах R[11] и F[10] найти коли-

чество нулевых элементов.

12.В целочисленном массиве T[12] и D[9] найти сумму положительных элементов.

13.В целочисленных массивах P[11] и R[10] найти количество элементов, кратных трем.

14.В целочисленных массивах F[9] и G[12] найти произведение нечетных элементов.

15.В целочисленных массивах D[12] и Q[10] найти количество положительных четных элементов.

16.В целочисленных массивах S[9] и T[8] найти сумму

элементов, больших пяти.

17.В целочисленных массивах N[10] и M[7] найти количество элементов, попадающих в интервал [-5,5].

18.В целочисленных массивах K[10] и B[8] найти произведение элементов кратных 7.

Задание № 2. Написать программу, реализующую решение определенной задачи с использованием функций, возвращающих сразу два или более значений.

1.В массивах А(10) и B(7) найти максимальный и минимальный элементы.

2.В массивах C(9) и D(8) найти количества положительных и отрицательных элементов.

3.В массивах E(6) и F(11) найти наибольший и наименьший по модулю элементы.

4.В массивах G(8) и H(9) найти количество нулей и еди-

ниц.

5.В массивах K(7) и M(10) найти максимальный и мини-

мальный отрицательные элементы.

54

6.В массивах N(11) и P(6) найти максимальный и минимальный положительные элементы.

7.В массивах R(12) и S(5) найти количества символов 'a',

'b' и 'c'.

8.В массивах T(7) и V(10) найти количества запятых и

точек.

9.В массивах W(10) и X(7) найти количества четных и нечетных элементов.

10.В массивах Y(5) и Z(12) найти количества элементов, кратных 3, 5 и 7.

11.В массивах K[5] и B[9] найти количества элементов, равных 5 и 10.

12.В массивах T[7] и K[10] найти количества элементов, равных 7 и 12.

13.В массивах F[8] и H[11] найти количества четных и

положительных элементов.

14.В массивах G[11] и N[9] найти количества отрицательных и нечетных элементов.

15.В массивах Y[10] и R[8] найти количества элементов, кратных 5 и 10.

16.В массивах M[9] и B[7] найти количества символов '!'

и'?'.

17.В массивах T[10] и D[9] найти количества символов '-'

и'+'.

18.В массивах W[12] и K[9] найти количества символов

'*' и '#'.

Задание № 3. Написать программу, создающую класс средствами PHP. В классе должно быть реализовано несколько свойств и метод для вывода их на экран в удобочитаемом виде. Создать также класс-наследник, обладающий несколькими дополнительными свойствами. В программе должно создаваться по два экземпляра каждого класса, которые должны быть выведены на экран. Варианты задания приведены в табл. 7.

55

 

 

Таблица 7

 

Таблица вариантов задания № 3

 

 

 

Класс

Класс-наследник

 

 

 

1

Музыкальная группа.

Альбом.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– страна;

– название;

 

– жанр.

– год выпуска;

 

 

– продолжительность.

2

Студенческая группа.

Студент.

 

Свойства:

Дополнительные свой-

 

– шифр группы;

ства:

 

– курс;

– ФИО;

 

– факультет.

– № зачетки;

 

 

– средний балл.

3

Журнал.

Статья.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– номер;

– название;

 

– год издания.

– ФИО авторов;

 

 

– страницы.

 

 

 

4

Музыкальный альбом.

Композиция.

 

Свойства:

Дополнительные свой-

 

– группа или исполнитель;

ства:

 

– название;

– номер в альбоме;

 

– год выпуска.

– название;

 

 

– продолжительность.

 

 

 

5

Отдел организации.

Сотрудник.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– ФИО начальника;

– ФИО сотрудника;

 

– № комнаты.

– должность;

 

 

– служебный телефон.

 

 

 

 

56

 

 

 

Продолжение табл. 7

6

Специальность.

Предмет.

 

Свойства:

Дополнительные свой-

 

– шифр специальности;

ства:

 

– название специальности;

– шифр предмета;

 

– специалитет/бакалавриат.

– название предмета;

 

 

– кол-во часов.

7

Модуль.

Функция.

 

– название модуля;

Дополнительные свой-

 

– назначение модуля;

ства:

 

– объем (Кб).

– название;

 

 

– назначение;

 

 

– тип возвращаемого зна-

 

 

чения.

8

Пакет программ.

Программа.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– разработчик;

– название;

 

– цена.

– назначение;

 

 

– занимаемый объем.

 

 

 

9

Мебельный гарнитур.

Предмет мебели.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– кол-во предметов;

– название;

 

– цена.

– размеры;

 

 

– цена.

 

 

 

10

Жилой дом.

Квартира.

 

Свойства:

Дополнительные свой-

 

– улица;

ства:

 

– номер;

– номер;

 

– кол-во этажей.

– кол-во комнат;

 

 

– ФИО владельца.

57

 

 

Продолжение табл. 7

11

Кинотеатр

Фильм.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– адрес;

– название фильма;

 

– вместимость.

– цена билета;

 

 

– время сеанса.

12

Книга.

Глава.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– жанр;

– номер главы;

 

– автор.

– название главы;

 

 

– номер страницы.

13

Факультет.

Кафедра.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– телефон деканата;

– название;

 

– ФИО декана.

– адрес;

 

 

– ФИО заведующего.

14

Художник.

Картина.

 

Свойства:

Дополнительные свой-

 

– ФИО;

ства:

 

– годы жизни;

– название;

 

– страна.

– жанр;

 

 

– год написания.

15

Каталог.

Файл.

 

Свойства:

Дополнительные свой-

 

– название;

ства:

 

– дата создания;

– название;

 

– атрибуты.

– размер;

 

 

– дата создания.

58