Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
484606.docx
Скачиваний:
22
Добавлен:
20.09.2019
Размер:
892.44 Кб
Скачать
    1. Наследование абстрактных и виртуальных методов

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

    1. Абстрактные базовые классы

Можно объявить класс как абстрактный, если необходимо предотвратить прямое создание экземпляров с помощью ключевого слова new. При таком подходе класс можно использовать, только если новый класс является производным от него. Абстрактный класс может содержать один или несколько сигнатур методов, которые сами объявлены в качестве абстрактных. Эти сигнатуры задают параметры и возвращают значение, но не имеют реализации (тела метода). Абстрактному классу необязательно содержать абстрактные члены; однако, если класс все же содержит абстрактный член, то сам класс должен быть объявлен в качестве абстрактного.Производные классы, которые сами не являются абстрактными, должны предоставить реализацию для любых абстрактных методов из абстрактного базового класса.

    1. Наследование интерфейсов

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

Интерфейсы используются для определения определенных возможностей для классов, которые не обязательно имеют отношения тождественности. Например, интерфейс System.IEquatable<T> может быть реализован любым классом или структурой, включающей клиентский код для определения эквивалентности двух объектов типа (однако тип определяет эквивалентность). IEquatable<T> не подразумевает тот же вид отношений тождественности, который существует между базовым и производным классами.

  1. Практическое задание

Тема 5. Описать структуру с именем aer0fl0t, содержащую следующие поля:

  • название пункта назначения рейса;

  • номер рейса;

  • тип самолета.

Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив, состоящий из семи элементов типа AER0FL0T (записи должны быть размещены в алфавитном порядке по названиям пунктов назначения);

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

    1. Общая диаграмма классов

    1. Листинг классов необходимых объектов

public class Samolet : Form1 //класс вновь созданных самолетов

{

public string Pvilet = "";

public string Tip = "";

public bool expl = false ;

public Point pointGorod = new Point(0, 0);

public Samolet(string Pvilet, string Tip, bool expl, Point pointGorod)

{

this.expl = expl;

this.Pvilet = Pvilet;

this.pointGorod = pointGorod;

this.Tip = Tip;

}

}

public class SamoletVvozduhe : Samolet //класс, описывающий "от и до" запущенные самолеты

{ //родитель класса - "новые самолеты"

public string Nomrei = "";

public string Pnazn = "";

public string Pvilet = "";

public string Tip = "";

public string vremy = "";

public bool expl = true;

public Point pointOtpr = new Point(0, 0);

public Point pointPrbl = new Point(0, 0);

public Point pointSeich = new Point(0, 0);

public int vputi = 0;

public SamoletVvozduhe(string NomRei, string Pvilet, string Pnazn, string Tip, string vremy,

bool expl, Point pointOtpr, Point pointPrbl, Point pointSeich, int vputi) : base(Pvilet, Tip, expl, pointOtpr )

{

this.Nomrei = NomRei;

this.Pvilet = Pvilet;

this.Pnazn = Pnazn;

this.Tip = Tip;

this.vremy = vremy;

this.expl = true;

this.pointOtpr = pointOtpr;

this.pointPrbl = pointPrbl;

this.pointSeich = pointSeich;

this.vputi = vputi;

}

}

public class Goroda : Form1 //класс описывающий доступные городоа

{

public int x, y; //координаты города

public string gorod; //названия города

public Goroda(int x, int y,string gorod)

{

this.x = x;

this.y = y;

this.gorod = gorod;

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]