Who uses inheritance?

I had a conversation with Tom Kyte on PL/SQL and OO (see thread http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:63942113457534#642059000346437745 ).
When I program in C#, I use a lot of inheritance and polymorphism, why not in PL/SQL?
Do you readers have good examples that show how you can use inheritance and polymorphism?
I hope that there will come support for encapsulation in Oracle Objects.

I like both, I like PL/SQL and I like C# (very OO).Like you, I like PL/SQL and I like OOPL's.
I don't know C# - I know C++, Java and Eiffel, but I'm not an expert.
In my opinion, Eiffel is the best OOPL (Eiffel was designed in 1985, commercialy released in 1986, ISO-standardized in 2006).
But mostly I like relational databases (relational DBMS's).
My motto is: “Thou shall not do in the Middle Tier, what thou could have done in the Data Tier”
(Toon Koppelaars in "A first JDeveloper project: Choices made, lessons learned", Oracle World 2002).
I think that the current object types in Oracle aren't practical for transient objects in PL/SQL,
first because a "true" OOPL must have references between transient objects (and then, perhaps, even a garbage collector).
Between the way, I sent my PL/SQL "wish list" to Steven Feuerstein’s site "21st Century PL/SQL"
(Add advanced O-O features like those found in Eiffel)
http://www.oracleplsqlprogramming.com/IC/ideas/data_structures_and_datatypes/object_types/index.php
Here are my attempts to use PL/SQL as OOPL ( PL/SQL++ :) :
Dynamic Method Dispatch and Method Overloading in a Subtype (May 2003)
http://www.quest-pipelines.com/newsletter-v4/0503_C.htm
Calling the Parent Object's Version of an Overridden Method
http://www.quest-pipelines.com/pipelines/plsql/tips03.htm#JUNE
(note: Oracle 11g has Generalized Invocation)
How to Get the Text Name of an Object's Type
http://www.quest-pipelines.com/pipelines/plsql/tips06.htm#JULY
The Template Design Pattern in PL/SQL
http://www.quest-pipelines.com/pipelines/plsql/tips06.htm#OCTOBER
Design by Contract (DBC) and PL/SQL
http://www.quest-pipelines.com/pipelines/plsql/tips.htm#JUNE
But, I think that Oracle object types are OK for persistent objects (for “column objects”, not for “row objects”).
C.J.Date in An introduction to Database Systems (2004, page 885) says:
"... object/relational systems ... are, or should be, basically just relational systems that support the relational domain concept (i.e., types) properly
- in other words, true relational systems, meaning in particular systems that allow users to define their own types".
Here is an attempt to use Oracle "object-relational" features "in the proper way" (in Date's sense) - to use object type as domain:
“OR(DBMS) or R(DBMS), That is the Question”
http://www.quest-pipelines.com/pipelines/plsql/tips.htm#OCTOBER
Regards,
Zlatko

Similar Messages

  • How to find out the Transactions used per month & the USER who used that

    Hi,
    1)How to find out the Transactions used per month & the USER who used that?
    2)and can i get the above same for minimum 20 month?
    System : SAP- Enterprise Core Component.

    You can use my program...
    *& Report  Z_ABAP_TCODE_MONITOR
    *****&  Program Type          : Report                                 *
    *****&  Title                 : Z_ABAP_TCODE_MONITOR                   *
    *****&  Transaction code      : ZTCODE_USAGE                           *
    *****&  Developer name        : Shailendra Kolakaluri                  *
    *****&  Deveopment start date : 26 th Dec 2011                         *
    *****&  Development Package   : ZDEV                                   *
    *****&  Transport No          : DEVK906086                                       *
    *****&  Program Description   : This program is to display
    *List all tcodes executed during previous day.
    *& Show the number of users executing tcodes
    *& Modification history
    REPORT  Z_ABAP_TCODE_MONITOR.
    *& List all tcodes executed during previous day.
    *& Show the number of users executing tcodes
    TYPE-POOLS : slis.
    DATA: ind TYPE i,
          fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          layout TYPE slis_layout_alv,
          variant TYPE disvariant,
          events  TYPE slis_t_event WITH HEADER LINE,
          heading TYPE slis_t_listheader WITH HEADER LINE.
    *REPORT  z_report_usage.
    TYPES: BEGIN OF zusertcode,
      date   TYPE swncdatum,
      user   TYPE swncuname,
      mandt     TYPE swncmandt,
      tcode     TYPE swnctcode,
      report TYPE swncreportname,
      count     TYPE swncshcnt,
    END OF zusertcode.
    *data   : date type n.
    DATA: t_usertcode  TYPE swnc_t_aggusertcode,
          wa_usertcode TYPE swncaggusertcode,
          wa           TYPE zusertcode,
          t_ut         TYPE STANDARD TABLE OF zusertcode,
          wa_result    TYPE zusertcode,
          t_result     TYPE STANDARD TABLE OF zusertcode.
    PARAMETER: month TYPE dats DEFAULT sy-datum.
    *PARAMETER: date TYPE dats.
    *select-options : username for wa_usertcode-account.
    START-OF-SELECTION.
    PERFORM get_data.
    PERFORM get_fieldcatalog.
      PERFORM set_layout.
    PERFORM get_event.
    PERFORM get_comment.
      PERFORM display_data.
    FORM get_data .
    *date = sy-datum - 2 .
    After start-of-selection add this line (parameter Month required 01 as day).
      concatenate month+0(6) '01' into month.
      CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES'
        EXPORTING
          component     = 'TOTAL'
          ASSIGNDSYS    = 'DEV'
          periodtype    = 'M'
          periodstrt    = month
        TABLES
          usertcode     = t_usertcode
        EXCEPTIONS
          no_data_found = 1
          OTHERS        = 2.
      wa-date  = month.
    *wa-date  = date.
      wa-mandt = sy-mandt.
    wa_usertcode-account = username.
      LOOP AT t_usertcode INTO wa_usertcode.
        wa-user = wa_usertcode-account.
        IF wa_usertcode-entry_id+72 = 'T'.
          wa-tcode  = wa_usertcode-entry_id.
          wa-report = space.
        ELSE.
          wa-tcode  = space.
          wa-report = wa_usertcode-entry_id.
        ENDIF.
        COLLECT wa INTO t_ut.
      ENDLOOP.
      SORT t_ut BY report ASCENDING.
      CLEAR: wa, wa_result.
    endform.
    FORM get_fieldcatalog .
    fcat-tabname     = 't_ut'.
    fcat-fieldname   = 'DATE'.
    fcat-seltext_l   = 'Date'.
    fcat-key         = 'X'.
    APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'MANDT'.
      fcat-seltext_l   = 'Client'.
      fcat-key         = 'X'.
      APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'USER'.
      fcat-seltext_l   = 'User Name'.
      fcat-key         = 'X'.
      APPEND fcat.
      CLEAR fcat.
      fcat-tabname     = 't_ut'.
      fcat-fieldname   = 'TCODE'.
      fcat-seltext_l   = 'Transaction Code'.
      fcat-key         = 'X'.
      APPEND fcat.
    ENDFORM.
    *&      Form  SET_LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM set_layout .
      layout-colwidth_optimize = 'X'.
    ENDFORM.                    " SET_LAYOUT
    *&      Form  GET_EVENT
          text
    -->  p1        text
    <--  p2        text
    *FORM get_event .
    events-name = slis_ev_top_of_page.
    events-form = 'TOP_OF_PAGE'.
    APPEND events.
    *ENDFORM.                    " GET_EVENT
    **&      Form  GET_COMMENT
          text
    -->  p1        text
    <--  p2        text
    *FORM get_comment .
    DATA: text(30).
    text = 'Billing Report'.
    heading-typ = 'H'.
    heading-info = text.
    APPEND heading.
    *ENDFORM.                    " GET_COMMENT
    **&      Form  top_of_page
          text
    -->  p1        text
    <--  p2        text
    *FORM top_of_page .
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         it_list_commentary       = heading[]
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
    *ENDFORM.                    " top_of_page
    *&      Form  DISPLAY_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM display_data .
      sort t_ut[].
    DELETE ADJACENT DUPLICATES FROM t_ut[] COMPARING ALL FIELDS.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-cprog
          is_layout          = layout
          it_fieldcat        = fcat[]
          i_save             = 'A'
          is_variant         = variant
          it_events          = events[]
        TABLES
          t_outtab           = t_ut
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " DISPLAY_DATA

  • How to find out the list of users who used Discoverer

    Dear All,
    We have Oracle E-Business Suite 11.5.10.2 with Disco. 4i.
    We need to know how we can find out the Employee ID, Responsibility, Org... who used discoverer during a specific period in the past ? For example the last year.
    Any help plz.
    Regards,
    Mohammad Muhtadi

    I'm not sure You can get the responsibilities or the org that was used in that specific run but as for getting when it was run and by whom...
    Try that SQL:
    select distinct
    qs.qs_doc_name workbook,
    --qs.qs_doc_details worksheet,
    case when instr(qs.qs_doc_owner,'#')=1 then substr(qs.qs_doc_owner,2,10) else qs.qs_doc_owner end workbook_owner,
    qs.qs_created_date run_date,
    case when instr(qs.qs_created_by,'#')=1 then substr(qs.qs_created_by,2,10) else qs.qs_created_by end apps_user_id,
    fu.user_name apps_user_name,
    ppf.FULL_NAME user_full_name,
    ppf.EMPLOYEE_NUMBER user_employee_number
    from
    eul_us.eul4_qpp_stats qs,
    fnd_user fu,
    per_people_f ppf
    where to_number(substr(qs.qs_created_by,2,10))=fu.user_id(+)
    and fu.employee_id=ppf.PERSON_ID
    and sysdate between ppf.EFFECTIVE_START_DATE and ppf.EFFECTIVE_END_DATE
    change the "eul_us" to the discoverer schema.
    Basically the primary data you are looking for lies in the qpp_stats table...

  • My daughter who used to have an apple account and cancelled it is still having money taken out of her account.?

    MY daughter who used to have an apple iTunes account and cancelled it is still getting money taken out of her account what do I do guys to sort this out and get her a refund.

    If she logs into her account (an account can't be cancelled or deleted, you can only stop using it) on her computer's iTunes via the Store > View Account menu option, there should be a Purchase History section with a 'see all' link to the right of it - clicking on that should then display a list of her purchases. If she no longer has iTunes installed then she might be able to see recent purchases via this page : http://reportaproblem.apple.com
    Did she have any auto-renewing subscriptions that she didn't stop ? There are instructions on this page for managing and stopping them : http://support.apple.com/kb/HT4098
    Depending upon what the charged are, she can try contacting iTunes Support and see if they will refund or credit her : http://www.apple.com/support/itunes/contact/ - click on Contact iTunes Store Support on the right-hand side of the page, then Purchases, Billing & Redemption

  • Is there an app to allow users to enter their name on a shared iPad to track who used it?

    We have a pool of iPad 2 devices running iOS 7.0.4 used in a business environment. This pool of shared iPads is distributed and shared between multiple users. I would like better accountability of each iPad as they are being taken/used by employees. Is there an app that will store locally, email, or iMessage who used the iPad? It should prompt for a name or other ID each time they turn on the iPad or after X minutes of inactivity.

    We use the AirWatch MDM.  It has a multi-user device check in and check out capability which is what you want.  One solution for you would be to implement an MDM. 

  • TS1646 We have several apple devices in our family who use my debit card for itune charges.  I need to find out which device (itune account) these charges are coming from.  Can you help?

    We have several apple devices in our family who use my debit card for itune charges.  I need to find out which device (itune account) these charges are coming from. Can you help?

    You can't tell which device a purhcase was made on, but if your family members each have their own iTunes account to which your card is linked then you can check the purchase history on each of those accounts via the Store > View Account menu option on your computer's iTunes - that should have 'purchase history' section with a 'see all' link to the right of it

  • I bought an iPhone 4S at a supplier who uses Talkmobile. When I called to port my number to GiffGaff they said the phone did not need to be unlocked even though the guy who sold my husband the phone at the Warehouse place said you did. Now I have an ac

    I bought an iPhone 4S at a supplier who uses Talkmobile. When I switched to GiffGaff and asked the Talkmobile people to port my number and the code which they gave me, they told me my iPhone was never locked and did not need to be unlocked. Now my GiffGaff seems to be up and running and my husband can even leave new voicemail messages but I cannot access my phone. Everytime I put the SIM in it says it's not a valid SIM and that I need a supported carrier SIM. To me that sounds like the phone is locked.

    My husband (who set this up) is going over to Carphone Warehouse right now. He seemed to think that it was locked. But when we asked the carrier we picked, they said it was not locked so they could not unlock it. 
    Are all of you answering these questions familiar with the UK carriers? I am from the US but this was bought and serviced in the UK--nothing to do with the US.
    Maybe the vendor who sold the phone can/will unlock it for us no problem. I guess I will know in the next 5-6 hours. I have just been without a phone for almost an entire day now and it's very frustrating and I thought someone might have had this exact problem and could answer the question for me outright.
    Thanks for everyone's help. Sorry to take up your time.

  • Out of nowhere my daughter, who uses a Samsung Galaxy Victory phone is no longer receiving my text messages but I get hers.  How can I fix this.  I have a 4S and have updated to the 1SO7.

    Out of nowhere my daughter, who uses a Samsung Galaxy Victory phone is no longer receiving my text messages but I get hers.  How can I fix this.  I have a 4S and have updated to the ios 7.0.4.

    http://support.apple.com/kb/ts2755
    if the link provided doesn't help, then you will need to contact your phone carrier as SMS is a carrier feature.

  • HT204053 I am not able to update my apps because every time I am doing this, it is asking for a password which I have never used and the person who used it is in no more contact. how can i get my id instead of his??

    I am not able to update my apps because every time I am doing this, it is asking for a password which I have never used and the person who used it is in no more contact. how can i get my id instead of his??

    Apps can only be updated using the same Apple ID and password they were originally purchased with.

  • HT2458 Has anyone else who uses AT&T as their carrier been told if you cannot access your voicemail through your iPhone that there is no way to check your voicemails? This is an issue since I had to send my phone in for repair. Thank you

    Has anyone else who uses AT&amp;T as their carrier been told if you cannot access your voicemail through your iPhone that there is no way to check your voicemails? This is an issue since I had to send my phone in for repair. Thank you

    You received incorrect information from AT&T.  You can indeed access your voicemail without your iPhone.
    Call AT&T at (800) 331-0500 (assuming you're in the U.S.).  This is a 24 hour a day, 7 day a week number.  Ask them how to access your voicemail.  Normally, you would just do this by dialing your number from another phone, typing "*" once your voicemail recording starts, and entering your password.  You don't know your password, so it's probably the last four digits of your phone number or perhaps the seven - or ten-digit phone number.  Let the AT&T person tell you.

  • Recipient who used to have iPhone. Messages always try to send as imessage instead of text.

    I have a coworker who used to have an iPhone. Every time I message him, it trys to send as imessage and fails.  Then I have to tap the ! and choose send as text.
    I've delted the entire text string.  I've completely removed him from my address book and re-added him.  How do I tell the iPhone to always send messages to him as a text?
    Thanks

    Seems like your doing a lot of leg work for your friend. 
    Use the search function at the top right of the forum - this topic has been brouight up in many threads.
    He/She would deregister their iphone from the apple server..  Sorry don't know the link or website.

  • Why to use inheritance when import is sufficient

    The import directive tells the compiler where to look for the class definitions when it comes upon a class that it cannot find in the default java.lang package. After an import statement has been included in our program we can use the methods related to that class as required and we are not required to give the fully qualified names.
    In inheritance we extend a base class into a derived class so that the features and methods of the base class are available in the derived class which facilitates reusability. As per my understanding the same thing is facilitated by import statements. If it is so, why are we using inheritance if it can be done with the use of import statements?

    Import statements and inheritance are completely different things.
    Import statements tell the compiler how to expand brief class names into fully-qualified class names. It has nothing to do with the functionality of the code.
    Inheritance changes the identification and functionality of the classes, and thus the functionality of the code.
    Maybe you're really thinking about composition/delegation vs. inheritance. Composition is when a class has another class as a part of it, and delegation is when the class sends some of its work to the other class. You can have an object-oriented system without inheritance of implementations, using composition instead.

  • Iphone 4s - how do I change the name in the contacts for the owner of the phone - it is coming up as the other person who uses the laptop - so when ringing or texting anyone 2 names are being used as the caller id on the screen

    Iphone 4s - how do I change the name in the contacts for the owner of the phone - it is coming up as the other person who uses the laptop - so when ringing or texting anyone 2 names are being used as the caller id on the screen

    *Ralph Johns* writes:
    "Your options are:
    Get a trial account form @mac which will work as an iChat name after the 60 days run out but not be a email account that is valid (And is free)"
    Do you mean a trial account from .Mac? (DotMac)
    "Get an AIM Screen name and set it to Display what you want as you set it up.
    The Screen name can be whatever yu want but you can also set it to display something else as well."
    I had thought about this, but it seems other people have already chosen the screen name "pinksharkmark" and virtually every variation of it I can think of. So that isn't an option for me. As for getting it to display something else as well, do you mean that if I were to get an AIM screen name like "CromulentCat" I could somehow log in to iChat under the AIM account "CromulentCat" yet get iChat to represent me to my Buddies as "PinkSharkMark"? Because I have to admit I don't see how that can be done. It appears as if iChat displays to anyone chatting with you precisely the account name you logged in under and nothing else. So if you logged in using a .Mac account, then you are displayed as "[email protected]" while if you logged in under an AIM account, you are displayed as "CromulentCat". But that's it that's all... there is no way to change CromulentCat to PinkSharkMark.
    Thanks very much for taking the time to reply, though.

  • Sending a message to someone who used to have an iPhone

    I have sent some messages to someone who used to have an iPhone (and to whom I used to send iMessages) but who has now switched to an android device but the contact number has stayed the same. I notice that when I send a text now it is going as an iMessage (message in blue). I assume that the recipient is not receiving these. Is that correct? How do I send the contact a regular text message at this point?

    DKMac wrote:
    Is that correct?
    yes
    How do I send the contact a regular text message at this point?
    You tell them to sign out of iMessage

  • When to use inheritance and When to use Composition

    java support both inheratiance and composition .I also know "is a" and
    "has a realitionship" but there is always a problem with me to understanding whethere i have to use extends or having a object of a class has a member of othere class.
    and also "A pure OOP must support polimorphisim,inheretiance,encapluction,Abstraction and Composition" correct me if i am wrong
    thank you and have a nice day.

    Bruce Eckel, author of Thinking In Java, has this to say about composition vs. inheritance:
    When deciding between inheritance and composition, ask if you need to upcast to the base type. If not, prefer composition (member objects) to inheritance. This can eliminate the perceived need for multiple base types. If you inherit, users will think they are supposed to upcast.
    Choose composition first when creating new classes from existing classes. You should only used inheritance if it is required by your design. If you use inheritance where composition will work, your designs will become needlessly complicated.
    Bill Venners: Composition versus Inheritance
    Use inheritance (of implementation) only when the class satisfies the following criteria:
    1) "Is a special kind of," not "is a role played by a";
    2) Never needs to transmute to be an object in some other class;
    3) Extends rather than overrides or nullifies superclass;
    4) Does not subclass what is merely a utility class (useful functionality you'd like to reuse); and
    5) Within PD: expresses special kinds of roles, transactions, or things.
    -- from Java Design: Building Better Apps and Applets (2nd Edition), by Peter Coad and Mark Mayfield

