9
Inheritance of methods (metožu mantošana) Methods overriding (metožu aizstāšana) Methods overloading (metožu pārslogošana) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis un var pievienot jaunas metodes. Var pievienot metodes ar tādu pašu nosaukumu kā metodēm, kuras objekts ir mantojis. Kad objektam ir vairākas metodes ar vienādu nosaukumu, to sauc par pārslogošanu (overloading). Pārslogošanu izmanto, kad grib izpildīt Super type Sub type Method ME1(a) Method ME1(a) Method ME1(b) Method ME1(a) Method ME1(a) + 1

Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

  • Upload
    hanhi

  • View
    223

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

Inheritance of methods (metožu mantošana) Methods overriding (metožu aizstāšana) Methods overloading (metožu pārslogošana)

Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis un var pievienot jaunas metodes. Var pievienot metodes ar tādu pašu nosaukumu kā metodēm, kuras objekts ir mantojis.

Kad objektam ir vairākas metodes ar vienādu nosaukumu, to sauc par pārslogošanu (overloading). Pārslogošanu izmanto, kad grib izpildīt vienu darbību dažādos veidos. Kad tipam ir vairākas metodes ar vienādu nosaukumu, kompilators izmanto metožu parametrus, lai saprastu kāda metode ir vajadzīga.

Mantotas metodes pārdefinē, lai piemērotu to uzvedību apakštipam. To sauc par aizstāšanu (overriding).

Super type

Sub type

Method ME1(a)

Method ME1(a)

Method ME1(b)

Method ME1(a)

Method ME1(a)+ -

1

Page 2: Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

Inheritance of methods(use of object type hierarchy)

type STUDENT under PERSONmethod YEARS – years in university

type PERSONmethod YEARS – age of person

not final

2

Page 3: Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

Type PERSON and STUDENT creation

create or replace type PERSON as object(PERS_CODE varchar2(12),SURNAME varchar2(20),FIRST_NAME varchar2(20),member function YEARS return number) not final;

create or replace type body PERSON asmember function YEARS return number isbeginreturn EXTRACT(YEAR from SYSDATE) – EXTRACT(YEAR from TO_DATE(SUBSTR(SELF.PERS_CODE, 1,6),'DDMMRR')) + 1;end;end;

create or replace type STUDENT under PERSON(FACULTY varchar2(20),GROUPE varchar2(10),ENTER_DATE date,overriding member function YEARS return number);

create or replace type body STUDENT asoverriding member function YEARS return number isbeginreturn EXTRACT(YEAR from SYSDATE) – EXTRACT(YEAR from SELF.ENTER_DATE) +1;end;end;

age of person

years in university

3

Page 4: Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

Table PERSONS creation

create table PERSONS of PERSON;

insert into PERSONS values(PERSON('120386-11111', 'Koks', 'Juris'));

insert into PERSONS values (STUDENT('220986-22222', 'Lapa', 'Rasma', 'DITF', 'ABC3', TO_DATE('010906', ' DDMMRR' )));

insert into PERSONS values (STUDENT('121287-22222', 'Celms', 'Liene', 'DITF', 'ABC4', TO_DATE('010907', ' DDMMRR' )));

insert into PERSONS values (PERSON('231187-33333', 'Sakne', 'Varis'));

select VALUE(A).FIRST_NAME, VALUE(A).YEARS()from PERSONS A;VALUE(A).FIRST_NAME VALUE(A).YEARS()------------------------------------------------------------------------------Juris 30Rasma 10Liene 9Varis 29

select VALUE(A).FIRST_NAME, TREAT(VALUE(A) PERSON).YEARS()from PERSONS A;VALUE(A).FIRST_NAME TREAT(VALUE(A) PERSON).YEARS()---------------------------------------------------------------------------------------Juris 30Rasma 10Liene 9Varis 29

4

Page 5: Objekta tipi un mantošana · Web view2015/11/07 · Method ME1(a) Apakštips automātiski manto metodes no galvenā tipa. Apakštips var pārdefinēt metodes, kuras tas ir mantojis

select VALUE(A).FIRST_NAME, TREAT(VALUE(A) STUDENT).YERS()from PERSONS A;VALUE(A).FIRST_NAME TREAT(VALUE(A) STUDENT).YEARS()-------------------- -----------------------------------------------------------------------JurisRasma 10Liene 9Varis

select VALUE(A).SURNAME, TREAT(VALUE(A) STUDENT).FACULTY from PERSONS A;VALUE(A).SURNAME TREAT(VALUE(A) STUDENTS).FACULTY-------------------- ----------------------------------------------------------------------KoksLapa DITFCelms DITFSakne

5