当前位置: 首页 > news >正文

[SAP ABAP] 面向对象程序设计-类和对象

面向对象开发的特点:封装、继承和多态

什么是类和对象?

类(CLASS)是创建对象的模板,对象(OBJECT)是类的实例 

一个类可以创建多个对象
类  =>  类型
对象  =>  个体

在ABAP语言中,定义一个类,需要包含定义(definition) 和 实现(implementation)两部分

语法格式

* 定义类
CLASS <class> DEFINITION....
ENDCLASS.* 实现类
CLASS <class> IMPLEMENTATION....
ENDCLASS.

提示Tips

完整的class代码包含定义(definition) 和实现(implementation)两部分

定义(definition)部分声明该类包含的 attributes属性, methods方法 和 constructors事件

实现(implementation)部分用来实现 constructor 和 method 的逻辑

类的优点:① 可以进行数据封装  ② 可以重复调用代码 

ABAP支持 local class(本地类) 和 global class(全局类)

local class 通过事务码 SE38/SE80 创建,只能在程序中定义并在该程序中使用

global class 通过事务码 SE24 来创建,在所有的ABAP程序中都能使用

示例1:定义一个 Book 类,Book 类有 Title、Author、Publisher 和 Price 四个属性

REPORT z437_test_2024.*----------------------------------------------------------------------*
*  CLASS book DEFINITION
*----------------------------------------------------------------------*
CLASS book DEFINITION.PUBLIC SECTION.DATA: title TYPE string,author TYPE string,publisher TYPE string,price TYPE p DECIMALS 2.METHODS: print_info.
ENDCLASS.*----------------------------------------------------------------------*
*  CLASS book IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS book IMPLEMENTATION.METHOD print_info.WRITE: / 'Title:', title,/ 'Author:', author,/ 'Publisher:', publisher,/ 'Price:', price.ENDMETHOD.
ENDCLASS.START-OF-SELECTION." 定义引用类型的变量DATA: book1 TYPE REF TO book,book2 TYPE REF TO book." 创建book的实例CREATE OBJECT book1.book1->title = '活着'.book1->author = '余华'.book1->publisher = '上海文艺出版社'.book1->price = '39.5'." 创建book的实例CREATE OBJECT book2.book2->title = '人间失格'.book2->author = '太宰治'.book2->publisher = '作家出版社'.book2->price = '18.8'.book1->print_info( ).book2->print_info( ).

输出结果:

上面示例1通过 DATA 定义的属性为实例属性,在 ABAP 中我们可以使用 -> 符号调用对象实例的属性或方法

类创建对象的过程称为实例化
类创建的对象称为实例( Instance)

相关文章:

[SAP ABAP] 面向对象程序设计-类和对象

面向对象开发的特点&#xff1a;封装、继承和多态 什么是类和对象&#xff1f; 类(CLASS)是创建对象的模板&#xff0c;对象(OBJECT)是类的实例 一个类可以创建多个对象 类 > 类型 对象 > 个体 在ABAP语言中&#xff0c;定义一个类&#xff0c;需要包含定义(defin…...

『大模型笔记』IBM技术团队:什么是智能体型RAG!

『大模型笔记』IBM技术团队:什么是智能体型RAG! 文章目录 一. 『大模型笔记』IBM技术团队:什么是智能体型RAG!二. 参考文献一. 『大模型笔记』IBM技术团队:什么是智能体型RAG! ✅检索增强生成(RAG)是一种结合检索和生成能力的技术,通过从向量数据库检索相关信息作为上…...

WPF 中 NavigationWindow 与 Page 的继承关系解析

官网解析&#xff1a; NavigationWindow 类 | Page 类 public class BaseWindow: NavigationWindow{} public partial class CountPage : Page{} 都是创建的WPF界面有什么区别&#xff1f; 在 WPF&#xff08;Windows Presentation Foundation&#xff09;开发中&#…...

WebRTC基础理论和通话原理

WebRTC理论知识 1.什么是WebRTC? WebRTC&#xff08;Web RealTime Communication&#xff09;是 Google于2010以6829万美元从 Global IP Solutions 公司购买&#xff0c;并 于2011年将其开源&#xff0c;旨在建立一个互联网浏览器间的实时通信的平台&#xff0c;让 WebRTC技术…...

NPU 可不可以代替 GPU

结论 先说结论&#xff0c;GPU分为可以做图形处理的传统意义上的真GPU&#xff0c;做HPC计算的GPGPU和做AI加速计算的GPGPU&#xff0c;所以下面分别说&#xff1a; 对于做图形处理的GPU&#xff0c;这个就和NPU 一样&#xff0c;属于DSA&#xff0c;没有替代性。当然&#xf…...

Vue3版本的uniapp项目运行至鸿蒙系统

