Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 29

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 29 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 292019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 29)

Вообще говоря, данные содержатся в членах данных, определяемых классом, а код— в функциях-членах. Следует сразу же подчеркнуть, что в С№ предусмотрено несколько 144 Часть). Язык С№ разновидностей членов данных и функций-членов. Например, к членам данных, называемым также полями, относятся переменные экземпляра и статические переменные, а к функциям-членам — методы, конструкторы, деструкторы, индексаторы, события, операторы и свойства.

Ограничимся пока что рассмотрением самых основных компонентов класса: переменных экземпляра и методов. А далее в этой главе будут представлены конструкторы и деструкторы. Об остальных разновидностях членов класса речь пойдет в последующих главах. Класс создается с помощью ключевого слова с1азз.

Ниже приведена общан форма определения простого класса, содержащая только переменные экземпляра и методы. с1азз имя класса ) // Объявление переменных зкзеыпляра. доступ тип переменная11 доступ тил переменная21 //... доступ тил переменнаянг // Объявление методов. доступ возращаемый тип метод1)параметры) ) // тело метода доступ возращаемьт тип метод2)параметры) ) // тело метода ) //... доступ вовращаемый тип метели)параметры) ) // тело метода ) ) Обратите внимание на то, что перед каждым объявлением переменной и метода указывается доступ.

Это спецификатор доступа, например рпЫйс, определяющий порядок доступа к данному члену класса. Как упоминалось в главе 2, члены класса могут быть как закрытыми (ргъуасе) в пределах класса, так открытыми (рпЫйс), т.е. более доступными Спецификатор доступа определяет тип разрешенного доступа. Указывать спецификатор доступа не обязательно, но если он отсутствует, то объявляемый член считается закрытым в пределах класса. Члены с закрытым доступом могут использоваться только другими членами их класса. В примерах программ, приведенных в этой главе, все члены, за исключением метода Мадо О, обозначаются как открытые (рпЫ1с). Это означает, что их можно использовать во всех остальных фрагментах кода — даже в тех, что определены за пределами класса.

Мы еще вернемся к обсуждению спецификаторов доступа в главе 8. газ заметку! Помимо спвцификатора доступа, в обьявлвнии члена класса могут также присутствовать один или несколько модификаторов. О модификаторах речь пойдет далее в этой главе. Несмотря на отсутствие соответствующего правила в синтаксисе С№, правильно сконструированный класс должен определять одну и только одну логическую сущность. Например, класс, в котором хранятся Ф.И.О. и номера телефонов, обычно не содержит сведения о фондовом рынке, среднем уровне осадков, циклах солнечных пятен или другую информацию, не связанную с перечисляемыми фамилиями. Таким образом, в пра- Глава 6. Введение в классы, объекты и методы 145 вильно сконструированном классе должна быть сгруппирована логически связанная информация.

Если же в один и тот же класс помещается логически несвязанная информация, то структурированность кода быстро нарушается. Классы, использовавшиеся в приведенных ранее примерах программ, содержали только один метод: маъп () . Но в представленной выше общей форме определения класса метод Ваап () не указывается. Этот метод требуется указывать в классе лишь в том случае, если программа начинается с данного класса. Определение класса Для того чтобы продемонстрировать классы на конкретных примерах, разработаем постепенно класс, инкапсулирующий информацию о зданиях„в том числе о домах, складских помещениях, учреждениях и т.д.

