一、概念题

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. 进程管理中的active_mm是做什么的?

    在Linux内核中,进程管理涉及到许多复杂的数据结构和机制,其中active_mm是与内存管理相关的一个关键概念.理解active_mm需要先了解与之相关的一些基本内核结构和概念. 基本概念 mm_s ...

  2. os.environ["CUDA_DEVICE_ORDER"] = '0'

    这个总结来自:博客 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # 按照PCI_BUS_ID顺序从0开始排列G ...

  3. 【Treatment-Rec 论文阅读】Data-driven Automatic Treatment Regimen Development and Recommendation

    Data-driven Automatic Treatment Regimen Development and Recommendation Authors: Leilei Sun, Chuanren ...

  4. (系列七).net8 Aop切面编程

    说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...

  5. 解决数据库表的字段id中间自增断层问题(删除自增主键其中的任意一条数据后,再次插入数据发现id排序出现问题)

    万能解决办法: 先将该表的id字段删除,然后再重新按照见表需求创建该字段 注意!!!!!!!!!!!!! 注意!!!!!!!!!!!!! 注意!!!!!!!!!!!!! 删除之前一定要复制建表时候的S ...

  6. 中通快递关键业务和复杂架构挑战下的 Kubernetes 集群服务暴露实践

    本文是上海站 Meetup 讲师王文虎根据其分享内容整理的文章. KubeSphere 社区的小伙伴们,大家好.我是中通快递容器云平台的研发工程师王文虎,主要负责中通快递容器云平台开发.应用容器化推广 ...

  7. DataDream:调一调更好,基于LoRA微调SD的训练集合成新方案 | ECCV'24

    尽管文本到图像的扩散模型已被证明在图像合成方面达到了最先进的结果,但它们尚未证明在下游应用中的有效性.先前的研究提出了在有限的真实数据访问下为图像分类器训练生成数据的方法.然而,这些方法在生成内部分布 ...

  8. Solution of CF1842C

    Brief description of the title 若 \(a_i=a_j\) 且 \(1\le i < j\le |a|\).则删除 \(a_{i}\) 到 \(a_j\) 所有数. ...

  9. Linux基础-查看和设置环境变量

    一,查看环境变量 二,环境变量类型 三,设置环境变量 四,参考资料 一,查看环境变量 在 Linux中,环境变量是一个很重要的概念.环境变量可以由系统.用户.Shell 以及其他程序来设定,其是保存在 ...

  10. 从0.1开始学java(2)

    string串池 现在都在堆中 "=="号的比较 字符串比较一般调用equals或者equalsignoreCase API来比较(后者忽略大小写) StringBuilder 可 ...