У вас вопросы?
У нас ответы:) SamZan.net

Российский государственный профессиональнопедагогический университет Институт электроэнергетики и ин

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024

Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«Российский государственный профессионально-педагогический университет»

Институт электроэнергетики и информатики

Кафедра сетевых информационных систем и компьютерных технологий обучения

ЗАДАНИЯ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ
К ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ ПО ДИСЦИПЛИНЕ
«ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ТЕХНОЛОГИИ»

для студентов заочной формы обучения

направления подготовки  051000.62 Профессиональное обучение (по отраслям)

профиля подготовки «Информатика и вычислительная техника»

профилизации «Компьютерные технологии»

Екатеринбург

РГППУ

2013


Задания и методические указания к выполнению контрольной работы по дисциплине «Объектно-ориентированные технологии». Екатеринбург, ФГАОУ ВПО «Российский государственный профессионально-педагогический университет», 2013. 29 с.

Автор

ст. преподаватель

С.Н. Ширева

Одобрены на заседании кафедры сетевых информационных систем и компьютерных технологий обучения. Протокол от 15.03.2013 13  

Заведующая кафедрой сетевых информационных систем и компьютерных технологий обучения

Е.В. Чубаркова

Рекомендованы к печати методической комиссией Института электроэнергетики и информатики РГППУ. Протокол от 25.03.2013 7   

Председатель методической комиссии ЭлИн

А.О. Прокубовская

© ФГАОУ ВПО «Российский государственный профессионально-педагогический университет», 2013

© С.Н. Ширева, 2013


Содержание

[1]
Методические указания

[1.1] 1 Общие положения

[1.2] 2 Содержание контрольной работы

[1.3] 3 Технология выполнения и отчетность по контрольной работе

[1.4] 4 Оформление контрольной работы

[1.5]
5 Задания для контрольной работы

[1.6] 6 Учебно-методическое обеспечение дисциплины

[2]
Приложение 1

[3]
Приложение 2

[3.0.1] Теоретический материал

[4]
Приложение 3

[4.0.1] Пример выполнения контрольной работы

[5]
Приложение 4


Методические указания

1 Общие положения

Тема контрольной работы: «Классы и наследование».

Целью контрольной работы является изучить понятия, связанные с описанием класса: уровни доступа к членам класса, основные принципы объектной модели, научиться описывать классы, имеющие иерархическую структуру.

Необходимое программное обеспечение:

  •  Windows, не ниже XP;
  •  MS Word;
  •  Microsoft Visual Studio C#.

2 Содержание контрольной работы

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

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

3 Технология выполнения и отчетность по контрольной работе

Порядок выполнения контрольной работы включает следующие этапы:

  1.  Определить номер варианта по двум последним цифрам номера зачетной книжки (приложение 1).
  2.  Ознакомиться с заданием.
  3.  Установить необходимое программное обеспечение.
  4.  Разработать и отладить программы согласно номеру варианта (приложение 2, 3).
  5.  Оформить отчет по контрольной работе в соответствии с рекомендациями, приведенными ниже.

4 Оформление контрольной работы

Контрольная работа сдается в электронном и печатном виде.

Для контрольной работы на CD-диск записываются папки, содержащие файлы с созданным программным продуктом, название папки соответствует фамилии студента, выполнившего контрольную работу.

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

Печатная версия контрольной работы содержит:

  •  титульный лист, оформленный стандартным образом (приложение 4);
  •  текст варианта задания;
  •  листинг созданного программного продукта;
  •  результаты тестирования продукта.


5 Задания для контрольной работы

Номера вариантов заданий определяются согласно приложению 1. Задания выполняются на языке C# в консольном приложении.

  1.  

Разработать модуль для описания системы Библиотека. Описать классы: Книга (название, автор, год выпуска, наличие иллюстраций), Художественная книга (жанр) и Учебник (количество экземпляров, дисциплина). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Гостиница. Описать следующие классы: Номер (номер, категория, стоимость), Одноместный номер (фамилия жильца) и Двухместный номер (пол проживающих, количество свободных мест). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Фильмотека. Описать следующие классы: Фильм (название фильма, производство, продолжительность, жанр), Сериал (количество серий) и Художественный фильм (год выпуска, цветной или нет). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Страховая компания. Описать следующие классы: Предмет страховки (фамилия страховщика, название предмета страховки, стоимость страховки, срок страховки), Недвижимость (адрес недвижимости) и Автомобиль (марка, год выпуска). Создать консольное приложение для ввода данных объектов.

  1.  

