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

Лабораторная работа 2

Цель: Исследовать механизм наследования.

 

1.1. Задания

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

1. Создает массив из N экземпляров класса, созданного в соответствии с вариантом
лабораторной работы 1 (см. ниже).

2. Выводит информацию об оъектах массива

3. Сортирует массив по заданному признаку (см. вариант), используя метод Sort класса Array

4. Выводит информацию об оъектах отрортированного массива

 

Вариант 1.Создать базовый класс «цилиндр», такой, что:

a) его экземпляр содержит размер радиуса и высоты.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса и высоты.

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

d) функция print_val() выводит на экран значение его объема.

Сортировать массив по объему.

 

Вариант 2.Создать базовый класс «шар», такой, что:

a) его экземпляр содержит размер радиуса.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса.

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

d) функция print_val() выводит на экран значение его объема.

Сортировать массив по радиусу.

 

Вариант 3.Создать базовый класс «конус», такой, что:

a) его экземпляр содержит размер радиуса и высоты.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением радиуса и высоты.

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

d) функция print_val() выводит на экран значение его объема.

Сортировать массив по объему

Вариант 4.Создать базовый класс «трапеция», такой, что:

a) его экземпляр содержит размер двух оснований и высоты.

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

c) его методы позволяют получать и присваивать значения оснований, высоты и площади, выполняя при этом соответствующие преобразования.

d) функция print_sqrt() выводит на экран значение ее площади.

 

Сортировать массив по площади

 

Вариант 5.Создать базовый класс «смайлик», такой, что:

a) его экземпляр содержит размер радиуса лица R и радиуса r глаз.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением R и r.

c) его методы позволяют получать и присваивать значения R, r и площади, выполняя при этом соответствующие преобразования.

d) функция print_sqrt() выводит на экран значение ее площади (без площади глаз).

Сортировать массив по площади.

 

Вариант 6. Создать базовый класс «крест», такой, что:

 

 
 


a

 
 


b

 
 


a) его экземпляр содержит размер два размера a и b .

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b ..

c) его методы позволяют получать и присваивать значения a , b и площади, выполняя при этом соответствующие преобразования.

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

Сортировать массив по значению а.

 

Вариант 7.Создать базовый класс «шайба» (правильный шестиугольник, такой, что:

 
 


a

 

 

a) его экземпляр содержит размер стороны a.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a.

c) его методы позволяют получать и присваивать значения a и площади , выполняя при этом соответствующие преобразования.

d) функция print_sqrt() выводит на экран значение площади этой фигуры.

Сортировать массив по площади.

 

Вариант 8. Создать базовый класс «ромб» :

a) его экземпляр содержит размеры a и b.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.

c) его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.

d) .функция print_sqrt() выводит на экран значение площади этой фигуры.

Сортировать массив по площади

 

Вариант 9.Создать базовый класс «песочные часы» : a

b

 

a) его экземпляр содержит размеры a и b.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.

c) его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.

Сортировать массив по площади

 

 

Вариант 10.

a
Создать базовый класс «четырехконечная звезда» :

b


 

a) его экземпляр содержит размеры a и b.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением a и b.

c) его методы позволяют присваивать значения a, b и получать значения площади, выполняя при этом соответствующие преобразования.

 

Сортировать массив по площади

 

Вариант 11. Создать базовый класс «вигвам»

(заштрихованная фигура):

H

h

 

a

a) его экземпляр содержит размеры a, H и h.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением .

c) его методы позволяют присваивать значения a, h, H и получать значения площади, выполняя при этом соответствующие преобразования.

Сортировать массив по площади.

 

Вариант 12.Создать базовый класс «ведро»

R

h

 

r

a) его экземпляр содержит размеры R, r и h.

b) его конструктор без параметра создает экземпляр со значением 0, а конструктор с параметрами создает экземпляр с соответствующим значением .

c) его методы позволяют получать и присваивать значения a и объема, выполняя при этом соответствующие преобразования R, r и h

d) Сортировать массив по высоте.

 

2.1 Пример выполнения работы

1. Создать класс Student, содержащий поля «Фамилия», «Курс» и «Средний балл»

2. Создать массив из N экземпляров класса Student, проинициализировать случайными значениями и вывести сведения о студентах.

3. Отсортировать массив студентов по убыванию их среднего балла, используя метод Sort класса Array

4. Вывести информацию о студентах отрортированного массива

 

 

Текст программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Icomparab

{

class Student : IComparable

{

string fio;

int kurs;

double average;

public Student(string fio, int kurs, double average)

{

this.fio = fio; this.kurs = kurs;

this.average = average;

}

public void PersonalData()

{

Console.WriteLine("Студент {0} курса {1} имеет средний бал {2}", kurs, fio, average);

}

// переопределенный метод

public int CompareTo(object a)

{

Student b = (Student)a; // явное преобразование типов

if (b.average > this.average)

return 1;

if (b.average < this.average)

return -1;

return 0;

 

}

}

 

class Program

{

static void Main(string[] args)

{

string[] names = new string[] { "Иванов", "Петров", "Сидоров", "Паниковский", "Балаганов", "Корейко", "Скумбриевич", "Галкин", "Палкин", "Малкин" };

int n = 10;

Student[] A = new Student[n];

Random r = new Random();

for (int i = 0; i < n; i++)

{ A[i]=new Student(names[i], r.Next(1, 5), r.Next(1, 101));

A[i].PersonalData();

}

Array.Sort(A); // сортировка массива

Console.WriteLine("\nотсортированый: ");

for (int i = 0; i < n; i++)

{

A[i].PersonalData();

}

Console.ReadKey();

}

}

}

 

 

Результат работы программы