一、概念题

1. 举例说明什么是类,什么是对象,并说明类与对象的关系?

类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。

对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

例如:狗类。大黄狗是狗类的其中一个对象

类与对象的关系就如模具和铸件的关系,类的实例化的结果就是对象,对象的抽象就是类。

类描述了一组有相同特性(属性)和相同行为的对象。

2. 什么是类的字段,字段有何作用

字段又称为"成员变量",一般在类的内部做数据交互使用,一般使用private使用

字段的通俗理解:字段就好比我们的个人财产,只供我们自己使用,所以一般是private修饰

作用:限制对象的属性或方法可访问的范围(类的内部,类的外部)

类型: private(私有的:外部不可见) public(共有的:外部可见的)

字段命名规范:字段命名一般采用camel命名法

添加标准:一个类中究竟需要添加几个字段,根据程序编写过程的需要决定

3. 举例说明什么是类的属性,属性有何作用?

属性其实是外部访问私有字段的入口,属性本省不保存任何数据

给属性赋值,其实是给属性指向的私有字段赋值

读取属性值,其实是获取属性指向的私有字段值或其它值

作用:在面向对象设计中主要使用属性描述对象静态特征

要求:一般采用Pascal命名法,数据类型和字段一致,使用public修饰

举例

# 字段
private int studentId;
# 属性
public int StudentId
{
get {return student}
set {studentID = value}
}

4. 举例说明C#中如何创建类的方法,方法的基本格式是什么?

[修饰符] 返回值类型 方法名 (参数类型 参数, 参数类型 参数)
{
// 方法体 //(返回值)
}
        /// <summary>
/// 获取圆的直径
/// </summary>
/// <returns></returns>
public double getDiam()
{
return 2 * _radius;
}

5.public , private, protect, internal有何区别?

public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别,对访问公共成员没有限制。

protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。=

private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。

internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。

6. 举例说明,什么是C#程序设计类的封装?

封装:将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。

例如,封装一个Circle类

class Circle
{
//字段
public const double PI = 3.14;
private double _radius;
private double _centerX;
private double _centerY;
//属性
public double Radius { get => _radius; set => _radius = (value > 0 && value <= 50) ? value : 50; }
public double CenterX { get => _centerX; set => _centerX = (value > 0 && value <= 100) ? value : 50; }
public double CenterY { get => _centerY; set => _centerY = (value > 0 && value <= 100) ? value : 50; }
//构造函数
public Circle()
{
;
}
public Circle(double radius)
{
Radius = radius;
}
public Circle(double radius, double centerX, double cneterY)
{
Radius = radius;
CenterX = centerX;
CenterY = cneterY; }
//功能方法
/// <summary>
/// 获取圆的直径
/// </summary>
/// <returns></returns>
public double getDiam()
{
return 2 * _radius;
}
/// <summary>
/// 获取圆的周长
/// </summary>
/// <returns></returns>
public double getPerimeter()
{
return 2 * PI*_radius;
}
/// <summary>
/// 获取圆的面积
/// </summary>
/// <returns></returns>
public double getArea()
{
return PI * _radius * _radius;
}
}

二、程序设计

