1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 2
Текст из файла (страница 2)
Объектно-ориентированное программирование223Глава 10. Что такое объектно-ориентированное программирование225Объектно-ориентированная концепция №1 — а б с т р а к ц и яПриготовление блюд с помощью функцийПриготовление "объектно-ориентированных" блюдОбъектно-ориентированная концепция №2 — классификацияЗачем нужна классификацияОбъектно-ориентированная концепция №3 — удобный интерфейсОбъектно-ориентированная концепция №4 — управление доступомПоддержка объектно-ориентированных концепций в С#225226226227227228229229Глава 11.
Классы231Ограничение доступа к членам классаПример программы с использованием открытых членовПрочие уровни безопасностиЗачем нужно управление доступомМетоды доступаПример управления доступомВыводыОпределение свойств классаКонструирование объектов посредством конструкторовКонструкторы, предоставляемые С#23123223523523623724224224424410СодержаниеКонструктор по умолчаниюСоздание объектовВыполнение конструктора в отладчикеНепосредственная инициализация объекта — конструктор по умолчаниюКонструирование с инициализаторамиПерегрузка конструкторов(Устранение дублирования конструкторовФокусы с объектами246247249252252253256260Глава 12.
Наследование261Наследование классаЗачем нужно наследованиеБолее сложный пример наследованияЯВЛЯЕТСЯ или СОДЕРЖИТОтношение ЯВЛЯЕТСЯДоступ к BankAccount через содержаниеОтношение СОДЕРЖИТКогда использовать отношение ЯВЛЯЕТСЯ, а когда — СОДЕРЖИТПоддержка наследования в С#Изменение класса.Неверное преобразование времени выполненияКлючевые слова is и asНаследование и конструкторВызов конструктора по умолчанию базового классаПередача аргументов конструктору базового классаОбновленный класс BankAccountДеструктор261263264267267268269270270270271272274274276278281Глава 13.
Полиморфизм283Перегрузка унаследованного методаПростейший случай перегрузки функцииРазличные классы, различные методыСокрытие метода базового классаВызов методов базового классаПолиморфизмЧто неверно в стратегии использования объявленного типаИспользование is для полиморфного доступа к скрытому методуОбъявление метода виртуальнымАбстракционизм в С#Разложение классовГолая концепция, выражаемая абстрактным классомКак использовать абстрактные классыСоздание абстрактных объектов невозможноСоздание иерархии классовОпечатывание класса283284284285289291292293294297297302302304304308Содержание11309Часть V. За базовыми классамиГлава 14.
Интерфейсы и структуры311Что значит МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАКЧто такое интерфейсКраткий примерПример программы, использующей отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАКСоздание собственного интерфейсаПредопределенные интерфейсыСборка воединоНаследование интерфейсаАбстрактный интерфейсСтруктуры С# и их отличия от классовСтруктуры С#Конструктор структурыМетоды структурПример применения структурыУнификация системы типовПредопределенные типы структурУнификация системы типов с помощью структурУпаковка типов-значений311312313315315316317323323326327329329330333333334337Глава 15.
Обобщенное программирование339Необобщенные коллекцииНеобобщенные коллекцииИспользование необобщенных коллекцийОбобщенные классыОбобщенные классы безопасныОбобщенные классы эффективныИспользование обобщенных коллекцийПонятие <Т>Использование List<T>Создание собственного обобщенного классаОчередь с приоритетамиРаспаковка пакетаФункция Main()Написание обобщенного кодаОбобщенная очередь с приоритетамиНезавершенные делаОбобщенные методыОбобщенные методы в необобщенных классахОбобщенные методы в обобщенных классахОграничения для обобщенного методаОбобщенные интерфейсыОбобщенные и необобщенные интерфейсыИспользование (необобщенной) фабрики классовПостроение обобщенной фабрики34034034134334334434434534534734835235335535635836036236336336436436536612СодержаниеОбъявление пространств именВажность пространств именДоступ к классам с использованием полностью квалифицированных именДиректива usingИспользование полностью квалифицированных именОбъединение классов в библиотекиСоздание проекта библиотеки классовСоздание классов для библиотекиСоздание проекта драйвера•Хранение данных в файлахИспользование StreamWriterПовышение скорости чтения с использованием StreamReader422424425426427430430431432434435440Г л а в а 20.
Работа с к о л л е к ц и я м и445Обход каталога файловНаписание собственного класса коллекции: связанный списокПример связанного спискаЗачем нужен связанный списокОбход коллекций: итераторыДоступ к коллекции: общая задачаИспользование foreachОбращение к коллекциям как к массивам: индексаторыФормат индексатораПример программы с использованием индексатораБлок итератораИтерация месяцевЧто такое коллекцияСинтаксис итератораБлоки итераторов произвольного вида и размераГде надо размещать итераторы445451452461461462464465465465469473474475476479Г л а в а 21. И с п о л ь з о в а н и е интерфейса Visual Studio487Настройка расположения оконСостояния оконСкрытие окнаПерестановка оконНаложение оконМодные штучкиРабота с Solution ExplorerУпрощение жизни с помощью проектов и решенийОтображение проектаДобавление классаЗавершение демонстрационной программыПреобразование классов в программуКак должен выглядеть кодПомогите мне!F148748849049049149349349449549749850150250650614СодержаниеПредметный указательПоискДополнительные возможностиАвтоперечисление членовОтладкаЖучки в программе: а дустом не пробовали?Пошаговая отладкаГлавное — вовремя остановитьсяСтек вызововЯ сделал это!507509510511512512514517520523Глава 22.
С# по дешевке525Работа без сети — но не без платформы .NETПолучение бесплатных компонентовОбзор цикла разработкиПрограммирование на С# в программе SharpDevelopИзучение SharpDevelopСравнение возможностей SharpDevelop и Visual StudioПолучение справочной информацииНастройка программы SharpDevelopДобавление инструмента для запуска отладчикаЗапуск отладчика из SharpDevelopОтсутствующие возможности отладчикаПрограммирование на С# в TextPadСоздание класса документов .
CS для языка С#Добавление собственных инструментов: Build С# DebugНастройка инструмента для компиляции финальной версииОбъяснение опций настройки инструментов Debug и ReleaseРабота над ошибками компиляцииНастройка остальных инструментовТестирование с помощью программы NUnitЗапуск программы NUnitТестированиеНаписание тестов NUnitИсправление ошибок в проверяемой программеНаписание исходного текста Windows Forms без Form DesignerЭто всего лишь кодРабота в стиле визуального инструментаЧастичные классыСамостоятельное написаниеУбедитесь, что пользователи смогут запустить вашу программуVisual Studio для бедных526526527528528529530531531532534534537538540541545545548548549550557559559560561562563564Предметный указатель565Содержание15Часть VI.
Великолепные д е с я т к и373Глава 16. Десять наиболее распространенных ошибок компиляции375The name 'memberName' does not exist in the class or namespace 'className'Cannot implicitly convert type 'x' into 'y''className.memberName' is inaccessible due to its protection levelUse of unassigned local variable 'n'Unable to copy the file 'programName.exe' to 'programName.exe'. The process cannot...'subclassName.methodName' hides inherited member 'baseclassName.methodName'.Use the new keyword if hiding was intended'subclassName' : cannot inherit from sealed class 'baseclassName''className' does not implement interface member 'methodName''methodName' : not all code paths return a value} expected375377379380380Глава 17.
Десять основных отличий С# и С++385Отсутствие глобальных данных и функцийВсе объекты размещаются вне кучиПеременные-указатели запрещеныОбобщенные классы С# и шаблоны С++Никаких включаемых файлов386386387387388Не конструирование, а инициализацияКорректное определение типов переменныхНет множественного наследованияПроектирование хороших интерфейсовУнифицированная система типов388389389389389Часть VII. Д о п о л н и т е л ь н ы е главы391Глава 18. Эти исключительные исключения393381382383383384Старый способ обработки ошибокВозврат индикатора ошибкиЧем плохи коды ошибокИспользование механизма исключений для сообщения об ошибкахПримерСоздание собственного класса исключенияИспользование нескольких catch-блоковКак исключения протекают сквозь пальцыРегенерация исключенияКак реагировать на исключенияПерекрытие класса Exception393395398400402405406408411412413Глава 19.
Работа с файлами и библиотеками419Разделение одной программы на несколько исходных файловРазделение единой программы на сборкиОбъединение исходных файлов в пространства имен419421422Содержание13Стефан Р. Дэвис (Stephen R. Davis) (более известный по второму имени — Ренди)живет со своей женой и сыном недалеко от Далласа, штат Техас. Он и его семейство написали множество книг, включая С + + для чайников ( С + + For Dummies) и С + + WeekendCrash Course. Стефан работает в фирме L-3 Communications.Чак С ф е р (Chuck Sphar) ушел из подразделения Microsoft, работающего над документацией по языку С++, в 1997 году после шести лет тяжелой работы главным техническим писателем. Две его последние публикации были посвящены объектноориентированному программированию для Мае и библиотеке классов M F C . В настоящее время он заканчивает роман о древнем Риме ( a g a i n s t r o m e .
c o m ) и работаетс программированием в среде .NET. Пожелания и мелкие замечания можно отсылатьЧаку по адресу c s h a r p @ c h u c k s p h a r . com.Пэм ( Р а т ) и маме — Чак Сфер.Я хотел бы поблагодарить Клодет Мур (Claudette Moore) и Дебби Маккенна (DebbieMcKenna), которые заставили меня написать эту книгу. Я также хочу поблагодаритьРенди Дэвиса (Randy Davis) за его готовность передать своего "младенца" парню, которого он не знал.
Я считаю, что это очень тяжело, и надеюсь, что был достаточно корректен, дополняя и расширяя первое издание его превосходной книги.Должен также выразить благодарность прекрасным людям в издательстве Wiley, и в частности редактору Кейти Фелтман (Katie Feltman) и редактору проекта Киму Даросетту(Kim Darosett). Ким сумел поддержать меня в новой ипостаси — автора для чайников.Я также хотел бы поблагодарить Криса Боуера (Chris Bower) за его техническую консультацию и превосходное знание языка С#, Джона Эдвардса (John Edwards), которому книгаобязана целостностью и согласованностью, а также художникам, специалистам по рекламеи другим людям, создавшим из моих файлов реальную книгу.Выражаю сердечную благодарность Пэм за ее постоянную поддержку и помощь(much enabling).
Она мне помогает во всем.Чак Сфер.Издательский дом "Вильяме" благодарит Ерофеева Сергея и Кущенко Сергея за большой вклад в подготовку издания книги.Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим вашемнение и хотим знать, что было сделано нами правильно, что можно было сделать лучшеи что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать в наш адрес.Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо, либо просто посетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас способом дайте нам знать, нравится или нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книгиболее интересными для вас.Посылая письмо или сообщение, не забудьте указать название книги и ее авторов,а также ваш обратный адрес.