Лекция: Кирпичики интерфейса

Что касается конкретных элементов интефейса пользователя, то качество взаимодействия пользователя с программой зависит от:

  • соответствия элемента управления выполняемой им задаче;
  • правил, по которым функционирует элемент управления.
    На этой страничке рассматриваются правила создания некоторых элементов интерфейса.

27. Обработка структурированной информации. Удалённые базы данных на базе сервера MySQL. Разработка интерфейсов на PHP, функции РНР для соединения с сервером и реализации запросов.

Интерфейс — это набор методов без реализации. То есть в интерфейс входят методы с именем и входными параметрами. Больше ничего нет. Любой класс, который реализует (обратите внимание, что не наследует, а реализует) данный интерфейс, обязан реализовать каждый метод. Чтобы стало ещё понятнее, хочется привести аналог из жизни. Каждый человек выполняет определённые функции. Например, учится, работает, убирает квартиру, готовит еду и занимается другими очевидными вещами. Можете считать, что интерфейс — это область занятий, например, учёба, работа, уборка квартиры, готовка еды. А методы интерфейса — это уже конкретная задача в данной области. Например, в уборке квартиры могут быть такие методы: мойка посуды, мойка пола, вынос мусора и другие. В готовке еды могут быть такие методы: готовка борща, готовка мяса, чистка картошки и прочее. Надеюсь, мысль Вы уловили.

То есть интерфейсы — это возможность определить род задач для объекта, которые он должен реализовывать.

Давайте разберём простой пример, создав следующий интерфейс (в файле "fileinterface.php"):

<?php
interface FileInterface {
public function readFromFile($path);
public function writeToFile($path, $some);
}
?>

То есть данный интерфейс просто описывает работу с файлом. Соответственно, те объекты, которые должны читать из файла и записывать различные данные, обязаны реализовать интерфейс "FileInterface".

Создадим ещё один интерфейс (в файле "client.php"):

<?php
interface Client {
public function buy ($id);
public function repayment($id);
}
?>

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

И, наконец, класс, который реализует эти интерфейсы, то есть класс у которого области задач две — быть клиентом и работать с файлом (файл "shop.php"):

<?php
require_once «fileinterface.php»;
require_once «client.php»;
class Shop implements FileInterface, Client{
public function readFromFile($path) {
echo «Считываем из файла и возвращаем строку<br />»;
}
public function writeToFile($path, $some) {
echo «Записываем в файл данные $some<br />»;
}
public function buy($id) {
echo «Спасибо за покупку<br />»;
$this->writeToFile(«data.db», «Был куплен товар $id»);
}
public function repayment($id) {
$this->readFromFile(«data.db»);
//Тут, допустим, проверка того, была ли на самом деле покупка товара $id
$this->writeToFile(«data.db», «Был сделан возврат товара $id»);
}
}
?>

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

И, наконец, простой пример, который использует класс Shop:

<?php
require_once «shop.php»;
$shop = new Shop();
$shop->buy(5);
$shop->repayment(5);
?>

Соединение с сервом
Библиотека php_mysql представляет классический файловый интерфейс к СУБД MySQL. На заре программирования, когда только устанавливались традиции современных програмных интерфейсов, было принято каждый объект рассматривать как файл:

· фрагмент памяти на жестком диске — файл;

· каталог — файл, хранящий список других файлов;

· внешнее устройство или сетевая карта — это тоже файл, только специального типа.

Такой подход позволял использовать для всех операций привычную каждому программисту схему взаимодействия:

· Открыть ресурс.

· Записать или прочитать из ресурса данные.

· Закрыть ресурс.

Одновременно может быть открыто несколько ресурсов (файлов). Чтобы отличать их друг от друга, используются специальные объекты — дескрипторы, при помощи которых можно получать доступ к тому или иному ресурсу. Благодаря дескрипторам можно одновременно работать сразу с несколькими открытыми источниками без конфликтов и опастности перепутать один русурс с другим.

При работе с MySQL из РНР используются два вида дескрипторов:

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

· дескриптор результирующей таблицы — предназначен для доступа к результату выполнения запроса. Взаимодействие РНР-приложения и сервера MySQL происходит по клиент-серверной технологии: приложение отправляет серверу SQL-запрос, на который тот возвращает результирующую таблицу, идентифицированную данным дескриптором.

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

еще рефераты
Еще работы по информатике