新建Vue3版本的uniapp项目 注意&#xff0c;先将HbuilderX升级至最新版本&#xff0c;这样才支持鸿蒙系统的调试与运行&#xff1b; 按照如下图片点击&#xff0c;快速升级皆可。 通过HbuilderX创建 官方文档指导链接 点击HbuilderX中左上角文件->新建->项目 创建vue3…...

部署stable-diffusion3.5 大模型,文生图

UI 使用推荐的ComfyUI&#xff0c;GitHub 地址&#xff0c;huggingface 需要注册登录&#xff0c;需要下载的文件下面有说明 Dockerfile 文件如下&#xff1a; FROM nvidia/cuda:12.4.0-base-ubuntu22.04 RUN apt-get update && apt-get install python3 pip git --n…...

数据采集之selenium模拟登录

使用Cookijar完成模拟登录 本博文爬取实例为内部网站&#xff0c;请sduter使用本人账号替换*********&#xff08;学号&#xff09;&#xff0c;***&#xff08;姓名&#xff09;进行登录 from selenium import webdriver from selenium.webdriver.common.by import By from…...

机器学习中的两种主要思路:数据驱动与模型驱动

在机器学习的研究和应用中&#xff0c;如何从数据中提取有价值的信息并做出准确预测&#xff0c;是推动该领域发展的核心问题之一。在这个过程中&#xff0c;机器学习方法主要依赖于两种主要的思路&#xff1a;数据驱动与模型驱动。这两种思路在不同的应用场景中发挥着至关重要…...

【计算机网络】TCP协议面试常考(一)

三次握手和四次挥手是TCP协议中非常重要的机制&#xff0c;它们在多种情况下确保了网络通信的可靠性和安全性。以下是这些机制发挥作用的一些关键场景&#xff1a; 三次握手的必要性&#xff1a; 同步序列号&#xff1a; 三次握手确保了双方的初始序列号&#xff08;ISN&#…...

C#/.NET/.NET Core学习路线集合,学习不迷路!

前言 C#、.NET、.NET Core、WPF、WinForm、Unity等相关技术的学习、工作路线集合&#xff08;持续更新&#xff09;&#xff01;&#xff01;&#xff01; 全面的C#/.NET/.NET Core学习、工作、面试指南&#xff1a;https://github.com/YSGStudyHards/DotNetGuide C#/.NET/.N…...

使用哈希表做计数排序js

