froggy
Новичок
Вопрос знатокам ООП
Доброе время суток всем!
Вообщем проверяю свои знания по ООП и умение его (ООП) применять. Есть вот такая задачка (чтобы можно было как то выделить текст задачи - выделю его тегами PHP)
Теперь собственно сам вопрос, касающийся использования в данной задачи интерфейсов. Насколько я понимаю - интерфейсы вообще используются в случае когда МНОГО классов реализуют один и тот же интерфейс.
Например при различных субд мы к ним и подключаемся по разному. Т.е. класс tOracle, tMySQL, tPostgres и т.д.
Создаём интерфейс iConnect и реализуем его в каждом классе. Затем пишем (Object как iConnect)->connect. В итоге можем добавить еще несколько СУБД.
В этой задаче говориться об ОДНОМ классе. И вот тут у меня риторический вопрос: нафига козе баян?
Т.е. заччем для одно класса писать интерфейс? Подумав я пришел к выводу, что возможно автор имеет в виду что для каждого из "дополнительных блоков" нужно создать класс (tProjects, tScheta, etc) и каждый класс должен по своему реализовать интерфейс iTemplate. Собственно вопрос - правильна ли данная мысль, ну и вообще хотелось бы услышать коментарии профессионалов.
Доброе время суток всем!
Вообщем проверяю свои знания по ООП и умение его (ООП) применять. Есть вот такая задачка (чтобы можно было как то выделить текст задачи - выделю его тегами PHP)
PHP:
Концепция - есть некая страница веб-приложения, которое состоит из блоков, каждый блок - по своей сути представляет
собой некую порцию информации
связанной с тем контентом который находится на текущей странице веб приложения
Пример:
Страница "Просмотр данных о клиенте" (имя, фамилия, email, телефон, icq). В качестве дополнительных
блоков могут выступать:
* текущие проекты
* текущие счета на оплату
* выполненные задачи
* блок комментариев
* файлы ассоциированные с клиентом (например договор, соглашение и т.п.)
Каждый блок имеет свою презентацию (формат выводимых данных),
но каждый блок зависит от основного контента - т.е. если просматриваем пользователя А,
то и текущие проекты должны отображать текущие проекты пользователя А
* написать на PHP5 интерфейс iTemplate, который должен заниматься рендеренгом (отображением) такой страницы и блоков
* написать класс на PHP5, реализующий данный интерфейс
* нюанс - любой блок, как и вся страница целиком может быть кэширована (это должно задаваться на уровне интерфейса)
* написать тестовое приложение которое рендерит такие блоки (можно использовать примеры, которые прилагаются в zip файле, а можно
сделать свои - штуки 4,5 - в которых может быть абсолютно любая информация)
Например при различных субд мы к ним и подключаемся по разному. Т.е. класс tOracle, tMySQL, tPostgres и т.д.
Создаём интерфейс iConnect и реализуем его в каждом классе. Затем пишем (Object как iConnect)->connect. В итоге можем добавить еще несколько СУБД.
В этой задаче говориться об ОДНОМ классе. И вот тут у меня риторический вопрос: нафига козе баян?

Т.е. заччем для одно класса писать интерфейс? Подумав я пришел к выводу, что возможно автор имеет в виду что для каждого из "дополнительных блоков" нужно создать класс (tProjects, tScheta, etc) и каждый класс должен по своему реализовать интерфейс iTemplate. Собственно вопрос - правильна ли данная мысль, ну и вообще хотелось бы услышать коментарии профессионалов.