Пятница, 10.01.2025, 13:41
Приветствую Вас Гость | RSS

Lab#5 (Ссылки и Методы Сортировки)

Задание:

 

I. Создать объекты:

 

 СТУДЕНТ (id, фамилия, имя, специальность, кредиты)

 

• Создать метод ORDER для объекта студент, который сортирует сведения о студентах по именам и фамилиям.

 

II. Создать объекты:

 

 АУДИТОРИЯ (id, № аудитории, кол-во мест, описание)

 

• Отредактировать с мощью метода MAP аудитории по номерам id.

 

III. Создать объект:

 

 УЧЕБНАЯ ГРУППА (id, факультет, курс, описание, max кол-во студентов, реальное кол-во студентов, кол-во кредитов, ссылка на аудиторию)

 

 

Решение:

 

I.

create or replace TYPE STUDENT

as OBJECT(

id number(5),

fam varchar2(15),

imea varchar2(10),

spets varchar2(30),

kr number(3),

ORDER MEMBER function SORT (v_student in student) return number

);

 

  create or replace type

BODY STUDENT is

ORDER member function SORT (v_student in student) return number as

            begin

                        if self.fam = v_student.fam then

                                   if self.imea > v_student.imea then

                                               return 1;

                                   elsif self.imea  < v_student.imea then

                                               return -1;

                                    else

                                               return 0;

                                   end if;

                        else

                                   if self.fam > v_student.fam then

                                               return 1;

                                   elsif self.fam < v_student.fam then

                                               return -1;

                                   else

                                               return 0;

                                   end if;

                        end if;

            end sort;

END;

 

  create table STUD (

            person STUDENT

);

 

II.

 

create or replace TYPE AUDITORIA

as OBJECT(

id number(4),

kab number(3),

mesta number(3),

opis varchar2(200),

MAP member function SORT return number

);

 

  create or replace type

BODY AUDITORIA is

            MAP member function SORT return number as

begin

            return SELF.id;

end SORT;

END;

 

  create table AUD (

place AUDITORIA

);

 

 

III.

 

create or replace TYPE GRUPPA

as OBJECT(

id number(4),

fac varchar2(30),

kurs number(1),

opis varchar2(200),

max number(4),

real number(3),

kr number(3),

a REF AUDITORIA

);

 

_______________________________________________________________________________________

 

insert into STUD values(STUDENT(1,'Ivanov','Ivan','Himia',123));

insert into STUD values(STUDENT(9,'Rusu','Stepan','Matematica',456));

insert into STUD values(STUDENT(2,'Sidorov','Vasea','Informatica',789));

 

select S.person.imea, S.person.fam from STUD S order by S.person DESC;

 

insert into AUD values(AUDITORIA(7,203,20,'Informatica_lab'));

insert into AUD values(AUDITORIA(4,213,80,'Istoria_lektsii'));

insert into AUD values(AUDITORIA(8,118,50,'Himia_Seminar'));

 

select A.place.id, A.place.opis from AUD A order by A.place ASC;

_______________________________________________________________________________________