В этом классе (назовем его Вц11с)1по) будут храниться три элемента информации о зданиях; количество этажей, общая площадь и количество жильцов. Ниже приведен первый вариант класса Вц11с)1по. В нем определены три переменные экземпляра: р1оогз, Агеа и Оссцрапгз. Как видите, в классе Вц11с(1по вообще отсутствуют методы. Это означает, что в настоящий момент этот класс состоит только из данных. (Впоследствии в него будут также введены методы.) с1авя Вц1161пд ( риб11с ьпк Г1оогат // количество этажей рцб11с ьпк Агеат // общая плошадь здания рцъ11с 1ое Оссцраокят // количество жильцов ) Переменные экземпляра, определенные в классе Вц11с)1по, демонстрируют общий порядок объявления переменных экземпляра.

Ниже приведена общая форма для объявления переменных экземпляра. доступ тип имя переменной; где доступ обозначает вид доступа; тип — конкретный тип переменной, имя переменной — имя, присваиваемое переменной. Следовательно, за исключением спецнфикатора доступа, переменная экземпляра объявляется таким же образом, как и локальная переменная.

Все переменные объявлены в классе Вц11с(1пп с предваряющим их модификатором доступа рцЬ11с. Как пояснялось выше, благодаря этому они становятся доступными за пределами класса Вц11с)1по. Определение с1азз обозначает создание нового типа данных. В данном случае новый тип данных называется Вц11с(1пд.

С помощью этого имени могут быть объявлены объекты типа Вц11с)1пп. Не следует, однако, забывать, что объявление с1азэ лишь описывает тип, но не создает конкретный объект. Следовательно, в приведенном выше фрагменте кода объекты типа Вц11с)1по не создаются. Для того чтобы создать конкретный объект типа Вц11с(1по, придется воспользоваться оператором Вц1161яц )тоцяе = пек Вц1161оо () т // создать объект типа Вц11бьцд После выполнения этого оператора объект цоцэе станет экземпляром класса Вц11с)1по, т.е. обретет "физическую" реальность.

Не обращайте пока что внимание на отдельные составляющие данного оператора. 146 Часть!. язык С» Всякий раз, когда получается экземпляр класса, создается также объект, содержащий собственную копию каждой переменной экземпляра, определенной в данном классе. Таким образом, каждый объект типа Вп11бапд будет содержать свои копии переменных экземпляра е1оогз, Агеа и Осспрапгз. Для доступа к этим переменным служит оператор доступа к члену класса, который принято называть ояараиюром-я(очной.

Оператор-точка связывает имя объекта с именем члена класса. Ниже приведена общая форма оператора-точки. объект. член В этой форме объект указывается слева, а член — справа. Например, присваивание значения 2 переменной Е1оогз объекта Ьопзе осуществляется с помощью следующего оператора: Ьоояе.11оогя = 21 В целом оператор-точка служит для доступа к переменным экземпляра и методам. Ниже приведен полноценный пример программы, в которой используется класс Вп11б1пд. // Программа, в которой используется класс Во11бъпд. пяапд Зуясекп с1аяя Вч11бапд ( роЬ11с 1пк Е1оогя; // количество этажей роЬ11с 1пк Агеа; // общая площадь здания рпЫкс ъпг Оссорапсят // количество жильпов ) // В этом классе объявляется объект типа Ви1101пп.

с1аяя ВЫ1б1ппоещо ( ясас1с чо10 маъп() ( Вп11бапЧ Ьозяе = пем Во1101пд() т // создать объект // типа Во11б1пд гпс агеаРРт // площадь на одного человека // Присвоить значения полям в объекте Азове. Ьоояе.осспрапкя = ят Ьоияе.Агеа = 2500т Почве.Е1оогя 2т // Вычислить площадь на одного человека. агеаРР = Ьоояе.Агеа / Лоояе.оссорапсят Сопяо1е.вггкеъапе("Дом имеет:М Ьоияе Е1оогя + " этажаМ Ьопяе.осспрапся т " жильда1п Почве.агеа + " кв.

футов общей площади, из них1п агеарр ь " приходится на одного человека"); Эта программа состоит из двух классов: Ви11б1пд и Вп11бйпдпещо. В классе Вп11бапдбещо сначала создается экземпляр Ьопзе класса ВО11бйпд с помощью метода Ма1п (), а затем в коде метода ма1п () осуществляется доступ к переменным экземпля- Глава 6. Введение в классы, объекты и методы 147 ра Почве для присваивания им значений и последующего использования этих значений.

Следует особо подчеркнуть, что вц11бдпд и Вц11с)1пдрешо — это два совершенно отдельиых класса. Единственная взаимосвязь между ними состоит в том, что в одном из иих создается экземпляр другого. Но, несмотря иа то, что это раздельные классы, у кода из класса В011бфпдцешо имеется доступ к членам класса В011т)1пд, поскольку оии объявлены как открытые (рц)т11с). Если бы при их объявлении ие был указан спецификатор доступа рц)з110, то доступ к иим ограничивался бы пределами В011т)1пд, а следовательно, их нельзя бьшо бы использовать в классе В011бдпдцешо. Допустим, что исходный текст приведенной выше программы сохранен в файле цзевц11т)1пд.

