📜  使用真实世界场景理解 OOP 和抽象

📅  最后修改于: 2022-05-13 01:54:45.840000             🧑  作者: Mango

使用真实世界场景理解 OOP 和抽象

面向对象编程:顾名思义,面向对象编程或 OOP 是指在编程中使用对象的语言。面向对象编程旨在在编程中实现继承、隐藏、多态等现实世界的实体。在本文中,我们将讨论这个 OOP 的概念是如何在现实世界场景中实现的。

让我们考虑一个想要在线学习Java完整课程的 Geek 示例。他选择了其中一个资源来了解提供Java课程的各种平台。假设他选择 Google 并搜索课程。一旦 Google 接受请求,它将执行各种操作来执行请求,直到请求得到处理。下图演示了执行的步骤:

一种以 OOP 概念观察世界的方式

下面是演示类的实现,它演示了上图中提到的步骤:

// Java Program to demonstrate
// the above steps
  
// Here, Geek is a class
class Geek {
  
    // Until no request the
    // value will be false
    boolean value = false;
  
    private String request = "";
  
    // Constructor of Geek
    Geek(String request)
    {
        // The value becomes true
        // once the constructor called
        // or when the object created
        value = true;
  
        this.request = request;
  
        System.out.println(
            "Geek Requested: "
            + request);
    }
  
    public String getRequest()
    {
        return this.request;
    }
}
  
// A google class
class Google {
  
    private String request;
  
    // Constructor of Google
    Google(String request)
    {
        this.request = request;
        System.out.println(
            "Google Searched: "
            + request);
    }
  
    // This class may also contains methods
    // through which the request passes
    // messages to further more objects
    // and also send back a response
}
  
// Demo class to understand
// A way of using abstraction
public class MainDemo2 {
  
    // Driver code
    public static void main(String[] args)
    {
        // Geek class object creation
        Geek g = new Geek("Java");
  
        // Checking whether Geek
        // has requested or not
        if (g.value) {
  
            // If the Geek requested
            // Google object created
            Google gl = new Google(g.getRequest());
  
            // Google performs some action
            // To satisfy the Geek with his
            // Desired result
        }
    }
}
输出:
Geek Requested: Java
Google Searched: Java

上述程序的示意图:
程序

从上面的例子中,让我们了解面向对象设计中使用的不同术语:

  1. 代理和社区:
    1. 代理:社区中的每个对象都充当了上述示例中的代理(即),我们可以说 Geek、Google 和其他额外的对象都被称为代理。每个代理都会执行一些操作,并且社区的其他成员正在利用这些操作来解决问题。
    2. 社区:它是由行动创造的。在上面的例子中,我们可以说搜索引擎社区已经形成。

    因此,在上面的例子中:

    Agents: Geek, Google, and other objects
    Community: Search engine community
    
  2. 消息和方法:
    1. 消息:每条消息都可能是传递给社区其他成员的请求或响应。
    2. 方法每个方法都用于在社区中执行一个动作,该动作将被社区的其他成员用来解决各种问题。
  3. 职责:从上面的示例中,我们可以观察到,一旦 Geek 将请求传递给 Google,它就会接受该请求并执行各种操作以向他提供所需的结果。这意味着如果代理接受请求,代理有责任执行请求,直到问题解决。

最后,我们可以得出结论,我们已经实现了数据或抽象的隐藏,通过这样的方式实现系统,当 Geek 通过请求时,Google 执行的操作对他隐藏以获得所需的结果。