5分钟让你明白面向对象编程

152 阅读4分钟

照片:Lagos TechieonUnsplash

说到面向对象的编程,我发现许多教程使这个概念的理解变得复杂。为了很好地理解它,让我们了解它所解决的问题。

在过去,我们有程序性编程,它将一个程序划分为一组函数,这些函数对数据进行操作。

但是随着程序的增长,我们得到了许多相互之间相关的函数。

当我们对一个函数进行修改时,可能会破坏其他函数,这是有问题的。

因此,OOP(面向对象的编程)来解决这个问题。它有4个小概念。封装、抽象、继承和多态性。

1- 封装

这意味着将一组相关的字段和功能创建为一个单元,称为对象。

我们把这些字段称为属性,把这些功能称为方法。

例子。

一个教师有一些属性,例如基本工资、加班费、工资率,作为一个方法,例如getWage(),以及更新属性值的setters和获取属性值的getters。

package com.selcote.abstraction;
public class Employee{

正如你所看到的,getWage()方法没有参数,它访问对象的属性并对其进行操作,不需要向它传递参数。这也是最好的做法之一,没有参数的方法。

参数的数量越少,使用和维护该函数就越容易。

除此之外,我们还将属性设为私有,我们可以通过设置器和获取器来访问它们,这就将结构化数据对象的值或状态隐藏在一个类中,防止未经授权的人直接访问它们。

2- 抽象

这种技术是关于从外部隐藏细节的,这给我们带来了很多好处。

我们可以通过将许多对象的方法变成私有的来隐藏它们,而只暴露少数的公共方法。

因此,通过这样做,我们可以使我们的对象界面更加简单。

使用和理解一个具有较少方法和属性的对象,要比一个具有许多方法和属性的对象好。

同时,这个概念也减少了变化的影响,这意味着如果你改变了任何私有的或内部的方法,这将不会泄漏到外面。因为这些方法或属性都不被这个包含对象的外部所知道。

另外,我们可以只向外界公开一个接口,而实现将在运行时被定义。

例子。

package com.selcote.abstraction;  
public interface Car {  
package com.selcote.abstraction;
public class ManualCar implements Car {   
   @Override  
   @Override  
package com.selcote.abstraction;
public class AutomaticCar implements Car { 

让我们测试一下汽车功能。

package com.selcote.abstraction;
public class CarTest {  
       Car car1 = new ManualCar();   

的输出。

turn on the manual car

客户端程序只知道汽车和汽车提供的功能。

内部的实现细节对客户端程序是隐藏的。

3- 继承性

这种机制使我们能够消除多余的代码。

让我们考虑一下html元素,如TextBox、Select、CheckBox等。这些元素有一些共同点,如hidden和innerHtml属性以及click()和focus()等方法。

与其为每一种类型的 Html 元素重新定义这些属性和方法,我们可以在一个叫做 HtmlElement 的通用对象中定义这些属性和方法,并让其他对象继承它。

4- 多态性(Polymorphisme

如果我们试着理解这个组成名称,Poly 意味着许多,而 morphism 意味着形式,所以 :

多态性=许多形式

这是一种技术,可以摆脱if和else或switch语句。

所以,多态性是指一个方法能够根据它所作用的对象做不同的事情。换句话说,多态性允许你定义一个接口并有多个实现。

例子。

public class Animal{
class Dog extends Animal{

输出。

Barking
class Cat extends Animal{

输出。

Meow

总结。

OOP解决了很多问题,简化了编程领域。

封装 => 减少复杂度 + 增加可重复性

抽象 => 减少复杂度 + 减少代码变化的影响

继承 => 消除冗余的代码

多态性 => 重构if/switch case语句

在评论中与我分享你的想法,并拍手叫好:-)

另外,请考虑在媒体上关注我,并订阅我的频道:Selcote(解决问题的社区),以获得更多精彩内容。

推荐书籍

清洁代码。敏捷软件工匠精神手册

首要的设计模式。聪明的指南》(A Brain-Friendly Guide

清洁的架构

► 电脑和显示器

新的苹果MacBook Pro

戴尔27英寸Ultrasharp U2719D显示器

双臂支架桌面支架

USB C枢纽多端口适配器

我用于编码的IDE。

- 英特利杰
-Vscode


面向对象的编程5分钟》最初发表在《Dev Genius》杂志上,人们通过强调和回应这个故事来继续对话。