сз, В результате ее компиляции создается файл цзевц11т)1пд. ехе. При этом оба класса, Вц11с)1пд и Вц11бфпдпешо, автоматически включаются в состав исполняемого файла. При выполнении данной программы выводится следующий результат: дом имеет: 2 этажа 4 жильца 2500 ка. футов общей площади, иэ ник 625 приходится на одного человека Но классам В011т)1пд и вц11с)1пдпешо совсем ие обязательно находиться в одном и том же исходном файле. Каждый из иих можно поместить в отдельный файл, например Вц11г)1пд.

сз и Вц11т)1пдцешо. сз, а компилятору С№ достаточно сообщить, что оба файла должны быть скомпилироваиы вместе. Так, если разделить рассматриваемую здесь программу иа два таких файла, для ее компилироваиия можно воспользоваться следующей командной строкой: сзс Во11Жпд.са Вчд1<)впдвашо.сз Если вы пользуетесь интегрированной средой разработки Ч)вца! Вгцтт)о, то вам нужно ввести оба упомянутых выше файла в свой проект и затем скомпоновать их. Прежде чем двигаться дальше, рассмотрим следующий осиовополагающий принцип; у каждого объекта имеются свои копии переменных экземпляра, определенных в его классе. Следовательно, содержимое переменных в одном объекте может отличаться от их содержимого в другом объекте. Меткду обоими объектами ие существует никакой связи, за исключением того факта, что оии являются объектами одного и того же типа.

Так, если имеются два объекта типа В011б1пд, то у каждого из иих своя копия переменных р1оогэ, йгеа и Оссцрапсз, а их содержимое в обоих объектах может отличаться. Этот факт демонстрируется в следующей программе: // В этой программе создаются дза объекта типа Вц11бгпд. цэапд зузкелв с1азз Вц1101пд ( рцо11с 1пк 51оога/ // количество этажей рцб11с ьпС Агеа~ // общая плошадь здания рцыгьс впс оссцрапсат О количество жильцов ) // В этом классе объявляются два объекта типа Вц11бкпд. с1аза Вч11бьпдоешо зкакьс чокб Иагп[) Вц11б1пд Ьоцзе = пен Вц11бвпд()) к48 Часть (. Язык С№ Вц11бзпд оШсе пен Вц11бкпд()) 1па агеаРР; // площадь на одного человека // Присвоить значения полям в объекте Ьоояе.

Ьоцяе.оссцрапкя = 4) Поняв.агеа = 2500т Ьоцяе.Р1оогя = 2) // Присвоить значения полям в объекте оШсе. оШсе.оссцрапкя = 25) оШсе.агеа 4200) окк1се Р1оогя = 3; // Вычислить площадь на одного человека в жилом доме. агеаРР = Ьоцяе.агеа / Ьоцяе.оссцрапеят Сопяо1е.нгьсеьапе("Пом имеетк Чп Лоцяе.Р1оогя + " этажа1п Поняв.оссцрапся + " жильца1п " + Лоцяе.лгеа + " кв. фУтов общей площади, из них1п агеаРР + " приходится на одного человека"); // Вычислить площадь на одного человека в учреждении. агеаРР = окк1се.аяеа / отсасе.Оссцрапяят Сопяо1е.нгзкеьзпе("Учреждение имеетк1п оШсе.г1оогя + " этажа1п оШсе.оссцрапая + " работников1п оШсе.агеа + " кв.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6447
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее