锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

面向对象(一):面向对象的基础概念

时间:2022-10-11 19:00:01 塑封包胶电位器

面向对象是从事程序开发的重要话题,但并不是每个从业者都能充分理解什么是面向对象。他们中的大多数人使用面向对象编程语言向过程的脚本。

首先确定统一的认知:面向对象的语言不等于面向对象的编程

面向对象语言:

语言本身支持具有编程特征的语言,如包装、继承和多态

面向对象编程:

这是一种思维方式。使用C语言仍然可以实现面向对象的逻辑。同样,使用它C#、JAVA面向对象的语言也可以实现面向过程逻辑

一、面向对象和面向过程

两者都不是针对编程语言,而是思维方式。

面向过程:数据结构 算法

面向过程是指在解决问题或完成问题的过程中,依次执行所有步骤,直至结束,如移动装配线,先安装主板,然后安装CPU等待零件,然后安装屏幕,然后检测,然后装箱,最后塑料密封(过程可能会遗漏,重点是这种模式)。每一个步骤都需要等待上一个步骤完成之后才可以继续,依赖关系很紧,这种就叫做面向过程

面向对象:对象 交互

对象是指解决问题或完成问题,只需要一个简单的操作(参考),如打开空调,只需按遥控按钮,空调开始运行,我们不需要知道空调的运行原理,只是触发开关,完成任务,依赖不那么紧,这被称为对象。

面向过程与面向对象的本质区别在于重点和复杂性。

面向过程中的每一步都会成为我们关注的焦点。如果我们有更多的关注点,复杂会很高,而面向对象的关注点很少,复杂度也很低。

直观的观点是,面程是针对一个问题或事项,改变类似的事情,或者必须做很多改变来完成,但即使面向对象改变了类似的问题,只需要完成类似问题的特征,你就可以很容易地达到目的。

因此,面向对象的扩展和移植将更容易、更方便,复用性和通用性将相对较高。

总结一句话:面向过程是高耦合、低内聚、低耦合、高内聚

二.理解面向对象的基本概念

面向对象领域的基本要素:对象、抽象、接口、抽象、包装、继承、多态

1) 类

物以类聚这个词可以很好地解释什么是类。花、草、树统称为植物,马、牛、羊统称为动物里的植物和动物是类,可以得出结论:类是一组类似事物的总称。

在生活中,相似意味着有些东西有相同的特征和行为。在程序中,类别可以通过相似的功能或属性提取。属性是名词、特征、功能(方法)是动词和行为。

Android手机和苹果手机都有形状、颜色、价格等属性。它们都有电话和其他功能。提取这些特征和行为后,转换为代码:

public class Phone {     private string _color;     private string _price;     private string _shape;      public void CallUp()     {         //Do Something     } }

这里有一个问题,不仅有手机、智能手表等设备,还有形状、颜色、价格、打电话等特点。Phone类别不合适吗?这是肯定的,所以会引起一个问题:

如何提炼/定义类?什么样的提炼取决于观察角度。角度决定观点。当我看手机时,Android手机和苹果手机是一类,当我看智能设备时,Android手机、苹果手机和智能手表是一类。从某种角度来看,所有具有相似特征的东西都是一类。

定义类后,应选择特征并遵循程序该方法应保持单一功能

例如,地址是一个属性,通常会写xx省xx市xx区xx街道xx社区,这个属性可以直接写一个Address声明出来了,但是当其他省份邮寄快递时,只会使用xx省略此信息,然后发送到xx省,然后依次获取信息,直到送到目的地,只通过一个Address会暴露出大量的信息,所以要提取成 省、市、区、街道,小区 根据需要访问五个不同的属性。

如果方法包含太多的行为,就会有很多判断和逻辑和巨大的长度,例如,玩,这种行为包含太多的内容,打篮球,打乒乓球,打羽毛球,是玩,所以分别实现具体的行为,分为多种方法。

2)对象

对象是基于类产生的具体实例或实际对象

手机是类,一加9是对象,华为Mate40是对象。

3)抽象

抽象是提取更相似的部分,从许多事物中提取共同的、本质的特征。

从一组对象中提取,这个过程就是抽象。

抽象的意义在于隔离重点,降低复杂度

对象关系是通过的抽象从特征上看,如果某个对象与某个类别没有联系,那么这个类别就不可能实现这个对象,这个对象和类别只会有互动关系(引用)。

编程领域的软件类不是凭空捏造的,而是依靠现实类拟化的。然而,在编程领域,往往有更多的辅助类不会出现在现实类中。因此,编程领域的软件类是基于现实类,将高于现实类。

现实、现实、软件、软件对象之间的关系是

通过抽象思维,从现实对象中提取现实类,拟化为软件类,实现软件对象。


从这里开始,要理解的知识非常接近编程。

4)接口

接口是一个侧重于交互性质,与互动有关,声明(定义)的集合。

与类别不同,类别方法主要用于处理自己的逻辑和功能。接口主要集中在交互上,没有实现,只是一个有方法声明的集合。当某些类别具有相同的功能时,外部世界需要对不同类别进行自己的调用逻辑,但通过接口可以使用一种通用的方法来调用所有具有该功能的不同类别。

例如,插入不同品牌的鼠标USB与计算机链接的方法,以及计算机上的方法USB接口具有一个接口的特不需要为不同的品牌做不同的事情USB只需通过一个通用的方形接口USB接口可以调用不同品牌、甚至有线、无线等鼠标对象的功能。

同样,界面中也有许多方法声明,USB嘴会声明这些方法,但不一定每个对象都会实现所有的方法。有些鼠标有侧键,有些鼠标没有侧键,但这并不影响它USB当鼠标对象扩展侧键功能时,接口调用鼠标对象的功能USB接口仍然支持。

可以说,界面不会因为某个类别或对象而产生,只有在不同类别/对象需要交互和相同方法时才会产生。

5)抽象类

抽象类实际上是基于类,抽象类高于普通类,如生物分类:纲、目、科、属、种

种子本身就是一组类似事物的总称,在种子的基础上再次抽象,提取类似的特征,形成属,等等。当然,属也是一个类,但严格来说,比如人,只会比人有更广泛的特征,并通过"人属",如果一个特定的对象无法实现,那么这种类称为抽象类。

抽象类的意义在于可以在更大范围内与不同类互动。


这是面向对象的三个特征。

6)封装

封装,字面意思是把一些东西封起来,装成一个整体。密封是为了保护隐私,安装是为了组装和整合。在面向对象领域,包装非常重要。当写一个类是一个包装时,既然是包装,就需要保护隐私,整合这两个关键点。当外界需要访问时,不能直接获得该类的属性和方法。在访问所需的数据之前,需要通过该类本身访问所需的数据。同样,方法也是如此。

包装后,此类/对象只需处理自己范围内的事情。如果需要其他支持,则需要与相应的类/对象进行互动。这样,每个包装都会明确划分责任,降低复杂性,只关注自己。

封装的意义:隔离重点,降低复杂性

7)继承/strong>

继承更好的理解方式是遗传,继承在语义上更偏向于从某个地方把东西拿过来,那之前的地方就不再有这个东西,但编程领域中并不是这样,更像是从某个类遗传了一些东西过来,并形成了一个新的类,新类在遗传的基础上还可以有自己的变化。

继承的意义在于,可以保证从某个类中继承实现的对象,都可以保有相同的特征。

8)多态

多态,最好的理解就是继承,从类使用继承的方式实现了一个对象,在传参中,可以直接把参数类型设置为这个类,传参的时候可以传这个对象。也就是,多态实现了通过一个指向父类的指针或者引用,实现对子类对象的调用

public class Parent
{
    public void Speak()
    {
        Debug.Log("parent speak");
    }
}

public class Son:Parent
{
    public void Speak()
    {
        Debug.Log("sonspeak");
    }
}

public class Main()
{
    public void PersonSpeak(Parent parent)
    {
        parent.Speak();
    }

    public void MainFunc()
    {
        PersonSpeak(new Son());
    }
}

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章