All streams
Search
Write a publication
Pull to refresh
9
0
Алексей @boolivar

User

Send message
Да да, military это типа нашей военной 5 приемки, а для космоса — 9 приемка (атомная), с повышенной радиационной стойкостью.
Может мне теперь вообще не работать потому что у меня комп слабый и не тянет такой серьезный инструмент как IDEA?
Пойду продолжу свою несерьезную работу в eclipse.
Вы точно не видели eclipse, он сам подбирает имена для переменных и сам ставит круглые скобки. Я просто видео лучше не нашел. А по поводу IDEA — после этой статьи я просто не мог не поставить себе community edition. Пробую в нем работать, пока нечего сказать, кроме того что на моем стареньком компе он однозначно тормознее eclipse.
Но в переопределенном методе потомка можно вызвать родительский метод, тем самым сохранить контракт.
Мне видится что нарушение контракта будет тогда, когда, например, базовый класс на каждый вызов метода Add вызывает метод слушателя OnAdd, это то чего мы ожидаем, т.е. его побочный эффект. Если в потомке не будет вызываться метод OnAdd слушателя — контракт нарушен.
Прощаю, но это цитата из книги, там именно так и было написано, поставлю минус переводчику.
Кстати, о «подстановочном критерии Лискова» упоминал Джеф Элджер, в книге C++. Там, где говорил о нормальном наследовании и гомоморфных иерархиях. Так вот, относительно контракта Элджер упомянул, что если функция базового класса является чисто виртуальной, то все ее вторичные эффекты (которых на самом деле нет) сохраняются по определению. А так как речь идет об интерфейсах, раз они не задают поведения, то и никакого контракта по сути нет. В этом действительно есть здравый смысл.
Я в IDEA не работал, но Eclipse тоже неплохо понимает контекст, сам типы в шаблонах подставляет а как его конструкция toarray работает — вообще чудеса какие-то!
К сожалению только это видео нашел, но и тут видно что Eclipse половину работы за программиста делает:
archive.eclipse.org/technology/phoenix/europa/TestFirstWithEclipse/
Очень даже бывает, не всегда при проектировании используется декомпозиция, бывает еще и обобщение используют ;)
Я имел в виду что imp это указатель на базовый класс, через его интерфейс происходит работа с объектом.
Да, «Мост» использует интерфейсы/базовые классы, это видно из его UML-диаграммы. Знаете, интерфейсы можно использовать по-разному, конкретно «Мост» использует их для инкапсуляции части реализации, да, технически тут нет ничего хитрого, обычное использование интерфейсов.
А по вашей логике тогда и «Абстрактная фабрика»=«Использование интерфейсов».
Мне кажется в пункте 2 дополнительных пояснений вы указали как раз «Мост». Тонкой нитью через все паттерны проходит идея инкапсулировать изменяющиеся части программы. Данный паттерн предлагается использовать когда изменениям подвержена какая-то часть реализации класса.
Бывает, что иерархия того на что указывает imp поставляется с библиотекой, которую нет возможности модифицировать. К тому же введение нового метода в базовый класс/интерфейс ухудшит его инкапсуляцию.
Ну и лично я не тут вижу «зависти» по Фаулеру, обычный вызов методов через интерфейс базового класса, разве их как-то по другому нужно использовать?
Вы наверно еще не смотрели фильм "light bulb conspiracy"?
деобфусцировать, и только потом проводить анализ

Зачастую это приходится делать даже когда исходник на руках, спасибо «низкому порогу входа».
Дайте я попробую вспомнить как это было…
В таких случаях используется математика с числами с фиксированной запятой. Смотрите, наша задача разделить ticks на 32,768. ticks — целое число, зафиксируем его запятую у младшего бита[0000 0000,]. Масштаб этого числа M=0. Теперь нужно выбрать масштаб для числа 32,768, более-менее точно это число можно представить с 2 знаками после запятой: 2^5 + 2^-1 + 2^-2 = [1000 00,11] = 32,75, таким образом масштаб этого числа M=2 (пусть меня поправят, возможно это масштаб -2). В двоичном виде число получится 0x83 (десятичное 131).
Таким образом перевод ticks в мс сводится к делению ticks/0x83 и выравниванию масштаба результата. Результат получается с масштабом M=-2, для получения масштаба 0 — умножим на 4 (по сути сдвигаем результат на 2 разряда влево).

Пример: ticks = 32768, ticks/131=250, 250*4=1000

Само число 32,768 можно представить и с большей точностью — захватить побольше знаков после запятой, соответственно число будет в другом масштабе.
Я просто постоянно что-нибудь забываю, потому реально ношу с собой блокнот. Всё-таки «даже самая острая память хуже тупого карандаша».
Как же мне это знакомо. Обожаю подобные аллегории.
Видели, видели такое :)
(http://www.youtube.com/watch?v=vCSvNyHorgo&feature=relmfu)
Все верно, одиночке тут самое место, к тому же, если вдруг в будущем понадобится несколько экземпляров AppSettings, переделать одиночку будет гораздо проще чем статический класс.
Вот интересная на эту тему книга (http://zamyatkin-nikolay.narod.ru)
Это не учебник, там заблуждения и прочие интересные факты об изучении иностранных языков.
С красной лампочкой это вы неплохо отожгли :)

Information

Rating
Does not participate
Location
Калуга, Калужская обл., Россия
Date of birth
Registered
Activity