Разработать модуль для описания системы Турагентство. Описать следующие классы: Путевка (название путевки, продолжительность, стоимость, наличие экскурсий), Туристическая путевка (категория маршрута, необходимость справки от врача) и Санаторная путевка (заболевание). Создать консольное приложение для ввода данных объектов.

  1.  

Разработать модуль для описания системы Склад. Описать следующие классы: Товар (название товара, поставщик, количество товара, стоимость товара), Продуктовый товар (срок годности) и Промышленный товар (количество штук в коробке, бьющийся товар или нет). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Поликлиника. Описать следующие объекты: Пациент (фамилия, дата рождения, флюорография, номер участка), Взрослый пациент (вид деятельности, необходимость выдачи больничных листов) и Пациент ребенок (дата последнего обращения). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы ГИБДД. Описать следующие классы: Автомобиль (номер, марка, цвет, пробег), Личный автомобиль (фамилия владельца, дата техосмотра) и Автомобиль фирмы (название фирмы). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Ателье мод. Описать следующие классы: Заказ (фамилия клиента, вид изделия, дата заказа, срочность), Легкая одежда (сложность) и Верхняя одежда (подкладка, количество примерок). Создать консольное приложение для ввода данных объектов.

  1.  

Разработать модуль для описания системы Аэрофлот. Описать следующие классы: Рейс (номер рейса, пункт назначения, вид самолета время в пути), Внутренний рейс (количество пассажиров) и Международный рейс (страна назначения, промежуточные посадки). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Бухгалтерия. Описать следующие классы: Сотрудник (фамилия, должность, образование, отдел), Штатный сотрудник (оклад) и Совместитель (почасовая оплата или сдельная, место постоянной работы). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Подписка. Описать следующие объекты: Периодическое издания (название, количество экземпляров в год, распространение (подписка, продажа), вид бумаги), Журнал (наличие приложения, адрес сайта) и Газета (место выпуска). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Железная дорога. Описать следующие классы: Поезд (номер, пункт отправления, направление, время в пути), Поезд дальнего следования (место комплектования, скорый или нет) и Электричка (количество рейсов в сутки). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы Деканат. Описать следующие объекты: Студент (фамилия, специальность, курс, очник или заочник), Бюджетный студент (проживание в общежитии) и Студент, обучающийся платно (размер оплаты за семестр, внесенная сумма). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы  Сад. Описать следующие объекты: Садовая посадка (название, вид, многолетнее или нет, дата посадки), Декоративная посадка (цвет, высота) и Плодовая посадка (время сбора урожая, ягоды или плоды). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы  Напитки. Описать следующие объекты: Напиток (название, объем тары, стоимость, производитель), Молочный напиток (жирность, дата реализации) и Сок (сырье, нектар или сок). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы  Театр. Описать следующие объекты: Спектакль (название, жанр, автор, режиссер), Гастрольный спектакль (начало гастролей, конец гастролей, площадка) и Спектакль местного театра (название театра сколько раз в сезоне выпускается). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы  Школа. Описать следующие объекты: Учитель (фамилия, дата поступления, категория, совмещение), Учитель начальных классов (класс, количество учеников) и Учитель предметник (предмет, сколько классов, классное руководство). Создать консольное приложение для ввода данных.

  1.  

Разработать модуль для описания системы  Собаководство. Описать следующие объекты: Собака (Порода, дата рождения, кличка, хозяин), Служебная собака (дрессировщик, вид службы) и Декоративная собака (участие в выставках, необходимость стрижки, количество медалей). Создать консольное приложение для ввода данных.

  1.  

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

6 Учебно-методическое обеспечение дисциплины

Основная литература

  1.  Хорев П.Б. Технологии объектно-ориентированного программиро- вания [Текст]: Учеб. пособие для вузов [Гриф УМО] / П.Б. Хорев. – М.: Академия, 2012. – 448 с.
  2.  Подбельский В.В. Язык C# Базовый курс [Текст]: Учеб. пособие / В.В. Подбельский. – М.: Финансы и статистика ИНФРА-М, 2011. – 384 с.
  3.  Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений [Текст] / Г. Буч, Р.А. Максимчук, М.У. Энгл, Б.Дж. Янг, Д. Коналлен, К.А. Хьюстон. – М.: Вильямс, 2008 – 720 с.

Дополнительная литература

  1.  Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. [Текст] / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. – СПб.: Питер, 2011. – 366 с.
  2.  Лаптев В.В. C++. Объектно-ориентированное программирование задачи и упражнения [Текст]: Учеб. пособие для вузов [Гриф Минобрнауки РФ] / В. В. Лаптев, А. В. Морозов, А. В. Бокова. – СПб.: Питер, 2007. - 287 с.
  3.  Павловская Т.А. C#. Программирование на языке высокого уровня  [Текст]: Учебник для вузов / Т. А. Павловская, Ю. – СПб.: Питер, 2009. – 435 с.
  4.  Маклафлин Б. Объектно-ориентированный анализ и проектирование [Текст] / Б. Маклафлин, Г. Поллайс, Д. Уэст. – СПб.: Питер, 2013. – 608 с.


Приложение 1

Определение номера варианта

Вариант определяется по двум последним цифрам зачетной книжки (студенческого билета) 1. Если две последние цифры зачетной книжки больше 20, то из них необходимо вычитать 20, пока не получится число, лежащее в интервале от 1 до 20. Результат вычитания будет номером вашего варианта. По номеру варианта определяется номер конкретного задания.

Например, две последние цифры зачетной книжки 45, следовательно, номер варианта 5. Две последние цифры зачетной книжки 79, следовательно, номер варианта 19. Если две последние цифры зачетной книжки 60, то необходимо выполнить следующее вычисление: 60-20-20=20, следовательно, номер варианта 20.


Приложение 2

Теоретический материал

Определение класса

Понятие класса в теоретических работах, посвященных объектно-ориентированной методологии, обычно вводится на основе понятия «объект».

Объектом называется совокупность данных (полей), определяющих состояние объекта, и набор функций (методов), обеспечивающих изменение указанных данных (состояния объекта) и доступ к ним».

Класс – это некое множество объектов, имеющих общую структуру и общее поведение.

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

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

Общая форма определения простого класса, содержащая только поля и методы:

class имя_класса

