
На выбранном вами языке программирования ( С#, Pascal) постройте три класса ( базовый и 2 потомка),
описывающих некоторых студентов. Студентам назначается стипендия, при этом правила ее назначения различны для парней ( один из потомков) и девушек ( второй потомок). Известны ФИО студентов, их пол, группа и средний балл. Парням выплачивается фиксированная стипендия, если их средний балл равен пороговому значению в 4 балла, а девушкам стипендия выплачивается всегда и рассчитывается она путем умножения среднего балла на фиксированный коэффициент. Создайте код, описывающий классы и их члены для моделирования этой ситуации. Представьте сигнатуру метода расчета стипендии (это имя метода, тип аргумента и последовательность).

Ответы на вопрос

Объяснения:
Описаны три класса: Student [Базовый], MaleStudent, FemaleStudent.
Реализована логика расчета стипендии, учтена возможность смены параметров студентами (в том числе и пола).
Код:
using System;
namespace Durka
{
class Program
{
static void Main(string[] args)
{
var male = Student.CreateMaleStudent("Cidodzy Ohlazhdai Blackjackovich", "1GT-b", 5f);
var female = Student.CreateFemaleStudent("Viktoria Nya Victorovna", "1ZT-b", 4.8f);
Console.WriteLine(male.GetPaymentAmount());
Console.WriteLine(female.GetPaymentAmount());
}
}
/// <summary>
/// Class which describes students in general
/// </summary>
public abstract class Student
{
public string Names { get; set; }
public string Group { get; set; }
public float MeanGrade {
get => _meanGrade;
set
{
if (value > 5f || value < 0f)
{
throw new ArgumentException("MeanGrade must be in [0; 5] range");
}
_meanGrade = value;
}
}
private float _meanGrade;
/// <summary>
/// Method for calculating amount of students payment depending on inner class params such as sex, etc.
/// </summary>
/// <returns>double</returns>
public abstract double GetPaymentAmount();
/// <summary>
/// Method for changing current sex to Male
/// </summary>
/// <returns>MaleStudent class object</returns>
public abstract MaleStudent changeSexToMale();
/// <summary>
/// Method for changing current sex to Female
/// </summary>
/// <returns>FemaleStudent class object</returns>
public abstract FemaleStudent changeSexToFemale();
public static MaleStudent CreateMaleStudent(string names, string group, float meanGrade)
{
return new MaleStudent(names, group, meanGrade);
}
public static FemaleStudent CreateFemaleStudent(string names, string group, float meanGrade)
{
return new FemaleStudent(names, group, meanGrade);
}
/// <summary>
/// Class which describes Male students
/// </summary>
public class MaleStudent : Student
{
protected internal MaleStudent(string names, string group, in float meanGrade)
{
Names = names;
Group = group;
MeanGrade = meanGrade;
}
public static float mul = 2000f;
public override double GetPaymentAmount()
{
return MeanGrade > 4 ? mul : 0;
}
public sealed override MaleStudent changeSexToMale()
{
return this;
}
public sealed override FemaleStudent changeSexToFemale()
{
return new FemaleStudent(Names, Group, MeanGrade);
}
}
/// <summary>
/// Class which describes Female students
/// </summary>
public class FemaleStudent : Student
{
protected internal FemaleStudent(string names, string group, in float meanGrade)
{
Names = names;
Group = group;
MeanGrade = meanGrade;
}
public static float mul = 500f;
public override double GetPaymentAmount()
{
return mul * MeanGrade;
}
public sealed override MaleStudent changeSexToMale()
{
return new MaleStudent(Names, Group, MeanGrade);
}
public sealed override FemaleStudent changeSexToFemale()
{
return this;
}
}
}
}



Ниже приведен пример реализации трех классов на языке программирования C#, описывающих студентов и расчет стипендии с учетом различных правил для парней и девушек:
csharpusing System;
public class Student
{
public string FullName { get; set; }
public string Gender { get; set; }
public string Group { get; set; }
public double AverageGrade { get; set; }
public Student(string fullName, string gender, string group, double averageGrade)
{
FullName = fullName;
Gender = gender;
Group = group;
AverageGrade = averageGrade;
}
}
public class MaleStudent : Student
{
public double FixedScholarship { get; set; }
public MaleStudent(string fullName, string group, double averageGrade) : base(fullName, "Male", group, averageGrade)
{
FixedScholarship = 1000; // Фиксированная стипендия для парней
}
public double CalculateScholarship()
{
if (AverageGrade >= 4.0)
return FixedScholarship;
else
return 0.0;
}
}
public class FemaleStudent : Student
{
public double ScholarshipCoefficient { get; set; }
public FemaleStudent(string fullName, string group, double averageGrade) : base(fullName, "Female", group, averageGrade)
{
ScholarshipCoefficient = 500; // Коэффициент для расчета стипендии для девушек
}
public double CalculateScholarship()
{
return AverageGrade * ScholarshipCoefficient;
}
}
Сигнатура метода расчета стипендии для класса MaleStudent:
csharpdouble CalculateScholarship()
Сигнатура метода расчета стипендии для класса FemaleStudent:
csharpdouble CalculateScholarship()
Пример использования классов и расчета стипендии:
csharpclass Program
{
static void Main(string[] args)
{
MaleStudent maleStudent = new MaleStudent("John Smith", "Group A", 4.5);
double maleScholarship = maleStudent.CalculateScholarship();
Console.WriteLine("Male Student Scholarship: $" + maleScholarship);
FemaleStudent femaleStudent = new FemaleStudent("Jane Doe", "Group B", 3.8);
double femaleScholarship = femaleStudent.CalculateScholarship();
Console.WriteLine("Female Student Scholarship: $" + femaleScholarship);
}
}
В данном примере создаются объекты классов MaleStudent и FemaleStudent, задаются их атрибуты (ФИО, группа, средний балл) и вызываются методы CalculateScholarship для расчета стипендии. Результаты расчета выводятся на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili