Конструкторы при наследовании



МИНИСТЕРСТВО ОБРАЗОВАНИя И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. А.Н. Косыгина (ТЕХНОЛОГИИ. ДИЗАЙН. ИСКУССТВО)»

(ФГБОУ ВО «РГУ им. А.Н. Косыгина»)

 

Кузьмина Т.М., Ветрова О.А.

 

Методические указания по курсовой работе по дисциплине «Объектно-ориентированное программирование»

Учебное пособие

Допущено к изданию редакционно-издательским советом университета в качестве электронного учебного пособия для подготовки бакалавров по направлениям 09.03.01 Информатика и вычислительная техника,                                     

Объем 397 КБ Тираж 50

Редакционно-издательский отдел РГУ им. А.Н. Косыгина

115035, Москва, ул. Садовническая, 33, стр. 1

тел./ факс: (495) 955-35-88

e-mail: riomgudt@mail.ru

 

Москва

РГУ им. А.Н. Косыгина 2016

  Copyright © 2017 mgudt.ru All Rights Reserved
  Copyright © 2017 Кузьмина Т.М., Ветрова О.А.. All Rights Reserved

 

ISBN 978-5-87055-489-1

 


 

УДК 004.415

ББК 32.973.018.1

К89

К89 Кузьмина Т.М., Ветрова О.А.

Методические указания по курсовой работе по дисциплине «Объектно-ориентированное программирование»: учебное пособие. – М.: РГУ им. А.Н. Косыгина, 2017. – 397 КБ

Данное пособие содержит указания и рекомендации по выполнению курсовой работы по дисциплине «Объектно-ориентированное программирование». В нем даны варианты тем курсовой работы, описывается порядок выполнения и защиты курсовой работы, требования к программным продуктам и представляемым документам.

Пособие предназначено для обучающихся по направлениям подготовки 09.03.01 Информатика и вычислительная техника всех форм обучения и будет использовано при изучении дисциплин «Объектно-ориентированное программирование».

 

Минимальные системные требования: ПЭВМ, работающая под управлением Windows ; оперативная память – 512 Мб; необходимо на винчестере – 512 Мб; операционные системы- Windows XP / Windows Vista / Windows 7/ Windows 8; дополнительные программные средства- Microsoft Office Word .

 

 

Работа подготовлена на кафедре автоматизированных систем обработки информации и управления ФГБОУ ВО РГУ им. А.Н. Косыгина.

 

 

Copyright © 2017 mgudt.ru All Rights Reserved
Copyright © 2017 Кузьмина Т.М., Ветрова О.А.. All Rights Reserved

 


Выбор темы

Выполнение курсового проекта начинается с выбора темы. Студент может выбрать тему из перечисленных в предлагаемых методических указаниях тем курсовых работ, либо из дополнительных тем, формулируемых преподавателем, связанных с направлениями исследований, ведущихся на кафедре, направлениями работы руководителя или с теми задачами, которые могут быть интересны студенту. Тема также может быть самостоятельно сформулирована и предложена студентом. Самостоятельно сформулированная тема обязательно должна быть согласованна с руководителем курсовой работы.

Для того чтобы иметь общее представление об избранной теме, исследование необходимо начать с изучения основополагающих вопросов данной проблемы и предполагает подбор и изучение научной и практической литературы. В предлагаемых методических указаниях содержатся некоторые сведения из теории, но эти сведения не обладают исчерпывающей полнотой и предполагают работу с дополнительной литературой.

После выбора и согласования темы курсовой работы с руководителем курсовой работы, составляется календарный план, в котором определяются сроки консультаций и выполнения этапов курсовой работы.

Оценка за курсовую работу выставляется с учетом:

•   качества выполненного программного продукта,

•   правильности оформления записки;

•   результатов защиты.

Цель написания курсового проекта

Целями написания курсового проекта являются:

· закрепление и углубление знаний по объектно-ориентированному программированию, в частности по темам наследование, работы с массивами ссылочных типов, обработке исключительных ситуаций и пр.;

· формирование умений применять теоретические знания при решении конкретных практических задач;

· приобретение и закрепление навыков самостоятельной работы.

Оформление пояснительной записки.

Записка должна содержать:

• титульный лист; задание на курсовую работу;

• иерархию классов, представленную в виде схемы;

• описание классов, входящих в иерархию;

• тексты всех программных модулей, с комментариями;   

