ZSBD-2st-1.2-w4.tresc-1.1-Slajd11
Abstrakcyjne typy danych
Relacyjne bazy danych oferują projektantowi schematu bazy danych ograniczony zbiór prostych, predefiniowanych typów danych dla atrybutów relacji. Przykładem mogą być systemowe typy tekstowe: varchar i char, numeryczne: int i float oraz temporalne: date. Typy danych niedostępne w relacyjnym modelu danych muszą być implementowane poza systemem bazy danych. Kod obsługujący ich semantykę musi być implementowany i powielany we wszystkich aplikacjach bazy danych.
Obiektowe bazy danych umożliwiają projektantom definiowanie nowych typów danych. Definiowanie własnego typu danych obejmuje definicję struktury i funkcjonalności typu. Definicje typów są składowane w systemie bazy danych. Sposób korzystania z typów danych zdefiniowanych przez użytkownika nie różni się niczym od korzystania z typów systemowych. Dzięki temu obiektowy model danych jest rozszerzalny. Można go elastycznie dopasowywać do dowolnej dziedziny zastosowania wymagającej unikalnych, specyficznych typów danych.
Rolę typów danych definiowanych przez użytkownika pełnią w obiektowych bazach danych klasy i interfejsy. Definicja interfejsu jest opisem funkcjonalności nowego typu danych, czyli opisem operacji dostępnych dla danego typu. Definicja klasy obejmuje dodatkowo implementację typu danych: to jest wewnętrzną strukturę danych służącą do przechowywania stanu wystąpień typu danych oraz kod operacji zdefiniowanych dla danego typu danych.
W zaprezentowanym przykładzie zdefiniowano dwa typy danych użytkownika: klasy Punkt i Odcinek. Część strukturalna klasy Punkt to dwa atrybuty X i Y reprezentujące lokalizację punktu na płaszczyźnie. Część funkcjonalna tej klasy jest ograniczona do metody Przesuń służącej do zmiany lokalizacji punktów. Klasa Punkt została wykorzystana jako typ danych dla atrybutów W1 i W2 klasy Odcinek. Wystąpienia klasy Punkt będą wartościami tych atrybutów. Klasa Odcinek służy do definiowania typu obiektów składowanych w bazie danych. Metoda przesuń jest zaimplementowana jako sekwencja wywołań operacji przesunięcia dla dwóch końców W1 i W2 danego odcinka.