На выбранном вами языке программирования ( С#, Pascal) постройте три класса ( базовый и 2 потомка), описывающих некоторых студентов. Студентам назначается стипендия, при этом правила ее назначения различны для парней ( один из потомков) и девушек ( второй потомок). Известны ФИО студентов, их пол, группа и средний . Парням выплачивается фиксированная стипендия, если их средний равен пороговому значению в а девушкам стипендия выплачивается всегда и рассчитывается она путем умножения среднего на фиксированный коэффициент. Создайте код, описывающий классы и их члены для моделирования этой ситуации. Представьте сигнатуру метода расчета стипендии (это имя метода, тип аргумента и последовательность).
Ответы на вопрос:
Объяснения:
Описаны три класса: 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;
}
}
}
}
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
miirko77726.04.2022 20:27
-
anastasiamrz26.08.2021 00:56
-
sverhrazum12309.06.2020 21:25
-
Tomiriszharasbaeva12.04.2020 14:54
-
никита15485620.04.2022 19:27
-
Lizochka2007u20.03.2021 08:26
-
Vlada43401.01.2023 14:46
-
ilyadengin02.08.2022 08:43
-
Вика444501.01.2022 16:26
-
HupiTip08.06.2022 20:39
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.