Вопросы по интерфейсам и ООП

Кнопка ВЫКЛ

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

В программных интерфейсах
есть загадочное сочетание Alt-F4 для «выключения» программы. Или мышиная кнопка с крестиком, расположенная в правом верхнем углу.

И сваливают на Ксерокс, что он всё уже придумал. Ну и где кнопка на клавиатуре «Выключить программу?» Самые умные говорят, что клавиатура устоялась, и не надо её трогать. Даже Тёма не придумал такую клавиатуру. А ведь надо, функция весьма востребована.

Правда опять, каждый программист может написать такую программу на любой оси, что никакая кнопка вам не поможет. А ведь что бы достичь этого счастья, необходимо и достаточно, что бы базовый класс всегда поддерживал эту возможность, даже если злоумышленный программист-хакЁр специально замутил бесконечный цикл.

Ну тут независимые эксперты высказывали мысль, что причём тут ООП? Хош – пиши такой класс сам, хош – не пиши.

Странно. Вот встраивают в язык всё, что ни попадя. Тут тебе и DirectX, OpenGL, SQL, CSV, TCP/IP, HTTP, XML-HTML, HAML (хватит ругаться) и прочий маркетинговый шум.

В чём же суть?

Вот было себе просто ОПП: перегрузка, виртуальные функции, наследование и полиморфизм. И вдруг оказывается REST и MVC и прочие паттерны и без них никуда. Причём, вот только 3 слоя MVC, а по другому — никак. Только «добавление», «удаление», «просмотр» и «редактирование» и достаточно. То есть, абстрактная иерархия классов на самом деле никому не нужна, её чрезмерные возможности только всё запутали, и заставляют тратить силы на изобретение велосипедов.

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

  • нарисовать растровый рисунок
  • уменьшить его
  • передвинуть его
  • повернуть его
  • сделать прозрачным цвет Х (рисунок станет непрямоугольным)
  • сделать прозрачным весь рисунок, что бы под ним было что-то видно

И ВСЁ!

Аналогично, для интерфейса с человеком достаточно следующего ограниченного набора событий для реализации всяческих «жестов»:

  • таймер дотикал (время вышло!)
  • экрана коснулись в момент Т в точке (X,Y)
  • нажали некую клавишу К на некой клавиатуре (не обязательно стандартный набор) в момент Т

ТОЖЕ ВСЁ!

Конечно, можно написать такой перечень для звука или просто аналогового входа, сети Ethernet, USB и других интерфейсов, но вкусное на третье.

О великий ИНТЕРНЕТ!

1.Приведи пример, когда перечисленных возможностей не хватит для реализации любой оси на любом железе!

2. Какая из платформ: Windows, Mac OS, Linux (X-ы, ), Qt, Bada, iOS, Android, MeeGo или других не поддерживает эти два перечня доступными для простого программиста без танцев с бубном (внутри то оно есть, только кто ж его дасть).

З.Ы. Компас, GPS, акселератор и цветомузыку не предлагать. Я тоже умею паять и программировать внешние устройства.

Заранее спасибо.

Запись опубликована в рубрике ISI. Добавьте в закладки постоянную ссылку.

2 комментария: Вопросы по интерфейсам и ООП

  1. rbobot говорит:

    На айпаде есть кнопка завершения любой программы. Айпад это будущее компьютеров, купи уже его себе.

    • isi говорит:

      И зачем? Мне может поговорить не с кем.

Комментарии запрещены.