Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 21

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 21 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 212021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Например, приложение, работающее со списками студентов,должно хранить разнотипную информацию о них — имя, год рождения, успеваемостьи т.п. Логически рассуждая, имя студента может иметь тип s t r i n g , год рождения —int или s h o r t , средний б а л л — d o u b l e . Такой программе необходима возможностьобъединить эти разнотипные переменные в единую структуру под именем S t u d e n t .К счастью, в С# имеется структура, известная как класс, которая предназначена для об­легчения группирования таких разнотипных переменных.В других случаях программам требуются наборы однотипных объектов.

Возьмем дляпримера программу, которая должна усреднять успеваемость. Тип d o u b l e — естест­венный кандидат для представления индивидуальной успеваемости студента, но для тогочтобы представлять успеваемость группы студентов, необходим тип, который являетсянабором d o u b l e . Для таких целей в С# существуют массивы.И наконец, реальной программе для работы с информацией о студентах могут пона­добиться как классы, так и массивы, причем объединенные в одно целое — массив сту­дентов.

С# позволяет получить желаемое.КлассыКласс представляет собой объединение разнотипных данных и функций, логическиорганизованных в единое целое. С# предоставляет полную свободу при создании клас­сов, но хорошо спроектированные классы призваны представлять концепции.Аналитик скорее всего скажет, что "класс отображает концепцию из предметной области задачи в программу".

Предположим, например, что ваша з а д а ч а — построенияимитатора дорожного движения, который должен смоделировать улицы, перекресткашоссе и т.п.Любое описание такой задачи должно включать термин транспортное средствоТранспортные средства обладают определенной максимальной скоростью движенииимеют вес, и некоторые из них оснащены прицепами. Таким образом, имитатор дорожного движения должен включать класс V e h i c l e , у которого должны иметься свойствнаподобие d T o p S p e e d , n W e i g h t и b T r a i l e r .Поскольку классы — центральная концепция в программировании на С#, они буигораздо детальнее рассмотрены в главах части IV, "Объектно-ориентированноепрограммирование"; здесь же описаны только азы.Определение классаПример класса V e h i c l e может выглядеть следующим образом:publicclassVehicle{publicpublicpublicpublics t r i n g sModel;s t r i n g sManufacturer;i n t nNumOfDoors;i n t nNumOfWheels;////////Название моделиПроизводительКоличество дверейКоличество колес}Определение класса начинается словами p u b l i cc l a s s , за которыми идет имякласса (в данном случае — V e h i c l e ) .Как и все имена в С#, имена классов чувствительны к регистру.

С# не имеяникаких правил для именования классов, но неофициальная традиция гласитчто имена классов начинаются с прописной буквы.За именем класса следует пара фигурных скобок, внутри которых могут быть несколько членов (либо ни одного). Члены класса представляют собой переменные, образующие часть класса.

В данном примере класс V e h i c l e начинается с члена s t r i n gs M o d e l , который содержит название модели транспортного средства. Второй член вэтом примере — s t r i n gsManuf a c t u r e r , а последние два члена содержат количест-во дверей и колес в транспортном средстве.Как и в случае обычных переменных, делайте имена членов максимально информативными. Хотя я и добавил к именам членов комментарии, они не являются обязательными с точки зрения С#. Обо всем должны говорить имена переменных.Модификатор p u b l i c перед именем класса делает класс доступным для всей про-!граммы. Аналогично, модификаторы p u b l i c перед именами членов также делают ихдоступными для всей программы.

Возможны и другие модификаторы, но более подроб­но о доступности речь пойдет в главе 11, "Классы".Определение класса должно описывать свойства объектов решаемой задачи. Сделатьэто прямо сейчас вам будет немного сложновато, поскольку вы не знаете, в чем именносостоит задача, так что просто следите за ходом изложения.116Часть III. Объектно-основанное программированиеГлав,Что т а к о е о б ъ е к тОбъект класса объявляется аналогично встроенным объектам С#, но не идентично им.Термин объект используется для обозначения "вещей".

