📜  Java中的参数化和规范抽象

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

Java中的参数化和规范抽象

参数化抽象和规范都是Java中的重要方法。我们这样做是希望通过将用户需求的属性和细节实现分开来简化我们的分析,通过向用户显示必要部分并隐藏某些细节以用于安全、维护等各种目的。

  • 抽象在很多方面帮助我们,就像一种简单的方式来安排代码。
  • 它还有助于将大步骤分解为小步骤。
  • 它对于抑制细节和简化交互很有用。
  • 抽象在改进项目的维护部分方面起着重要作用。

例子:

基本上抽象是一种通过隐藏它们背后的所有机制来提供简单性的方法。例如,当有人打电话给您时,您会在屏幕上看到 xyz 正在用绿色图标呼叫您接收,红色图标带有拒绝选项和一些消息选项,但是,您看不到的是某人如何使用的所有后端机制正在通过点击屏幕上的图标告诉您如何接收/拒绝或给某人发短信,它将如何连接到呼叫者的所有事情。这种抽象使事情变得简单。

Java
// A sample program to demonstrate
// Abstraction program in Java
  
// Consider a Student_Record class.
  
abstract class Student_Record {
    
    // It's an Abstract method does
    // not contain body.
    public abstract void Student_Fee_Record();
  
    // Student_Info is a normal method.
    public void Student_Info()
    {
        String name = "Ashish";
        int roll_no = 12345;
        System.out.println("Hello! " + name
                           + " your roll_no is :"
                           + roll_no);
    }
}
  
// Student_marks is a subclass which
// is extended from Student_Record.
class Student_Fee extends Student_Record {
    public void Student_Fee_Record()
    {
        int Fee = 1000;
  
        // Here is provided body of
        // Student_Fee_Record().
        System.out.println("Fee :" + Fee);
    }
}
  
class Student_Data {
    public static void main(String[] args)
    {
         
      // Create a Student_Fee object
       Student_Fee s1 
            = new Student_Fee();         
        s1.Student_Fee_Record();
        s1.Student_Info();
    }
}


Java
class Abstraction {
  
    // Abstraction by parameterization
    int Even(int x)
    {
        if (x % 2 == 0)
            return x;
    }
}


Java
int Even(int x)
  
{
  
    // REQUIRES: num x is only integer
    // MODIFIES: system.out
    // EFFECTS : is num x % 2==0
    // then num x is even else it is odd.
    if (x % 2 == 0) {
        system.out.print(num + "is even ") else system.out
            .print(num + "is odd")
    }
}


Java
import java.util.Scanner;
  
class CheckEvenOdd {
  
    // REQUIRES:num x is only integer
    // MODIFIES:System.out
    // EFFECT:is num x % 2 == 0
    // then x is even else odd
  
    public static void main(String args[])
    {
        int num;
        System.out.println("Enter an Integer number:");
  
        Scanner input = new Scanner(System.in);
        num = input.nextInt();
  
        if (num % 2 == 0)
            System.out.println("Entered number is even");
        else
            System.out.println("Entered number is odd");
    }
}


输出 :

Fee :1000
Hello! Ashish your roll_no is :12345

抽象方法:

  • 通过参数化抽象。
  • 按规范抽象。

通过参数化抽象:

它通过用参数替换数据来抽象出数据的身份。

例子 -

x % 2  =  0

它描述了一种计算,当我们将数字 x 除以 2 时,余数等于 0,我们用它来确定给定数字 x 是否为偶数。

x : int(x % 2 == 0)(y)

它的含义相同

y % 2==0

在更熟悉的符号中,我们可以用下面给出的以下表达式来表示前面的表达式。

Java

class Abstraction {
  
    // Abstraction by parameterization
    int Even(int x)
    {
        if (x % 2 == 0)
            return x;
    }
}

按规范抽象:

它从实现细节(模块如何实现)抽象为用户可以依赖的行为(模块做什么)。它将模块与彼此的实现隔离开来。

它允许我们从过程主体描述的计算中抽象出来,直到该过程被设计完成。我们通过将每个过程与其预期效果的规范相关联,然后考虑基于此规范而不是基于过程主体的过程调用的含义来实现这一点。

奇偶过程:

Java

int Even(int x)
  
{
  
    // REQUIRES: num x is only integer
    // MODIFIES: system.out
    // EFFECTS : is num x % 2==0
    // then num x is even else it is odd.
    if (x % 2 == 0) {
        system.out.print(num + "is even ") else system.out
            .print(num + "is odd")
    }
}

例子:

在这个程序中,您将看到如何为用户编写逻辑,例如用户只想输入任何数字,并且只是想知道给定的数字是奇数还是偶数,下面给出程序的逻辑来检查偶数和任何用户输入数字的奇数。

Input : 11
Output : Odd

Input : 52
Output : Even

Java

import java.util.Scanner;
  
class CheckEvenOdd {
  
    // REQUIRES:num x is only integer
    // MODIFIES:System.out
    // EFFECT:is num x % 2 == 0
    // then x is even else odd
  
    public static void main(String args[])
    {
        int num;
        System.out.println("Enter an Integer number:");
  
        Scanner input = new Scanner(System.in);
        num = input.nextInt();
  
        if (num % 2 == 0)
            System.out.println("Entered number is even");
        else
            System.out.println("Entered number is odd");
    }
}

输入:

78

输出 :

Enter an Integer number:
78
Entered number is even