、编程基础
一、面向对象的三大特性
1、封装:
盒子、零件、按钮
隐藏对象 的内部状态,并且只通过对象的方法来访问数据
想象你有一个小盒子(这个盒子就是一个类),里面装着一些零件(这些零件就是数据)。
现在,你不希望其他人直接接触到这些零件(数据/属性),因为他们可能会破坏或误用它们。
所以,你在盒子上安装了一些按钮和开关(这些按钮和开关就是方法),
当其他人需要使用零件(数据/属性)时,他们只能通过按下这些按钮或开关来间接地操作零件。
好处
1、保护数据:通过限制外部对数据的直接访问,可以防止数据被意外或恶意地修改。
2、提高可维护性:如果内部实现发生变化,只需要更新类的内部逻辑,不需要修改外部代码。
3、简化接口:用户只需要关心如何使用提供的方法,而不需要了解内部的具体实现细节。
2、继承
公司规定、部门落实
父类是模板,子类是具体的落实实现
继承了父类的所有属性和方法,并且可以添加或覆盖父类的行为以定义自己的行为
继承(Inheritance)是面向对象编程中的一个重要概念。它允许我们创建一个新类(子类),并从一个已有的类(父类)中继承属性和方法。想象你有一个基本的“动物”模型(父类),它包含了所有动物共有的特征和行为,例如“吃”和“睡觉”。现在,如果你想创建一个“猫”模型(子类),你可以直接从“动物”模型中继承这些共有特征和行为,而不需要重新定义它们。在这个例子中,“猫”模型是“动物”模型的子类,意味着它自动拥有了父类的所有特征和行为。同时,你也可以在“猫”模型中添加一些猫特有的特征和行为,例如“抓老鼠”。
好处
1、代码重用:避免重复编写相同的代码。
2、提高可维护性:如果父类的行为发生了改变,所有子类也会自动更新。
3、实现多态性:子类可以覆盖父类的方法,提供自己的实现方式。总之,继承就像是一个模板系统,你可以从一个基本模板中继承共有特征,然后添加独特的特征来创建新的模型
3、多态
叫,是一个通用的接口/方法,狗叫、猫叫、牛叫,均为自己特性的响应。
使用父类的接口来调用子类的实现, 而不需要修改原来的代码
多态(Polymorphism)是面向对象编程中的一个关键概念。它允许我们使用同一个接口(方法或函数)来执行不同的操作。想象你有一个遥控器,可以控制不同类型的电器的开关,例如电视、音响和灯光。每个电器都有一个“打开”按钮,但按下这个按钮会产生不同的效果:电视会显示画面,音响会播放音乐,灯光会亮起来。在这个例子中,“打开”按钮就是一个多态的接口,不同的电器(对象)可以根据自己的特性来响应这个接口的调用。这种机制使得我们可以编写通用的代码来控制不同类型的对象,而不需要针对每种类型的对象编写特定的代码。
好处
1、提高代码的灵活性和可扩展性:只需要添加新的对象类型,而不需要修改现有的代码。
2、简化代码的复杂度:使用同一个接口来处理不同类型的对象,降低了代码的复杂度。
3、实现更高级的编程技巧:例如策略模式、工厂模式等。总之,多态就像是一个通用的接口,可以被不同类型的对象所实现和响应。这种机制使得我们的代码更加灵活、可扩展和易于维护。
二、对面向对象的理解
类是对象的模板,实例是(根据这个模板创建的)具体对象
在面向对象编程中,类和实例是两个不同的概念。1、类:类是一个蓝图或模板,用于创建对象。它定义了对象的属性(数据)和方法(行为)。
类本身不是一个对象,它只是一个抽象的概念,用于描述一组具有相似特征和行为的对象。2、实例:实例是根据类创建的具体对象。
每个实例都有自己独特的状态(属性值),并可以执行类中定义的行为(方法)。实例是真正的对象,可以被操作和交互。可以将类比作一个车的设计图纸,而实例则是根据这个设计图纸生产出来的具体车辆。设计图纸(类)本身不是一辆车(对象),但它描述了如何制造一辆车(创建实例)。
一旦车辆被生产出来(实例被创建),每辆车都有自己的颜色、型号等特征(属性),并可以启动、加速等(方法)。
向对象编程是一种编程范式,它将现实世界中的事物抽象为对象,并将对象组合成更大的系统。在面向对象的编程中,我们定义类来描述对象,类定义了对象的属性和方法。
通过使用类,我们可以创建多个具有相同属性和方法的对象实例
三、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么?
1、如何理解结构化程序设计
单位是一个积木块,都是小局部,通过拼接组合
想象你有一堆乐高积木(代表代码块),你需要按照特定的步骤来建造房子。首先,你可能会建造一个基础结构(代表主函数),然后再逐步添加墙壁、屋顶和门窗(代表不同的函数或过程)。每个步骤都非常清晰,易于理解和执行。例如,在编写一个计算器程序时,结构化程序设计可能会把代码分解为以下步骤:1、获取用户输入。
2、解析输入并确定要执行的操作。
3、执行所需的计算。
4、显示结果。每个步骤都像是一个独立的乐高积木块,可以单独完成,最后组合成一个完整的房子(程序)。
2、如何理解面向对象程序设计
单位是一个建筑物,都是个体,通过关系组合
想象你有一个完整的乐高城镇(代表对象),其中每个建筑物(代表对象)都有自己的特点和功能。例如,一个房子可能有门、窗和屋顶,而一个商店可能有货架和收银台
每个建筑物都可以独立存在,并且可以与其他建筑物交互。在编写同样的计算器程序时,面向对象程序设计可能会定义以下对象:1、UserInput对象: 负责获取用户输入。
2、Calculator对象: 负责执行计算。
3、Display对象: 负责显示结果。这些对象可以相互通信和协作,形成一个完整的系统(程序)。例如,UserInput对象可以将输入发送给Calculator对象,Calculator对象可以执行计算并将结果发送给Display对象。
3、她们二者的关系
结构化程序设计更像是一步步手动建造一个房子,
而面向对象程序设计则更像是一个已经存在的小城镇,你只需要将不同的建筑物组合在一起就可以了。
前者更注重程序的流程和顺序,后者更注重对象之间的关系和交互。