Да, это не слишкомполезное определение, так что приведем несколько примеров. Переменная типаi n t является объектом i n t . Автомобиль является объектом V e h i c l e .Вот фрагмент кода, создающий автомобиль, являющийся объектом V e h i c l e :Vehicle myCar;myCar = new V e h i c l e () ;В первой строке объявлена переменная myCar типа V e h i c l e , так же как вы можетеобъявить переменную n S o m e t h i n g класса i n t (да, класс является типом, и все объектыС# определяются как классы).

Команда new V e h i c l e ()создает конкретный объекттипа V e h i c l e и сохраняет его местоположение в переменной myCar. Оператор n e w("новый") не имеет ничего общего с возрастом автомобиля — он просто выделяет новыйблок памяти, в котором ваша программа может хранить свойства автомобиля myCar.В терминах С# m y C a r — это объект класса V e h i c l e . Можно также сказать,что m y C a r — экземпляр класса V e h i c l e . В данном контексте экземпляр(instance) означает "пример" или "один из". Можно использовать этот термини как глагол, и говорить об инстащировании V e h i c l e — это именно то, чтоделает оператор new.Сравните объявление myCar с объявлением переменной num типа i n t :int num;num = 1;В первой строке объявлена переменная num типа i n t , а во второй созданной пере­менной присваивается значение типа i n t , которое вносится в память по месту располо­жения переменной num.Переменная встроенного типа num и объект my С а г хранятся в памяти поразному.

Константа 1 не занимает память, поскольку и процессор, и С# знают,что такое 1. Но процессор понятия не имеет о такой концепции, как V e h i c l e .Выражениеnew V e h i c l eвыделяетпамять,необходимуюдляописаниятранспортного средства, понятного процессору, С#, и вообще — всему миру.Доступ к ч л е н а м о б ъ е к т аКаждый объект класса V e h i c l e имеет собственный набор членов. Приведенное да­лее выражение сохраняет число 1 в члене nNumberOf D o o r s объекта, на который ссы­лается myCar:myCar. nNumberOf D o o r s = 1;Каждый оператор С# имеет не только значение, но и тип. Объект myCar явля­ется объектом типа V e h i c l e . Переменная V e h i c l e .nNumberOf D o o r s име­ет тип i n t (вернитесь к определению класса V e h i c l e ) . Константа 1 такжеимеет тип i n t , так что типы константы с правой стороны от оператора при­сваивания и переменной с левой стороны соответствуют друг другу.Глава 6.

Объединение данных - классы и массивы117Аналогично, в следующем фрагменте кода сохраняются ссылки на строки strinJописывающие модель и производителя myCar:m y C a r . s M a n u f a c t u r e r = "BMW";myCar.sModel = " I s e t t a " ;( I s e t t a — небольшой автомобиль, который производился в 1950-х годах и имел одядверь впереди.)Пример объектно-основанной программыПрограмма V e h i c l e D a t a O n l y очень проста и делает следующее:определяет класс V e h i c l e ;создает объект myCar;указывает свойства myCar;получает значения свойств myCar и выводит их на экран.Вот код программы V e h i c l e D a t a O n l y ://VehicleDataOnly/ / С о з д а е т о б ъ е к т V e h i c l e , з а п о л н я е т е г о члены и н ф о р м а ц и е й ,// в в о д и м о й с к л а в и а т у р ы , и выводит ее на э к р а нusing System;namespaceVehicleDataOnly{publicclassVehicle{publicpublicpublicpublics t r i n g sModel;s t r i n g sManufacturer;i n t nNumOfDoors,i n t nNumOf Wheels,-/ / Модель// Производитель// Количество дверей// Количество колес}publicclassProgram{/ / Начало программыs t a t i c voidMain(string[] args){/ / Приглашение п о л ь з о в а т е л юC o n s o l e .

W r i t e L i n e ( " В в е д и т е информациюомашине");// Создание экземпляра V e h i c l eVehiclemyCar = new V e h i c l e ( ) , / / В в о д информации д л я ч л е н о в к л а с с аConsole.Write("Модель = " ) ;string s = Console.ReadLine();myCar.sModel = s;118Часть III. Объектно-основанное программировав/ / Можно п р и с в а и в а т ь з н а ч е н и я н е п о с р е д с т в е н н оConsole.Write("Производитель = " ) ;myCar.sManufacturer= Console.ReadLineО;/ / Остальные данные имеют тип i n tConsole.Write("Количество дверей = " ) ;s = Console.ReadLine();myCar.nNumOfDoors= Convert.ToInt32(s),Console.Write("Количество колес = " ) ;s = Console.ReadLine();myCar.nNumOfWheels = C o n v e r t .

T o I n t 3 2 ( s ) ;// Вывод п о л у ч е н н о й информацииC o n s o l e . W r i t e L i n e ( " \ п В а ш а машина: " ) ;Console.WriteLine(myCar.sManufacturer+ " " +myCar.sModel);C o n s o l e . W r i t e L i n e ( " c " + myCar.nNumOfDoors +" дверями, "+"на " + m y C a r . n N u m O f W h e e l s+" колесах") ;/ / Ожидаем п о д т в е р ж д е н и я п о л ь з о в а т е л яC o n s o l e . W r i t e L i n e ( " Н а ж м и т е < E n t e r > для " +" з а в е р ш е н и я п р о г р а м м ы . . .

") ;Console.Read();Листинг программы начинается с определения класса V e h i c l e .Определение класса может находиться как до, так и после класса P r o g r a m —это не имеет значения. Однако вам нужно принять какой-то один стиль и сле­довать ему.Программа создает объект myCar класса V e h i c l e , а затем заполняет все его поляинформацией, вводимой пользователем с клавиатуры. Проверка корректности входныхданных не производится. Затем программа выводит введенные данные на экран в немно­го ином формате.Вывод этой программы выглядит следующим образом:Введите информацию о машинеМодель= MetropolitanПроизводитель = N a s hКоличество д в е р е й = 2Количество к о л е с= 4Ваша м а ш и н а :Nash M e t r o p o l i t a nс 2 дверями, на 4 к о л е с а хНажмите < E n t e r > д л я з а в е р ш е н и япрограммы...Глава В, Объединение данных - классы и массивы119Вызов R e a d ( ) , в отличие от R e a d L i n e ( ) , оставляет курсор сразу за введен!ной строкой.

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

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

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6363
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее