SAP-ABAP开发学习-面向对象OOALV(1)

本文目录

一、概述

面向对象开发特点

二、类与对象

程序中类的创建

Class构成要素

对象

方法

一、概述

        随着SAP R/3 4.0版本的开发,ABAP语言开始引入了面向对象的开发概念。这在ABAP语言的发展过程中,面向对象(Object-oriented)的概念被引入,ABAP对象成为了ABAP语言的扩展,它集合了Java、C++、Smalltalk等语言的特点,并与原有的ABAP语言无缝集成。

        在面向对象的解决方法中,重点在于对现实生活中的对象进行结构化或抽象化。这涉及到对象的两个核心概念:属性(Attributes),即对象的属性和特征;方法(Method),即定义对象的行为。

        采用面向对象的方法带来了许多优点,其中之一就是可以重复利用代码。相比于传统的ABAP,面向对象的ABAP允许开发者重用部分代码,提高了开发效率。此外,类(Class)的概念还允许封装数据,增强了代码的安全性和可维护性。

面向对象开发特点

1. 抽象(Abstraction) 实现客观世界实体的模块化
2. 封装(Encapsulation) 就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
3. 继承(Inheritance) 它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展
4. 多态(Polymorphism) 允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

二、类与对象

        对象是类的实例,它代表了现实世界中的个体。类可以看作是对象的类型或模板,而对象则是这个模板的具体实现。要使用所需功能的对象,首先要经过根据类定义对象的过程。这个过程称为实例化,通过实例化,我们可以根据类创建具体的对象,这些对象被称为实例(Instance)。
CLASS:类是创建对象的模板,它定义了一组具有相同属性和方法的对象的结构和行为。
OBJECT:对象是指商品、物体、对象或目的,它是类的实例,具体代表了类定义的一个个体。

在ABAP中,类的区分主要分为全局类和本地类:
全局类(Global)是通过事务代码SE24创建的,它们存储在类池中,也就是ABAP程序的Repository中的Class Library。所有ABAP程序都可以对其进行访问,这使得全局类具有广泛的可用性。
本地类(Local)是在程序中定义的,它们仅在该程序内部可见和使用。本地类的定义和实现都局限于单个ABAP程序,因此只有该程序可以使用这些本地类。

程序中类的创建

        定义类的构成项目(属性、方法、事件) CLASS <class> DEFINITION. 要素声明 所有项目都需要定义在三个访问区域之一中 ENDCLASS.
实现类的方法 CLASS <class> IMPLEMENTATION. .....ENDCLASS.

三个访问区域:
Public Section. 公有部分 内部可见,外部可见;PUBLIC部分的组件,构成类与用户的接口
Protected Section. 保护部分 内部可见,继承可见,外部不可见;PROTECTED部分的组件,构成继承类之间的接口
Private Section. 私有部分 内部可见,继承不可见,外部不可见

Class构成要素
  • 实例组件(Instance-specific component)参照类创建对象时,内存中存在的项目,每次创建对象时都会被初始化。各个类的对象中都存在 声明方式:属性:DATA;方法:METHODS。访问:OBJECT->COMP
  • 静态组件(Static component) 遇到创建类的语句(CREATE OBJECT)开始,直到程序结束都存储于内存中,是依赖类存在的项目。即使不创建对象,若已存在与内存中即可以直接使用。 声明方式:属性:CLASS-DATA;方法:CLASS-METHODS。访问:CLASS=>COMP

        类的所有要素在声明部分实现(Class Definition),这包括了属性(Attributes)、方法(Method)和事件(Event)。
属性(Attributes)可以拥有ABAP所有数据类型的类内部数据字段,对象状态由属性决定,这些属性在类中使用DATA或CONSTANTS关键字声明。
方法(Method)用来定义决定对象行为的类内部执行步骤,它可以访问类的所有属性,并且可以通过方法修改对象的内容。此外,方法提供传入传出参数,便于用户交互。
事件(Event)是事件是没有继承关系的类之间可以互相调用彼此方法的特殊方法,它使得类能够触发并通知其他类某个特定情况的发生。