function hashSort(arr) {// 创建一个哈希表&#xff08;对象&#xff09;&#xff0c;统计每个数字出现的次数let hashMap {};arr.forEach(num > {if (hashMap[num]) {hashMap[num] 1;} else {hashMap[num] 1;}});// 根据哈希表的键值对构建排序后的数组let sortedArr …...

京津冀自动驾驶技术行业盛会|2025北京自动驾驶技术展会

“自动驾驶技术”已经成为全球汽车产业的焦点之一。在这个充满创新与变革的时代&#xff0c;“2025北京国际自动驾驶技术展览会”拟定于6月份在北京亦创国际会展中心盛大开幕&#xff0c;为全球自动驾驶技术领域的专业人士、企业以及爱好者们提供了一个交流与展示的平台。作为一…...

Chrome与火狐哪个浏览器的隐私追踪功能更好

当今数字化时代&#xff0c;互联网用户越来越关注在线隐私保护。浏览器作为我们探索网络世界的重要工具&#xff0c;其隐私追踪功能的强弱直接影响到个人信息的安全。本文将对比Chrome和Firefox这两款流行的浏览器&#xff0c;在隐私追踪防护方面的表现&#xff0c;并探讨相关优…...

探索 Python 图像处理的瑞士军刀:Pillow 库

文章目录 探索 Python 图像处理的瑞士军刀&#xff1a;Pillow 库第一部分&#xff1a;背景介绍第二部分&#xff1a;Pillow库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;简单的库函数使用方法第五部分&#xff1a;结合场景使用库第…...

JavaScript中的if、else if、else 和 switch

写在前面 在编程中&#xff0c;条件判断是控制程序流程的重要手段。JavaScript 提供了多种方式来进行条件判断&#xff0c;包括 if、else if、else 和 switch。本文将详细介绍这些语句的语法、用法以及一些相关的注意事项。 if、else if 和 else 语法 if、else if 和 else …...

Python 使用 langchain 过程中的错误总结

1. 环境 conda activate langchain pip install -U langchain$ pip show langchain Name: langchain Version: 0.3.7 Summary: Building applications with LLMs through composability Home-page: https://github.com/langchain-ai/langchain Author: Author-email: Licens…...

MySQL基础篇总结

基本SQL语句分类 DDL(数据定义语言) 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表、字段&#xff09;。 数据控制语言&#xff0c;用来创建数据库用户、控制数据库的控制权限。 数据库操作 查询所有数据库&#xff1a; SHOW DATABASES; 查询当前数据库…...

全面解析:网络协议及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 # 全面解析&#xff1a;网络协议及其应用 文章目录 网络协议概述定义发展历程主要优势 主要网络协议应用层协议传输层协议网络层…...

一文了解Java序列化

Java 序列化&#xff08;Serialization&#xff09;是将对象的状态转换为字节流&#xff0c;以便将对象的状态保存到文件中或通过网络传输的过程。反序列化&#xff08;Deserialization&#xff09;则是将字节流恢复为原始对象。Java 序列化主要通过 Serializable 接口实现。 为…...

基于PHP、asp.net、java、Springboot、SSM、vue3的高校自动排课系统的设计与实现

目录 可选框架 可选语言 内容 可选框架 J2EE、MVC、vue3、spring、springmvc、mybatis、SSH、SpringBoot、SSM、django 可选语言 java、web、PHP、asp.net、javaweb、C#、python、 HTML5、jsp、ajax、vue3 内容 李哥讲程序开发666。 修改个人信息、自动排课等功能&…...

OpenClaw极简开发:用nanobot镜像快速验证自动化脚本

OpenClaw极简开发&#xff1a;用nanobot镜像快速验证自动化脚本 1. 为什么选择nanobot镜像进行OpenClaw开发 作为一名长期在本地折腾AI自动化脚本的开发者&#xff0c;我深知环境配置的痛。每次换机器重装OpenClaw&#xff0c;总要在Node.js版本、Python依赖和模型部署之间反…...

别再死记硬背BPSK公式了!用Python+NumPy手把手带你仿真2PSK信号生成与解调全过程

用Python实战BPSK&#xff1a;从信号生成到误码率分析的完整指南 通信工程专业的学生常常被各种调制公式搞得晕头转向&#xff0c;尤其是BPSK&#xff08;二进制相移键控&#xff09;这类基础但抽象的概念。今天&#xff0c;我们将彻底改变这种学习方式——通过Python代码和可视…...

用Segment Anything Model (SAM) 做3D目标检测?手把手教你复现SAM3D论文核心流程

从BEV到3D检测&#xff1a;基于Segment Anything的零样本实践指南 当Meta的Segment Anything Model&#xff08;SAM&#xff09;横空出世时&#xff0c;计算机视觉领域掀起了一阵"分割一切"的浪潮。但大多数应用仍停留在2D图像领域&#xff0c;直到SAM3D论文提出将这…...

SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告

SmallThinker-3B-Preview惊艳表现&#xff1a;复杂逻辑推理任务准确率提升实测报告 最近&#xff0c;一个名为SmallThinker-3B-Preview的小模型在技术社区里悄悄火了起来。你可能要问&#xff0c;现在动辄几百亿参数的大模型满天飞&#xff0c;一个只有30亿参数的“小家伙”有…...

RouterOS L2TP服务器搭建与安全优化指南

1. L2TP协议基础与RouterOS适配性 L2TP协议全称为Layer 2 Tunneling Protocol&#xff0c;是一种工作在OSI模型第二层的隧道协议。我第一次接触这个协议是在2015年为企业部署远程办公系统时&#xff0c;当时发现它相比PPTP有着明显的安全优势。简单来说&#xff0c;L2TP就像是在…...

美胸-年美-造相Z-Turbo在网络安全领域的创新应用:恶意代码可视化分析

美胸-年美-造相Z-Turbo在网络安全领域的创新应用&#xff1a;恶意代码可视化分析 1. 当安全分析遇上图像生成&#xff1a;一个意想不到的跨界组合 最近在调试一个自动化威胁分析流程时&#xff0c;我偶然发现了一个有趣的现象&#xff1a;当把一段混淆后的JavaScript恶意代码…...

Gpmall分布式事务处理:订单创建与库存扣减的最终一致性保障

Gpmall分布式事务处理&#xff1a;订单创建与库存扣减的最终一致性保障 【免费下载链接】gpmall 项目地址: https://gitcode.com/gh_mirrors/gp/gpmall 在电商系统中&#xff0c;订单创建与库存扣减的分布式事务处理是确保数据一致性的核心挑战。Gpmall项目通过创新的P…...

OpenClaw本地模型成本对比:nanobot镜像vs商业API实测

OpenClaw本地模型成本对比&#xff1a;nanobot镜像vs商业API实测 1. 为什么需要关注OpenClaw的模型成本 上周我在尝试用OpenClaw自动化处理200份PDF文档时&#xff0c;意外发现账单上出现了三位数的API费用。这个数字让我意识到——当OpenClaw需要频繁调用大模型进行决策时&a…...

vLLM-v0.17.1效果展示:vLLM支持MoE模型(如Mixtral)推理实测

vLLM-v0.17.1效果展示&#xff1a;vLLM支持MoE模型&#xff08;如Mixtral&#xff09;推理实测 1. vLLM框架核心能力 vLLM是一个专注于大语言模型推理的高性能服务库&#xff0c;最新发布的v0.17.1版本带来了对MoE&#xff08;混合专家&#xff09;架构模型的全面支持。这个最…...