• описание используемых компонентов визуальной среды;

• описание работы программы, проиллюстрированное скриншотами;

• библиографический список, в котором приведена использованная научная и техническая литература.

 

Краткие сведения из теории

Наследование

Поскольку C# объектно-ориентированный язык, то в нем реализован механизм наследования. В С#, так же, как в Объектном паскале, в языке Java, реализовано простое наследование классов, т.е. производный класс может быть создан только на основе одного базового класса, хотя этот базовый класс может быть сам производным. Чтобы показать, что класс является производным, в описание класса после имени класса ставится двоеточие и пишется имя базового класса.

Например

class T{

    public int x,y;

    public int sum()

    {return x+y;}

    }

class P: T{

    public int z;

    }

class S: P{

    public int u;

    public int pr()

    {return x*z*u;} }

В этом примере определены три класса: Т, P , S. Как мы видим из описания, класс Р является производным от класса Т, а на основе класса Р строится класс S. Таким образом, можно создавать весьма разветвленные иерархии классов.

 Иерархии классов часто изображается в виде схем. На рисунке 1, изображен пример иерархия классов. Мы видим, что производных классов от одного базового класса может быть несколько. Но у каждого производного класса базовый класс один.

Рисунок 1 Пример иерархии классов.

Отметим, что метод  класса S,  pr() наравне с полем u,  использует поля x,z, которые достались в наследство, такое оказалось возможным, потому, что поля имеют уровень доступа public. Производный класс получает в наследство все члены базового класса, но методы производного класса не могут напрямую работать с членами уровня доступа private, да и возможность работы с членами базового класса уровня internal, зависит от того в одной ли сборке находятся базовый и производный классы. А вот с членами базового класса уровней public или protected методы производного класса могут работать свободно.

Конструкторы при наследовании

Конструкторы не наследуются, но используются при создании объектов производных классов.  Поскольку унаследованные поля должны инициализироваться конструкторами тех классов, в которых они определены, то при создании объекта производного класса сначала вызываются конструкторы базовых классов, начиная с самого дальнего предка, и только в конце вызывается конструктор производного класса. По умолчанию вызываются конструкторы без параметров.

В том случае, когда надо вызвать конструктор базового класса с параметрами, нужно в описании конструктора производного класса внести специальную запись – двоеточие и слово base, указав в скобках значения параметров. Рассмотрим пример:

class Q{

              public string s;

              public Q(string ss)

              {

                       s=ss;

              }

    }

    class V: Q{

              public int z;

              public V(): base("Привет"){z=0;}

              public V(string ss, int zz): base(ss){z=zz;}

    }

Класс Q не имеет конструктора без параметров, поэтому при использовании его в качестве базового нельзя использовать настройки «по умолчанию», а надо объявить конструктор в производном классе и, используя слово base, вызвать конструктор класса Q с параметрами.

Ссылки базового класса

До сих пор, при создании объектов классов, мы всегда следили за тем, чтобы тип ссылки совпадал с типом объекта. Но оказывается это правило можно нарушить. Ссылка базового класса может указывать на объект производного класса.

Пусть Т, Р,S – классы определенные ранее. Нам важно, что Т является базовым для Р, а Р является базовым для S.

Тогда следующие строчки не будут содержать ошибок:

T t=new P();

S s = new S();

t=s;

 

Тип ссылки определяет, с какими членами производного класса мы можем работать, только с теми членами, которые определены в типе ссылки. Исключением из этого правила будут виртуальные методы, да и они должны быть известны в классе ссылке.

Итак, работая через ссылку t, с объектами классов P и S, мы можем обращаться к полям  x,y и методу sum, остальные поля и методы классов P и S будут недоступны. 

Что делать, если для объекта типа S надо вызвать метод рr, определенный в этом классе, а работаем с объектом через ссылку базового класса t? В этом случае надо выполнить преобразование типов: ((S)t).pr(). Обратите внимание, как расставлены скобки. Поскольку операция доступа – точка - имеет больший приоритет, чем преобразование типов, то приходится преобразование типов брать в скобки ((S)t), и только потом использовать операцию доступа.

Поскольку по ссылке базового класса не всегда ясно на какой объект она указывает, то в С# введены специальные операторы, которые выполняют проверку возможности выполнения соответствующего преобразования типов.


Дата добавления: 2019-07-15; просмотров: 162; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!