{

// Объявление переменных экземпляра

доступ тип поле1;

//...

доступ тип полеN;

// Объявление методов.

доступ возращаемый_тип метод1 (параметры)

{ // тело метода}

доступ возращаемый_тип метод2 (параметры)

{ // тело метода }

//. . .

доступ возращаемый_тип методN(параметры)

{ // тело метода }

} 

Cписок модификаторов доступа:

  •  public – (открытый) доступен без ограничений всем методам всех сборок;
  •  protected – (защищенный) доступен в классе и в любом классе, производном от данного;
  •  private – (закрытый) доступен только в классе и вложенных в него типах (классах).

Поле – это член объявления класса, представляющий переменные, связанные с классом или его объектом.

Объявление поля вводит одну или несколько переменных одного типа.

Например:

class person

       {

           public string fio;

           public DateTime dat;

           public char pol;

           public int vozr;

           public int let()

       };

Следует отметить, что официальная терминология С# делает различие между функциями и методами. Согласно этой терминологии, понятие «функция-член» включает не только методы, но также другие члены, не являющиеся данными, класса или структуры. Сюда входят индексаторы, операции, конструкторы, деструкторы, а также свойства. Они контрастируют с данными-членами: полями, константами и событиями.

Если метод не возвращает ничего, то в качестве типа возврата указывается void. Если же он не принимает аргументов, то все равно после имени метода должны присутствовать пустые круглые скобки.

Возврат из метода может произойти при двух условиях.

Во-первых, когда встречается фигурная скобка, закрывающая тело метода.

И во-вторых, когда выполняется оператор return.

Имеются две формы оператора return: одна – для методов типа void (возврат из метода), т.е. тех методов, которые не возвращают значения, а другая – для методов, возвращающих конкретные значения (возврат значения):

void let()

          {

            double m;

            DateTime d=DateTime.Now;

            TimeSpan p=d-this.dat;

            m = p.Days/365.25;

            vozr= Convert.ToInt32(m);

           }

Ссылка this

Нестатические методы класса отличаются от статических наличием в первых ссылки this. Эта ссылка позволяет нестатическому методу «узнать», для какого объекта метод вызван и выполняется в данный конкретный момент. Значением ссылки this является ссылка на тот объект, обработка которого выполняется. Ссылку this нельзя и нет необходимости определять – она всегда автоматически включена в каждый нестатический метод класса и связана с тем объектом, для которого метод вызывается. Иногда ссылку this называют дополнительным параметром нестатического метода. Этот параметр представляет в методе вызвавший его объект.

Перечислим, для каких ситуаций, нужно использовать this перед именем поля или метода:

  1.  для избегания конфликта имен между параметрами метода и членами объекта;
  2.  для организации связей между объектами одного класса;
  3.  для обращения из одного конструктора класса к другому конструктору того же класса;
  4.  для определения расширяющего метода.

Объявление объекта

Для объявления объекта произвольного типа используется следующая конструкция:

тип_класса имя_переменной = new тип_класса();

Оператор new динамически (т.е. во время выполнения) распределяет память для объекта и возвращает ссылку на него, которая затем сохраняется в переменной. Следовательно, в С# для объектов всех классов должна быть динамически распределена память.

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

Например:

person men= new person();

Эта строка объявления выполняет три функции.

Во-первых, объявляется переменная men, относящаяся к типу класса person. Сама эта переменная не является объектом, а лишь переменной, которая может ссылаться на объект.

Во-вторых, создается конкретная, физическая, копия объекта. Это делается с помощью оператора new.

И наконец, переменной men присваивается ссылка на данный объект. Таким образом, после выполнения анализируемой строки объявленная переменная men ссылается на объект типа person.

Конструкторы

Конструктор объектов (иначе экземпляров) класса – это метод класса, в котором реализованы все действия, необходимые для инициализации объекта класса при его создании. Для простоты выражение «конструктор объектов (иначе экземпляров) класса» обычно сокращают и говорят просто о конструкторе.

Общая форма конструктора:

доступ имя_класса(список_параметров)

{

// тело конструктора

} 

Cписок_параметров может быть как пустым, так и состоящим из одного или более указываемых параметров.

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

public person()

       {vozr=20;

       }

public person(string fio, DateTime rogd)

       {

           this.fio = fio;

           this.rogd = rogd;

           let();

       }

Деструкторы и финализаторы

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

Общая форма деструктора:

~имя_класса () {// код деструктора } 

Принцип инкапсуляции и методы объектов

Объектно-ориентированное программирование базируется на трех принципах: инкапсуляция, наследование и полиморфизм.

Инкапсуляцию можно рассматривать как сокрытие особенностей реализации того или иного фрагмента программы от внешнего пользователя. Фрагмент должен быть доступен для обращений к нему только через внешний интерфейс фрагмента. Описания внешнего интерфейса должно быть достаточно для использования фрагмента.

Если фрагментом инкапсуляции является класс, то при его проектировании очень важно выделить в нем средства, обеспечивающие внешний интерфейс, и отделить их от механизмов реализации (внутреннего построения) класса. При этом нужно стремиться к достижению следующих трех целей:

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

Для реализации в классах принципа инкапсуляции используется разграничение доступа к его членам.

Доступ к данным (к полям) объектов должен быть возможен только через средства внешнего интерфейса, предоставляемые классом. Реализацию класса определят его закрытые члены (со спецификатором private), а внешний интерфейс – открытые (со спецификатором public).

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

Инкапсуляция – это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает и то, и другое от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект.

Объектно-ориентированный подход к программированию традиционно рекомендует для расширения внешнего интерфейса класса и его объектов вводить в класс специальные методы, позволяющие получать значения закрытых полей и желаемым способом задавать их значения. По-английски эти методы называют, соответственно, get method (accessor) – метод доступа и set method (mutator) – метод изменения. В зависимости от целей решаемых задач для каждого поля могут быть заданы или оба метода, или один из них.

Язык С# позволяет получить  доступ  к закрытым полям с помощью механизма свойств.

Свойство – это член класса, который обеспечивает доступ к характеристикам класса или его объекта. Ниже приведена общая форма свойства:

тип имя {

get { // код аксессора для чтения из поля }

set { // код аксессора для записи в поле }

        }

Аксессор доступа (get-аксессор) подобен методу без параметров, возвращающему значение, тип которого определяется типом свойства. Аксессор доступа возвращает значение конкретного поля класса или его объекта. Для возврата значения из аксессора в его теле должен выполниться оператор return выражение;

Аксессор изменения (set-аксессор) подобен методу с возвращаемым значением типа void и единственным неявно заданным параметром, значение которого определяет новое значение свойства. Тип параметра определяется типом свойства. Имя параметра, которое используется в теле аксессора изменений, всегда value.

public string Fam {

                  get { return fam; }

                  set {

                        string f = value;

                        fam = f.ToUpper(); }

                }

public DateTime Rogd {

                     get {return rogd;}

                     set { rogd = value; let(); }

                    }

static void Main(string[] args)

{ person men = new person();

  men.Fam = Console.ReadLine();

  men. Rogd =Convert.ToDateTime(Console.ReadLine());

  Console.WriteLine("Фамилия "+men.Fam+" Возраст “+ men.Rogd.ToString());

  Console.ReadKey(); }

Иерархия

Иерархия – это упорядочение абстракций, расположение их по уровням.

Основными видами иерархических структур применительно к сложным системам являются:

  •  структура классов (иерархия "is-a")
  •  структура объектов (иерархия "part of").

Отношение "part of" (часть) вводит иерархию агрегации. Агрегация описывает отношения целого и части, приводящие к соответствующей иерархии объектов, причем, идя от целого (агрегата), мы можем придти к его частям (атрибутам).

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

Важным элементом объектно-ориентированных систем и основным видом иерархии "is-a" является концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование).

В языке С# существует только одиночное наследование. Класс, который наследуется, называется базовым, а класс, который наследует, – производным. Следовательно, производный класс представляет собой специализированный вариант базового класса. Он наследует все переменные, методы, свойства и индексаторы, определяемые в базовом классе, добавляя к ним свои собственные элементы.

Для объявления класса, который является наследником некоторого базового класса, используется следующий синтаксис:

 class имя_производного_класса : имя_базового_класса

{операторы_тела_производного_класса}

Члены базового класса, имеющие статус доступа private остаются закрытыми для производного класса. Члены базового класса, имеющие модификатор public, открыты для членов и объектов производного класса.

В ряде случаев необходимо, чтобы члены базового класса были доступны (открыты) для членов производного класса, но в то же время были закрыты (недоступны) для объектов производного класса. В этом случае в базовом классе эти члены должны быть защищенными, т.е. объявлены с модификатором protected.

class person {

       protected string fam;

       protected DateTime rogd;

       protected char pol;

       protected int vozr;

. . .

}

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

class stud : person

   {

       string grup;

       string vid;

. . .

}

Если в производном классе объявлен член, имя которого совпадает с именем какого-либо члена базового класса, то для их различения в производном классе используются уточненные имена:

this. имя_члена_производного_класса

base.имя_члена_базового_класса

При внешних обращениях одноименные члены базового и производного класса различаются по типам объектов, для которых эти обращения выполнены.

Поведение методов при наследовании

Правила работы с конструкторами:

  1.  Если в определении класса присутствует объявление хотя бы одного конструктора, то конструктор без параметров автоматически в класс не добавляется.
  2.   В отличие от других членов базового класса, конструкторы не наследуются.

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

Если этого не сделано, то компилятор по умолчанию самостоятельно дополнит объявление конструктора (точнее его инициализатор) обращением к конструктору базового класса без параметров.

public stud():base()

{ grup = "Группа";

  vid = ""; }

public stud(string fam, DateTime rogd, char pol,string

     grup, string vid): base( fam, rogd, pol)

{

 this.grup = grup;

 this.vid = vid;  }

Поведение одноименных методов базового и производного классов.

  1.  Для методов возможна перегрузка (overload). В этом случае одноименные методы базового и производного классов должны иметь разные спецификации параметров.
  2.  Разрешено переопределение, иначе экранирование или сокрытие (hiding), методом производного класса одноименного метода базового класса (спецификации параметров совпадают).
  3.  Метод базового класса может быть объявлен как виртуальный (virtual), и тогда при его переопределении (overriding) в производных классах обеспечивается полиморфизм.

В случае перегрузки методов при наследовании никаких нововведений нет.

При экранировании метода стандарт рекомендует снабжать метод производного класса модификатором new. При его отсутствии компиляция проходит успешно, но выдается предупреждение (Warning). В нем программисту указывают, что он выполнил переопределение метода базового класса, возможно, по оплошности.

Если при переопределении методов необходимо из методов производного класса обращаться к методу базового класса, то используется уточненное имя base.имя_метода_базового_класса. Например:

class person {

...

public string print() {

 return "Фамилия= "+fam+" Родился= "+ rogd.ToString("dd.MM.yyyy") +" Пол="+pol.ToString(); }

class stud : person {

. . .

public new string print() {

return base.print() + " Группа: " + grup + " Вид обучения - " + vid; }

   }


Приложение 3

Пример выполнения контрольной работы

Задание

Разработать модуль для описания системы Университет. Описать следующие классы: Человек (поля фамилия, дата рождения, пол, возраст), класс Студент (поля группа, вид обучения) и класс Преподаватель (поля кафедра, должность). Обеспечить ввод данных в консольном приложении.

Модуль с описанием классов: person.cs.

namespace ConsoleApplication1

{ // описание класса Человек

   class person

   {

       protected string fam;

       protected DateTime rogd;

       protected char pol;

       protected int vozr;

       // метод для вычисления возрвста

       void let()

       {

           double m;

           DateTime d = DateTime.Now;

           TimeSpan p = d - this.rogd;

           m = p.Days / 365.25;

           vozr= Convert.ToInt32(m);

       }

       // конструкторы

       public person()

       { fam="Имя";

         rogd=DateTime.Now;

         pol='0';

         vozr=0;

        }

       public person(string fam, DateTime rogd, char pol)

       { this.fam=fam.ToUpper();

           this.rogd=rogd;

           if (pol == 'м' | pol == 'М' | pol == 'ж' | pol == 'Ж')

               this.pol = pol;

           else this.pol = '0';

           let();

       }

       public string print()

       {

           return "Фамилия="+fam+"  Родился= "+

            rogd.ToString("dd.MM.yyyy")+" Пол="+pol.ToString(); }

       public string Fam

       {

           get { return fam; }

           set

           {

               string f = value;

               fam = f.ToUpper();

           }

       }

       public DateTime Rogd

       {

           get {return rogd;}

           set { rogd = value; let(); }

       }

       public char Pol

       {

           get { return pol; }

           set { char p = value;

           if (p == 'м' | p == 'М' | p == 'ж' | p == 'Ж')

               this.pol = p;

           else this.pol = '0';

           }

       }

       public int Vosr

       {

           get { return vozr; }

       }

 }

 //описание класса Студент

   class stud : person

   {

       string grup;

       string vid;

       //конструкторы

       public stud():base()

       {   grup = "Группа";

           vid = "";

        }

       public stud(string fam, DateTime rogd, char pol,string

                grup, string vid) :base( fam, rogd, pol)

       {

           this.grup = grup;

           this.vid = vid;

       }

       public string Grup

       {

           get { return grup; }

           set { grup = value; }

       }

       public string Vid

       {

           get { return vid; }

           set { vid = value; }

       }

       public new string print()

       { return base.print() + " Группа: " + grup +

                  “Вид обучения - " + vid; }

   }

//описание класса Преподаватель

   class prep : person

   {

       string kaf;

       string dolgn;

       //конструкторы

       public prep() : base()

       {

           kaf = "";

           dolgn = "должность";

       }

       public prep(string fam, DateTime rogd, char pol, string

                kaf, string dolgn): base(fam, rogd, pol)

       {

           this.kaf = kaf;

           this.dolgn = dolgn;

       }

       public string Kaf

       {

           get { return kaf; }

           set { kaf = value; }

       }

       public string Dolgn

       {

           get { return dolgn; }

           set { dolgn = value; }

       }

       public new string print()

       { return base.print() + " Кафедра: " + kaf +

                   " Должность - " + dolgn; }

   }

}

Описание класса находится в отдельном модуле – в файле person.cs. Ввод данных выполняется в консольном приложении в файле Program.cs.

Файлы находятся в одном пространстве имен: namespace ConsoleApplication1

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           person men = new person("Петрова", Convert.ToDateTime("02.05.2000"),'ж');

           Console.WriteLine(men.print());

           Console.ReadKey();

           stud st = new stud("Иванов", Convert.ToDateTime("09.05.1994"), 'ж', "ЗКТ-303", "заочное");

           Console.WriteLine(st.print());

           Console.ReadKey();

           prep pr=new prep("Сидоров", Convert.ToDateTime("26.09.1970"),'м', "МТ", "доцент");

            Console.WriteLine(pr.print());

           Console.ReadKey();

       }

   }

}

Результат работы программы продемонстрирован на рисунке:

Рисунок – Экран консольного приложения с выводом результата


Приложение 4 

Оформление титульного листа

Министерство образования и науки Российской Федерации

ФГАОУ ВПО «Российский государственный профессионально-педагогический университет»

Институт электроэнергетики и информатики

Факультет информатики

Кафедра сетевых информационных систем и компьютерных технологий обучения

КОНТРОЛЬНАЯ РАБОТА

по дисциплине «Объектно-ориентированные технологии»

Вариант №

Работу выполнил: ФИО студента

группа: [буквы+номер]

Работу проверил: ФИО преподавателя

Екатеринбург

2013


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

Подписано в печать _________. Формат 6084/16. Бумага для множ. аппаратов.

Печать плоская. Усл. печ. л. ___. Уч.-изд. л.____. Тираж ____ экз. Заказ № ____.

ФГАОУ ВПО «Российский государственный профессионально-педагогический университет». Екатеринбург, ул. Машиностроителей, 11.

Ризограф ФГАОУ ВПО РГППУ. Екатеринбург, ул. Машиностроителей, 11.

1 Преподаватель имеет право определить набор заданий по своему усмотрению.




1. греч. ~ поворот превращение широко используемый в естественных и точных науках термин.
2. Особенности профессионального типа Человек художественный образ
3. а Оглавление [1] История Узайра Ездры Эзры мир ему [2] Рассказ о Соломоне
4. на тему - Проблемы вступления России в ВТО
5. Тема- Создание таблиц в Microsoft Excel Цель- научится создавать таблицы с помощью Microsoft Excel Задание- Зап
6. коренизации кадровая политика заключавшаяся в подготовке выдвижении и использовании в национальных обр
7. масса это посредственность
8. полосатое мышечное волокно Гиалиновый хрящ Митохондрии эпителий кишечника аскариды Комплекс Гол
9. вбирающая приемы характерные для постмодернистской эстетики интертекстуальность гротеск ирония
10. Башкирский государственный медицинский университет
11. тема отсчета Скалярные и векторные физические величины
12. На тему- ldquo;Правовий статус особи- поняття склад види
13.  В настоящее время известны три гормона метаморфоза контролирующие постэмбриональное развитие- ювенильный
14. темамигеоінформаційними системами ГЇС Geogrphicl Informtion Systems GIS оскільки основні теоретичні ідеї геоінформа
15. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата технічних наук Одеса 200
16. Многие из нас мечтают оздоровить свои волосы оставляя много времени в салонах красоты и приобретая немы
17. варианта 2 Магнитопровод электромагнита выполнен из электротехнической стали состоит из серд
18. тематика Конвертування валюти і накопичення відсотків Розглянуті раніше методи накопичен
19. .1 Сущность значение и проблемы антикризисного управления 7 1
20. Преступления против здоровья населения и общественной нравственности