1. 设计矩形类,并使用该类

 class Rectangle
{
private double _length;
private double _width;
//构造函数
/// <summary>
/// 构造函数
/// </summary>
/// <param name="length"></param>
/// <param name="width"></param>
public Rectangle(double length, double width) {
_length = length;
_width = width; //纠正赋值非法错误
if (_length <= 0 || _length > 50)
{
_length = 50;
}
if (_width <= 0 || _width > 50)
{
_width = 50;
}
Checklw();
}
//set/get
public double Length {
set => _length=(value > 0 && value <= 50) ? value : 50;
get => _length;
}
public double Width
{
set => _width = (value > 0 && value <= 50) ? value : 50;
get => _width;
}
//属性getter
public double getLength() { return _length; }
public double getWidth() { return _width; }
//属性setter
public void setLength(double length) {
if (length <= 0)
{
length = 1;
}
else if (length > 50)
{
length = 50;
}
_length = length;
}
public void setWidth(double width)
{
if (width <= 0)
{
width = 1;
}
else if (width > 50)
{
width = 50;
}
_width = width;
}
//功能方法
/// <summary>
/// 将长方形的长和宽放大一定倍数
/// </summary>
/// <param name="factor"></param>
/// <returns></returns>
public bool magnify(double factor)
{
Checklw();
this._length = _length * factor;
this._width = _width * factor;
if (this._length == _length * factor && this._width == _width * factor)
{
return true;
}
else
{
return false;
} }
//计算长方形面积
public double ComputeArea()
{
Checklw();
return this._length * this._width;
}
/// <summary>
/// 计算长方形周长
/// </summary>
/// <returns></returns>
public double ComputePerimeter()
{
Checklw();
return (this._length + this._width)*2;
} //要求长必须大于款
public void Checklw()
{
//纠正宽大于长的错误
if (_length < _width)
{
double temp = _length;
_length = _width;
_width = temp;
}
} }
Rectangle cfx = new Rectangle(2222,333);
cfx.setLength(2);
cfx.setWidth(3);
lb1.Text += "长方形长为:"+cfx.getLength()+" | 长方形宽为:"+cfx.getWidth()+"\n";
lb1.Text += "周长为:" + cfx.ComputePerimeter().ToString() + "\n";
lb1.Text +="面积为:" +cfx.ComputeArea().ToString()+"\n";

2. 设计圆,并使用该类

  //字段
public const double PI = 3.14;
private double _radius;
private double _centerX;
private double _centerY;
//属性
public double Radius { get => _radius; set => _radius = (value > 0 && value <= 50) ? value : 50; }
public double CenterX { get => _centerX; set => _centerX = (value > 0 && value <= 100) ? value : 50; }
public double CenterY { get => _centerY; set => _centerY = (value > 0 && value <= 100) ? value : 50; }
//构造函数
public Circle()
{
;
}
public Circle(double radius)
{
Radius = radius;
}
public Circle(double radius, double centerX, double cneterY)
{
Radius = radius;
CenterX = centerX;
CenterY = cneterY; }
//功能方法
/// <summary>
/// 获取圆的直径
/// </summary>
/// <returns></returns>
public double getDiam()
{
return 2 * _radius;
}
/// <summary>
/// 获取圆的周长
/// </summary>
/// <returns></returns>
public double getPerimeter()
{
return 2 * PI*_radius;
}
/// <summary>
/// 获取圆的面积
/// </summary>
/// <returns></returns>
public double getArea()
{
return PI * _radius * _radius;
}.
private void btnCircle_Click(object sender, EventArgs e)
{
Circle circle = new Circle();
circle.Radius = 1;
lblCircle.Text+= "圆(" + circle.CenterX + "," + circle.CenterY + ") " +
"半径为" + circle.Radius + " " +
"直径为" + circle.getDiam() + "\n" +
"该圆的周长为:" +circle.getPerimeter()+"\n" +
"该圆的面积为:"+circle.getArea()+"\n";
lblCircle.Text += "--------------------------------\n";
circle.Radius = 999;
circle.CenterX = -999;
circle.CenterY = 25;
lblCircle.Text += "圆(" + circle.CenterX + "," + circle.CenterY + ") " +
"半径为" + circle.Radius + " " +
"直径为" + circle.getDiam() + "\n" +
"该圆的周长为:" + circle.getPerimeter() + "\n" +
"该圆的面积为:" + circle.getArea() + "\n";
}

