【C#】【平时作业】习题-5-类的基础知识
一、概念题
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-类的基础知识的更多相关文章
- 开发工具、Object类(java基础知识十一)
1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE * (Integrated Development Environment) * ...
- 构造方法,重载,static,math类(java基础知识七)
1.构造方法概述和格式 * A:构造方法概述和作用 * 给对象的数据(属性)进行初始化 * B:构造方法格式特点 * a:方法名与类名相同(大小也要与类名一致) * b:没有返 ...
- UML 类图基础知识记录
UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 依赖(Dependency): 关联(Association): 聚合(Aggregation): 合成(Composition): 泛化 ...
- Es6对象的扩展和Class类的基础知识笔记
/*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...
- C++ 类模板基础知识
类模板与模板类 为什么要引入类模板:类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类 ...
- 正则表达式、Calendar类、SimpleDateFormat类、Date类、BigDecimal类、BigInteger类、System类、Random类、Math类(Java基础知识十四)
1.正则表达式的概述和简单使用 * A:正则表达式(一个字符串,是规则) * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * B: ...
- File类最基础知识
package File; /** * 创建一个文件: * 判断是否存在,若存在,则创建,若不存在,则删除,最后输出文件是否存在. */ import java.io.File; import jav ...
- C#基础知识之父子类,实例、静态成员变量,构造函数的执行顺序(经典示例)
父子类.示例.静态成员变量.构造函数的概念的基础理解完全可以利用下面的示例诠释,非常经典,直接上代码: public class ShowInfo { public ShowInfo(string i ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素
[源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...
随机推荐
- 本地图片上传服务器返回在线地址接口 - file - input -修改头像-带预览功能- 然后使用cropperjs 进行裁剪
说明:上传的图片是 file 类型 ,核心就是获取图片文件(file类型的) : 实现一:使用 vant2 的图片加载组件 ,选择文件后会触发afterRead方法 ,参数 file 就是文件列表fi ...
- Windows安全中心在手动删除威胁文件后无法处理,一直显示有威胁
从网络上找到了一个简单靠谱的解决方案,与众位分享: 找到C:\ProgramData\Microsoft\Windows Defender\Scans\History\Service\Detectio ...
- vue中事件总线bus的用法
./util/Bus.js import Bus from 'vue'; let install = function (Vue) { // 设置eventBus Vue.prototype.bus ...
- Derivative norm vector repect to time 《PBM by Pixar》 Appendix D.2 code
目录 1 Derivative normal vector repect to time 1.1 Derivative vector norm repect to time X Ref Vector ...
- MIT 6.002 Circuits and Electronics by Prof. Anant Agarwal
官网:MIT 2007 Circuits and Electronics 参考资料,课程讲义,课程PPT. 国内的电路像石群老师,罗先觉老师,讲的很细致,也许跟教材有关系,像电阻串并联的等效电阻就用了 ...
- Windows编译运行webrtc全过程,并实现屏幕共享
文章分为三部分,代码获取/编译/运行. 第一步获取代码,打开cmd执行以下指令即可 set WORKSPACE=E:\webrtc mkdir %WORKSPACE% cd /d %WORKSPACE ...
- redis哨兵模式下主从切换后,php实现自动切换
redis的哨兵模式,在主服务器挂掉后,会通过选举将对应的从服务器切换为主服务器,以此来达到服务的高可用性. 在业务层面如果主从做了切换可能相对应的服务器IP地址会发生改变,这样会带来程序的的正常运行 ...
- PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]
题目来源:Jarvis OJ https://www.jarvisoj.com/challenges 题目名称:Level0 题目介绍: 属于栈溢出中的ret2text 意思是Return to ...
- Rust编程与项目实战-结构体
<Rust编程与项目实战>(朱文伟,李建英)[摘要 书评 试读]- 京东图书 (jd.com) 在Rust中,结构体(Struct)是一种自定义数据类型,它允许我们将多个相关的值组合在一起 ...
- 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现六
一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...