Relational or Object-oriented

Hi everyone,
I'm just a novice in db design and have been given the task to design a db for our app. The app data consists of multiple Java node objects (as many as the user can think of, and needs to have) that, most of the time, have references to the parents and children (nodes). The main goal is to facilitate searching of objects (based on attributes) and object sharing. The objects are composite, meaning they contain links to others that contain links to many others.
I'm confused of which, relation or object oriented, databse is a better fit for the design. So far, several questions have popped up like:
1. To represent links (to other objects), which, an object id or a primary key, is better?
2. How to represent Java vector and hashtable in db?
3. If objects A and B link to C, after A and C are loaded, then if B is loaded, how do I know to share the copy of C (from A) instead of creating a new one?
Any help from you db experts, or if i can be pointed to the right direction, is greatly appreciated. And forgive me if I ask stupid questions.
Thanks,

You can use either a relational or an object-oriented database to store this sort of information. An object-oriented design may well be easier to build an object-oriented database if the goal is basically to use a database as a persistent bitbucket of objects that you will instantiate in an application server.
My preference, however, would be to use a relational database because that makes the data much more accessible to other applications. In most cases, if the data is valuable enough to want to write an application around, it is valuable enough to want to ensure that it survives any particular application. Relational databases are much better at this than are object databases, which necessarily enshrine a particular way of looking at the data.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC

Similar Messages

  • Can I develop a 100% Object Oriented DB with Oracle 11?

    Hello!
    I want to know if I can develop a 100% object oriented data base in Oracle 10g or 11? I have reed the "Oracle Database 11g The Complete Reference" chapter 41 "Advanced Object-
    Oriented Concepts" and I still have the doubt if I can implement a database 100% object-oriented. I hope you can help me.
    Thanks!

    >
    I want to know if I can develop a 100% object oriented data base in Oracle 10g or 11?
    >
    The short answer is no.
    See this AskTom blog for the long answer.
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1545206281987
    It starts off with Tom saying
    >
    First off, in Oracle you would be considering pure relational versus Object RELATIONAL,
    not OO. We have object relational extensions to the relational database. We do not have
    an object oriented database.
    >
    I think you will find a lot of infomation in there from Tom and other respondents about the differences between relational, object relational and object oriented.

  • Object oriented Concept

    Hi all, I feel confuse on object oriented.
    Basic, I get change to developer some online form. I use java bean , Servlet, JSTL and Mysql. In my java bean I only have the attribute set and get pattern. I just wonder I put my delete , search and update action on Servlet , not in the java bean , is that means that Is not object oriented enough? How to improve it ?
    thank you!

    Thank you for the reply, I did use some of the Spring in my Project, but only limit in flower control , such as simple spring + acegi , a lot of control still in servlet. I also try some other new stuff like display tag , but that only work on if your jsp page is out of the WEB-INF. I also go through some tutorials on JSF , but not time to figure out how JSF work with acegi yet.
    1 mention the display tag and JSF just try to explain, I looking for a new framework. But don?t want the whole framework to tire me up. For example in simple servlet I can use ? /WEB-INF/ + target to send my flower to any JSP page depend on the link that I click , but I don?t how to handle it spring. May be I did not get the real concept of spring yet. I looking for some framework that allow me to use new technology , but still allow me to use some old technology , like servlet then I can finish my project on time.
    But what is the relation between web framework and object oriented concept??

  • Object oriented programming in LabVIEW

    Please send this message to everybody who has an opinion about this.
    Please try to keep it short, but if you can't control yourselves, let
    it all out!
    I would like to have your opinions about the nature of Labview and it's
    ability to support object oriented programming.
    I have a couple of questions to fire the discussion.
    1- Do you think that LV was built to support OO Programming?
    2- Is OO the only way we have to support large applications, or is it
    feasible to support it with a good dataflow architecture including all
    the flowcharts and all the data definitions?
    3- Is LV going to stay "dataflow" or is it going to become OO?
    4- What would be the great benefits of turning LV to OO that we don't
    already have w
    ith the dataflow approach?
    5- My opinion is that trying to implement OO in LabVIEW, is like trying
    to
    Thank you all for your time.
    Sent via Deja.com
    http://www.deja.com/

    > 1- Do you think that LV was built to support OO Programming?
    LV was initially designed in 1983. OOP existed at that point,
    but LV wasn't designed to be OO. It was designed to allow
    engineers and researchers a simple language appropriate
    for controlling their research labs from a computer.
    > 2- Is OO the only way we have to support large applications, or is it
    > feasible to support it with a good dataflow architecture including all
    > the flowcharts and all the data definitions?
    OO lends itself to large projects because it provides
    abstraction, encapsulation, and organizes code into
    modules that can more easily be implemented independent
    of one another since they can be specified in finer
    detail. Also, the compilers help to enforce the
    specifications providing they can be encoded in the
    interface between objects.
    These OO principles were already a part of big projects
    long before there were OO languages. It was just that
    the language didn't necessarily have features which
    supported it. Similarly, they can be a part of big
    projects today despite the language being used.
    LV 2 style globals, which as the name suggests were
    in use long ago, encapsulate data with an interface.
    They disallow arbitrary access to the data and can be
    used to enforce correct access. With other functions
    layered on top, you get a nice interface to stored data.
    Functions and structs/clusters abstract away details.
    Building a subVI that does an FFT means that for 99%
    of the uses, you don't need any more information except
    that this block performs an abstract mathematical function,
    an FFT. The implementation can be completely changed
    to speed it up or make it more accurate and your code
    isn't affected. Its abstract definition still holds, so
    your code still works.
    There are other things that OO languages bring to the
    table that LV, and GOOP don't yet offer. In my opinion,
    a few more OO features can be added to LV to allow for
    even larger projects in the future provided they are used
    well.
    Earlier posts pointed out that C++ doesn't guarantee that
    a project will succeed. OO features are just another tool,
    and the tool can be misused leading to a failed project.
    This is true to LV, C, C++, and all other engineering tools.
    The key is using the tools at hand to best solve the
    problems we face. Not glorifying or blaming the tools for
    the state of the project.
    > 3- Is LV going to stay "dataflow" or is it going to become OO?
    LV is dataflow to the core. The definition of what data
    is flowing may be expanded, but it will still be data
    flowing down wires from one node to another that accounts
    for how the program executes.
    One of the limitations of the current GOOP is that all
    objects are dealt with by a reference. By adding
    language features, objects could be made to flow down
    the wire, just like strings and arrays, meaning that
    branching a wire doesn't lead to side-effects,
    and there is no need to dispose objects.
    > 4- What would be the great benefits of turning LV to OO that we don't
    > already have with the dataflow approach?
    Remember when LV didn't have typedefs? It was easy for
    a cluster datatype to change once a project was underway.
    That usually led to lots of edits on other panels to get
    them back in synch. Without the unbundle by name, you
    then went through the diagrams fixing all of the bundlers
    and unbundlers to have the right number of terminals.
    Changing the order of the cluster was even worse since
    the diagrams may not bread, they might just access the
    wrong field instead.
    In many respects, an object is just another step along the
    same path. An object is a typedef that can have code
    associated with it for access -- maybe like Array and
    Cluster Tools. Some of the typedef contents might be
    publicly accessable, like now, while other elements are
    hidden, only available to the implementation of the
    typedef. That would force the user to use your functions
    to manipulate things rather than hacking away at the
    typedef contents. As an example, a LV string is really
    just a cluster of size and characters. Since the diagram
    can only modify the string using the string functions, you
    never get the size and characters out of synch. That is
    until you take it into LV generated code, a DLL or CIN
    where you have access to the inner fields.
    A related problem is that current typedefs are transparent
    to built-in LV functions. If your typedef is just some
    numbers, LV will be happy to perform arithmetic on your
    typedef. Maybe this is what you want, but if this doesn't
    make sense on your typedef, then your left with adding a
    Boolean or a string so that the arithmetic isn't allowed.
    Ideally, you would be able to state that = makes sense, >
    and < don't, + and - only operates on the first numeric, and
    * is something that you implement yourself. There would be
    some safeguards so that the user of your typedef, which
    includes you, wouldn't accidentally mangle the typedef
    contents.
    These may not seem like much at first, but they allow for
    much more abstraction and better encapsulation. Finally,
    there is a technique called inheritance that allows for
    similar objects to be acted on by common code in one
    location, and by specific code in another location depending
    on which type of object is actually there at runtime.
    This of usually done today by switching out on some inner
    tag and dealing with each type in its own diagram. This
    works fine until projects get large and teams get large.
    Inheritance is a different way of implementing the exact
    same thing that usually works much better for bigger teams
    and bigger projects.
    > 5- My opinion is that trying to implement OO in LabVIEW, is like trying
    > to
    Is this a fill-in-the blank question? It is difficult today
    because the LV language doesn't yet support OO very well.
    Early C++ was implemented on top of C using just a bunch
    of macros and the preprocessor to mangle the C++ back into
    C so that it could be compiled and run. Debugging was
    done on practically unreadable text that vaguely resembled
    your original code. By comparison, GOOP actually looks
    pretty good. It is written entirely on top of the current
    LV language and makes clever use of things like datalog
    refnums to make strict types.
    Over time I think GOOP will mature, and like typedefs,
    some users will come to rely on it in a big way.
    Other users will hopefully not even notice that anything
    changed. If their project grows in complexity and they
    need another tool to manage things, it will be just
    another feature that helps them to get useful things done.
    Greg McKaskle

  • Object Oriented Programming concepts

    Hi Friends,
    I need your help to understand the Object Oriented Programming concepts.
    Please help me…
    Thanks,
    Fl4syed

    Hi,
    We can learn oops concepts very easily.Refering some books and search this concepts in some websites related to it.I think the author Robert lafore of oops is one of the best way to learn oops concepts.

  • Object Oriented Programming features

    Hello,
    i want to know more about Object Oriented Programming features, actually i have basic knowledge on Polymorphism, abstraction, DataHidding, Encapsulation, Inheritance. I know the basic bookish definition of these, but can u people give me the definition in terms of java program or any definition which i can co relate with java program.
    ex. Class is an example of encapsulation.
    Thanks.

    RGEO wrote:Hello,
    i want to know more about Object Oriented Programming features, actually i have basic knowledge on Polymorphism, abstraction, DataHidding, Encapsulation, Inheritance. I know the basic bookish definition of these, but can u people give me the definition in terms of java program or any definition which i can co relate with java program.
    ex. Class is an example of encapsulation.
    Thanks.see if we talk about encapsulation ----which means data hiding....now this can b expalined by the following example:
    class Rect {
    protected int len,br;
    public void getdata()
    len=14;
    br=20;
    public int area()
    return len*br;
    class box extends Rect
    private int h;
    public void getdata()
    super.getdata();
    h=56;
    System.out.println("the height is :"+h);
    public int volume()
    return len*br*h;
    {color:#ff0000}class inheritance
    {color}
    {color:#ff0000}public static void main(String[] args)
    box obj=new box();
    obj.getdata();
    System.out.println("volume of box is:"+obj.volume());
    }{color}
    In the above example we are showing inheritance alongwith encapsulation and it goes like this:
    we are able to view the result through main methods i.e. we call our method in main method with the help of objects....so we can say that whatever a user is showing he is showing through main method and not showing the logic because when we complie it then we are only shown the result and not the logic behind it.......This is known as encapsulation----showing relevant features and hiding rest all the things.
    Edited by: Namrata.Kakkar on Jul 29, 2009 10:46 PM

  • Object-oriented APEX. Best practices.

    Hello,
    in my company we are developing quite big application in Apex. At the beginning we saw Apex as a very developer friendly application, but now we have problem with it.
    Our application has about 100 pages, most of them are not only reports but are also designed to edit and add new data. We are often using javascript and plsql procedures to handle collections and error processing. There are a lot of elements that are identical on several pages – not only processes, but also buttons, branches etc. – and when something changes, we must do the same operation on every page. Do you know any way to deal with it in better way?
    Are there any “best practices” for APEX to make it more object-oriented? I know I can put e.g. plsql procedures as a function in database, but what about button functions etc.? Maybe I should name most important buttons in the same way and handle them using javascript?
    Regards,
    Przemek Staniszewski

    Hi Przemek,
    I'm not an object oriented expert so I probably can't offer you too much in the way of advice here, I'm old school from relational theory, 3GL etc. But one of the things to remember is that Apex isn't one single language like Java where it is easier to maintain good object oriented practicies and even enforces and encourages. Apex is a collection of technologies such as Relational Design, SQL, PL/SQL, HTML and Javascript which are all held together by a declarative programming interface.
    Although all these technologies have varying degrees of object orientism, they are all quite distinct technologies which work together well but don't really help each other in maintaining or enforcing OO good practices. I think it would be hard to reverse engineer an existing application, but with some thought, kowledge and advice from the right areas you should be able to put together some good design and coding standards which will serve you well going forward.
    There are some documents and threads you should be able to find which will also help you, but also remember you are also dealing with some long established technologies such as Relation Database Design and SQL. Too often developers with skills in more recent languages get lost in the API front end and assume the database isn't really part of the application. You know, DBA stuff. For my money the database is the centre and the most important part of the application.
    My two cents worth anyway.
    Andre

  • Object oriented abap

    hello abapers,
    am new to object oriented abap.cud u pls help me out in explaining me object oriented abap with examples.cud u also pls send me some links related to OO ABAP..
    explanation wid suitable examples will b rewarded higher pints.
    regards,
    praveen

    Hi,
    please find the below material with examples,
    reward points if helpful.
    Public attributes
    Public attributes are defined in the PUBLIC section and can be viewed and changed from outside the class. There is direct access to public attributes. As a general rule, as few public attributes should be defined as possible.
    PUBLIC SECTION.
      DATA: Counter type i.
    Private attributes
    Private attributes are defined in the PRIVATE section. The can only be viewes and changed from within the class. There is no direct access from outside the class.
    PRIVATE SECTION.
        DATA: name(25) TYPE c,
              planetype LIKE saplane-planetyp,
    Instance attributes
    There exist one instance attribute for each instance of the class, thus they exist seperately for each object. Instance attributes are declared with the DATA keyword.
    Static attributes
    Static attributes exist only once for each class. The data are the same for all instances of the class, and can be used e.g. for instance counters. Static attributes are defined with the keyword CLASS-DATA.
    PRIVATE SECTION.
      CLASS-DATA: counter type i,  
    Public methods
    Can called from outside the class
    PUBLIC SECTION.
      METHODS:  set_attributes IMPORTING p_name(25) TYPE c,
                                                                p_planetype LIKE saplane-planetyp,
    Private methods
    Can only be called from inside the class. They are placed in the PRIVATE section of the class.
    Constructor method
    Implicitly, each class has an instance constructor method with the reserved name constructor and a static constructor method with the reserved name class_constructor.
    The instance constructor is executed each time you create an object (instance) with the CREATE OBJECT statement, while the class constructor is executed exactly once before you first access a class.
    The constructors are always present. However, to implement a constructor you must declare it explicitly with the METHODS or CLASS-METHODS statements. An instance constructor can have IMPORTING parameters and exceptions. You must pass all non-optional parameters when creating an object. Static constructors have no parameters.
    Static constructor
    The static constructor is always called CLASS_CONSTRUCTER, and is called autmatically before the clas is first accessed, that is before any of the following actions are executed:
    •     Creating an instance using CREATE_OBJECT
    •     Adressing a static attribute using 
    •     Calling a ststic attribute using CALL METHOD
    •     Registering a static event handler
    •     Registering an evetm handler method for a static event
    The static constructor cannot be called explicitly.
    Protected components
    When we are talking subclassing and enheritance there is one more component than Public and Private, the Protected component. Protected components can be used by the superclass and all of the subclasses. Note that Subclasses cannot access Private components.
    Polymorphism
    Polymorphism: When the same method is implemented differently in different classes. This can be done using enheritance, by redefining a method from the superclass in subclasses and implement it differently.
    Template for making a class
    Delete the parts that should not be used
    Definition part
    CLASS xxx DEFINITION.
    Public section
      PUBLIC SECTION.
        TYPES:
        DATA:
      Static data
        CLASS-DATA:
      Methods
        METHODS:
        Using the constructor to initialize parameters
           constructor    IMPORTING xxx type yyy,
        Method with parameters
          mm1 IMPORTING iii   TYPE ttt.
        Method without parameters
          mm2.
      Static methods
        CLASS-METHODS: 
    Protected section. Also accessable by subclasses
      PROTECTED SECTION.
    Private section. Not accessable by subclasses
      PRIVATE SECTION.
    ENDCLASS.
    Implementation part
    CLASS lcl_airplane IMPLEMENTATION.
      METHOD constructor.
      ENDMETHOD.
      METHOD mm1.
      ENDMETHOD.
      METHOD mm2.
      ENDMETHOD.
    ENDCLASS.
    Template for calling a class
    Create reference to class lcl_airplane
    DATA: airplane1 TYPE REF TO lcl_airplane.
    START-OF-SELECTION.
    Create instance using parameters in the cosntructor method
      CREATE OBJECT airplane1 exporting im_name = 'Hansemand'
                                        im_planetype = 'Boing 747'.
    Calling a method with parameters
      CALL METHOD: airplane1->display_n_o_airplanes,
                   airplane1->display_attributes.
    Subclass
    CLASS xxx DEFINITION INHERITING FROM yyy.
    Using af class as a parameter for a method
    The class LCL_AIRPLANE is used as a parameter for method add_a_new_airplane:
    METHODS:
      add_a_new_airplane importing im_airplane TYPE REF to lcl_airplane.
    Interfaces
    In ABAP interfaces are implemented in addition to, and independently of classes. An interface only has a declaration part, and do not have visibillity sections. Components (Attributes, methods, constants, types) can be defined the same way as in classes.
    •     Interfaces are listed in the definition part lof the class, and must always be in the PUBLIC SECTION.
    •     Operations defined in the interface atre impemented as methods of the class. All methods of the interface must be present in the
    •     implementation part of the class.
    •     Attributes, events, constants and types defined in the interface are automatically available to the class carying out the implementation.
    •     Interface components are adresse in the class by ]
    Define, implement and use simple class
    ***INCLUDE ZBC404_HF_LCL_AIRPLANE .
    Definition part
    CLASS lcl_airplane DEFINITION.
    Public section
      PUBLIC SECTION.
        TYPES: t_name(25) TYPE c.
        METHODS:
          constructor,
          set_attributes IMPORTING p_name       TYPE t_name
                                   p_planetype  TYPE saplane-planetype,
          display_attributes,
          display_n_o_airplanes.
    Private section
      PRIVATE SECTION.
      Private attributes
        DATA: name(25) TYPE c,
              planetype TYPE saplane-planetype.
      Private static attribute
        CLASS-DATA n_o_airplanes TYPE i.
    ENDCLASS.
    Implementation part
    CLASS lcl_airplane IMPLEMENTATION.
      METHOD constructor.
      Counts number of instances
        n_o_airplanes = n_o_airplanes + 1.
      ENDMETHOD.
      METHOD set_attributes.
        name      = p_name.
        planetype = p_planetype.
      ENDMETHOD.
      METHOD display_attributes.
        WRITE:/ 'Name:', name, 'Planetype:', planetype.
      ENDMETHOD.
      METHOD display_n_o_airplanes.
        WRITE: / 'No. planes:', n_o_airplanes.
      ENDMETHOD.
    ENDCLASS.
    REPORT zbc404_hf_maintain_airplanes .
    INCLUDE zbc404_hf_lcl_airplane.
    Create reference to class lcl_airplane
    DATA: airplane1 TYPE REF TO lcl_airplane,
          airplane2 TYPE REF TO lcl_airplane.
    START-OF-SELECTION.
    Create instance
      CREATE OBJECT airplane1.
      CALL METHOD: airplane1->display_n_o_airplanes.
      CREATE OBJECT airplane2.
    Setting attributes using a method with parameters
      CALL METHOD airplane1->set_attributes EXPORTING p_name      = 'Kurt'
                                                      p_planetype = 'MD80'.
    END-OF-SELECTION.
    Using methods
      CALL METHOD: airplane1->display_n_o_airplanes,
                   airplane1->display_attributes. 
    The resulting report:
    Maintain airplanes                                                                               
    No. planes:          1                                
    No. planes:          2                                
    Name: Kurt                      Planetype: MD80       
    Use constructor to create an object with parameters
    CLASS lcl_airplane DEFINITION.
      PUBLIC SECTION.
        TYPES: t_name(25) TYPE c.
        METHODS:
          constructor    importing p2_name      type t_name
                                   p2_planetype  TYPE saplane-planetype,
    ..... more code .......
    CLASS lcl_airplane IMPLEMENTATION.
      METHOD constructor.
        name      = p2_name.
        planetype = p2_planetype.
    ..... more code .......
    START-OF-SELECTION.
      CREATE OBJECT airplane1 exporting p2_name = 'Hansemand'
                                        p2_planetype = 'Boing 747'.
    Subclassing
    This example uses a superclass LCL_AIRPLANE and subclasses it into LCL_PASSENGER_AIRPLANE and LCL_CARGO_PLANE.
    LCL_AIRPLANE has a method display_n_o_airplanes that displays the number of object instances.
    LCL_PASSENGER_AIRPLANE has the private instance attribute n_o_seats, and redefines the superclass method display_attributes, so it also displays n_o_seats.
    LCL_CARGO_PLANE has the private instance attribute cargomax, and redefines the superclass method display_attributes, so it also displays cargomax.
    All instance attributes are provided by the cunstructor method.
    Superclass LCL_AIRPLANE
    ***INCLUDE ZBC404_HF_LCL_AIRPLANE .
    Definition part
    CLASS lcl_airplane DEFINITION.
    Public section
      PUBLIC SECTION.
        TYPES: t_name(25) TYPE c.
        METHODS:
          constructor    IMPORTING im_name      TYPE t_name
                                   im_planetype  TYPE saplane-planetype,
          display_attributes.
      Static methods
        CLASS-METHODS:
          display_n_o_airplanes.
    Protected section
      PROTECTED SECTION.
      Private attributes
        DATA: name(25) TYPE c,
              planetype TYPE saplane-planetype.
      Private static attribute
        CLASS-DATA n_o_airplanes TYPE i.
    ENDCLASS.
    Implementation part
    CLASS lcl_airplane IMPLEMENTATION.
      METHOD constructor.
        name      = im_name.
        planetype = im_planetype.
      Counts number of instances
        n_o_airplanes = n_o_airplanes + 1.
      ENDMETHOD.
      METHOD display_attributes.
        WRITE:/ 'Name:', name, 'Planetype:', planetype.
      ENDMETHOD.
      METHOD display_n_o_airplanes.
        WRITE: / 'No. planes:', n_o_airplanes.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_PASSENGER_AIRPLANE
    ***INCLUDE ZBC404_HF_LCL_PASSENGER_PLANE .
    This is a subclass of class lcl_airplane
    CLASS lcl_passenger_airplane DEFINITION INHERITING FROM lcl_airplane.
      PUBLIC SECTION.
      The constructor contains the parameters from the superclass
      plus the parameters from the subclass
        METHODS:
          constructor IMPORTING im_name      TYPE t_name
                                im_planetype TYPE saplane-planetype
                                im_n_o_seats TYPE sflight-seatsmax,
        Redefinition of superclass method display_attributes
          display_attributes REDEFINITION.
      PRIVATE SECTION.
        DATA: n_o_seats TYPE sflight-seatsmax.
    ENDCLASS.
    CLASS lcl_passenger_airplane IMPLEMENTATION.
      METHOD constructor.
      The constructor method of the superclass MUST be called withing the
      construtor
        CALL METHOD super->constructor
                              EXPORTING im_name      = im_name
                                        im_planetype = im_planetype.
        n_o_seats = im_n_o_seats.
      ENDMETHOD.
      The redefined  display_attributes method
      METHOD display_attributes.
        CALL METHOD super->display_attributes.
        WRITE: / 'No. seats:', n_o_seats.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_CARGO_PLANE
    ***INCLUDE ZBC404_HF_LCL_CARGO_PLANE .
    This is a subclass of class lcl_airplane
    CLASS lcl_cargo_plane DEFINITION INHERITING FROM lcl_airplane.
      PUBLIC SECTION.
        METHODS:
        The constructor contains the parameters from the superclass
        plus the parameters from the subclass
          constructor IMPORTING im_name      TYPE t_name
                                im_planetype TYPE saplane-planetype
                                im_cargomax  type scplane-cargomax,
        Redefinition of superclass method display_attributes
          display_attributes REDEFINITION.
      PRIVATE SECTION.
        DATA:cargomax TYPE scplane-cargomax.
    ENDCLASS.
    CLASS lcl_cargo_plane IMPLEMENTATION.
      METHOD constructor.
      The constructor method of the superclass MUST be called withing the
      constructor
        CALL METHOD super->constructor
                              EXPORTING im_name      = im_name
                                        im_planetype = im_planetype.
        cargomax = im_cargomax.
      ENDMETHOD.
      METHOD display_attributes.
      The redefined  display_attributes method
        CALL METHOD super->display_attributes.
        WRITE: / 'Cargo max:', cargomax.
      ENDMETHOD.
    ENDCLASS.
    The Main program that uses the classes
    REPORT zbc404_hf_main .
    Super class
    INCLUDE zbc404_hf_lcl_airplane.
    Sub classes
    INCLUDE zbc404_hf_lcl_passenger_plane.
    INCLUDE zbc404_hf_lcl_cargo_plane.
    DATA:
    Type ref to sub classes. Note: It is not necesssary to make typeref to the superclass
      o_passenger_airplane TYPE REF TO lcl_passenger_airplane,
      o_cargo_plane        TYPE REF TO lcl_cargo_plane.
    START-OF-SELECTION.
    Display initial number of instances = 0
      CALL METHOD  lcl_airplane=>display_n_o_airplanes.
    Create objects
      CREATE OBJECT o_passenger_airplane
        EXPORTING
          im_name      = 'LH505'
          im_planetype = 'Boing 747'
          im_n_o_seats = 350.
      CREATE OBJECT o_cargo_plane
        EXPORTING
          im_name      = 'AR13'
          im_planetype = 'DC 3'
          im_cargomax = 35.
    Display attributes
      CALL METHOD o_passenger_airplane->display_attributes.
      CALL METHOD o_cargo_plane->display_attributes.
    Call static method display_n_o_airplanes
    Note: The syntax for calling a superclass method, differs from the syntax when calling a subclass method.
    When calling a superclass => must be used instead of ->
      CALL METHOD  lcl_airplane=>display_n_o_airplanes.
    Result:
    No. planes: 0
    Name: LH505 Planetype: Boing 747
    No. seats: 350
    Name: AR13 Planetype: DC 3
    Cargo max: 35,0000
    No. planes: 2
    Polymorphism
    Polymorphism: When the same method is implemented differently in different classes. This can be done using enheritance, by redefining a method from the superclass in subclasses and implement it differently.
    Classes:
    •     lcl_airplane Superclass
    •     lcl_cargo_airplane Subclass
    •     lcl_passenger_airplane Subclass
    The method estimate_fuel_consumption is implemented differently in the 3 classes, as it depends on the airplane type.
    Object from different classes are stored in an internal table (plane_list) consisting of references to the superclass, and the processed
    identically for all the classes.
    What coding for the estimate_fuel_consumption method taht is actually executed, depends on the dynamic type of the plane reference variable,
    that is, depends on which object plane points to.
    DATA: cargo_plane            TYPE REF to lcl_cargo_airplane,
              passenger_plane    TYPE REF to lcl_passenger_airplane,
              plane_list                  TYPE TABLE OF REF TO lcl_airplane.
    Creating the list of references
    CREATE OBJECT cargo_plane.
    APPEND cargo_plane to plane_list.
    CREATE OBJECT passenger_plane
    APPEND passenger_plane to plane list.
    Generic method for calucalting required fuel
    METHOD calculate required_fuel.
      DATA: plane TYPE REF TO lcl_airplane.
      LOOP AT plane_list INTO plane.
        re_fuel = re_fuel + plane->estimate_fuel_consumption( distance ).
      ENDLOOP.
    ENDMETHOD.
    Working example:
    This example assumes that the classes lcl_airplane,  lcl_passnger_airplane and lcl_cargo plane (Se Subcallsing)  exists.
    Create objects of type lcl_cargo_plane and lcl_passenger_airplane, adds them to a list in lcl_carrier, and displays the list. 
    *& Include  ZBC404_HF_LCL_CARRIER                                      *
          CLASS lcl_carrier DEFINITION                                   *
    CLASS lcl_carrier DEFINITION.
      PUBLIC SECTION.
        TYPES: BEGIN OF flight_list_type,
                  connid   TYPE sflight-connid,
                  fldate   TYPE sflight-fldate,
                  airplane TYPE REF TO lcl_airplane,
                  seatsocc TYPE sflight-seatsocc,
                  cargo(5) TYPE p DECIMALS 3,
               END OF flight_list_type.
        METHODS: constructor IMPORTING im_name TYPE string,
                 get_name RETURNING value(ex_name) TYPE string,
                 add_a_new_airplane IMPORTING
                                       im_airplane TYPE REF TO lcl_airplane,
        create_a_new_flight importing
                              im_connid   type sflight-connid
                              im_fldate   type sflight-fldate
                              im_airplane type ref to lcl_airplane
                              im_seatsocc type sflight-seatsocc
                                        optional
                            im_cargo    type p optional,
         display_airplanes.
      PRIVATE SECTION.
        DATA: name              TYPE string,
              list_of_airplanes TYPE TABLE OF REF TO lcl_airplane,
              list_of_flights   TYPE TABLE OF flight_list_type.
    ENDCLASS.
          CLASS lcl_carrier IMPLEMENTATION
    CLASS lcl_carrier IMPLEMENTATION.
      METHOD constructor.
        name = im_name.
      ENDMETHOD.
      METHOD get_name.
        ex_name = name.
      ENDMETHOD.
      METHOD create_a_new_flight.
        DATA: wa_list_of_flights TYPE flight_list_type.
        wa_list_of_flights-connid   = im_connid.
        wa_list_of_flights-fldate   = im_fldate.
        wa_list_of_flights-airplane = im_airplane.
        IF im_seatsocc IS INITIAL.
          wa_list_of_flights-cargo = im_cargo.
        ELSE.
          wa_list_of_flights-seatsocc = im_seatsocc.
        ENDIF.
        APPEND wa_list_of_flights TO list_of_flights.
      ENDMETHOD.
      METHOD add_a_new_airplane.
        APPEND im_airplane TO list_of_airplanes.
      ENDMETHOD.
      METHOD display_airplanes.
        DATA: l_airplane TYPE REF TO lcl_airplane.
        LOOP AT list_of_airplanes INTO l_airplane.
          CALL METHOD l_airplane->display_attributes.
        ENDLOOP.
      ENDMETHOD.
    ENDCLASS.
    REPORT zbc404_hf_main .
    This reprort uses class LCL_AIRPLNAE and subclasses
    LCL_CARGO_PLANE and LCL_PASSENGER_AIRPLANE and class LCL_CARRIER
    Super class for airplanes
    INCLUDE zbc404_hf_lcl_airplane.
    Sub classes for airplanes
    INCLUDE zbc404_hf_lcl_passenger_plane.
    INCLUDE zbc404_hf_lcl_cargo_plane.
    Carrier class
    INCLUDE zbc404_hf_lcl_carrier.
    DATA:
    Type ref to classes
      o_passenger_airplane  TYPE REF TO lcl_passenger_airplane,
      o_passenger_airplane2 TYPE REF TO lcl_passenger_airplane,
      o_cargo_plane         TYPE REF TO lcl_cargo_plane,
      o_cargo_plane2        TYPE REF TO lcl_cargo_plane,
      o_carrier             TYPE REF TO lcl_carrier.
    START-OF-SELECTION.
    Create objects
      CREATE OBJECT o_passenger_airplane
        EXPORTING
          im_name      = 'LH505'
          im_planetype = 'Boing 747'
          im_n_o_seats = 350.
      CREATE OBJECT o_passenger_airplane2
        EXPORTING
          im_name      = 'SK333'
          im_planetype = 'MD80'
          im_n_o_seats = 110.
      CREATE OBJECT o_cargo_plane
        EXPORTING
          im_name      = 'AR13'
          im_planetype = 'DC 3'
          im_cargomax = 35.
      CREATE OBJECT o_cargo_plane2
        EXPORTING
          im_name      = 'AFL124'
          im_planetype = 'Iljutsin 2'
          im_cargomax = 35000.
      CREATE OBJECT o_carrier
        EXPORTING im_name = 'Spritisch Airways'.
    Add passenger and cargo planes to the list of airplanes
      CALL METHOD o_carrier->add_a_new_airplane
         EXPORTING im_airplane = o_passenger_airplane.
      CALL METHOD o_carrier->add_a_new_airplane
         EXPORTING im_airplane = o_passenger_airplane2.
      CALL METHOD o_carrier->add_a_new_airplane
         EXPORTING im_airplane = o_cargo_plane.
      CALL METHOD o_carrier->add_a_new_airplane
         EXPORTING im_airplane = o_cargo_plane2.
    Display list of airplanes
      call method o_carrier->display_airplanes.
    Result:
    Name: LH505                     Planetype: Boing 747        
    No. seats:       350                                        
    Name: SK333                     Planetype: MD80             
    No. seats:       110                                        
    Name: AR13                      Planetype: DC 3             
    Cargo max:             35,0000                              
    Name: AFL124                    Planetype: Iljutsin 2       
    Cargo max:         35.000,0000                              
    Events
    Below is a simple example of how to implement an event.
    REPORT zbc404_hf_events_5.
          CLASS lcl_dog DEFINITION
    CLASS lcl_dog DEFINITION.
      PUBLIC SECTION.
      Declare events
        EVENTS:
          dog_is_hungry
            EXPORTING value(ex_time_since_last_meal) TYPE i.
        METHODS:
          constructor
              IMPORTING im_name TYPE string,
          set_time_since_last_meal
              IMPORTING im_time TYPE i,
          on_dog_is_hungry FOR EVENT dog_is_hungry OF lcl_dog
              IMPORTING ex_time_since_last_meal.
    ENDCLASS.
          CLASS lcl_dog IMPLEMENTATION
    CLASS lcl_dog IMPLEMENTATION.
      METHOD constructor.
        WRITE: / 'I am a dog and my name is', im_name.
      ENDMETHOD.
      METHOD set_time_since_last_meal.
        IF im_time < 4.
          SKIP 1.
          WRITE: / 'You fool, I am not hungry yet'.
        ELSE.
       Subsrcribe for event:
       set handler <Event handler method>
       FOR <ref_sender>!FOR ALL INSTANCES [ACTIVATION <var>]
          SET HANDLER on_dog_is_hungry FOR ALL INSTANCES ACTIVATION 'X'.
       Raise event
          RAISE EVENT dog_is_hungry
            EXPORTING ex_time_since_last_meal = im_time.
        ENDIF.
      ENDMETHOD.
      METHOD on_dog_is_hungry.
      Event method, called when the event dog_is_hungry is raised
        SKIP 1.
        WRITE: /  'You son of a *****. I have not eaten for more than',
                  ex_time_since_last_meal, ' hours'.
        WRITE: / 'Give me something to eat NOW!'.
      ENDMETHOD.
    ENDCLASS.
          R E P O R T
    DATA: o_dog1 TYPE REF TO lcl_dog.
    START-OF-SELECTION.
      CREATE OBJECT o_dog1 EXPORTING im_name = 'Beefeater'.
      CALL METHOD o_dog1->set_time_since_last_meal
        EXPORTING im_time = 2.
    This method call will raise the event dog_is_hungy
    because time > 3
      CALL METHOD o_dog1->set_time_since_last_meal
        EXPORTING im_time = 5.
    Result:
    I am a dog and my name is Beefeater
    You fool, I am not hungry yet
    You son of a *****. I have not eaten for more than 5 hours
    Give me something to eat NOW!
    1. Simple class
    This example shows how to create a simple employee class. The constructor method is used to initialize number and name of thje employee when the object is created. A display_employee method can be called to show the attributes of the employee, and CLASS-METHOD dosplay_no_of_employees can be called to show the total number of employees (Number of instances of the employee class).
    REPORT zbc404_hf_events_1.
    L C L _ E M P L O Y E E
    *---- LCL Employee - Definition
    CLASS lcl_employee DEFINITION.
      PUBLIC SECTION.
    The public section is accesible from outside  
        TYPES:
          BEGIN OF t_employee,
            no  TYPE i,
            name TYPE string,
         END OF t_employee.
        METHODS:
          constructor
            IMPORTING im_employee_no TYPE i
                      im_employee_name TYPE string,
          display_employee.
      Class methods are global for all instances      
        CLASS-METHODS: display_no_of_employees.
      PROTECTED SECTION.
    The protecetd section is accesible from the class and its subclasses 
      Class data are global for all instances      
        CLASS-DATA: g_no_of_employees TYPE i.
      PRIVATE SECTION.
    The private section is only accesible from within the classs 
        DATA: g_employee TYPE t_employee.
    ENDCLASS.
    *--- LCL Employee - Implementation
    CLASS lcl_employee IMPLEMENTATION.
      METHOD constructor.
        g_employee-no = im_employee_no.
        g_employee-name = im_employee_name.
        g_no_of_employees = g_no_of_employees + 1.
      ENDMETHOD.
      METHOD display_employee.
        WRITE:/ 'Employee', g_employee-no, g_employee-name.
      ENDMETHOD.
      METHOD display_no_of_employees.
        WRITE: / 'Number of employees is:', g_no_of_employees.
      ENDMETHOD.
    ENDCLASS.
    R E P O R T
    DATA: g_employee1 TYPE REF TO lcl_employee,
          g_employee2 TYPE REF TO lcl_employee.
    START-OF-SELECTION.
      CREATE OBJECT g_employee1
        EXPORTING im_employee_no = 1
                  im_employee_name = 'John Jones'.
      CREATE OBJECT g_employee2
        EXPORTING im_employee_no = 2
                  im_employee_name = 'Sally Summer'.
      CALL METHOD g_employee1->display_employee.
      CALL METHOD g_employee2->display_employee.
      CALL METHOD g_employee2->display_no_of_employees.
    2. Inheritance and polymorphism
    This example uses a superclass lcl_company_employees and two subclasses lcl_bluecollar_employee and lcl_whitecollar_employee to add employees to a list and then display a list of employees and there wages. The wages are calcukated in the method add_employee, but as the wages are calculated differently for blue collar employees and white collar emplyees, the superclass method add_employee is redeifined in the subclasses.
    Principles:
    Create super class LCL_CompanyEmployees.
    The class has the methods:
    •     Constructor
    •     Add_Employee - Adds a new employee to the list of employees
    •     Display_Employee_List - Displays all employees and there wage
    •     Display_no_of_employees - Displays total number of employees
    Note the use of CLASS-DATA to keep the list of employees and number of employees the same from instance to instance.
    Create subclasses lcl_bluecollar_employee and lcl_whitecollar_employee. The calsses are identical, except for the redifinition of the add_employee method, where the caclculation of wage is different.
    Methodes:
    •     Constructor. The constructor is used to initialize the attributes of the employee. Note that the constructor in the supclasss has to be called from within the constructor of the subclass.
    •     Add_Employee. This is a redinition of the same method in the superclass. In the redefined class the wage is calcuated, and the superclass method is called to add the employees to the emploee list.:
    The program
    REPORT zbc404_hf_events_2 .
    Super class LCL_CompanyEmployees
    CLASS lcl_company_employees DEFINITION.
      PUBLIC SECTION.
        TYPES:
          BEGIN OF t_employee,
            no  TYPE i,
            name TYPE string,
            wage TYPE i,
         END OF t_employee.
        METHODS:
          constructor,
          add_employee
            IMPORTING im_no   TYPE i
                      im_name TYPE string
                      im_wage TYPE i,
          display_employee_list,
          display_no_of_employees.
      PRIVATE SECTION.
        CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,
                    no_of_employees TYPE i.
    ENDCLASS.
    *-- CLASS LCL_CompanyEmployees IMPLEMENTATION
    CLASS lcl_company_employees IMPLEMENTATION.
      METHOD constructor.
        no_of_employees = no_of_employees + 1.
      ENDMETHOD.
      METHOD add_employee.
      Adds a new employee to the list of employees
        DATA: l_employee TYPE t_employee.
        l_employee-no = im_no.
        l_employee-name = im_name.
        l_employee-wage = im_wage.
        APPEND l_employee TO i_employee_list.
      ENDMETHOD.
      METHOD display_employee_list.
      Displays all employees and there wage
        DATA: l_employee TYPE t_employee.
        WRITE: / 'List of Employees'.
        LOOP AT i_employee_list INTO l_employee.
          WRITE: / l_employee-no, l_employee-name, l_employee-wage.
        ENDLOOP.
      ENDMETHOD.
      METHOD display_no_of_employees.
      Displays total number of employees
        SKIP 3.
        WRITE: / 'Total number of employees:', no_of_employees.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_BlueCollar_Employee
    CLASS lcl_bluecollar_employee DEFINITION
              INHERITING FROM lcl_company_employees.
      PUBLIC SECTION.
        METHODS:
            constructor
              IMPORTING im_no             TYPE i
                        im_name           TYPE string
                        im_hours          TYPE i
                        im_hourly_payment TYPE i,
             add_employee REDEFINITION.
      PRIVATE SECTION.
        DATA:no             TYPE i,
             name           TYPE string,
             hours          TYPE i,
             hourly_payment TYPE i.
    ENDCLASS.
    *---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION
    CLASS lcl_bluecollar_employee IMPLEMENTATION.
      METHOD constructor.
      The superclass constructor method must be called from the subclass
      constructor method
        CALL METHOD super->constructor.
        no = im_no.
        name = im_name.
        hours = im_hours.
        hourly_payment = im_hourly_payment.
      ENDMETHOD.
      METHOD add_employee.
      Calculate wage an call the superclass method add_employee to add
      the employee to the employee list
        DATA: l_wage TYPE i.
        l_wage = hours * hourly_payment.
        CALL METHOD super->add_employee
          EXPORTING im_no = no
                    im_name = name
                    im_wage = l_wage.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_WhiteCollar_Employee
    CLASS lcl_whitecollar_employee DEFINITION
        INHERITING FROM lcl_company_employees.
      PUBLIC SECTION.
        METHODS:
            constructor
              IMPORTING im_no                 TYPE i
                        im_name               TYPE string
                        im_monthly_salary     TYPE i
                        im_monthly_deductions TYPE i,
             add_employee REDEFINITION.
      PRIVATE SECTION.
        DATA:
          no                    TYPE i,
          name                  TYPE string,
          monthly_salary        TYPE i,
          monthly_deductions    TYPE i.
    ENDCLASS.
    *---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION
    CLASS lcl_whitecollar_employee IMPLEMENTATION.
      METHOD constructor.
      The superclass constructor method must be called from the subclass
      constructor method
        CALL METHOD super->constructor.
        no = im_no.
        name = im_name.
        monthly_salary = im_monthly_salary.
        monthly_deductions = im_monthly_deductions.
      ENDMETHOD.
      METHOD add_employee.
      Calculate wage an call the superclass method add_employee to add
      the employee to the employee list
        DATA: l_wage TYPE i.
        l_wage = monthly_salary - monthly_deductions.
        CALL METHOD super->add_employee
          EXPORTING im_no = no
                    im_name = name
                    im_wage = l_wage.
      ENDMETHOD.
    ENDCLASS.
    R E P O R T
    DATA:
    Object references
      o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,
      o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.
    START-OF-SELECTION.
    Create bluecollar employee obeject
      CREATE OBJECT o_bluecollar_employee1
          EXPORTING im_no  = 1
                    im_name  = 'Gylle Karen'
                    im_hours = 38
                    im_hourly_payment = 75.
    Add bluecollar employee to employee list
      CALL METHOD o_bluecollar_employee1->add_employee
          EXPORTING im_no  = 1
                    im_name  = 'Gylle Karen'
                    im_wage = 0.
    Create whitecollar employee obeject
      CREATE OBJECT o_whitecollar_employee1
          EXPORTING im_no  = 2
                    im_name  = 'John Dickens'
                    im_monthly_salary = 10000
                    im_monthly_deductions = 2500.
    Add bluecollar employee to employee list
      CALL METHOD o_whitecollar_employee1->add_employee
          EXPORTING im_no  = 1
                    im_name  = 'Karen Johnson'
                    im_wage = 0.
    Display employee list and number of employees. Note that the result
    will be the same when called from o_whitecollar_employee1 or
    o_bluecolarcollar_employee1, because the methods are defined
    as static (CLASS-METHODS)
      CALL METHOD o_whitecollar_employee1->display_employee_list.
      CALL METHOD o_whitecollar_employee1->display_no_of_employees.
    The resulting report
    List of Employees
    1 Karen Johnson 2.850
    2 John Dickens 7.500
    Total number of employees: 2
    3. Interfaces
    This example is similiar to th eprevious example, however an interface is implemented with the method add_employee. Note that the interface is only implemented in the superclass ( The INTERFACE stament), but also used in the subclasses.
    The interface in the example only contains a method, but an iterface can also contain attrbutes, constants, types and alias names.
    The output from example 3 is similiar to the output in example 2.
    All changes in the program compared to example 2 are marked with red.
    REPORT zbc404_hf_events_3 .
          INTERFACE lif_employee
    INTERFACE lif_employee.
      METHODS:
        add_employee
           IMPORTING im_no   TYPE i
                      im_name TYPE string
                      im_wage TYPE i.
    ENDINTERFACE.
    Super class LCL_CompanyEmployees
    CLASS lcl_company_employees DEFINITION.
      PUBLIC SECTION.
        INTERFACES lif_employee.
        TYPES:
          BEGIN OF t_employee,
            no  TYPE i,
            name TYPE string,
            wage TYPE i,
         END OF t_employee.
        METHODS:
          constructor,
         add_employee      "Removed
            IMPORTING im_no   TYPE i
                      im_name TYPE string
                      im_wage TYPE i,
          display_employee_list,
          display_no_of_employees.
      PRIVATE SECTION.
        CLASS-DATA: i_employee_list TYPE TABLE OF t_employee,
                    no_of_employees TYPE i.
    ENDCLASS.
    *-- CLASS LCL_CompanyEmployees IMPLEMENTATION
    CLASS lcl_company_employees IMPLEMENTATION.
      METHOD constructor.
        no_of_employees = no_of_employees + 1.
      ENDMETHOD.
      METHOD lif_employee~add_employee.
      Adds a new employee to the list of employees
        DATA: l_employee TYPE t_employee.
        l_employee-no = im_no.
        l_employee-name = im_name.
        l_employee-wage = im_wage.
        APPEND l_employee TO i_employee_list.
      ENDMETHOD.
      METHOD display_employee_list.
      Displays all employees and there wage
        DATA: l_employee TYPE t_employee.
        WRITE: / 'List of Employees'.
        LOOP AT i_employee_list INTO l_employee.
          WRITE: / l_employee-no, l_employee-name, l_employee-wage.
        ENDLOOP.
      ENDMETHOD.
      METHOD display_no_of_employees.
      Displays total number of employees
        SKIP 3.
        WRITE: / 'Total number of employees:', no_of_employees.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_BlueCollar_Employee
    CLASS lcl_bluecollar_employee DEFINITION
              INHERITING FROM lcl_company_employees.
      PUBLIC SECTION.
        METHODS:
            constructor
              IMPORTING im_no             TYPE i
                        im_name           TYPE string
                        im_hours          TYPE i
                        im_hourly_payment TYPE i,
             lif_employee~add_employee REDEFINITION..
      PRIVATE SECTION.
        DATA:no             TYPE i,
             name           TYPE string,
             hours          TYPE i,
             hourly_payment TYPE i.
    ENDCLASS.
    *---- CLASS LCL_BlueCollar_Employee IMPLEMENTATION
    CLASS lcl_bluecollar_employee IMPLEMENTATION.
      METHOD constructor.
      The superclass constructor method must be called from the subclass
      constructor method
        CALL METHOD super->constructor.
        no = im_no.
        name = im_name.
        hours = im_hours.
        hourly_payment = im_hourly_payment.
      ENDMETHOD.
      METHOD lif_employee~add_employee.
      Calculate wage an call the superclass method add_employee to add
      the employee to the employee list
        DATA: l_wage TYPE i.
        l_wage = hours * hourly_payment.
        CALL METHOD super->lif_employee~add_employee
          EXPORTING im_no = no
                    im_name = name
                    im_wage = l_wage.
      ENDMETHOD.
    ENDCLASS.
    Sub class LCL_WhiteCollar_Employee
    CLASS lcl_whitecollar_employee DEFINITION
        INHERITING FROM lcl_company_employees.
      PUBLIC SECTION.
        METHODS:
            constructor
              IMPORTING im_no                 TYPE i
                        im_name               TYPE string
                        im_monthly_salary     TYPE i
                        im_monthly_deductions TYPE i,
             lif_employee~add_employee REDEFINITION.
      PRIVATE SECTION.
        DATA:
          no                    TYPE i,
          name                  TYPE string,
          monthly_salary        TYPE i,
          monthly_deductions    TYPE i.
    ENDCLASS.
    *---- CLASS LCL_WhiteCollar_Employee IMPLEMENTATION
    CLASS lcl_whitecollar_employee IMPLEMENTATION.
      METHOD constructor.
      The superclass constructor method must be called from the subclass
      constructor method
        CALL METHOD super->constructor.
        no = im_no.
        name = im_name.
        monthly_salary = im_monthly_salary.
        monthly_deductions = im_monthly_deductions.
      ENDMETHOD.
      METHOD lif_employee~add_employee.
      Calculate wage an call the superclass method add_employee to add
      the employee to the employee list
        DATA: l_wage TYPE i.
        l_wage = monthly_salary - monthly_deductions.
        CALL METHOD super->lif_employee~add_employee
          EXPORTING im_no = no
                    im_name = name
                    im_wage = l_wage.
      ENDMETHOD.
    ENDCLASS.
    R E P O R T
    DATA:
    Object references
      o_bluecollar_employee1  TYPE REF TO lcl_bluecollar_employee,
      o_whitecollar_employee1 TYPE REF TO lcl_whitecollar_employee.
    START-OF-SELECTION.
    Create bluecollar employee obeject
      CREATE OBJECT o_bluecollar_employee1
          EXPORTING im_no  = 1
                    im_name  = 'Gylle Karen'
                    im_hours = 38
                    im_hourly_payment = 75.
    Add bluecollar employee to employee list
      CALL METHOD o_bluecollar_employee1->lif_employee~add_employee
          EXPORTING im_no  = 1
                    im_name  = 'Karen Johnson'
                    im_wage = 0.
    Create whitecollar employee obeject
      CREATE OBJECT o_whitecollar_employee1
          EXPORTING im_no  = 2
                    im_name  = 'John Dickens'
                    im_monthly_salary = 10000
                    im_monthly_deductions = 2500.
    Add bluecollar employee to employee list
      CALL METHOD o_whitecollar_employee1->lif_employee~add_employee
          EXPORTING im_no  = 1
                    im_name  = 'Gylle Karen'
                    im_wage = 0.
    Display employee list and number of employees. Note that the result
    will be the same when called from o_whitecollar_employee1 or
    o_bluecolarcollar_employee1, because the methods are defined
    as static (CLASS-METHODS)
      CALL METHOD o_whitecollar_employee1->display_employee_list.
      CALL METHOD o_whitecollar_employee1->display_no_of_employees.
    4. Events
    This is the same example as example 4. All changes are marked with red. There have been no canges to the subclasses, only to the superclass and the report, sp the code for th esubclasses is not shown.
    For a simple example refer to Events in Examples.
    REPORT zbc404_hf_events_4 .
          INTERFACE lif_employee
    INTERFACE lif_employee.
      METHODS:
        add_employee
           IMPORTING im_no   TYPE i
                      im_name TYPE string
                      im_wage TYPE i.
    ENDINTERFACE.
    Super class LCL_CompanyEmployees
    CLASS lcl_company_employees DEFINITION.
      PUBLIC SECTION.
        TYPES:
        BEGIN OF t_employee,
          no  TYPE i,
          name TYPE string,
          wage TYPE i,
       END OF t_employee.
      Declare event. Note that declaration could also be placed in the
      interface

  • Abap object oriented

    Hi experts.,
    i am very new in  abap oo . please give me documentation and if possible sample   code.
    thanks in advance,

    Some documentation related with OOPs Abao :
    oops_beginers
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ALV Gird Control (BC-SRV-ALE)
    SAP Container
    SAP Control Framework
    or Thread New To OOPs ABAP
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    General Tutorial for OOPS
    check all the below links
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    Check these links.
    http://www.henrikfrank.dk/abapuk.html
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
    Go through the below links,
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    OO ABAP links:
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    go through these links
    http://www.erpgenie.com/abap/index.htm
    http://sic.fh-lu.de/sic/bic.nsf/(vJobangebote)/EC8AD2AE0349CE92C12572200026FDB8/$File/Intern%20or%20Working%20Student%20as%20ABAB%20OO%20Developer.pdf?Open
    http://help.sap.com/saphelp_nw2004s/helpdata/en/43/41341147041806e10000000a1553f6/frameset.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ABAP_OBJECTS_ENJOY_0 Template for Solutions of ABAP Object Enjoy Course
    ABAP_OBJECTS_ENJOY_1 Model Solution 1: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_2 Model Solution 2: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_3 Model Solution 3: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_4 Model Solution 4: ABAP Objects Enjoy Course
    ABAP_OBJECTS_ENJOY_5 Model Solution 5: ABAP Objects Enjoy Course
    DEMO_ABAP_OBJECTS Complete Demonstration for ABAP Objects
    DEMO_ABAP_OBJECTS_CONTROLS GUI Controls on Screen
    DEMO_ABAP_OBJECTS_EVENTS Demonstration of Events in ABAP Objects
    DEMO_ABAP_OBJECTS_GENERAL ABAP Objects Demonstration
    DEMO_ABAP_OBJECTS_INTERFACES Demonstration of Interfaces in ABAP Objects
    DEMO_ABAP_OBJECTS_METHODS Demonstration of Methods in ABAP Objects
    DEMO_ABAP_OBJECTS_SPLIT_SCREEN Splitter Control on Screen
    check the below links lot of info and examples r there
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ALVOOPS
    http://www.abap4.it/download/ALV.pdf
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
    http://www.erpgenie.com/abap/controls/alvgrid.htm
    OOPS with ABAP
    https://www.sdn.sap.com/irj/sdn/wiki?path=/pages/viewpage.action&pageid=37566
    /people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
    http://www.sapgenie.com/abap/OO/
    For understanding COntrol Frameworks in OO ABAP, check this.
    http://www.sapgenie.com/abap/controls/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com.
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    ALVOOPS
    http://www.erpgenie.com/abap/controls/alvgrid.htm
    OOPS with ABAP
    https://www.sdn.sap.com/irj/sdn/wiki?path=/pages/viewpage.action&pageid=37566
    /people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
    http://www.sapgenie.com/abap/OO/
    For understanding COntrol Frameworks in OO ABAP, check this.
    http://www.sapgenie.com/abap/controls/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com.
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Regarding  ALV Grid  Control using OOPs concepts
    Regarding  ALV Grid  Control using OOPs concepts
    OOPS – OO ABAP
    http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    DIRLL DOWN AND INTERACTIVE REPORT
    http://www.sap-img.com/abap/difference-between-drilldown-report-and-interactive-report.htm
    PAGE BREAK FOR ALV LIST
    check out this link
    http://www.abap4.it/download/ALV.pdf
    good book on ABAP objects(OOPS)
    http://www.esnips.com/doc/bc475662-82d6-4412-9083-28a7e7f1ce09/Abap-Objects---An-Introduction-To-Programming-Sap-Applications
    How to check Cluster Table Data
    https://forums.sdn.sap.com/click.jspa?searchID=5215473&messageID=3520315
    http://www.sap-img.com/abap/the-different-types-of-sap-tables.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/81/415d363640933fe10000009b38f839/frameset.htm
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    COLOURING Single Columan
    http://www.sapfans.com/forums/viewtopic.php?t=52107
    Check this thread to get more idea about ALVs.
    Interactive ALV
    Rewards if useful.............
    Minal

  • Is oracle OODBMS (Object Oriented database management system)?

    Hello, All
    Is oracle OODBMS (Object Oriented database management system)? and if yes, please explain.
    I have query in my mind so, I just posted here.
    Regards,
    Rahul
    Edited by: Rahul K. Thakar on Nov 3, 2010 12:03 PM
    Edited by: Rahul K. Thakar on Nov 3, 2010 12:04 PM

    I believe the precise answer is that Oracle is ORDBMS (Object-Relational DBMS).For a brief period in time Oracle Corporation offered a product called Object Oriented Oracle (OOO).
    It was such a wonderous product that it was buried in the trash can of history when it did neither task very well.

  • Only oracle object tables to create object oriented database

    Can we use only oracle object tables for a database and if it can be done, can we create pure object oriented database with oracle. How it can be done?
    help..
    thank you..

    PriyashanthaHP wrote:
    I have no my own definitions for OODB. There are lot in the internet. I'm asking, can't we use that OODB concept with oracle. And gave you an example with 'employee' and 'department' tables. I asked that can we create object tables for these two tables keeping their relationship
    thank you..
    There is no way to answer that without knowing what YOU mean by OODB.
    See the database concepts doc
    http://docs.oracle.com/cd/B28359_01/server.111/b28318/schema.htm
    Nested Tables
    You can create a table with a column whose datatype is another table. That is, tables can be nested within other tables as values in a column. The Oracle database server stores nested table data out of line from the rows of the parent table, using a store table that is associated with the nested table column. The parent row contains a unique set identifier value associated with a nested table instance.
      Oracle Database Object-Relational Developer's Guidefor further information on nested tables
      Oracle Database Advanced Application Developer's Guide

  • Can I develop a 100% Object Oriented DB with Oracle 10g?

    Hello!
    I need to know if I can develop a pure Object Oriented Data Base? because I have been looking for this information, and I just found Oracle's arquitecture is oriented to relational object model.
    Thanks!
    Edited by: 925803 on 05-abr-2012 10:39

    Dear "925803",
    1) You're asking this question in the Oracle Application Express discussion forum - not really related to generic Database questions. This Database forum may be more suited: General Database Discussions
    2) The Oracle database is not an object-oriented database.
    Joel

  • Object Oriented? Or Not?

    Perhaps the way I raised this question would be peculiar for you as I'm a newbie!
    I'm willing to use oracle object oriented programing for my applications, and some senior people(work in my organization) told me that Object oriented database concept is failed in the industry. As a reason they say that; even if Object oriented databases solved some problems people had with relational databases, still Object oriented databases are failed to facilitate most of the advantages of relational databases. It's somewhat chaotic for me, as I'm new to PL developments.
    They didn't mention any specific reason; but just told me that relational databases perform well and faster than object oriented databases, and for business logic, object oriented databases has some accuracy issues.
    But I'm not ready to accept that it will be useless to learn 'Oracle Object Oriented Programing' or 'Object Oriented Database Concept' would be failed.
    So I need to know,
    1. Will it be useless to learn & use 'OOP' techniques when learning PL/SQL programing?
    2. Is there any disadvantage of using 'OOP' with oracle? (If there is any, please let me know if you have time for that).
    Especially, (The most pleasing answer I would like to hear from you ;-) )
    3. If Object Oriented Databases concept is better and something that a "PL/SQL" developer must learn; please let me know that.
    Please provide me a link if you can, which would help me to learn why should we use 'OOP' with oracle (if Object oriented database is better than Relational database)

    Intruder wrote:
    So I need to know,
    1. Will it be useless to learn & use 'OOP' techniques when learning PL/SQL programing?No. OOP has very little do with relational database design. The two is not mutually exclusive and can co-exist easily.
    2. Is there any disadvantage of using 'OOP' with oracle? (If there is any, please let me know if you have time for that).That depends on how+ you use it. If OOP was truly horrible and bad, then why does Oracle spend money on the research and development on it for their RDBMS product?
    Especially, (The most pleasing answer I would like to hear from you ;-) )
    3. If Object Oriented Databases concept is better and something that a "PL/SQL" developer must learn; please let me know that.OOP is not Object Orientated Database. These are two very different concepts. OOP competes with procedural programming. Object Orientated Database design competes with Relational Database Design (and others of course).
    There are two primary issues with an Object Orientated Database design. Complexity. Performance.
    Do you for example store the subclasses of the same abstract class in the same physical object table? You can do that in Oracle.. but then the database need to resolve the class type at run-time.. every single time.. for every single object accessed... At what cost ito performance?
    How do you treat collection classes? A collection can be stored as a physical table. It can also be stored as an attribute (column) of an object (table) - in which case the physical implementation for that is a nested table. There are dire performance issues with nested tables when these are used and applied incorrectly.
    There are numerous such issues.
    Compare this with something as mature and robust as Relational Database Design. Easy to understand. Easy to use. And what the Oracle RDBMS product was specifically designed to support.
    Which one is "+better+" (especially in the Oracle RDBMS environment)? It should be obvious.
    I suggest that you read Codd's original paper on "+A Relation Model of Data for Large Shared Data Banks+", read "+The Third Manifesto+" from Chris Date, and papers from various other authors for insight.

  • Join Query in Object Oriented Programming

    Hi,
    I am trying to understand better how OO programming should work in CFC context.  For example, I have two database tables: Customer and Order.  So I create two CFCs, one for Customer and another for Order.  In the CFCs I have query functions (select, insert, update) to access and manipulate data in the underlying tables.
    Now, I need to create a new CFC, OrderReport.  This CFC takes in customerID and returns data pulled from both Customer and Order tables.  I can just have a join query that pulls data from these two tables.  However, I have been wondering whether this method is within the spirit of Object Oriented programming.  Should this CFC be able to access directly to the two tables?  Or should I pull data separately using Customer CFC and Order CFC, and join them locally (ie. in OrderReport CFC)?  This latter method would be a lot slower to run than the first method.
    Can you advise me as to what the best practice is in the context of OO programming?  Thank you.

    This is a common question for those new to OO programming. Here are some of
    my thoughts on the topic.
    OO programming has nothing to do with tables. Your tables are essentially a
    relational storage of one part of a business concept. It just so happens
    that most of the data you need to support the business concept of Customer
    and the business concept of Order are stored in tables named Customer and
    Order. This is because database tables often relate to a business concept. I
    think you'd find that to get the entire customer, you'd have to get data
    from other tables, like State and Gender and other such tables.
    The reason why I bring this up is to begin to separate your thinking.
    Databases are concerned with efficient storage and retrieval of data.
    Objects (CFCs) are not concerned at all with storage of data. Objects are
    concerned with encapsulating business logic relating to a business concept.
    Just like your database may have columns not needed by your CFCs, your CFCs
    likely have methods not needed by your database.
    For example, if you wanted to know, in your application, whether to show an
    In Store Pickup option, you may wish to add an isLocal() method to your
    customer object. This would ( we'll pretend) get the customer's zip code,
    and look it up in  GeographicalPostalServiceMapper object to tell us how far
    away the customer is.
    The point is, the right OO (CFC) design has nothing to do with how your
    tables are organized in the database. You would do well to concern yourself
    with the needs of the application and what sort of questions you need your
    customer object to be able to answer to the other parts of your application.
    Like, isLocal(), isOver21(), isBadCreditRisk() and so on.
    As to your question about joins, you would do well to use joins in your
    application. Do not be afraid of using queries to get the information you
    need. Especially for reporting queries. In these cases, I often make an
    object called a xxxList. My CustomerList.cfc would have the different ways
    to list customer data, like CustomerOrders and CustomerOrderReturns. I'd
    hide this join relationship inside of the CustomerList object so only the
    CustomerList object has the SQL. That's usually enough encapsulation for the
    needs of my application.
    Truly, it doesn't matter what the name of the object is, just that you
    assign it the responsibility of managing a business concept and keep that
    business concept inside that object. You seem to have suggested
    CustomerReport.cfc and that would be a fine name for an object that can
    return numerous Customer Reports.
    Happy Coding
    DW

  • ANN: PHP Object-Oriented Solutions

    This is not directly related to Dreamweaver, but I know a lot
    of people
    here use PHP. My latest book, "PHP Object-Oriented Solutions"
    has just
    been published and is already in stock at Amazon.com and
    www.compman.co.uk. It's aimed at intermediate PHP developers
    who want to
    create reusable code through PHP 5 classes. It explains the
    basic
    principles of Object-Oriented Programming (OOP), and contains
    practical
    examples, such as a server-side validation class, generating
    XML and RSS
    feeds, and simplifying date handling. It also explains
    several powerful
    features of PHP 5, such as SimpleXML, XMLWriter, and the
    Standard PHP
    Library (SPL).
    The book concentrates exclusively on PHP 5. The code will not
    work on PHP 4.
    David Powers, Adobe Community Expert
    Author, "The Essential Guide to Dreamweaver CS3" (friends of
    ED)
    Author, "PHP Solutions" (friends of ED)
    http://foundationphp.com/

    http://www.amazon.com/dp/1430210117?tag=japaninterfac-20&camp=14573&creative=327641&linkCo de=as1&creativeASIN=1430210117&adid=1HERPDYNB05EX6CJB7D2&
    http://tinyurl.com/63bkgu
    Ken Ford
    Adobe Community Expert Dreamweaver/ColdFusion
    Fordwebs, LLC
    http://www.fordwebs.com
    "Joe Makowiec" <[email protected]> wrote in
    message
    news:[email protected]..
    > On 19 Aug 2008 in macromedia.dreamweaver.appdev, David
    Powers wrote:
    >
    >> Michael White wrote:
    >>> From where do you recommend I buy it? (NY, USA)
    >>
    >> The place that would bring the greatest benefit to
    me is through the
    >> Amazon.com link on my site (see link in my sig).
    Amazon in the USA
    >> is offering it at a 34% discount. However, I'm
    delighted if anyone
    >> buys it anywhere.
    >
    > I didn't see a link to US Amazon, only Canada and UK?
    >
    > --
    > Joe Makowiec
    >
    http://makowiec.net/
    > Email:
    http://makowiec.net/contact.php

Maybe you are looking for