例实例属性和静态属性:

CLASS lcl_compt DEFINITION . "定义类的项目
  PUBLIC SECTION ."说明范围 公有
*实例属性
  DATA GV_CHAR TYPE C LENGTH 10 VALUE 'CHAR' .
  CLASS-DATA GV_STATIC TYPE C LENGTH 20 VALUE '静态属性' .
*实例方法
  METHODS WRITE_CHAR .

*静态方法
  CLASS-METHODS WRITE_STATIC .

  PROTECTED SECTION . "保护部分可以被集成类(子类)访问:自己/子类

  PRIVATE SECTION ."私有部分不能被其他类访问:自己

ENDCLASS .


CLASS lcl_compt IMPLEMENTATION . "定义类中的方法的内容
  METHOD WRITE_CHAR .
    WRITE: / GV_CHAR .
    WRITE: / GV_STATIC .
  ENDMETHOD .

  METHOD WRITE_STATIC .
    WRITE:/ '静态方法' , GV_STATIC .
  ENDMETHOD .
ENDCLASS .

*声明一个对象
DATA LCL_OBJECT TYPE REF TO LCL_COMPT .
DATA LCL_OBJECT2 TYPE REF TO LCL_COMPT .

START-OF-SELECTION .
CREATE OBJECT LCL_OBJECT ."实例化
CREATE OBJECT LCL_OBJECT2 .
WRITE :/ '访问实例属性', LCL_OBJECT->GV_CHAR .
LCL_OBJECT->GV_CHAR = '更换CHAR的值' .

CALL METHOD LCL_OBJECT->WRITE_CHAR . "实例1的值
CALL METHOD LCL_OBJECT2->WRITE_CHAR ."实例2的值

*静态属性,不依附于实例
WRITE:/ '访问静态属性:',LCL_COMPT=>GV_STATIC ."访问静态属性
LCL_COMPT=>GV_STATIC = '更换静态属性的值' .
CALL METHOD LCL_COMPT=>WRITE_STATIC .
对象

        对象指的是类的实例,每个对象都有自己固有的属性。 一个类可以创建多个对象。 在ABAP程序中要访问对象,需要使用参照对象(Object Reference),参照对象始终存在于参照对象变量中。声明语句:DATA    obj TYPE REF TO class.

方法

        方法定义的基本语法:METHOD <meth>
                                                IMPORTING … <i1> TYPE <type> ….
                                                EXPORTING… <e1>TYPE <type> …
                                                CHANGING … <c1>TYPE <type> …
                                                EXCEPTIONS … X1…
CALL METHOD [oref->|class=>]meth     
EXPORTING … i1 = f1…     
RECEIVING       R  = h .

~IMPORT/EXPORT:数据输入/输出接口,接口参数可以参考单个变量,结构,或者内表 ~CHANGING:同时作为输入输出接口,接口参数可以参考单个变量,结构,或者内表 ~RETURNING:返回类传递数值。该定义不能和CHANGING/EXPORTING同时使用 ~EXCEPTIONS:返回执行中所出现的错误
类函数可以拥有多个输入参数,但只能有一个输出参数。类的输出接口参数必须与类函数中所定义类型保持一致。

方法的调用
当方法没有输出参数(EXPORTING)的时候可以通过以下方式调用: ①CALL METHOD meth().  没有输入参数 ②CALL METHOD meth( a ). “ 一个输入 ③CALL METHOD meth( f1 = a1………fn = an ) . “N个输入。

