前言:
C#属于面向对象语言,所谓面向对象就是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
正文:
1,C#语言的三层基本结构:
通常我们在打开VS工程的时候,会出现如下界面:
大括号代表不同的层级,其中namespace叫做命名空间,class叫做类,main叫做函数或者方法。你可以理解为namespace为一所大房子,class是里面的冰箱、彩电、洗衣机或者小板凳;而方法就是各类家具所具有的功能,比如说冰箱能制冷,洗衣机可以洗衣服。通常意义上,这三层基本结构能适用于大部分工作场合。
2,新建一个基本类
如上图所示,新建了一个椭圆类,类中声明了属性和方法。但目前方法里面啥都没有,所以需要我们补齐方法:
这里需要指出的是,通常在我们工作中,要遵循以下规则:
1,属性名小写,方法名首字母大写
2,尽量不要起无意义的名字,比如说abcd这种
3,时刻记得写注释
而要调用这个类,就需要返回我们主函数中,通常指的的是Main函数,新建这个类:
static void Main(string[] args)
{
Circle _myC = new Circle();
}
之后给_myC赋值,为了方便操作,我们使用输入函数:
最后调用方法:
//调用方法
_myC.Area();
_myC.Perimeter();
主函数全部截屏为:
然后我们可以运行测试,代码部分在习题1的答案中。
练习题:
1,定义一个Circle(棚圆)的类,其数据成员是榆圆外切矩形的左上角和右下角两点的座标,定义计算面积和周长的成员方法,然后调用主程序验证。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 1.定义一个Circle(棚圆)的类,其数据成员是榆圆外切矩形的左上角和右下角两点
/// 的座标,定义计算面积和周长的成员方法,然后调用主程序验证。
/// </summary>
namespace testProject
{
class Program
{
static void Main(string[] args)
{
Circle _myC = new Circle();
//属于属性值
Console.WriteLine("左上角的x座标为:");
_myC.leftUp[0] = float.Parse(Console.ReadLine());
Console.WriteLine("左上角的y座标为:");
_myC.leftUp[1] = float.Parse(Console.ReadLine());
Console.WriteLine("右下角的x座标为:");
_myC.rightDown[0] = float.Parse(Console.ReadLine());
Console.WriteLine("右下角的y座标为:");
_myC.rightDown[1] = float.Parse(Console.ReadLine());
//调用方法
_myC.Area();
_myC.Perimeter();
Console.ReadLine();
}
}
//椭圆类
public class Circle
{
//左上角
public float[] leftUp = new float[2];
//右下角
public float[] rightDown = new float[2];
//计算面积方法
public void Area()
{
//椭圆面积公式:S=π(圆周率)×a×b,其中a、b分别是椭圆的长半轴,短半轴的长
float _a = rightDown[0] - leftUp[0];//x值相减
float _b = leftUp[1]- rightDown[1];//y值相减
float _area = (float)(_a * _b * Math.PI);
_area = Math.Abs(_area);
Console.WriteLine("面积为" + _area);
}
//计算周长的方法
public void Perimeter()
{
//椭圆周长公式:L=2πb+4(a-b)
float _a = rightDown[0] - leftUp[0];//x值相减
float _b = leftUp[1] - rightDown[1];//y值相减
//如果是瘦高型的椭圆,即_a<_b,则需要交换_a、_b
if (_a < _b)
{
float _min = _a;//中间变量
_a = _b;
_b = _min;
}
float _perimeter = (float)(2 * Math.PI * _b + 4*(_a - _b));
Console.WriteLine("周长为" + _perimeter);
}
}
}