以下是一个使用C#编写的泛型绩点计算器代码的分析:

using System;
using System.Collections.Generic;

public class GradePointCalculator<T> where T : IGrade
{
    private List<T> grades;

    public GradePointCalculator()
    {
        grades = new List<T>();
    }

    public void AddGrade(T grade)
    {
        grades.Add(grade);
    }

    public double CalculateGPA()
    {
        double totalCreditHours = 0;
        double totalGradePoints = 0;

        foreach (T grade in grades)
        {
            totalCreditHours += grade.CreditHours;
            totalGradePoints += grade.GradePoints * grade.CreditHours;
        }

        return totalGradePoints / totalCreditHours;
    }
}

public interface IGrade
{
    double CreditHours { get; }
    double GradePoints { get; }
}

public class Grade : IGrade
{
    public double CreditHours { get; set; }
    public double GradePoints { get; set; }
}

public class Program
{
    public static void Main(string[] args)
    {
        GradePointCalculator<Grade> calculator = new GradePointCalculator<Grade>();

        Grade grade1 = new Grade { CreditHours = 3, GradePoints = 4.0 };
        Grade grade2 = new Grade { CreditHours = 4, GradePoints = 3.5 };
        Grade grade3 = new Grade { CreditHours = 2, GradePoints = 3.0 };

        calculator.AddGrade(grade1);
        calculator.AddGrade(grade2);
        calculator.AddGrade(grade3);

        double gpa = calculator.CalculateGPA();

        Console.WriteLine("GPA: " + gpa);
    }
}

代码中定义了一个GradePointCalculator类,它是一个泛型类,使用T作为类型参数,要求T必须实现IGrade接口。GradePointCalculator类有一个grades列表用于存储成绩。它提供了AddGrade方法用于添加成绩,以及CalculateGPA方法用于计算绩点平均值。

IGrade接口定义了两个属性:CreditHours表示学分,GradePoints表示绩点。

Grade类实现了IGrade接口,它有两个属性CreditHoursGradePoints,分别表示学分和绩点。

Main方法中,创建了一个GradePointCalculator<Grade>对象,然后创建了三个Grade对象,分别表示三门课的成绩。将这三个成绩添加到calculator对象中,然后调用CalculateGPA方法计算绩点平均值,并将结果输出到控制台。

这个代码示例展示了如何使用泛型类和接口来实现一个绩点计算器,可以方便地计算不同类型的成绩的绩点平均值。

c#泛型绩点计算器代码分析

原文地址: http://www.cveoy.top/t/topic/h4Kw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录