构造方法
在实例化对象时,自动完成对象的初始化,并且这个对象是空的。如果希望每一个对象都为其初始化某些特征,需要用到构造方法。构造方法没有返回数据类型,其功能是在实例化类时完成一些初始化工作。使用 METHODS CONSTRUCTOR 定义构造方法,或使用 CLASS-METHODS CLASS_CONSTRUCTOR 定义类的静态构造方法。每个类只能有一个构造方法,在 CREATE OBJECT 语句中自动调用构造方法。

什么时候使用构造方法呢?以下是一些情况:

  • 需要分配(外部)资源时,比如打开数据库连接或文件。
  • 需要初始化一些不能用 DATA 语句的 VALUE 指定的属性值,比如复杂的对象或需要计算得出的值。
  • 需要修改静态属性时,这通常通过 CLASS_CONSTRUCTOR 来实现。

通常不能显式地调用构造器,因为它是由系统在创建对象时自动调用的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936934.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 功能函数介绍

一&#xff0c; 二值化函数 功能&#xff1a; 用于对图像进行二值化处理 参数&#xff1a; cv2.threshold(输入你的图像所对应的灰度图&#xff0c; 阈值&#xff1a;是浮点还是整数取决予图像的数据类型 最大值;高于阈值的像素值&#xff0c; 阈值类型&#xff1a;cv2.THR…

kubeadm安装K8s集群之高可用组件keepalived+nginx及kubeadm部署

系列文章目录 1.kubeadm安装K8s集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s集群之master节点加入 4.kubeadm安装K8s集群之worker1节点加入 kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 1.安装kubeadm…

细说STM32F407单片机SPI基础知识

目录 一、 SPI接口和通信协议 1、 SPI硬件接口 &#xff08;1&#xff09;MOSI(Master Output Slave Input) &#xff08;2&#xff09;MISO(Master Input Slave Output) &#xff08;3&#xff09;SCK 2、SPI传输协议 &#xff08;1&#xff09;CPHA0时的数据传输时序 …

【图像处理】利用numpy、opencv、python实现车牌检测

| 利用opencv实现车牌检测 整体流程涉及5个部分 图像通道转换对比度增强边缘连接二值化边界区域裁剪 图像通道转换 将RGB图像转换为HSV图像&#xff0c;仅保留V通道。V通道表示颜色的明暗&#xff0c;常用于图像对比度拉伸、直方图均衡化等流程。 原图像&#xff1a; V通…

结构变量的占用多少个字节

1、在linux中&#xff0c;这种写法比较清晰 struct gpio_led_data { u8 can_sleep; //如果定义了结构变量&#xff0c;则该成员占用1个字节 u8 blinking; //如果定义了结构变量&#xff0c;则该成员占用1个字节 }; struct gpio_leds_priv { int num_leds; //如…

[COLM 2024] V-STaR: Training Verifiers for Self-Taught Reasoners

本文是对 STaR 的改进方法&#xff0c;COLM 是 Conference On Language Models&#xff0c;大模型领域新出的会议&#xff0c;在国际上很知名&#xff0c;不过目前还没有被列入 ccf list&#xff08;新会议一般不会列入&#xff09;&#xff1b;作者来自高校、微软研究院和 Goo…

uni-app Android平台上架要求的隐私政策提示配置方法【跨端开发系列】

文章目录 前言&#x1f4d6;一、前言二、DCloud 数据采集说明三、配置方式3.1 HBuilderX3.2.1及以上版本配置方式3.2 HBuilderX3.2.0及以下版本配置方法3.3 模板提示框3.4 无提示框 四、离线打包配置方式五、模板提示框六、二次确认提示框七、国际化八、隐私协议内容需要注意的…

Xcode

info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称&#xff0c;默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…

auto-gptq安装以及不适配软硬件环境可能出现的问题及解决方式

目录 1、auto-gptq是什么&#xff1f;2、auto-gptq安装3、auto-gptq不正确安装可能会出现的问题&#xff08;1&#xff09;爆出&#xff1a;CUDA extension not installed.&#xff08;2&#xff09;没有报错但是推理速度超级慢 1、auto-gptq是什么&#xff1f; Auto-GPTQ 是一…

惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法

惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法,记录维修那点事儿,普通维修工的日常维修点滴; 惠普Laser Jet MFP M437nda复印机成像装置严重不足维修方法 如果复印及打印的效果没有问题的情况下我们也可以不更换套鼓及显影剂,那么不更换套鼓及…

【2025最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

如何安装并学习使用Stable Diffusion呢&#xff1f; 其实&#xff0c;安装SD的过程并不复杂&#xff0c;只需按照简单的步骤操作&#xff0c;几分钟内就能完成安装&#xff0c;不论是Windows系统还是Mac系统&#xff0c;都能轻松应对。

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用&#xff08;一&#xff09;精准定位元素&#xff08;二&#xff09;应对动态网页&#xff08;三&#xff09;数据结构化提取 二、Xpath 的常用方法&#xff08;一&#xff09;节点选取&#xff08;二&#xff09;谓词筛选&#xff0…

RabbitMQ个人理解与基本使用

目录 一. 作用&#xff1a; 二. RabbitMQ的5中队列模式&#xff1a; 1. 简单模式 2. Work模式 3. 发布/订阅模式 4. 路由模式 5. 主题模式 三. 消息持久化&#xff1a; 消息过期时间 ACK应答 四. 同步接收和异步接收&#xff1a; 应用场景 五. 基本使用 &#xff…

网络工程师常用软件之配置对比软件

老王说网络&#xff1a;网络资源共享汇总 https://docs.qq.com/sheet/DWXZiSGxiaVhxYU1F ☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝☝ 我们经常在项目或者运维中对设备的config进行变更&am…

嵌入式驱动开发详解15(电容触摸屏gt9147)

文章目录 前言电容触摸屏特点MT触摸消息电容触摸屏协议电容屏触摸时序Type A 触摸点信息上报时序Type B 触摸点信息上报时序 多点触摸所使用到的API函数 驱动部分驱动框图设备树节点修改设备树引脚配置设备节点配置 具体驱动开发I2C驱动框架I2C框架内部实现 参考文献 前言 随着…

antdv-<a-button>中属性的使用

UI组件库&#xff08;User Interface Component Library&#xff09;是一种预先构建好的、可重用的用户界面元素集合&#xff0c;旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等&#xff0c;能够提供一致的外观和交互风格&#xf…

win服务器的架设、windows server 2012 R2 系统的下载与安装使用

文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件&#xff08;1&#xff09;新建虚拟机&#xff08;2&#xff09;设置虚拟机&#xff08;3&#xff09;打开虚拟机 windows server 2012&#xff08;4&#xff09;进…

【ArcGIS微课1000例】0135:自动生成标识码(长度不变,前面自动加0)

文章目录 一、加载实验数据二、BSM计算方法一、加载实验数据 加载专栏《ArcGIS微课实验1000例(附数据)》配套数据中0135.rar中的建筑物数据,如下图所示: 打开属性表,BSM为数据库中要求的字段:以TD_T 1066-2021《不动产登记数据库标准》为例: 计算出来的BSM如下图: 二、B…

康谋方案 | 多源相机数据采集与算法集成测试方案

目录 一、相机组成 二、多源相机采集与测试方案 三、应用案例分享 四、结语 在智能化技术快速发展当下&#xff0c;图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进…

陪玩系统小程序源码/游戏陪玩APP系统用户端有哪些功能?游戏陪玩小程序APP源码开发

多客陪玩系统-游戏陪玩线下预约上门服务等陪玩圈子陪玩社区系统源码 陪玩系统源码&#xff0c;高质量的陪玩系统源码&#xff0c;游戏陪玩APP源码开发&#xff0c;语音陪玩源码搭建: 线上陪玩活动组局与线下家政服务系统的部署需要综合考虑技术选型、开发流程、部署流程、功能实…