Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, SV., Вы писали: SV.>Здравствуйте, Геннадий Васильев, Вы писали: ГВ>>Угу-угу, это как раз и есть источник сложностей ОО-проектирования. Вот и спроектируй программу так, чтобы замена класса MatrixPrinter на ColorPrinter проходила незаметно для использующего кода. SV.>В чем проблема? Если забыть о том, что различие между матричным и цветным лазерном принтере лежит на уровне драйвера, а не приложения, вот код, который печатает одну и ту же картинку на всех принтерах, подключенных к компьютеру: SV.>[ccode] SV.>abstract class Printer SV.>{ SV.> abstract void Print(Image image); SV.> abstract void Print(PostScript file); SV.>} SV.>class ColorLaserPrinter : Printer SV.>{ SV.> override void Print(Image image) SV.> { SV.> //... SV.> } SV.> override void Print(PostScript file); SV.> { SV.> //... SV.> } SV.>} SV.>class MatrixPrinter : Printer SV.>{ SV.> override void Print(Image image) SV.> { SV.> //... SV.> } SV.> override void Print(PostScript file); SV.> { SV.> //... SV.> } SV.>} SV.>class Environment SV.>{ SV.>... SV.> Printer[] EnumAvailablePrinters() { ... } SV.>... SV.>} SV.>class MyApp SV.>{ SV.> void main() SV.> { SV.> var image = new Image("/images/image.png"); SV.> foreach (var printer in printers) SV.> printer.Print(image); SV.> } SV.>} SV.>[/ccode]
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …