C#可视化编程基础-(类与对象)

C#可视化编程基础-(类与对象)

前言

此章的主要思想是了解程序设计的思想中的“面向对象

在程序设计中,需要处理的事物通常会非常复杂,此时也需要对处理的事物进行分析和总结,抽象出事物的特性和行为,封装成相应的类,最后实例化对象进行操作,这种程序设计的思想,我们称之为"面向对象"(Object Oriented,简称OO)

一、类与对象的基本概念

1.抽象的概念

抽象是指对具体问题进行概括,抽取公共特性并加以描述的过程。

抽象的过程是对问题进行分析和认识的过程

现实中的一切事物皆为对象

举例:

对人类,动物类和汽车类的抽象总结:
1.人类
(1)数据抽象(共同的特征):姓名、性别、年龄和身高等。
(2)行为抽象(共同的行为):吃饭、睡觉和行走等。
2.动物类
(1)数据抽象(共同的特征):名称、主食和栖息地等。
(2)行为抽象(共同的行为):发出叫声、行走和觅食等。
2.汽车类
(1)数据抽象(共同的特征):品牌型号、排量和颜色等。
(2)行为抽象(共同的行为):启动、加速和刹车等。

注:数据抽象是找出需要操作的数据,而行为抽象则是指如何对这些数据进行操作

2.类与对象

(1)类的概念

类是对事物的一种抽象定义,将抽象之后的特征和行为有机地结合起来便构成了类,类是具有共同特征和行为的一类事物的统称

在这里插入图片描述

如上图所示,在人科下有:黑猩猩、人类、直立人等多个分支对象。在猴科下有:猕猴、懒猴、狒狒等多个分支对象。那么也就可以视为,人科是一个类,而在人科类中有黑猩猩、人类、直立人等多个对象。这些对象都有共同的特征以及共同的行为,例如直立人和人类有着极为相似的外形,并且拥有族群意识和与人类极为近似的繁殖方式。故将直立人和人类划分在一个生物科中。

而人科、猴科以及其他拥有相似特征及行为的科属都包含在灵长类这个大类别中,所以可以将灵长类视为一个大类,而人科、猴科以及其他拥有相似特征及行为的科属视为对象。

(2)类的定义

在面向对象编程思想中,具有一系列共同特征和行为的通用类型被称之为类,类是现实世界中一组具有相同属性和方法的对象的集合,其中属性用于描述对象所具有的特征,方法用于描述对象的行为

(3)对象的定义

对象是指:某种可为人所感知的物质或思维、感受或动作所作用的物质或精神体。

例如咱们手中的香烟这个具体的个体可视为对象,咱们用于工作学习的电脑可视为对象,早起用于刷牙的牙刷也可视为对象,也就是说,万物皆为对象。

面向对象编程中,对象是类的实例,是具有特征(属性)和行为(方法)的数据结构。对象是独一无二的具体个体,用于描述现实世界的某个事物,将现实世界的事物模型化

(4)类与对象的关系

类是对一系列对象的抽象,提取了这一系列对象的共同特征以及共同行为,并且对象本身是具体的、客观存在的

例如:书本类是表述所有书籍的类别,它的概念是抽象的。而我手中的《刑法学讲义》则是实体书籍,它的概念是具体的,客观存在的,并且它属于书本类这个类别中,是类别中的一个对象。

二、C#中类与对象的实际应用

1.C#类的实际定义

C#是一种面向对象编程的语言,所以类是组成C#应用程序的基础。C#中的类主要由字段属性和方法组成。

C#定义类的语法如下:

[访问修饰符] class 类名{
	
	类的字段声明;
	类的属性声明;
	类的方法声明;
	
}

注:中括号"[]"中的内容表示可以省略,如果省略表示取默认值,并且定义类时需要使用"class"关键字进行标注表示此段代码定义的是一个类

举例:

	public class NewClass
    {
            string Name;        //姓名
            int age;            //年龄
            double wages;       //工资
		   //定义count方法,用于给员工提薪
            public static double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
    }

2.对象的使用

(1)实例化对象

在类的定义完成后,不能直接进行操作。因为类的概念是抽象的,需要实例化类来创建类的具体对象,然后对具体对象类进行操作

实例化对象语法:

类名 对象名 = new 类名();

举例:

public class NewClass
{
    public string Name;        //姓名
    public int age;            //年龄
    public double wages;       //工资

    public double count(double wages)
    {
        wages += wages * 1.2;
        return wages;
    }
}
static void Main(string[]args)
{
    //实例化对象NewClass,对象名为newClass
    NewClass newClass = new NewClass();
}

注:实例化对象的过程,就是为对象在内存中分配存储空间,并确定对象特征的过程。对抽象概念的类进行实例化,就创建了具体的对象。而关键字new,则是用于在内存中开辟空间

(2)访问类的字段

首先需要明确的是,字段是用于描述事物特征的。在编程过程中,事物特征等同于字段中存储的数据。对象实例化后,可以通过直接访问字段来获取或修改对应的特征值

访问字段语法:

对象名.字段名;

例如:

public class NewClass
{
    public string Name;        //姓名
    public int age;            //年龄
    public double wages;       //工资

    public double count(double wages)
    {
        wages += wages * 1.2;
        return wages;
    }
}
static void Main(string[]args)
{
    //实例化对象NewClass,对象名为newClass
    NewClass newClass = new NewClass();
    //调用类中的Name字段并赋值
	newClass.Name = "张三";
	newClass.age = 18;
	newClass.wages = 1800.23;
    //直接访问实例化对象newClass中的Name字段并输出
	Console.WriteLine(newClass.Name);
}
(3)调用类的方法

类的方法的调用方式和字段的调用方式非常类似。在实例化对象后,使用对象名.方法名进行调用即可

语法:

对象名.方法名(实参列表);

举例:

public class NewClass
{
    public string Name;        //姓名
    public int age;            //年龄
    public double wages;       //工资

    public double count(double wages)
    {
        wages += wages * 1.2;
        return wages;
    }
}
static void Main(string[]args)
{
    //实例化对象NewClass,对象名为newClass
    NewClass newClass = new NewClass();
    //调用类中的Name字段并赋值
	newClass.Name = "张三";
	newClass.age = 18;
	newClass.wages = 1800.23;
     //调用类中的count方法进行提薪操作
	Console.WriteLine(newClass.count(newClass.wages));
}

三、命名空间的概念

1.命名空间的定义

命名空间(namespace)用于将具有相同功能的相似类从逻辑上进行分组,提供了一种组织相关类和其他类的方式,是一种逻辑组合,不是物理组合。可以认为命名空间是电脑中存放文件的文件夹,如果在电脑中存放两个相同名称的文件时,放在同一个文件夹显然是行不通的,所以解决方案就是将两个文件放在两个不同的文件夹内即可完成上述需求,所以,命名空间的空间各自独立,可存放名称相同功能类似的文件

并且,在C#中命名空间分为两种不同形式

  • 系统命名空间
  • 自定义命名空间

系统命名空间是在.NET框架中预定义好的系统命名空间

自定义命名空间则是在实际开发过程中依据业务逻辑或需求,自己独立定义的命名空间

(1)自定义命名空间

自定义命名空间是在实际开发过程中依据业务逻辑或需求,自己独立定义的命名空间。

自定义命名空间语法如下:

namespace 命名空间名

举例:

namespace Demo_Day1
{ 
    //自定义命名空间Demo_Day2,用于存放与Demo_Day1名称功能冲突的NewClass类
    namespace Demo_Day2 
    {
        public class NewClass
        {
            public string Name;        //姓名
            public int age;            //年龄
            public double wages;       //工资

            public double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
        }
    }
    public class NewClass
    {
            public string Name;        //姓名
            public int age;            //年龄
            public double wages;       //工资

            public double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
    }
}
(2)系统命名空间

.NET框架中提供了许多已经定义好的命名空间,这些命名空间称之为系统命名空间,最常用的命名空间如下:

命名空间名说明
System根命名空间,提供最基本的操作
System.Data处理数据存取和管理
System.IO管理对文件、流的同步和异步访问
System.Windows可视化编程中基于窗体的处理
System.Collections包含对集合进行处理的接口和类

2.命名空间的使用

两个放置在不同命名空间的类,如果需要相互操作,则有两种方式进行访问:

  • 导入命名空间访问
  • 使用完全限定名访问
(1)导入命名空间访问

导入命名空间访问需要使用using关键字进行导入,语法如下:

using 命名空间名

举例:

namespace Demo_Day1
{ 
    //自定义命名空间Demo_Day2,用于存放与Demo_Day1名称功能冲突的NewClass类
    namespace Demo_Day2 
    {
        public class NewClass
        {
            public string Name;        //姓名
            public int age;            //年龄
            public double wages;       //工资

            public double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
        }
    }
}
-----------------------------------------------------------------------------------------------------
//使用using调用Demo_Day1命名空间中的Demo_Day2命名空间中的NewClass类
using Demo_Day1.Demo_Day2
    
namespace Demo
{
    static void Main(string[] args)
    {
        NewClass newClass = new NewClass();
    }
}
(2)使用完全限定名访问

使用完全限定名访问的方法就是在指定类时带上完整的命名空间,语法如下:

命名空间名.类名

举例:

namespace Demo_Day1
{ 
    //自定义命名空间Demo_Day2,用于存放与Demo_Day1名称功能冲突的NewClass类
    namespace Demo_Day2 
    {
        public class NewClass
        {
            public string Name;        //姓名
            public int age;            //年龄
            public double wages;       //工资

            public double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
        }
    namespace Demo_Day3
    {
        public class NewClass
        {
            public string Name;        //姓名
            public int age;            //年龄
            public double wages;       //工资

            public double count(double wages)
            {
                wages += wages * 1.2;
                return wages;
            }
        }
    }
    }
}
-----------------------------------------------------------------------------------------------------
//使用using调用Demo_Day1命名空间中的Demo_Day2命名空间中的NewClass类
using Demo_Day1.Demo_Day2
// using Demo_Day1.Demo_Day3 在同一个命名空间有同名类时,不能同时使用using进行声明
namespace Demo
{
    static void Main(string[] args)
    {
        //操作Demo_Day2命名空间中的NewClass类
        NewClass newClass = new NewClass();
        //如果需要同时对Demo_Day2、Demo_Day3同时进行操作,就需要使用完全限定名精确指定
    	Demo_Day1.Demo_Day3.NewClass newClass2 = new Demo_Day1.Demo_Day3.NewClass();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vb.net与c#是微软公司开发的两种面向对象的程序设计语言。 vb.net是Visual Basic的一种改进版本,它是一种易学易用的语言,适合初学者入门。它的语法结构简单清晰,代码书写风格更接近自然语言,因此比较容易理解和编写。vb.net提供了很多方便的功能和工具,可以快速开发Windows应用程序。与c#相比,vb.net对于处理COM组件和互操作性更为方便,适用于一些老式的系统和项目迁移。 c#是一门更加强大和灵活的语言,它的语法和C/C++类似,同时又结合了面向对象和组件开发的特点。c#拥有更多的功能和特性,比如匿名方法、泛型、LINQ等,可以编写更高效和复杂的程序。c#广泛应用于Web应用程序、手机应用程序和游戏开发等领域。与vb.net相比,c#更加注重性能和效率,适用于大型的项目开发。 虽然vb.net和c#语言上存在一些不同,但它们都是面向对象的语言,只是在语法和特性上略有差异。所以对于有基础的程序员来说,学习另一种语言并不困难,只需花一些时间来了解和适应其中的差异。 总的来说,vb.net适合初学者或者对简单程序需求的开发者,c#对于需要性能、复杂性和灵活性较高的项目更为适用。无论选择哪种语言,掌握基本的编程原理和逻辑思维都是非常重要的。 ### 回答2: VB.NET和C#是.NET平台上两种常见的编程语言,它们都是由微软公司开发的,并且都具备类似的语法和功能。 首先,VB.NET是Visual Basic的后续版本,在语法上保留了部分Visual Basic 6.0的特性。它的语法相对来说更加容易学习和理解,代码的可读性较高。VB.NET的开发速度较快,适合用于快速原型的开发和初学者学习编程。此外,VB.NET支持事件驱动编程,有丰富的图形用户界面(GUI)开发工具和库。虽然VB.NET在一些社区和开发者群体之间不如C#流行,但仍然在一些特定的应用场景中有着广泛的应用。 而C#是一种更加现代化和强大的编程语言,更加严格和规范。C#拥有更多的编程特性,比如面向对象编程和泛型等高级功能,开发者可以更加灵活地处理复杂的问题。C#的代码更加简洁、规范,可读性较高,它的运行效率也相对较高。C#在跨平台和服务器端开发领域有着广泛的应用,特别是在.NET Core的推动下,C#已经成为了一种非常受欢迎的编程语言。 总之,VB.NET和C#在语法和功能上存在一些差异,选择使用哪种语言主要取决于开发者的个人喜好、项目需求以及技术栈。无论选择VB.NET还是C#,都可以在.NET平台上进行完美的应用开发。 ### 回答3: # VB.NET和C#都是微软公司为开发者提供的两种主要的编程语言。它们都属于.NET平台下的语言,并且都可以用于开发各种类型的应用程序,包括桌面应用、Web应用、移动应用等。 VB.NET(即Visual Basic .NET)是VB语言的升级版本,在.NET框架下具有更强大的功能和更高的性能。它是一种易学易用的编程语言,注重可读性和可维护性,适合初学者入门。VB.NET采用面向对象的编程思想,具有丰富的类库和快速开发工具,能够快速构建应用程序。VB.NET在Windows平台下得到了广泛应用,并且具有优秀的可视化编程能力,可以通过拖拽控件的方式进行UI设计。 C#(即C Sharp)是一种现代化的面向对象编程语言,由微软开发C#语言的语法与C和C++较为相似,易于掌握。它具有高效的执行速度和强大的功能,支持LINQ查询、异步编程等特性。C#适用于跨平台开发,并且具有良好的可扩展性和可移植性。C#在.NET平台下得到了广泛应用,尤其适合开发Web应用和桌面应用,其对于.NET平台的集成开发环境(IDE)Visual Studio也非常强大。 总结来说,VB.NET和C#是两种功能强大的编程语言,它们在语法、语义等方面虽有一定的差异,但都可以用于.NET平台下的应用程序开发。选择VB.NET还是C#主要取决于个人偏好、项目需求以及和其他开发人员的协作等因素。无论选择哪种语言,都可以通过学习它们的特性和使用场景,为开发高质量的应用程序提供支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值