【C#】【平时作业】习题-5-类的基础知识的更多相关文章

  1. 开发工具、Object类(java基础知识十一)

    1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE     * (Integrated Development Environment) *  ...

  2. 构造方法,重载,static,math类(java基础知识七)

    1.构造方法概述和格式 * A:构造方法概述和作用     * 给对象的数据(属性)进行初始化 * B:构造方法格式特点     * a:方法名与类名相同(大小也要与类名一致)     * b:没有返 ...

  3. UML 类图基础知识记录

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 依赖(Dependency): 关联(Association): 聚合(Aggregation): 合成(Composition): 泛化 ...

  4. Es6对象的扩展和Class类的基础知识笔记

    /*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...

  5. C++ 类模板基础知识

    类模板与模板类 为什么要引入类模板:类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类 ...

  6. 正则表达式、Calendar类、SimpleDateFormat类、Date类、BigDecimal类、BigInteger类、System类、Random类、Math类(Java基础知识十四)

    1.正则表达式的概述和简单使用 * A:正则表达式(一个字符串,是规则)     * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * B: ...

  7. File类最基础知识

    package File; /** * 创建一个文件: * 判断是否存在,若存在,则创建,若不存在,则删除,最后输出文件是否存在. */ import java.io.File; import jav ...

  8. C#基础知识之父子类,实例、静态成员变量,构造函数的执行顺序(经典示例)

    父子类.示例.静态成员变量.构造函数的概念的基础理解完全可以利用下面的示例诠释,非常经典,直接上代码: public class ShowInfo { public ShowInfo(string i ...

  9. JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)

    一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...

  10. 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素

    [源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...

随机推荐

  1. ADO.NET 连接数据库 【vs2022 + sqlServer】

    using System.Data; using System.Data.SqlClient; namespace Zhu.ADO.NET { internal class Program { pri ...

  2. 题解:GZOI2024 D2T2 乒乓球

    考场上切了,但是比较神奇的题,应该是蓝/紫. Discription 乒乓球 \(\text{ }\)时间限制:\(\bold{3}\) 秒 众所周知,一场乒乓球比赛共有两个玩家 \(A\) 和 \( ...

  3. 三大主流负载均衡软件对比(LVS+Nginx+HAproxy)

    LVS: 优点 : 1.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低2.工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量 ...

  4. python机器学习(第一章 Python机器学习基础)

    第一章 Python机器学习基础 基础: Python官网:https://www.python.org/doc/: 历史版本下载与维护信息:https://www.python.org/downlo ...

  5. 01_GoLand debug时出现Connected并且程序卡住的问题

    01_GoLand debug时出现Connected并且程序卡住的问题 环境:win10.go version go1.19.4 windows/amd64.GoLand 2020.3.5 x64 ...

  6. dorado在dialog中使用js通过控件id修改控件值,值闪烁一下消失问题

    在使用dorad过程中,在dialog中编写了复选下拉框,选择完值后,后台js获取选择的值对前台的autoFormElement赋值时element中的值闪烁一下消失,百度没有解决方法,多次尝试后使用 ...

  7. Issac_GYM重要过程记录

    1 下载相关文件 进入github中下载相关的文件 https://github.com/leggedrobotics/legged_gym 2 加载自己绘制的URTL文件 这个链接用来下载宇树的Go ...

  8. 制作并量化GGUF模型上传到HuggingFace和ModelScope

    llama.cpp 是 Ollama.LMStudio 和其他很多热门项目的底层实现,也是 GPUStack 所支持的推理引擎之一,它提供了 GGUF 模型文件格式.GGUF (General Gau ...

  9. 移动端元素定位辅助神器-WEditor

    WEditor可以做什么? 编辑器能够提供辅助编写脚本,查看组件信息,调试代码等功能. 移动端除了用 Appium 来 做元素定位外,还可以通过 WEditor 来完成. 前置环境依赖按照 以 win ...

  10. 李继刚Lisp提示词灵感之源:压缩推动进步

    前面在文章< 访谈李继刚:从哲学层面与大模型对话 >中提到,继刚总结去年写提示词的核心理念是"清晰表达",而今年则是"压缩表达",既而才有火爆全网的 ...