Maybe you are looking for

  • In Nautilus, mounted network shares not showing up right away

    I've noticed a strange problem recently (last couple of weeks) where my mounted network shares don't always show up right away in Nautilus (side bar or desktop- like they used to). For example, if I manually mount an NFS share in CL to /media/files i

  • Only able to access wireless network through system diagnostics

    I have a Macbook (white, early 2008). Wherever I go my Airpot works fine at connecting, but at home, whenever I try connecting to the wireless network normally (clicking the airport tab, choosing network, etc.), I enter the password, which I know 100

  • Internet cafe software for managing 27 iMac Intel based

    Dear all, I am planning to setup a 27 iMac based internet cafe. Do you know any software to run a typical internet cafe with Point of Sale for products and time and account management? With best regards, 2pacy

  • Client insert Diagram returns runtime error

    Hello, I'm runnning BIP client 10.1.3.4.1 under Word (MS Office 2010). If I use "Insert diagram" I receive "runtime error 429". The template and BIP client installation I use is - in my opinion - valid - e.g. just displaying data as a table works. Ki

  • Error while using rowrepeater.

    Hi, I am getting the following error "Dynamic type conflict when assigning references " when I am trying to run a simple webdynpro application I have created for learning purposes. Has the error got to do something with the binding of the rowrepeater