;另增设方法 SetDate()用于日期设置操作;对每个字段提供属 性;提供方法 Display() 按”月/日/年”格式显示日期(设计要点: 要防范创建 或设置了无效日期(同时输出错误提示),考虑大月、小月、闰年的判断)。 另写一个测试类 DateTestC#
时间: 2024-09-29 19:14:14 浏览: 34
在C#中,你可以创建一个名为`CustomDate`的类,它代表自定义日期,并实现你需要的功能。首先,我会描述一下这个类的设计:
```csharp
public class CustomDate
{
private int day;
private int month;
private int year;
// 构造函数,用于初始化日期
public CustomDate(int day, int month, int year)
{
if (IsValidDate(day, month, year))
this.day = day;
else
throw new ArgumentException("Invalid date provided.");
}
// 设置日期的方法,带验证
public void SetDate(int day, int month, int year)
{
if (IsValidDate(day, month, year))
{
this.day = day;
this.month = month;
this.year = year;
}
else
{
Console.WriteLine("Error: Invalid date set.");
}
}
// 验证日期的方法
private bool IsValidDate(int day, int month, int year)
{
// 防范无效日期,如大于12个月份,小于1或31天,以及闰年的判断
return month >= 1 && month <= 12
&& day >= 1 && (day <= 31 || isLeapYear(year))
&& (month == 2 && isLeapYear(year) ? day <= 29 : day <= 30);
}
// 判断是否是闰年
private static bool isLeapYear(int year)
{
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
// 显示日期的方法
public string Display()
{
return $"{month}/{day}/{year}";
}
}
```
然后,你可以创建一个测试类`DateTest`来测试这个功能:
```csharp
using Xunit;
public class DateTest
{
[Fact]
public void TestValidDateSet()
{
var customDate = new CustomDate(15, 3, 2023);
customDate.SetDate(12, 12, 2023); // 有效日期
Assert.Equal("12/12/2023", customDate.Display());
}
[Fact]
public void TestInvalidDateSet()
{
try
{
var customDate = new CustomDate(32, 2, 2023); // 无效日期
customDate.SetDate(); // 应该抛出异常
}
catch (ArgumentException ex)
{
Assert.Contains("Invalid date provided.", ex.Message);
}
}
}
```
阅读全文