0
点赞
收藏
分享

微信扫一扫

SAP OO面向对象理论知识(部分)

秀妮_5519 2022-03-30 阅读 100

SAP OO

1. 概述

  • 从SAP R/3 4.0版本开始,abap就引入了面向对象的开发概念.
  • abap语言大发展:
    • 宏编译器
    • abap语言出现-面向过程
    • abap语言-面向对象
      • abap对象是abap的扩展,集合了java,c++,smalltalk等语言的特点,和原来的abap无缝继承
  • 面向对象解决方法中,重点放在了对象是想生活中的对象结构化或抽象化
    • 属性: 对象的属性及特征
    • 方法: 定义对象的行为
  • 类的优点
    • 可以重复利用代码
    • 可以封装数据

2.面向对象的特点

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

3.类与对象

  • 什么是对象?
    • 要使用所需功能的对象,首先要经过根据类定义对象的过程
    • 根据类创建对象的过程为实例,根据类创建的对象为实例
  • CLASS:类是创建对象的模板
  • OBJECT:对象是指商品/物体/对象/目的/,是类的实例
  • 类的区分
    • 全局类: 事务代码se24
      • 存储在类型池中
      • 所用abap程序都可以对其进行访问
    • 本地类
      • 在程序中定义’
      • 只有该程序可以使用

4.程序中类的创建

  • 定义类的构成项目(属性方法事件)

    • class <class> definition .
         要素声明
         所有项目都需要定义在三个访问区域之一中
      endclass.
      
  • 实现类的方法

    • class<class> implementation
      endclass.
      

5.class构成要素

  • 构成要素的分类
    • 实例组件
      • 参照类创建对象时,内存中存在的项目,每次创建对象时都会被初始化.各个类的对象中都存在
      • 声明方式
        • 属性: data
        • 方法:methods
        • 访问:object->comp
    • 静态组件
      • 遇到创建类的语句开始,直到程序结束都存储与内存中,是依赖类存在的项目.及时创建对象,诺已存在与内存中即可直接使用
      • 声明方式:
        • 属性:class-data
        • 方法:class-methods
        • 访问:class=>comp
  • 类的所有要素在声明部分部分实现
    • 属性
      • 可以拥有abap多有数据类型的类内部数据字段,对象状态由属性决定.data/constants
    • 方法
      • 用来定义决定对象行为的类内部执行步骤,可以访问类的所有属性,切可通过方法修改对象的内容,了另外,方法提供传入传出参数,便于用户交互
    • 事件
      • 事件是没有继承关系的,类之间可以相互调用彼此方法的特殊方法.

6.区域访问权限

  • public section 公有部分
    • 内/外部可见
    • public部分的组件,构成类与用户的接口
  • protected section 保护部分
    • 内部和继承可见,外部不可见
    • protected部分组件,构成继承类之间的接口
  • private section 私有部分
    • 内部可见,继承可见,外部不可见
    •                	 内部 	 外部 	 继承 
      
      public section 可 可 可
      protected section 可 否 可
      private section 可 否 否

7.方法

  • 方法的基本语法
    • 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
      • 返回执行中所出现的错误
  • 类函数可以拥有多个输入参数,但只能有一个输出参数.类的输出接口参数必须与类函数中定义类型保持一致.

8.构造方法

  • 在实例化对象时,自动完成对象的初始化,并且这个对象是空的.
  • 如果希望每一个对象都为其初始化某些特征,需要用到构造方法.
  • 没有返回数据类型,功能是在实例化类型时完成一些初始化工作
    • 使用METHODS CONSTRUCTOR 定义
    • 或者CLASS-METHODS CLASS_CONSTRUCTOR 定义
  • 每个类只能有一个构方法,在CREATE OBJECT语句中自动调用构造方法
  • 何时使用构造方法
    • 需要分配外部资源
    • 需要初始化一些不能用data语句的value指定的属性值
    • 需要修改静态属性
    • 通常不能显式的调用构造器

9.类的继承

  • 什么是类的继承?
    • 继承的本质是代码的重用,当要构造一个新类型时,无需从零开始,可以参考一个已有类,在其基础上建立一个新类
    • 参考:基类/父类,新建类:派生类/子类
    • 派生类可以继承基类所有的属性和方法,并可以在此基础上添加新的特征
  • 语法
    • class <subclass> definition inheriting from <suoerclass>
      
  • 多态性类继承的实现
    • 由于每个派生类的属性不同,相同的基类对象在不同的派生类中需要以不同的方式来表现,因此提出多态概念.
    • 在派生类中定义和基类相同的接口,但是可以使用不同的代码来实现.
  • 语法
    • method <meth> redefinition.
      
    • 在派生类中使用基类的方法,使用
      • super:call method super-><meth>
        
    • 方法的重载
      • me:call method me-><meth>.
        
举报

相关推荐

0 条评论