1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 41
Текст из файла (страница 41)
В своей простейшей форме Formaпозволяет вставлять строки, числа, логические значения в середину форматируастроки. Рассмотрим, например, следующий вызов:string myString =S t r i n g . F o r m a t ( " { 0 } у м н о ж и т ь н а {l} р а в н о { 2 } " ,2,3,2*3);Первый аргумент F o r m a t () — форматная строка (строка формата). Элементыв ней указывают, что и-ый аргумент, следующий за форматной строкой, долженвставлен в этой точке. {0} означает первый аргумент (в данном случае — 2), {1второй (3) и так далее.В приведенном фрагменте получившаяся строка присваивается переменной myStrи имеет следующий вид:2умножитьна3равно6Пока не указано иное, функция F o r m a t () использует формат по умолчанию для кажтипа аргумента. Для указания формата вывода можно размещать в фигурных скобках кномера аргумента дополнительные модификаторы, которые показаны в табл. 9.1.218ЧастьIII.Объектно-основанноепрограммировиОкончание табл.
9.1Все эти модификаторы могут показаться слишком запутанными, но вы всегда можете получить информацию о них в справочной системе С#. Чтобыувидеть модификаторы в действии, взгляните на приведенную далее демонстрационную программу O u t p u t F o r m a t C o n t r o l s , позволяющую ввестине только число с плавающей точкой, но и модификатор формата, которыйбудет использован при выводе введенного числа обратно на экран.//OutputFormatControls - п о з в о л я е т п о л ь з о в а т е л ю п о с м о т р е т ь ,// как влияют м о д и ф и к а т о р ы ф о р м а т и р о в а н и я на в ы в о д ч и с е л .//Модификаторы в в о д я т с я в п р о г р а м м у т а к ж е , к а к и ч и с л а — в// процессе р а б о т ы п р о г р а м м ыnamespace O u t p u t F o r m a t C o n t r o l s{using S y s t e m ;public c l a s s P r o g r a m{public s t a t i c v o i d M a i n ( s t r i n g []args){// Бесконечный цикл для ввода чисел, пока пользователь// не введет вместо числа п у с т у ю строку, что является// с и г н а л о м к о к о н ч а н и ю р а б о т ы п р о г р а м м ыfor(;;){/ / В в о д ч и с л а и в ы х о д и з ц и к л а , е с л и в в е д е н а пустая]// строкаC o n s o l e .
W r i t e L i n e ( " В в е д и т е ч и с л о с п л а в а ю щ е й точкой")string sNumber = C o n s o l e . R e a d L i n e О ;if ( s N u m b e r . L e n g t h == 0){break;}double dNumber = Double.Parse(sNumber);// Ввод модификаторов форматирования, разделенных// пробеламиConsole.WriteLine("Введите модификаторы " +"форматирования, разделенные " + ,"пробелами");chart] separator = {' ' } ;string sFormatString = Console.ReadLine();string[] sFormats = sFormatString.Split(separator) ;// Цикл по введенным модификаторамf o r e a c h ( s t r i n g s in s F o r m a t s ){if(s.Length!=0){// Создание управляющего элемента форматирования!// из введенного модификатораs t r i n g s F o r m a t C o m m a n d = " {0 : " + s + " } " ;// В ы в о д числа с применением созданного// управляющего элемента форматированияConsole.Write("Модификатор { о } дает ", sFormatCommand);try{Console.WriteLine(sFormatCommand,dNumber);}catch(Exception){Console.WriteLine("<Неверныймодификатор>");}}}}220}}}Console.WriteLine();// Ожидаем подтверждения пользователяConsole.WriteLine("Нажмите <Enter> для " +"завершения п р о г р а м м ы .
. . " ) ;Console.Read();ЧастьIII.Объектно-основанноепрограммировалПрограмма O u t p u t F o r m a t C o n t r o l s считывает вводимые пользователем числасплавающей точкой в переменную d N u m b e r до тех пор, пока не будет введена пустаяпрока — это является признаком окончания ввода. Обратите внимание, что программане выполняет никаких тестов для проверки корректности введенного числа с плавающейточкой. Программа считает пользователя достаточно интеллектуальным и знающим, каквыглядят числа с плавающей точкой (довольно смелое допущение!).Затем программа считывает ряд модификаторов форматирования, разделенных пробелами. Каждый из них далее комбинируется со строкой { 0 } в переменной s F o r m a t Command.
Например,если вы ввели N4,программасоздаступравляющийэлемент{0: N4}. После чего введенное пользователем число выводится на экран с применениемэтого элемента:Console.WriteLine ( s F o r m a t C o m m a n d , d N u m b e r ) ;В рассмотренном только что случае модификатора N4 команда по сути превращается вtasole. W r i t e L i n e (" {О :N4 }" , d N u m b e r ) ;жа ъытлядит типичный вывод программы на экран (полужирным шрифтом вы; делен ввод пользователя):.Введите число с п л а в а ю щ е й т о ч к о й1234 5 . 6 7 8 9Введите м о д и ф и к а т о р ы ф о р м а т и р о в а н и я , р а з д е л е н н ы е п р о б е л а м иСЕ F1 N0 0000000 .00000Кодификатор {0:С} д а е т $ 1 2 , 3 4 5 .
6 8Кодификатор {0:Е} д а е т 1 . 2 3 4 5 6 8 Е + 0 0 4Кодификатор { 0 : F 1 } д а е т 1 2 3 4 5 . 7Кодификатор {0:N0} д а е т 1 2 , 3 4 6одификатор { 0 : 0 0 0 0 0 0 0 . 0 0 0 0 0 } д а е т 0 0 1 2 3 4 5 . 6 7 8 9 0Введите число с п л а в а ю щ е й т о ч к о й.12345Заедите модификаторы ф о р м а т и р о в а н и я , р а з д е л е н н ы е п р о б е л а м иео.о%Кодификатор { 0 : 0 0 . 0 % } д а е т 1 2 . 3 %Идите число с п л а в а ю щ е й т о ч к о йЗаште <Enter> д л язавершенияпрограммы...Будучи примененным к числу 12345.6789, модификатор N0 добавляет в нужное местопятую (часть N) и убирает все цифры после десятичной точки (часть 0), что дает строки, 346 (последняя цифра — результат округления, а не отбрасывания).Аналогично, будучи примененным к числу 0.12345, модификатор0 0 .
0 % даст12.31 Знак % приводит к умножению числа на 100 и добавлению символа % к выводииу числу. 00.0 указывает, что в выводимой строке должно быть по меньшей мере двефы слева от десятичной точки, и только одна — справа. Если тот же модификаторприменить к числу 0.01, будет выведена строка 0 1 . 0 % .Непонятная конструкция t r y . . . c a t c h предназначена для перехвата всех потенциальных ошибок при вводе некорректных чисел. Однако об этом рассказывается совсем в другой главе.[ и з 9. Работа со строками в С#221Часть IVОбъектно-ориентированноепрограммированиеОбъектно-ориентированное программирование — термин, вызывающийу программистов наибольший выброс адреналина в кровь.
Так, объектно-ориентированным языком программирования является С + + —и в этом его главное отличие от старого доброго С. К объектноориентированным языкам определенно относится и Java, как и ещедобрая сотня языков, придуманных за последний десяток лет. Но чтоже это такое — объектно-ориентированный! Зачем это надо? и надоли вообще? стоит ли использовать это в своих программах?В этой части вы столкнетесь с возможностями С#, которые делаютего объектно-ориентированным языком программирования. Объектно-ориентированноепрограммирование — этонепросто работас объектами; это — мощь и гибкость программ при меньших затрачиваемых усилиях, это элегантность проекта, словом — это все, изложенное в данной части книги.Глава 10Что такое объектно-ориентированноепрограммирование> Основы объектно-ориентированного программирования> Абстракция и классификация> Важность объектно-ориентированного программированияэтой главе будут даны ответы на два основных вопроса — какие концепции лежат в основе объектно-ориентированного программирования и чем они отличаются от уже рассмотренных концепций функционального программирования.Когда мы с сыном смотрим футбол, я подчас испытываю непреодолимую тягу к вредным для здоровья, но таким вкусным кулинарным изыскам, в частности, к мексиканскимблюдам.
Достаточно бросить на тарелку чипсы, бобы, сыр, приправы и пять минут зажаривать эту массу в микроволновой печи.Для того чтобы воспользоваться печью, следует открыть ее дверцу, поместить внутрьполуфабрикат и нажать несколько кнопок на передней панели. Через пару минут блюдоготово (только не стойте перед печью, а то ваши глаза начнут светиться в темноте).Обратите внимание на то, чего не делалось при использовании микроволновой печи.Ничего не переключалось и не изменялось внутри печи. Чтобы установить для неерабочий режим, существует интерфейс — лицевая панель с кнопками и небольшой индикатор времени; это все, что нужно.Не перепрограммировался процессор внутри печи, даже если прошлый раз готовилось абсолютно другое блюдо.Не было необходимости смотреть внутрь печи.При приготовлении блюд не надо было беспокоиться о внутреннем устройстве печи — даже если вы работаете главным инженером по производству таких печей.Это не просто пространные рассуждения.
В повседневной жизни нас постояннопреследуют стрессы. Чтобы уменьшить их число, мы начинаем обращать внимание только на события определенного масштаба. В объектно-ориентированно)программировании уровень детализации, на котором вы работаете, называетеуровнем абстракции. И объяснить этот термин можно на примере абстрагиротния от подробностей внутреннего устройства микроволновой печи.К счастью, ученые-кибернетики открыли объектную ориентированность и ряд другихконцепций, снижающих уровень сложности, с которым должен работать программноИспользование абстракций делает программирование более простым и уменьшает количество возможных ошибок.